所以我正在查看各种键:值(其中值严格地是单个值或可能是对象)存储以供Python使用,并且已经找到了一些有希望的键。我还没有具体要求,因为我处于评估阶段。我正在寻找什么是好的,什么是坏的,这些东西处理得好或不合适的角落情况等等。我相信你们中的一些人已经尝试过它们所以我很想听听你们的发现/问题/等等。在各种关键:使用Python的值存储。我主要看的是:
memcached - http://www.danga.com/memcached/ python客户端:http://pypi.python.org/pypi/python-memcached/1.40 http://www.tummy.com/Community/software/python-memcached/
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/基于东京暴君,用Python编写
Redis - http://redis.io/ python客户端:http://pypi.python.org/pypi/txredis/0.1.1
MemcacheDB - http://memcachedb.org/
所以我开始基准测试(简单地插入键并读取它们),使用简单的计数生成数字键和值“短文本字符串”:
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次读取。
我也想知道其他人如何加快速度。
答案 0 :(得分:6)
这主要取决于你的需要。
阅读Caveats of Evaluating Databases以了解如何评估它们。
答案 1 :(得分:3)
搁置(在文件/标准python模块中存储dictonaris)
ZODB - persisatnce对象数据库(python对象数据库,没有SQL)
答案 2 :(得分:3)
我的5美分:
您是否需要具有tera字节大小数据或大量写入性能的分布式系统?
好吧,他们需要一个大键:value / BigTable / Dynamo类型的东西。那将是Cassandra,Tokyo Tyrant,Redis等。你需要确保客户端库支持分片,这样你就可以有多个数据库来写。在使用看起来像您认为需要的数据进行测试后,您在此处使用哪一个只能由您决定。
您是否需要从Python以外的其他系统/语言访问数据?
由于这些数据库根本没有数据结构,如果可以从其他语言/客户端访问,那么您的数据依赖于您存储在其中的内容。但是如果你需要这个CouchDB是一个不错的选择,因为它将数据存储为JSON文档,因此你可以获得互操作性。但是,CouchDB在真正庞大的数据和分片上的表现还不清楚。
您是否需要与Python或分布式多服务器存储之外的其他语言的互操作性?
使用ZODB。
答案 3 :(得分:-1)
亚马逊的SimpleDB怎么样?
有一个名为boto的开源python库,用于连接Amazon Web服务的python。