我需要解決的問題是將相當於文件系統樹的數據存儲到數據庫中(以加速搜索操作)。該樹包含+400.000.000節點,並且對於每個需要存儲某些元信息的inode(平均文件路徑爲100個字節,元信息約爲50個字節)。一次
3.一次刪除〜20.000記錄
2. INSERT〜20.000記錄數據庫存儲一棵巨大的樹
以下操作將被製成,從C++程序:
1. SELECT(〜200.000與預期的結果)。到目前爲止,我只考慮關係數據庫:MySQL,MariaDB,PostgresSQL(迄今爲止我還沒有做過任何測試,我仍然處於「信息收集」階段),並且我閱讀了一些有關在這樣的存儲樹的文檔一個DB。
第一選項
- 鄰接表型號:表中每個項目包含一個指向它的父。
http://mikehillyer.com/articles/managing-hierarchical-data-in-mysql/
第二個選項
- 存儲所有目錄中的一個單獨的表
- 有一個單獨的表文件的其餘部分,並指出了它們屬於
的目錄,這樣的表會是這樣的:
DirTable:
/home
/home/test/
的FileTable:
file1
file2
我的問題:
1.你知道適合在關係數據庫中存儲大樹另一種模式? 2.如果我要搜索NoSQL DB,我應該從哪裏開始?
非常感謝。
你可以看看層次數據庫,如LDAP(OpenDS的,OpenDJ,OpenLDAP的)。你想優化什麼樣的搜索操作?例如。在樹中的任何位置搜索具有給定名稱的文件並搜索具有限於子樹的一組屬性的文件最好由略微不同的數據組織來服務。 – Joni 2012-07-25 13:02:35
嗨,Joni。因爲我們要對每個操作的單個文件(來自子樹)進行大量搜索,所以我們認爲最好從內存中的子樹加載所有文件(假設有200,000個條目),儘可能減少內存佔用量,然後在內存中執行所有查找操作。否則(對每個文件單個選擇)將效率太低。 – 2012-07-25 14:57:25