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

dapper database graph hierarchy tree

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

结构中将存在许多树状数据。哪个数据库提供了与循环/非循环树关系一起使用的最佳查询?

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

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

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

对不起,我的英语不好。

热门答案

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

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

表结构

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

数据库类型

除非你的目标是大量的数据,否则我建议你选择最了解的任何SQL数据库(MSSQL,MySQL,Oracle)。但是,如果您的数据库将包含大量的层次结构节点,那么使用专门的面向图形的数据库进行调情可能是更好的选择。

8000万个节点

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

我的建议

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

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


许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow