我试图找到一个数据库来作为一个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