1. BsTr tree结构图
图中的深度是指表所代表的树的深度。页面大小为文件中chunk的大小。flag为表key的类型和数据的形式。入口chunk为树的根地址。offset为在文件中的存储位置。时间戳为创建表的时间戳,按纳秒计算。dorped表示表是否被标记为删除。 图中各表的深度默认都为3层,最高层是次层各个chunk的最大关键字的有序组合,依次类推,直至叶子节点。叶子节点包含数据,而树枝节点只包含关键字。上图的parent、left、right是三个指针,分别指向父节点、左右兄弟节点,图中没有画指向箭头,只是标记了相应节点的最大key来指代指针的指向。 可以看的出来,BsTr tree和一般的B+树不同的是,除了指向孩子节点的指针和offset,它还包含了指向父节点和左右节点的指针和offset(offset用于实现指针混写,在内存和文件页面间自由转换)。 flag支持多种组合。具体如下: THE BSTRTREE CAN WANDER BETWEEN MEMORY AND DISK SUPPORT KEY OF 5 TYPES:STRING/[]BYTE/COMPLEX128/INT64/FLOAT64 DIFFERENCE BETWEEN MEM MODE AND NON-MEM MODE: NON-MEM MODE WRITE ALL OPERATION TO DISK, MEM MODE NOT. DO NOT RECOMMEND COMPRESS | BIG BECAUSE DATA WAS COMPRESSED, WILL MAY NOT SATISFY BIG MODE. UNIQUE: UNIQUE KEY STRKEY: STRING TYPE KEY NOSERIAL: NOT SERIALIZE DATA. SERIAL MODE: SERIALIZE DATA TO A BSTR STRUCT FIRSTLY. BIG: BIG DATA MODE FILEBIG: BIG DATA SAVE TO FILE, INCLUDE BIGDATA NOT USE BIG MODE. BE CAREFULLY, WHEN READ, MAYBE OOM. NUMBERED: SORTED DATA NO. COMPRESS: COMPRESS DATA NULLKEY: KEY IS NULL, NOT AVAILABLE CURRENTLY. I64KEY: INT64 KEY F64KEY: FLOAT64 KEY C128KEY: COMPLEX128 KEY BSKEY: []BYTE KEY NULL: KEY CAN NULL,NOT NULLKEY EMBEDED: EMBEDED MODE, A DB AS A KEY-DATA MEM: memory mode, collide with FILEBIG ----------------------------------------------------------- Example as StrKey composite: UNIQUE|STRKEY|NOSERIAL UNIQUE|STRKEY|NOSERIAL|BIG UNIQUE|STRKEY UNIQUE|STRKEY|BIG UNIQUE|STRKEY|NOSERIAL|FILEBIG UNIQUE|STRKEY|NOSERIAL|BIG|FILEBIG UNIQUE|STRKEY|FILEBIG UNIQUE|STRKEY|BIG|FILEBIG STRKEY|NOSERIAL STRKEY|NOSERIAL|BIG STRKEY STRKEY|BIG STRKEY|NOSERIAL|FILEBIG STRKEY|NOSERIAL|BIG|FILEBIG STRKEY|FILEBIG STRKEY|BIG|FILEBIG NUMBERED|UNIQUE|STRKEY|NOSERIAL|BIG NUMBERED|UNIQUE|STRKEY NUMBERED|UNIQUE|STRKEY|BIG NUMBERED|UNIQUE|STRKEY|NOSERIAL|FILEBIG NUMBERED|UNIQUE|STRKEY|NOSERIAL|BIG|FILEBIG NUMBERED|UNIQUE|STRKEY|FILEBIG NUMBERED|UNIQUE|STRKEY|BIG|FILEBIG NUMBERED|STRKEY|NOSERIAL NUMBERED|STRKEY|NOSERIAL|BIG NUMBERED|STRKEY NUMBERED|STRKEY|BIG NUMBERED|STRKEY|NOSERIAL|FILEBIG NUMBERED|STRKEY|NOSERIAL|BIG|FILEBIG NUMBERED|STRKEY|FILEBIG NUMBERED|STRKEY|BIG|FILEBIG COMPRESS|UNIQUE|STRKEY|NOSERIAL COMPRESS|UNIQUE|STRKEY|NOSERIAL|BIG COMPRESS|UNIQUE|STRKEY COMPRESS|UNIQUE|STRKEY|BIG COMPRESS|UNIQUE|STRKEY|NOSERIAL|FILEBIG COMPRESS|UNIQUE|STRKEY|NOSERIAL|BIG|FILEBIG COMPRESS|UNIQUE|STRKEY|FILEBIG COMPRESS|UNIQUE|STRKEY|BIG|FILEBIG COMPRESS|STRKEY|NOSERIAL COMPRESS|STRKEY|NOSERIAL|BIG COMPRESS|STRKEY COMPRESS|STRKEY|BIG COMPRESS|STRKEY|NOSERIAL|FILEBIG COMPRESS|STRKEY|NOSERIAL|BIG|FILEBIG COMPRESS|STRKEY|FILEBIG COMPRESS|STRKEY|BIG|FILEBIG COMPRESS|NUMBERED|UNIQUE|STRKEY|NOSERIAL|BIG COMPRESS|NUMBERED|UNIQUE|STRKEY COMPRESS|NUMBERED|UNIQUE|STRKEY|BIG COMPRESS|NUMBERED|UNIQUE|STRKEY|NOSERIAL|FILEBIG COMPRESS|NUMBERED|UNIQUE|STRKEY|NOSERIAL|BIG|FILEBIG COMPRESS|NUMBERED|UNIQUE|STRKEY|FILEBIG COMPRESS|NUMBERED|UNIQUE|STRKEY|BIG|FILEBIG COMPRESS|NUMBERED|STRKEY|NOSERIAL COMPRESS|NUMBERED|STRKEY|NOSERIAL|BIG COMPRESS|NUMBERED|STRKEY COMPRESS|NUMBERED|STRKEY|BIG COMPRESS|NUMBERED|STRKEY|NOSERIAL|FILEBIG COMPRESS|NUMBERED|STRKEY|NOSERIAL|BIG|FILEBIG COMPRESS|NUMBERED|STRKEY|FILEBIG COMPRESS|NUMBERED|STRKEY|BIG|FILEBIG UNIQUE|STRKEY|NOSERIAL|EMBEDED 以上还可以组合数据的类型:STRDATA、I64DATA、F64DATA、C128DATA、BYTESDATA。数据的类型属于可选项,非必须指定。
2. BsTr tree多线程安全写的脉动工作流图
在多线程运行情况下,BsTr树的Put操作(包括插入、删除和更新)是安全的。 前几个驻留协程的顺序执行是在缓冲通道的支持下进行的,因此不会阻塞等待。 在最后环节,不同类型的key对应不同的驻留协程,而不同的key和不同的flag对应着不同的表,不同的表对应不同的树,也就是说,支持表级并行执行。
文章链接
大家都在找:
数据库:数据库下载
开发语言:开发语言排行榜
golang:golang下载
b树:b树详解
数据库开发:数据库开发工具
json:json文件怎么打开怎么用
nosql:nosql数据库四大类型
发表评论