Database 如何在b-树中索引可变长度字符串、整数和二进制文件?

Database 如何在b-树中索引可变长度字符串、整数和二进制文件?,database,data-structures,b-tree,storage-engines,b-tree-index,Database,Data Structures,B Tree,Storage Engines,B Tree Index,我正在创建一个数据库存储引擎(为了好玩) 我知道它使用了b-树(以及类似的东西),但在所有的b-树基础示例中,它表明我们需要对键进行排序,然后将其存储为索引,而不是整数 我可以理解排序,但是如果我有字符串作为索引键,如何对字符串进行排序呢 例如:我想在btree中为所有电子邮件地址编制索引,我将如何做???这并不重要,您正在排序的数据类型是什么。对于B-树,您只需要一个比较器。您输入db的第一个值是根。第二个值与根进行比较。如果较小,则继续向左向下,否则向右。插入新值通常需要重新构造树 字符串的

我正在创建一个数据库存储引擎(为了好玩)

我知道它使用了b-树(以及类似的东西),但在所有的b-树基础示例中,它表明我们需要对键进行排序,然后将其存储为索引,而不是整数

我可以理解排序,但是如果我有字符串作为索引键,如何对字符串进行排序呢


例如:我想在btree中为所有电子邮件地址编制索引,我将如何做???

这并不重要,您正在排序的数据类型是什么。对于B-树,您只需要一个比较器。您输入db的第一个值是根。第二个值与根进行比较。如果较小,则继续向左向下,否则向右。插入新值通常需要重新构造树


字符串的比较器可以使用字符串的长度,也可以按字母顺序进行比较,或者计算at符号后面电子邮件中的点。

你所说的“b树基本示例”是什么意思?你是说“基本例子”吗?如果你是这个意思,你到底指的是哪些例子?请编辑您的问题以添加这些详细信息。已编辑。基本上,我想为字符串创建基于磁盘的btree,如电子邮件、名称或任何内容。如何对字符串进行排序?您只需要一个比较函数。这将允许索引任何数据类型,而不仅仅是字符串。每个数据类型都需要自己的比较函数。(即使是复合类型,如记录)