我試圖找到一個數據庫來作爲一個Python集。這是因爲我的數據太大而無法存儲在內存中。集合的NOSQL數據庫(與字典/鍵值存儲相對)?
我使用SQLite試過,但聽說它可能有性能問題>數據中10 GB,所以我期待在試圖CouchDB
問題是,它似乎是一個字典的工作,不喜歡組?
是否有一個數據庫工具作爲Python集?也就是說,它只是存儲值而不是鍵值對呢?
(我要的代碼在Python所以我感興趣的東西,很容易與Python的使用)
編輯:
我將它存儲爲一個巨大的集合,而不是幾個小。
我試圖找到一個數據庫來作爲一個Python集。這是因爲我的數據太大而無法存儲在內存中。集合的NOSQL數據庫(與字典/鍵值存儲相對)?
我使用SQLite試過,但聽說它可能有性能問題>數據中10 GB,所以我期待在試圖CouchDB
問題是,它似乎是一個字典的工作,不喜歡組?
是否有一個數據庫工具作爲Python集?也就是說,它只是存儲值而不是鍵值對呢?
(我要的代碼在Python所以我感興趣的東西,很容易與Python的使用)
編輯:
我將它存儲爲一個巨大的集合,而不是幾個小。
根據How is set() implemented?的主要答案,密鑰/值存儲的行爲類似於dict
,但無論如何,set
的實現方式基本如此。爲什麼不只是使用一個小的虛擬值,並對鍵進行設置操作?
Redis的可存儲的數據類型:
http://redis.io/topics/data-types
它有一個Python客戶端。
http://redis.io/topics/faq:「我喜歡Redis的高級操作和功能,但我不喜歡它將內存中的所有內容都存儲在內存中,並且我無法使數據集擴大內存。這個?」 –
保持upvote,因爲你在我的標題中回答了q。 –
爲什麼不使用設置值作爲唯一鍵的集合?
UPD: 例如,你有文件是這樣的:
{
_id: "someid",
youset: {val1, val2, val3},
}
您可以創建一個新的集合,如:
{
_id: val1,
owner: "someid"
}
{
_id: val2,
owner: "someid"
}
{
_id: val3,
owner: "someid"
}
...
既然你不同時需要整個數據,不需要將其嵌入到主文檔中。
請解釋。 –
如果您的目標是存儲超過10GB的單套,那麼您可能不應該使用python。另外,如果你有多個集合,每個集合都比較小,你是否考慮過一個平面文件數據庫? – goncalopp
我會把它作爲一個偉大的集合存儲。同樣希望有快速的事情,因爲這會對性能至關重要。 –
這使事情變得複雜。你期待什麼樣的訪問模式? – goncalopp