13

因此,我正在研究用于 Python 的各种 key:value(其中 value 严格来说是单个值或可能是一个对象)存储,并找到了一些有希望的存储。我目前还没有具体要求,因为我处于评估阶段。我正在寻找什么是好的,什么是坏的,这些东西处理得好或不好的极端情况是什么,等等。我相信你们中的一些人已经尝试过它们,所以我很想听听你的发现/问题/ETC。在 Python 的各种 key:value 存储上。我主要看:

memcached - http://www.danga.com/memcached/ python 客户端:http://pypi.python.org/pypi/python-memcached/1.40 http://www.tummy.com/Community/software/python-内存缓存/

CouchDB - http://couchdb.apache.org/ python 客户端:http ://code.google.com/p/couchdb-python/

东京暴君 - http://1978th.net/tokyotyrant/ python 客户端:http ://code.google.com/p/pytyrant/

Lightcloud - http://opensource.plurk.com/LightCloud/基于 Tokyo Tyrant,用 Python 编写

Redis - http://redis.io/ python 客户端:http: //pypi.python.org/pypi/txredis/0.1.1

MemcacheDB - http://memcachedb.org/

所以我开始使用简单的计数来生成数字键和“A short string of text”的值进行基准测试(只需插入键并读取它们):

memcached:CentOS 5.3/python-2.4.3-24.el5_3.6,libevent 1.4.12-stable,memcached 1.4.2,默认设置,1 gig 内存,每秒 14,000 次插入,16,000 秒读取。没有真正的优化,很好。

memcachedb 声称每秒插入 17,000 到 23,000 次,每秒读取 44,000 到 64,000 次。

我也想知道其他人如何在速度方面有所提高。

4

4 回答 4

7

这主要取决于您的需要。

阅读评估数据库的注意事项以了解如何评估它们。

于 2009-10-24T15:39:07.040 回答
3

搁置(将 dictonaris 存储在文件/标准 python 模块中)

ZODB - persisatnce 对象数据库(python 对象数据库,无 SQL)

更多持久性工具: http ://wiki.python.org/moin/PersistenceTools

于 2009-10-24T17:40:51.713 回答
3

我的 5 美分:

您是否需要具有 TB 级数据或海量写入性能的分布式系统?

好吧,他们需要一个大键:值/BigTable/Dynamo 类型的东西。Cassandra、Tokyo Tyrant、Redis 等会这样做。您需要确保客户端库支持分片,以便您可以有多个数据库要写入。只有在使用看起来像您认为自己需要的数据进行测试后,您才能决定在此处使用哪一个。

您是否需要可以从 Python 以外的其他系统/语言访问数据?

由于这些数据库根本没有数据结构,因此是否可以从其他语言/客户端访问它取决于您在其中存储的内容。但是如果你需要这个 CouchDB 是一个不错的选择,因为它将它的数据存储在一个 JSON 文档中,所以你可以获得互操作性。不过,CouchDB 在海量数据和分片上的表现如何尚不清楚。

除了 Python 或分布式多服务器存储之外,您不需要与其他语言的互操作性吗?

使用 ZODB。

于 2009-10-25T07:02:56.633 回答
-1

亚马逊的 SimpleDB 怎么样?

有一个名为 boto 的开源 Python 库,用于连接 Amazon Web 服务的 Python。

于 2009-10-24T08:34:38.800 回答