Какой ключ: хранить значение для использования с Python?

Итак, я смотрю на различный ключ: value (где значение либо строго одно значение, либо, возможно, объект) для использования с 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/ Основанный на Tokyo Tyrant, написанный на 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 гигабайтная память, 14 000 вставок в секунду, 16 000 секунд для чтения. Нет реальной оптимизации, приятно.

memcachedb требует порядка от 17 000 до 23 000 вставок в секунду, от 44 000 до 64 000 просмотров в секунду.

Мне также интересно, как другие складывают скорость по скорости.

Ответ 2

полка (сохранение dictonaris в файле/стандартный модуль python)

ZODB - база данных persisatnce (база данных объектов python, без SQL)

Больше инструментов сопротивления: http://wiki.python.org/moin/PersistenceTools

Ответ 3

Мои 5 центов:

Вам нужны распределенные системы с размерами байтов размером tera или большой производительностью записи?

Ну, им нужен один из ключей: значение /BigTable/Dynamo. Это будет Cassandra, Tokyo Tyrant, Redis и т.д. Вам нужно убедиться, что клиентская библиотека поддерживает очертание, чтобы вы могли писать несколько баз данных. Какой из них можно использовать здесь, вы можете решить только после тестирования с данными, которые выглядят так, как вам кажется.

Вам нужны данные для доступа к другим системам/языкам, чем Python?

Поскольку эти базы данных вообще не имеют структуры для своих данных, если они доступны из других языков/клиентов, которые зависят от того, что вы храните в нем. Но если вам нужен этот CouchDB, это хороший выбор, поскольку он хранит его данные в документах JSON, поэтому вы получаете интероперабельность. Насколько хорош CouchDB на действительно массивных данных и очертаниях, пока неясно.

Вам не нужна совместимость с другими языками, кроме Python или распределенного многосерверного хранилища?

Используйте ZODB.

Ответ 4

Как насчет Amazon SimpleDB?

Существует библиотека python с открытым исходным кодом, которая называется boto для взаимодействия с Python с веб-службами Amazon.