GBase的索引及原理

GBase 8a分别支持智能索引与Hash索引

智能索引
智能索引为数据库自动维护,智能索引是每个DC包中记录的该DC包中数据的检索信息,包括null值个数、最大最小值等信息;

HASH索引
HASH索引可以根据业务场景需求自定义

GBase的数据块分布原理以及数据倾斜度计算

支持三种数据分布方式:Hash分布、随机分布、复制表。

HASH分布
对于HASH分布,数据按照HASH桶分堆的方式进行,对分布列取HASH值后均匀的分为65536个HASH桶,然后将65536个HASH桶再均分到各集群节点。
随机分布
为数据均匀的分布到各集群节点;复制表,为所有节点上都存储一份完整数据。
数据倾斜
通常是由于某些HASH取值的占比较大,造成存储这些HASH取值数据的节点上存储了较多数据。
数据倾斜度计算:按照表在各节点的数据文件大小比值来计算倾斜度。

全文索引以及三元分词使用规则

    GBase 8a全文索引原有的分词方式是中文按单个汉字切分,如“天津市”会被切分成“天/津/市”;英文按连续字母切分,如“gbase -uroot”会被切分成“gbase/-/uroot”;
    数字也是按连续的数字切分,如“12345 67890”会被切分成“12345/67890”。对于以上情况的混合,同样遵循上面的规则,如“中国56 897gbase1234”会被切分成“中/国/56/897/gbase/1234”。这样的规则会使得“gbase1234”被切分为“gbase/1234”,这时使用“gba”或“123”是无法匹配到“gbase1234”的。
    但在客户应用中,对这种场景有实际的需求。以数字的3元分词为例,如用户查询牌照号,希望用“567”匹配出“京AX4567”,因为目前的分词结果为“京”,“AX”,“4567” ,所以使用全文的contains(..., '567')不能命中“京AX4567”。必须改动分词为支持数字的多元(3元)分词,将“京AX4567”切分为“京”,“AX”,“456”,“567”,才能使得contains(..., '567')能匹配“京AX4567”。