2010-12-16 90 views
2

在現有RDBMS之上是否有任何開源分層數據庫或仿真?我正在尋找一個DMBS(或現有的RDBMS插件),它可以存儲分層數據並允許在分層數據上執行查詢(例如「SELECT LEVEL ... CONNECT BY ...」,「SELECT PARENT ..」 。「 例如)。我知道Oracle有一些支持,但有沒有更復雜的解決方案?搜索具有分層結構的DBMS

回答

3

這樣做沒有標準化的插件。我看過不止一次。但是,有很多選擇。從我剛纔的問題中看到的關於同一主題:

What are the options for storing hierarchical data in a relational database?

總之,如果您使用的是表ID和PARENTID(又名鄰接表)使用很多數據庫通用表表達式(Oracle的CONNECT BY是最顯着的例外之一)。 OTO,類似於物化路徑或嵌套集可能更適合您的情況 - 例如能夠輕鬆找到「血統」,而在鄰接列表中這是一項昂貴的操作。

通常情況下,需要廣泛使用分層數據的系統(例如CMS)最終會發生什麼情況,它實現了多種解決方案。這個假設讀取嚴重超過寫入。

+0

目前爲止最好的迴應 – 2010-12-21 13:03:23

+0

雖然經常出現的問題不夠多,所以有一個明顯的優點。 – orangepips 2010-12-21 13:47:28

0

關係數據不直接支持層次結構中,像XML固有的層次結構的方式做。您必須使用數據模型(例如嵌套集合或直接自聯接)來對層次結構進行建模。

根據您擁有的系統類型,Common Table Expressions將允許您對數據運行分級查詢。自2005年以來SQL Server版本支持CTE,最近版本的DB/2和PostgreSQL - 以及其他一些系統。 CTE比CONNECT BY更加繁瑣,但它們確實運行在各種各樣的平臺上。