哪个数据库最适合处理图形和树形结构数据?

时间:2013-01-31 16:35:04

标签: database graph tree hierarchy dapper

我打算与Dapper.NET合作开发一个家庭网站。

结构中会出现许多树状数据。 哪个数据库提供了使用循环/非循环树关系的最佳查询?

我想知道容易度&分层查询的性能比较。 即。像SQL Server中的CTE,在Oracle等中连接/开始等。

对于这类树形结构数据,dapper是否是最佳选择?

我需要选择正确的数据库和正确的Micro ORM。

抱歉我的英语不好。

1 个答案:

答案 0 :(得分:2)

我的问题仍然存在:您期望获得多少数据?

但除此之外,它不仅仅是您为数据选择的数据库类型,它也是表结构。层次结构树可以根据您的需要以各种不同的方式存储。

表格结构

特殊结构在遍历读取时可能非常快,但插入/更新(即nested sets),其他(邻接列表)反之则相反。对于99:1读取:写入比率(今天绝大多数应用程序读取的内容远远超过写入)我可能会选择一个具有左,右,深度和父级的修改后的嵌套集结构。这为阅读场景提供了最佳可能性。

数据库类型

除非你的目标是大量数据,否则我建议你选择最了解的任何SQL数据库(MSSQL,MySQL,Oracle)。但是,如果您的数据库包含大量的层次结构节点,那么使用specialised graph-oriented database调情可能是更好的选择。

8000万个节点

如果您要选择修改后的嵌套集解决方案(也使用负值,那么插入/更新一半的更新次数),您将拥有left的层次结构表。 rightIDParentID列会产生约1.2 GB的表格。但这是至少两年使用后的最高估计。

我的建议

快走& go light - 如果事实证明它根本不需要,请不要过度使用最好的数据库来存储层次结构。因此,我建议您最初使用关系数据库,这样即使解决方案在数百万条记录之后开始变得困难,您也可以快速进入市场。但是在你的数据库开始挣扎之前(我们在这里说几年),你将获得两件事:

  1. 你会看到你的产品是否会起飞(已经有很多族谱服务)所以你不会投资学习新技术;因为您将使用经过验证和支持的技术,可以让您快速上市
  2. 如果您的产品确实成功(我真的希望它确实如此),它仍然会给您足够的时间来学习不同的存储解决方案并实施它;使用适当的代码层时,不应该在以后需要时很难切换存储