我需要解决的问题是将文件系统树的等价物存储到数据库中(以加快搜索操作)。树包含 +400.000.000 个 inode,对于每个 inode,我需要存储一些元信息(平均文件路径为 100 字节,元信息约为 50 字节)。
将在 C++ 程序中进行以下操作:
1. SELECT(预期结果:~200.000)
2. 一次插入 ~20.000 条记录
3. 一次删除 ~20.000 条记录。
到目前为止,我只考虑了关系数据库:MySQL、MariaDB、PostgresSQL(到目前为止我还没有进行任何测试,我仍处于“信息收集”阶段)并且我阅读了一些关于在这样的数据库中存储树的文档。
第一个选项
- 邻接列表模型:表中的每个项目都包含一个指向其父项的指针。
http://mikehillyer.com/articles/managing-hierarchical-data-in-mysql/
第二个选项
- 将所有目录存储在一个单独的表中
- 为其余文件创建一个单独的表,并带有指向它们所属目录的指针
所以表格看起来像这样:
DirTable:
/home
/home/test/
文件表:
file1
file2
我的问题:
1. 你知道另一种适合在关系数据库中存储大树的模型吗?2. 如果我要搜索 NoSQL DB,我应该从哪里开始?
非常感谢。