我的应用程序数据包含一个巨大的树,随着用户与系统交互而增长。图形数据库比key-val商店更适合存储大树吗?可扩展性的损失(对于图形dbs通常更难分割)由其他功能补偿?图形数据库是否比keyval存储更适合存储树?
2
A
回答
4
这要看情况。
如果你使用一个关键值存储,我会想象你会为孩子做很多查找,这可能是一个很长的列表,所以你的关键应该是父节点,并且你的价值是孩子,你可能会有很多动作和查询桌子。这通常是您在关系数据库中存在的问题,即这些类型的表连接。
图形数据库是伟大的,因为你不做连接,但遍历,所以你会开始在根,并指定深度,或结束条件,然后你可以让图遍历使用传出关系,让你你的最终结果。
我同意你的看法分片不是图形数据库一个不错的选择,至少不能跨店关系遍历的感觉。但我相信,对数据进行适当的建模,这应该不成问题,至少在图数据库很聪明的情况下不会有问题。
的Neo4j有密集的节点,其中有许多(500K +)关系的节点可能会导致慢下来遍历一个问题,但你可以使用索引解决此问题得到。除此之外,对于大型数据来说它非常棒,因为它在磁盘上的存储效率很高,并且遍历速度非常快。
1
定义 “巨大的”。如果你能适应Neo4J的限制/限制或者有一个自然的和合乎逻辑的分片模型,Neo4J将是一个更简洁/更简单/更强大的方法,并且需要更少的代码。正如尼古拉斯所说,如果你的数据库会有很多“热点”节点(很多关系),你可能会遇到一些挑战,但是通常你可以使用应用程序设计方法来解决这个限制。
相关问题
- 1. Phonegap存储,数据库是否存在
- 2. 图形数据库和RDF三重存储:使用python存储图形数据
- 3. 这是更适合键值存储还是树?
- 4. YAML是否适合在关键值存储中存储记录?
- 5. Cassandra是否适合存储文件?
- 6. Hashtable是否适合存储资产?
- 7. 列存储数据库是否与SSD存储时代相关?
- 8. SharedPreferences是否存储在数据库中?
- 9. 是否存在从数据存储库/数据库中持久存储图像的库
- 10. Cassandra是否适合用作主数据存储?
- 11. neo4j是否适合存储一般的nosql数据?
- 12. 图形数据库如何将数据存储到持久存储?
- 13. 比较源码树与git存储库?
- 14. 哪一个更适合在视图状态下存储数据?
- 15. NoSQL适合存储用户数据吗?
- 16. 树的ExtJS数据存储
- 17. 存储树数据结构
- 18. 存储树和图的数据?
- 19. SQL数据库是否适合存储许多玩家及其游戏?
- 20. 文档/ NoSQL数据库是否适合存储资产负债表?
- 21. 这个数据库设计是否适合存储调查结果?
- 22. 数据库存储
- 23. 百分比值存储在数据库
- 24. 如何存储和查询树形结构的数据库
- 25. Android是否永久存储SQLite数据,还是暂时存储?
- 26. 如何存储树聚合
- 27. PostgreSQL是否适合存储低流量项目的图像?
- 28. 什么数据库更适合存储和搜索关键字/值对数据?
- 29. Spring数据存储库聚合
- 30. 是否可以通过数据存储API将图像存储到Dropbox数据存储?
我很惊讶,没有人提到文件的数据库,如蒙戈DB。或者,也许这只是一种键值存储?根据我的经验,文档数据库不是存储树的答案,因为如果不将整个文档树读入内存,就无法访问内部节点。我希望有一天有人想出一个NoSQL树数据库。 –