2

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

结构中会出现很多类似树的数据。哪个数据库提供了处理循环/非循环树关系的最佳查询?

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

dapper 是否是此类树状结构数据的 Micro ORM 的最佳选择?

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

对不起,我的英语不好。

4

1 回答 1

3

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

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

表结构

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

数据库类型

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

8000 万个节点

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

我的建议

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

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