哪個數據庫最適合處理圖形和樹形結構數據?

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