【问题标题】:NoSQL: Store a hierarchical Tree (representing files and folders)NoSQL:存储分层树(表示文件和文件夹)
【发布时间】:2015-03-09 04:05:06
【问题描述】:

我想在磁盘上存储多个树(我的树代表文件和文件夹的层次结构),每个节点上都有键/值信息。

我希望能够比较这些树(交集、联合、差异……),它们会有数百万个节点。

哪种解决方案最适合?基于文档的存储 (MongoDB...) 还是 Graph DB (Neo4J...)?

【问题讨论】:

    标签: mongodb tree graph-databases database nosql


    【解决方案1】:

    图形数据库非常适合树形结构。在 Neo4j 中,您可以像这样非常简单地表示文件和文件夹:

    (:Folder)-[:CONTAINS]->(:File)
    (:Folder)-[:CONTAINS]->(:Folder)
    

    如果您想比较结构,可以进行两个密码查询

    MATCH path=(top_folder:Folder)-[:CONTAINS*1..15]->(leaf)
    WHERE
      ID(top_folder) = {specified_id}
      (leaf:File OR leaf:Folder) AND
      NOT(leaf-[:CONTAINS]->())
    RETURN path
    

    这将为您返回目录结构的所有路径,从您指定的文件夹开始,然后您可以进行比较。

    或者,如果您对 Java(或与 Java 集成的某些语言)感到满意,您可以使用内置的 Neo4j API 来构建自己的递归算法来比较结构。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-03-29
      • 2014-12-05
      • 2016-04-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-13
      相关资源
      最近更新 更多