schemadesign part-2

This commit is contained in:
liujianhuan 2020-04-17 15:15:17 +08:00
parent 361ae7169b
commit 59b18cb199
1 changed files with 29 additions and 0 deletions

View File

@ -56,7 +56,36 @@ Druid数据源通常相当于关系数据库中的表。Druid的 [lookups特性]
* 如果您主要有日志数据的分析场景,请考虑启用 [rollup](ingestion.md#rollup),这意味着您将失去从Druid中检索单个事件的能力但您可能获得大量的压缩和查询性能提升 * 如果您主要有日志数据的分析场景,请考虑启用 [rollup](ingestion.md#rollup),这意味着您将失去从Druid中检索单个事件的能力但您可能获得大量的压缩和查询性能提升
### 一般提示以及最佳实践 ### 一般提示以及最佳实践
#### Rollup
Druid可以在接收数据时将其汇总以最小化需要存储的原始数据量。这是一种汇总或预聚合的形式。有关更多详细信息请参阅摄取文档的 [汇总部分](ingestion.md#rollup)。
#### 分区与排序
对数据进行最佳分区和排序会对占用空间和性能产生重大影响。有关更多详细信息,请参阅摄取文档的 [分区部分](ingestion.md#分区)。
#### Sketches高基维处理 #### 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的维度列 #### 无schema的维度列