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

Sen*_*cob 4 database tree graph hierarchy dapper

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

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

我想知道分层查询的易用性和性能比较。IE。例如 SQL Server 中的 CTE、Oracle 中的 Connect By/Start with 等。

dapper 是此类树结构数据的微型 ORM 的最佳选择吗?

我需要意见来为此选择正确的数据库和正确的 Micro ORM。

对不起,我的英语不好。

Rob*_*nik 5

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

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

表结构

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

数据库类型

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

8000万个节点

如果您选择修改后的嵌套集解决方案(也使用负值,因此插入/更新的更新数量减半),您将拥有具有left. right和列将生成大约 1.2 GB 的表IDParentID但这是您至少使用两年后的最高估计。

我的建议

快速而轻松- 如果事实证明根本不需要,请不要过度设计,使用最好的数据库来存储层次结构。因此,我建议您首先使用关系数据库,这样您就可以快速进入市场,即使解决方案在数百万条记录后将开始陷入困境。但在你的数据库开始陷入困境之前(我们在这里谈论的是几年),你将获得两件事:

  1. 你会首先看到你的产品是否会成功(已经有很多谱系服务),这样你就不会投资学习新技术;因为您使用经过验证且受支持的技术将使您快速进入市场
  2. 如果您的产品确实成功(我真诚地希望它成功),它仍然会给您足够的时间来学习不同的存储解决方案并实施它;有了适当的代码层,以后需要时切换存储应该不会太困难