【问题标题】:Recommendations with hierarchical data on non-relational databases?关于非关系数据库的分层数据的建议?
【发布时间】:2011-01-08 14:08:02
【问题描述】:

我正在开发一个使用非关系数据库作为后端的网络应用程序(django-nonrel + AppEngine)。 我需要存储一些分层数据(项目/子项目_1/子项目_N/任务),我想知道我应该使用哪种模式。现在我想到了:

  • 邻接列表(存储项目的父ID)
  • 嵌套集(存储项目的左右值)

在我的情况下,普通用户的嵌套深度不会超过 4-5 级。 另外,在 UI 上,我希望对第一级的项目进行分页,以避免在第一页加载时加载太多项目。

据我目前了解,当层次结构更多地用于显示时,嵌套集非常有用。经常在树上进行编辑时,邻接列表非常有用。就我而言,我想我需要显示而不是编辑(使用嵌套集时,即使显示效果很好,上面的分页也会使编辑变得复杂)。

根据您在非关系数据库方面的经验,您有什么想法和建议吗?

【问题讨论】:

    标签: google-app-engine django-nonrel hierarchical-trees


    【解决方案1】:

    如何存储它们取决于您需要如何查询它们。例如,如果您只需要查找父级的直接子级,则邻接表模型可能是最简单的。如果您想枚举整个子树,祖先列表或嵌套集可以很好地工作 - 尽管我会避免在 App Engine 上使用嵌套集。

    如果您需要树中所有对象的事务完整性 - 并且不会以每秒几次的频率更新整个树 - 您应该研究 App Engine 对实体组和祖先的支持。

    【讨论】:

      【解决方案2】:

      我使用 SQL Server 来存储非关系数据。 SQL Server 有这些称为 hierarchyID 的东西。它们使大部分内容透明。

      您遇到的具体问题是什么?

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-12-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-02-06
        • 1970-01-01
        相关资源
        最近更新 更多