我想你現在正在嘗試重新創建一個鍵值數據庫。
也許最簡單的事情是檢查sqlite3
模塊是否會爲您提供您所需要的。使用現成的數據庫比滾動自己的數據庫更容易!
當然,sqlite3
不是鍵值DB(表面上),所以如果你需要的東西更簡單,看看LMDB及其Python綁定:http://lmdb.readthedocs.org/en/release/
這是因爲重量輕,速度快隨着它的到來。這可能是實現你想要的最快方法。
應該指出的是,沒有最佳的鍵值數據庫。有幾個方面需要考慮。至少:
- 你讀了很多或寫了很多嗎?
- 什麼是關鍵和值的大小?
- 你需要交易/防撞嗎?
- 你有重複的鍵(一個鍵,幾個值)?
- 你想排序的密鑰?
- 您是否想按照插入的順序讀取數據?
- 什麼是您的數據庫大小(MB,GB,TB,PB)?
- 您是否受限於IO或CPU?
例如,我上面提到的LMDB在讀取密集型任務中非常好,而不是在寫密集型任務中。它提供事務處理,按鍵排列順序並防止崩潰(受底層文件系統限制)。但是,如果您需要經常編寫數據庫,LMDB可能不是最佳選擇。
另一方面,SQLite並不是完成這項任務的理想選擇 - 理論上是speking。實際上,它被嵌入到標準的Python發行版中,因此易於使用。它可以提供足夠的性能,因此可能是最好的選擇。
那裏有許多高質量的數據庫。通過不提及它們,我不會試圖給出這樣的印象:在這個答案中提到的數據庫是唯一不錯的選擇。大多數數據庫管理員都有一個非常好的理由。雖然有些已經過時,但大多數在應用領域都有自己的甜點。
該領域不斷變化。有兩個全新的數據庫可用,舊的數據庫系統被更新。閱讀舊基準時應該牢記這一點。此外,所使用的硬件類型也有其影響;具有SSD磁盤的計算機,雲計算實例和具有HDD的傳統計算機在性能方面的表現完全不同。
來源
2014-07-22 08:19:08
DrV
感謝您的及時迴應!我會嘗試兩個。 – g0m3z
根據DrV的想法,我搜索了'python的鍵值數據庫',結果發現在這個主題中還有另一個發展良好的線程:[link](http://stackoverflow.com/questions/1690605/reliable -and-efficient-key-value-database-for-linux) – g0m3z
@ g0m3z:在這個線程中有很多很好的討論。但是,到那時,所有現代系統都不存在了。另外,我認爲你不應該開始評估分佈式或其他非常複雜的系統,因爲你的任務很簡單。從單個文件開始。就我個人而言,我會嘗試SQLite,如果它不是太慢,就使用它,並忘記理論上的考慮。 – DrV