BitEngine 是 ByteHouse 自研的一套基于 CRoaring 开源库实现的 64 位位图处理方案。它核心包括三个部分:
字段名称 | 数据类型 | 字段含义说明 |
---|---|---|
database | String | 使用 BitEngine 功能的表对应的数据库名。 |
table | String | 使用 BitEngine 功能的表对应的表名。 |
engine | String | 表使用的存储引擎,如 MergeTree、HaMergeTree。 |
encoded_columns | Array(String) | 哪些 BitMap64 字段开启了 BitEngine 增强功能。 |
encoded_columns_size | Array(String) | 对应 BitMap64 在编码任务中产生的字典大小。 |
uniqExact_keys_size | Array(String) | 对应 BitMap64 在编码任务中产生的去重字典大小(正常情况和 encoded_columns_size 相等)。 |
version | UInt64 | 本地字典的版本号。 |
zookeeper_version | UInt64 | 本地字典对应的,存储于 Zookeeper 中的版本号,用于多副本之间同步字典数据。 |
is_valid | UInt64 | 字典状态是否正常。 |
shard_id | UInt64 | 本节点的 shard 编号,从 0 开始。 |
shard_base_offset | UInt64 | 每个节点预先分配的起始编码值。 |
show create test.test_bitmap; SELECT * FROM system.bitengine where database = 'test' and table = 'test_bitmap';
-- show create test.test_bitmap CREATE TABLE test.test_bitmap ( `tag_id` Int32, `tag_value` String, `uids` BitMap64 BitEngineEncode, `p_date` Date ) ENGINE = HaMergeTree('/clickhouse/test/test_bitmap_dfadx/{shard}', '{replica}') PARTITION BY p_date ORDER BY (tag_id, tag_value) SETTINGS index_granularity = 128 -- SELECT * FROM system.bitengine where database = 'test' and table = 'test_bitmap';\G Row 1: ────── database: test table: test_bitmap engine: HaMergeTree encoded_columns: ['uids'] encoded_columns_size: [8] uniqExact_keys_size: [8] version: 1 zookeeper_version: 1 is_valid: 1 shard_id: 0 shard_base_offset: 0