tos*_*spo 11 postgresql rdbms hierarchical-data neo4j transitive-closure-table
我正在开始一个有一些分层数据的新项目,我正在查看目前存储在数据库中的所有选项.
我正在使用PostgreSQL,它允许递归查询.我还研究了关系数据库的设计模式,比如闭包表,我看了一下图形数据库解决方案,比如neo4j.
我发现很难在这些选项之间做出决定.例如:假设我的RDBMS允许递归查询,那么使用闭包表是否仍然有意义?在可维护性和性能方面,它与图数据库解决方案相比如何?
任何意见/经验将不胜感激!
Ang*_*own 10
如果你可以使用递归查询,整个闭包表是多余的:)
我认为有一个复杂的递归查询要比一个单独的表和相关触发器的额外IO(和磁盘空间)处理要好一些.
我在postgres中使用递归查询做了一些简单的测试.在表中有几百万行查询仍然<10ms用于返回特定孩子的所有父母.返回所有孩子的速度也很快,具体取决于父母的水平.它似乎更依赖于磁盘IO获取行而不是查询速度本身.这是单用户完成的,因此不确定它在负载下的执行情况.我怀疑如果你还可以将大部分表保存在内存中(并正确设置postgres),它会非常快.按父ID对表进行聚类似乎也有帮助.
| 归档时间: |
|
| 查看次数: |
3189 次 |
| 最近记录: |