使用数据的AB版本机制
在数据写入磁盘后,再进行数据当前有效版本的切换操作。切换成功则正常使用新数据,如果切换失败(磁盘异常)则SQL报错,后续可以使用旧版本的数据。
1)使用数据的AB版本机制。
已有数据的checksum检查机制
每个数据块都记录了对应的checksum值,当从磁盘读取数据块时,会根据加载的内容计算出的checksum值,与之前记录的checksum值进行比较,确保读取的数据块的正确性。如果checksum值不一致则执行SQL会报错(避免由于磁盘错误导致数据异常的扩散)。
GBase 8a没有B树索引,根据分析类数据库的特点使用的是hash索引。索引文件以文件形式独立存放,不可以指定存放的路径。
另外v85和v86版本8a不支持创建复合索引。
静态资源池限定并隔离了可以使用的资源使用范围,动态资源池限定了可以使用的最大资源。在动态资源池中有任务时动态资源池会占用规定的资源,无任务情况下则归还共享资源。
资源管理是通过cgroup实现的。cpu子系统是控制cpu时间分配的一个控制器,这个子系统使用调度程序提供对CPU的cgroup任务访问。
GBase是原生态的列存,各列独立存储,列存储的基本单位是DC(DataCell),以DC为单位进行IO(Read 、Write)以及压缩等,每个DC有对应的SmartIndex,可用于查询中的部分算子计算优化。
支持行列混合存储,可以为指定多个列建立行存储数据(这部分数据和列存是冗余存储的)。一般行存储数据用于查询投影列为很多列且命中数据非常离散的场景(这种场景行存IO比较有优势),缺陷是存储空间会增加很多。