schemadesign part-2
This commit is contained in:
parent
361ae7169b
commit
59b18cb199
|
@ -56,7 +56,36 @@ Druid数据源通常相当于关系数据库中的表。Druid的 [lookups特性]
|
|||
* 如果您主要有日志数据的分析场景,请考虑启用 [rollup](ingestion.md#rollup),这意味着您将失去从Druid中检索单个事件的能力,但您可能获得大量的压缩和查询性能提升
|
||||
|
||||
### 一般提示以及最佳实践
|
||||
#### Rollup
|
||||
|
||||
Druid可以在接收数据时将其汇总,以最小化需要存储的原始数据量。这是一种汇总或预聚合的形式。有关更多详细信息,请参阅摄取文档的 [汇总部分](ingestion.md#rollup)。
|
||||
|
||||
#### 分区与排序
|
||||
|
||||
对数据进行最佳分区和排序会对占用空间和性能产生重大影响。有关更多详细信息,请参阅摄取文档的 [分区部分](ingestion.md#分区)。
|
||||
|
||||
#### Sketches高基维处理
|
||||
|
||||
在处理高基数列(如用户ID或其他唯一ID)时,请考虑使用草图(sketches)进行近似分析,而不是对实际值进行操作。当您使用草图(sketches)摄取数据时,Druid不存储原始原始数据,而是存储它的"草图(sketches)",它可以在查询时输入到以后的计算中。草图(sketches)的常用场景包括 `count-distinct` 和分位数计算。每个草图都是为一种特定的计算而设计的。
|
||||
|
||||
一般来说,使用草图(sketches)有两个主要目的:改进rollup和减少查询时的内存占用。
|
||||
|
||||
草图(sketches)可以提高rollup比率,因为它们允许您将多个不同的值折叠到同一个草图(sketches)中。例如,如果有两行除了用户ID之外都是相同的(可能两个用户同时执行了相同的操作),则将它们存储在 `count-distinct sketch` 中而不是按原样,这意味着您可以将数据存储在一行而不是两行中。您将无法检索用户id或计算精确的非重复计数,但您仍将能够计算近似的非重复计数,并且您将减少存储空间。
|
||||
|
||||
草图(sketches)减少了查询时的内存占用,因为它们限制了需要在服务器之间洗牌的数据量。例如,在分位数计算中,Druid不需要将所有数据点发送到中心位置,以便对它们进行排序和计算分位数,而只需要发送点的草图。这可以将数据传输需要减少到仅千字节。
|
||||
|
||||
有关Druid中可用的草图的详细信息,请参阅 [近似聚合器页面](../Querying/Aggregations.md)。
|
||||
|
||||
如果你更喜欢 [视频](https://www.youtube.com/watch?v=Hpd3f_MLdXo),那就看一看吧!,一个讨论Druid Sketches的会议。
|
||||
|
||||
#### 字符串 VS 数值维度
|
||||
|
||||
如果用户希望将列摄取为数值类型的维度(Long、Double或Float),则需要在 `dimensionsSpec` 的 `dimensions` 部分中指定列的类型。如果省略了该类型,Druid会将列作为默认的字符串类型。
|
||||
|
||||
字符串列和数值列之间存在性能折衷。数值列通常比字符串列更快分组。但与字符串列不同,数值列没有索引,因此可以更慢地进行筛选。您可能想尝试为您的用例找到最佳选择。
|
||||
|
||||
有关如何配置数值维度的详细信息,请参阅 [`dimensionsSpec`文档](ingestion.md#dimensionsSpec)
|
||||
|
||||
#### 辅助时间戳
|
||||
#### 计数接收事件数
|
||||
#### 无schema的维度列
|
Loading…
Reference in New Issue