Pilosa数据结构
2021-09-12 本文已影响0人
kaiker
样例
基本概念
1、index
可以理解成表的名称,就用index代表一个表
2、列
每一列代表一个数据记录(record),在正常表中通常一行是一个记录,polisa中一列是一个记录
3、行
每一行是一个value,比如第一行可以代表 = 0
4、字段(Field)
很多行组成了一个字段,可以看到FieldA里有十一行,这个字段可以取这11个值
和关系型数据库概念对照
RELATIONAL | PILOSA |
---|---|
Database | N/A (internal: Holder) |
Table | Index |
Row | Column |
Column | Field |
Value | Row |
Value (int) | Field.Value (see BSI) |
特殊的Field
Rank
始终维护顺序,默认大小是50000
Rank
LRU
按访问时间排序
LRU
Shard
所有的index会按照列进行分组划分,默认大小是220。在正常关系型表中就是横向拆分的,不过在pilosa中是按列分。
BSI Range-Encoding
BSI Range-Encoding是将int转换成了二进制的,每一行代表这一位,另外还单独有一位用来表示是否为空。
所以上图里,A字段中,第一列就是1,第二列就是2,第三列就是3,第四列就是7。B字段中第一列row=3的地方是0,因为这一列是空,第二列就是1,第三列是6。