如何在数据库中有效保存树结构?

时间:2015-03-27 16:44:32

标签: database data-structures tree

我对NoSQL和关系数据库持开放态度。这个问题已被问过几次,但我的想法如下:

我希望能够快速找到并识别重复的子树。

例如,如果树要为其硬盘驱动器上的用户文件(和文件夹)编制索引,我可能会有以下内容:

    /   <-- root
  /      \
...        home
      /          \
   ugrad        course
    /          /    |    \
  ...        cs101 cs112 cs113

可能适用于 User1

我希望能够找到course&gt;所有其他用户都有cs101cs112cs113子树。

这种结构的有效方法是什么?

1 个答案:

答案 0 :(得分:1)

看起来这对hash table来说是个不错的选择。如果您认为需要,也可以在数据库中创建一个。要查找类似的子树,您只需要检查具有与要比较的子树相同的哈希值的桶,这样可以提高速度。

您的问题不清楚您是否也对目录结构中的(常规)文件的相等性感兴趣,或者只是对子目录的 names 目录感兴趣。您可以设计哈希函数以尊重它们或不遵守它们。文件系统属性(例如权限)也是如此。如果相等性包含权限,则可能无法在不同用户的主目录中找到相等的子树,因为用户目录中的文件通常属于该用户。

可能有更好的方法。