我计划与 Dapper.NET 合作建立一个家庭网站。
结构中会出现很多类似树的数据。哪个数据库提供了处理循环/非循环树关系的最佳查询?
我想知道分层查询的易用性和性能比较。IE。如 SQL Server 中的 CTE、Oracle 中的 Connect By/Start with 等。
dapper 是否是此类树状结构数据的 Micro ORM 的最佳选择?
在为此选择正确的数据库和正确的 Micro ORM 时,我需要意见。
对不起,我的英语不好。
我的问题仍然存在:您期望有多少数据?
但除此之外,它不仅仅是您为数据选择的数据库类型,它也是表结构。层次树可以根据您的需要以各种不同的方式存储。
特定结构在遍历读取时可能非常快,但在插入/更新(即嵌套集)时很慢,其他结构(邻接列表)则相反。对于 99:1 的读:写比率(当今绝大多数应用程序的读取远多于写入),我可能会选择具有左、右、深度和父级的修改后的嵌套集结构。这为您提供了阅读场景的最佳可能性。
除非您的目标是大量数据,否则我建议您使用您最了解的任何 SQL 数据库(MSSQL、MySQL、Oracle)。但是,如果您的数据库将包含大量的层次结构节点,那么使用专门的面向图形的数据库可能是一个更好的选择。
如果您选择修改后的嵌套集解决方案(也使用负值,因此插入/更新一半的更新次数),您将拥有具有left
. right
,ID
以及ParentID
会产生大约 1.2 GB 表的列。但这是您使用至少两年后的最高估计。
快点和轻点- 如果事实证明根本不需要它,请不要通过使用最好的数据库来存储您的层次结构来过度设计。因此,我建议您最初使用关系数据库,这样您就可以快速进入市场,即使解决方案在数百万条记录后开始挣扎。但是在你的数据库开始挣扎之前(我们在这里谈论几年)你会得到两件事: