You need to enable JavaScript to run this app.
导航
BitEngine
最近更新时间:2025.07.02 15:12:58首次发布时间:2025.07.02 15:12:58
我的收藏
有用
有用
无用
无用

BitEngine 是 ByteHouse 自研的一套基于 CRoaring 开源库实现的 64 位位图处理方案。它核心包括三个部分:

  • ByteHouse 基础数据类型 BitMap64。
  • 基于 BitMap64 类型引入的字典编码优化系统,通过提升 BitMap64 稠密度而提升计算性能。
  • 基于业务场景提供了一套高效 UDF/UFAF。

列名

字段名称

数据类型

字段含义说明

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