首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >数据库中的分层数据:递归查询、闭包表格和图形数据库

问数据库中的分层数据:递归查询、闭包表格和图形数据库
EN

Stack Overflow用户
提问于 2011-09-21 17:49:58
回答 2查看 3.7K关注 0票数 14

我正在开始一个新的项目,其中包含一些分层数据,目前我正在研究在数据库中存储这些数据的所有选项。

我使用的是PostgreSQL,它允许递归查询。我还研究了关系数据库的设计模式,如closure tables和neo4j等图形数据库解决方案。

我发现很难在这些选项之间做出选择。例如:假设我的RDBMS允许递归查询,那么使用闭合表仍然有意义吗?在可维护性和性能方面,这与图形数据库解决方案相比如何?

如有任何意见或经验,我们将不胜感激!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-09-21 22:29:39

如果可以使用递归查询,则整个闭合表都是多余的:)

我认为拥有一个复杂的递归查询要比处理一个单独的表和相关触发器的额外IO (和磁盘空间)要好得多。

我用postgres做了一些简单的递归查询测试。尽管表中有几百万行,但查询返回特定子代的所有父代的时间仍然不到10ms。根据父级的不同,返回所有子级的速度也很快。它似乎更多地依赖于磁盘IO获取行,而不是查询速度本身。这是单用户完成的,所以不确定它在负载下会如何执行。我怀疑如果你还能在内存中保存大部分的表(并正确设置postgres ),它仍然会非常快。根据父id对表进行聚类似乎也有帮助。

票数 10
EN

Stack Overflow用户

发布于 2011-09-21 18:46:52

闭合表的级别字段(“深度”)是多余的。它只需要一个递归查询来计算它。这差不多就是总结了。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7497812

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档