segment part-2
This commit is contained in:
parent
3eff1a45df
commit
999018a093
|
@ -66,4 +66,46 @@ dimension列是不同的,因为它们支持过滤和聚合操作,所以每
|
|||
Multi-value column has multiple non-zero entries
|
||||
```
|
||||
|
||||
请注意列数据和Ke$ha位图中第二行的更改。如果一行中的某一列有多个值,则其在“列数据”中的条目是一个数组。此外,在“列数据”中有n个值的行在位图中将有n个非零值项。
|
||||
请注意列数据和Ke$ha位图中第二行的更改。如果一行中的某一列有多个值,则其在“列数据”中的条目是一个数组。此外,在“列数据”中有n个值的行在位图中将有n个非零值项。
|
||||
|
||||
### SQL兼容的空值处理
|
||||
|
||||
默认情况下,Druid字符串维度列可以使用 `""` 或者 `null` ,数值列和指标列则不能表示为 `null`,而是将 `null` 强制为 `0`。但是,Druid还提供了一个与SQL兼容的空值处理模式,必须在系统级别通过 `Druid.generic.useDefaultValueForNull` 启用, 当设置为 `false` 时,此设置将允许Druid在接收数据时创建的段中:字符串列区分 `""` 和 `null` ,数值列区分 `null` 和 `0`。
|
||||
|
||||
在这种模式下,字符串维度列不包含额外的列结构,只是为 `null` 保留额外的字典条目。但是,数值列将与一个附加位图一起存储在段中,该位图标识哪些行是 `null` 值。除了略微增加段大小之外,由于需要检查 `null` 的位图,SQL兼容的空值处理在查询时也会导致性能损失,此性能开销仅对实际包含`null`列的场景中存在。
|
||||
|
||||
### 命名规则
|
||||
|
||||
段标识符通常使用数据源,时间区间的开始时间(ISO 8601格式),时间区间的结束时间(ISO 8601格式)和版本来构造。如果数据被额外的分片后超出了时间范围,则段标识符还将包含分区号。
|
||||
|
||||
一个示例段标识符可以是:
|
||||
`数据源名称_开始时间_结束时间_版本号_分区号`
|
||||
|
||||
### 段的组成
|
||||
|
||||
在底层,一个段由以下几个文件组成:
|
||||
|
||||
* `version.bin`
|
||||
|
||||
4个字节,以整数表示当前段版本。 例如,对于v9段,版本为0x0、0x0、0x0、0x9
|
||||
|
||||
* `meta.smoosh`
|
||||
|
||||
一个包含其他 `smoosh` 文件内容的元数据文件
|
||||
|
||||
* `XXXXX.smoosh`
|
||||
|
||||
这些文件中有一些是串联的二进制数据
|
||||
|
||||
`smoosh` 文件代表 "smooshed" 在一起的多个文件,以减少必须打开用来容纳数据的文件描述符的数量,它们是最大为2GB的文件(以匹配Java中内存映射的ByteBuffer的限制)。`smoosh` 文件为数据中的每个列提供单独的文件,并在 `index.drd` 文件提供有关该段的额外元数据。
|
||||
|
||||
还有一个称为 `__time` 的特殊列,它表示该段的时间列。希望随着代码的发展,这种特殊性将越来越少,但就目前而言,它就像我妈妈一直告诉我的那样特殊。
|
||||
|
||||
在代码库中,段具有内部格式版本。当前的句段格式版本为 `v9`。
|
||||
|
||||
### 列的格式
|
||||
### 切分数据以创建段
|
||||
#### 数据分片
|
||||
### Schema更改
|
||||
### 替换段
|
||||
### 段之间的不同schemas
|
Loading…
Reference in New Issue