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”。

列存储与行存储在增删改查方面优势的原理及体现

行存:
增删改查需要建立索引,根据索引一行一行排查找到具体行进行增删改查,同时要记录日志等文件,耗费I/O。
列存:
增原理:8a大批量数据入库时,可以边查询操作,边入库,两不耽误。查的是原数据,入库入副本,副本入完后与原数据置换同步;
改原理:修改时原数据加标记—包头偏移量处加标记,修改后新数据插入到最后(等于增)。每列最后一个包不进行压缩,减少插入数据的工作量;
删原理:删除时原数据加标记—包头偏移量处加标记,以后查操作会跳过该标记内容;
大数据查:只涉及需要查找的列,而且每列有智能索引,可以先按包排查,再在筛出的包内排查。不需像行存一样所有的列每条记录去排查;
智能索引:不是物理存在的表,是加载数据库时提取包头内容在内存形成的表。