【问题标题】:Is there a DBMS optimized for tree data structures?是否有针对树数据结构优化的 DBMS?
【发布时间】:2013-03-24 21:37:26
【问题描述】:

我已经在互联网上搜索了很长时间,但无济于事。我正在寻找一个数据库来轻松存储和检索树结构和可能的图形。不是出于迫切的需要,而是我现在已经多次实现了这样的结构,并且想知道我是否真的必须一遍又一遍地这样做......

理想情况下,这样的 DBMS 将支持以下语句:(PSEUDO SQL)

CREATE TREE tree1;

INSERT NODE n1 INTO tree1.ROOT VALUES ('a', 'c')
INSERT NODE n2 INTO tree1.n1 VALUES ('b', 'c')
SELECT CHILDREN FROM tree1 WHERE n1 IS PARENT
SELECT PARENTS FROM tree1 WHERE n2 IS CHILD

我认为这意味着什么很清楚。 NODE 可以有任何数据结构...

我知道有几种方法可以在关系数据库中复制树或图结构,但是为什么没有专门的数据库系统来处理这种常见的数据结构呢?还是我错过了?

到目前为止,我发现了neo4j,这看起来很有趣,但似乎没有专门的树语法。另一方面,面向文档的数据库存储数据是分层的,但是像获取孩子或父母这样的操作并不容易实现。

最接近我的想法的是 Javascript/jQuery DOM 操作。您可以按路径导航、查询类、id 和属性,轻松获取/创建子项和父项....但它不是数据库系统。

您有什么建议,哪种数据库系统最适合树结构?到目前为止,我只研究过关系数据库。

【问题讨论】:

  • 对于小树(您可以在更新时重新提交整个树)文档数据库应该可以正常工作,否则 - 是的,也许是图形数据库

标签: database nosql


【解决方案1】:

您检查过 XML 数据库吗?这些可以使用 X-path 表达式进行查询。

但我见过的数据库中的大多数树数据结构都使用了很多客户端 加工。因此,与其制定复杂的查询, 您宁愿使用遍历树的递归函数查询数据库。 如果您有 SQL 背景,这可能是不寻常的,但它非常有效。

这可以使用任何 NoSQL 数据库来完成,但 neo4J 使它特别容易。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-11-12
    • 2011-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-30
    • 2010-11-04
    相关资源
    最近更新 更多