【问题标题】:A (rather) specific design for a custom persistent tree-like data structure用于自定义持久树状数据结构的(相当)特定设计
【发布时间】:2013-12-04 17:31:53
【问题描述】:

首先,设计:我需要某种树,其中每个节点可以有任意数量的子节点。每个节点都携带一个有效载荷。节点的总有效负载是特定节点的有效负载+它的所有祖先的有效负载直到根节点。

预计在树上执行的操作是:插入、更新、删除(相当频繁)、将子树合并到树中(不太频繁)。还有一个操作是改变子树在树中的位置,随后重新计算节点及其所有后代的有效负载。

具体的实现可以是任何东西,从简单的持久映射到专门设计的 MySQL 模式(也考虑了 NoSQL 解决方案)。首选语言(或存在绑定)是 Java,但如果您能就正确的数据结构给我一个建议,那也很好。

问题是 - 在我的情况下最合适的解决方案是什么?

【问题讨论】:

  • 抱歉,问题是?
  • @Taylor,今天天气怎么样?,当然
  • sql 中的树,你有几个选择。一种是一对多的节点到节点的关系。这在某些情况下有效,但是您不知道给定节点的深度,并且需要递归地爬上 sql 最讨厌的树。另一种方法是嵌套集。 en.wikipedia.org/wiki/Nested_set_model

标签: java mysql database data-structures persistence


【解决方案1】:

关系数据库不太适合分层数据。他们可以做到,但是除了最基本的事情之外,做任何事情的查询往往非常复杂。

至于 NoSQL,我可以推荐 Apache Jackrabbit - 它是用 Java 为 Java 编写的持久性数据存储,专为分层数据而设计。它支持事务、安全以及 XPath 风格和 SQL 风格的查询。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-18
    • 1970-01-01
    • 2016-04-06
    • 1970-01-01
    • 2017-01-26
    • 1970-01-01
    相关资源
    最近更新 更多