数据结构以存储数据库记录

时间:2018-10-19 20:56:38

标签: algorithm data-structures binary-search-tree

我想存储员工记录。我不想使用任何外部库或框架。我正在尝试从头开始构建数据结构。

将有三个字段,

EmployeeName
Age
Salary

我们也想查询类似

Get all the salary where EmployeeName = "Bill"
Get all the EmployeeName where salary > 2000
Get all the Salary where age='50'

我愿意使用任何语言,但不能使用任何内置程序包。为达到此目的推荐的数据结构是什么?

1 个答案:

答案 0 :(得分:0)

我认为此练习的目的是自我教育。

如果是这样,Where to begin reading SQLite source code?是开始阅读以了解如何构建此类软件的好地方。

如果您真的想自己滚动,我建议您将数据存储在隐藏在对象后面的结构/对象/字典数组中(它们的调用取决于您的语言),以便您进行插入/更新/表格上的delete方法通过定义明确的访问函数。根据您的语言,使用grepfilter等可能无法有效地实施您的操作。除显而易见的字段外,还包括deleted作为字段。这样,您只需更新该记录即可删除记录,而不必尝试修改表。

要提高效率,请通读https://cstack.github.io/db_tutorial/parts/part7.html,了解如何编写b树。然后创建b树映射EmployeeName到具有该名称的记录的索引列表,同上agesalary。现在,修改表时,修改访问方法以更新这些字段的索引。现在,您的搜索可以遍历b树,找到所需记录的索引,然后可以在表中查找它们。

与数据库所提供的功能相比,这大大简化了,但是您正在了解数据库的工作方式。既要了解它们为什么会扩展,又要知道它们为什么没有那么神奇。