begeekmyfriend / bplustree

A minimal but extreme fast B+ tree indexing structure demo for billions of key-value storage
MIT License
1.85k stars 315 forks source link

请问value可以自定义类型吗? #25

Open windflowerly opened 3 months ago

windflowerly commented 3 months ago

请问value可以自定义类型吗?

windflowerly commented 3 months ago

另外,key可以自定义类型吗?

begeekmyfriend commented 3 months ago

可以,不过你需要计算一下每个结点的空间大小

windflowerly commented 3 months ago

我先看下代码,如有不懂的地方,还要叨扰。

windflowerly commented 3 months ago

请问下,节点空间计算在哪里,没找到对应的代码。

windflowerly commented 3 months ago

代码中的node是不是对应一个block。 然后计算一个block中,存放多少个key-value

begeekmyfriend commented 3 months ago

参见bplustree.h定义空间大小由BPLUS_MAX_ENTRIES以及BPLUS_MAX_ORDER决定,而节点内部寻址在bplustree.c里面定义。

#define data(node) ((long *)(offset_ptr(node) + _max_entries * sizeof(key_t)))
#define sub(node) ((off_t *)(offset_ptr(node) + (_max_order - 1) * sizeof(key_t)))

其中_max_entries_max_order都是由bplus_tree_init函数计算的