我打算与Dapper.NET合作开发一个家庭网站。
结构中会出现许多树状数据。 哪个数据库提供了使用循环/非循环树关系的最佳查询?
我想知道容易度&分层查询的性能比较。 即。像SQL Server中的CTE,在Oracle等中连接/开始等。
对于这类树形结构数据,dapper是否是最佳选择?
我需要选择正确的数据库和正确的Micro ORM。
抱歉我的英语不好。
答案 0 :(得分:2)
我的问题仍然存在:您期望获得多少数据?
但除此之外,它不仅仅是您为数据选择的数据库类型,它也是表结构。层次结构树可以根据您的需要以各种不同的方式存储。
特殊结构在遍历读取时可能非常快,但插入/更新(即nested sets),其他(邻接列表)反之则相反。对于99:1读取:写入比率(今天绝大多数应用程序读取的内容远远超过写入)我可能会选择一个具有左,右,深度和父级的修改后的嵌套集结构。这为阅读场景提供了最佳可能性。
除非你的目标是大量数据,否则我建议你选择最了解的任何SQL数据库(MSSQL,MySQL,Oracle)。但是,如果您的数据库包含大量的层次结构节点,那么使用specialised graph-oriented database调情可能是更好的选择。
如果您要选择修改后的嵌套集解决方案(也使用负值,那么插入/更新一半的更新次数),您将拥有left
的层次结构表。 right
,ID
和ParentID
列会产生约1.2 GB的表格。但这是至少两年使用后的最高估计。
快走& go light - 如果事实证明它根本不需要,请不要过度使用最好的数据库来存储层次结构。因此,我建议您最初使用关系数据库,这样即使解决方案在数百万条记录之后开始变得困难,您也可以快速进入市场。但是在你的数据库开始挣扎之前(我们在这里说几年),你将获得两件事: