Какой ключ: хранилище значений использовать с Python?
Поэтому я смотрю на различные ключи: значение (где значение - это строго одно значение или, возможно, объект) хранит для использования с 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, memcached 1.4.2 с настройками по умолчанию, 1 гигабайт памяти, 14 000 вставок в секунду, 16 000 секунд для чтения. Нет реальной оптимизации, приятно.
memcachedb запрашивает порядка 17 000–23 000 операций вставки в секунду, 44 000–64 000 операций чтения в секунду.
Мне также интересно, как другие набирают скорость.
4 ответа
Это в основном зависит от ваших потребностей.
Прочитайте предостережения об оценке баз данных, чтобы понять, как их оценивать.
Мои 5 центов:
Вам нужны распределенные системы с терабайтовыми данными или высокой производительностью записи?
Ну, им нужен один из больших ключей: значения типа /BigTable/ типа Dynamo. Это может быть сделано Кассандрой, Токийским Тираном, Редисом и т. Д. Вам необходимо убедиться, что клиентская библиотека поддерживает разделение, чтобы вы могли иметь несколько баз данных для записи. Какой из них использовать здесь, вы можете решить только после тестирования с данными, которые выглядят так, как вам нужно.
Вам нужны данные, чтобы быть доступными из других систем / языков, кроме Python?
Поскольку эти базы данных вообще не имеют структуры для своих данных, если они доступны из других языков / клиентов, ваша зависит от того, что вы храните в них. Но если вам нужен этот CouchDB, это хороший выбор, поскольку он хранит свои данные в документах JSON, так что вы получаете совместимость. Насколько хорош CouchDB для действительно больших данных и шардинга, пока неясно.
Вам не нужна совместимость с другими языками, кроме Python или распределенным многосерверным хранилищем?
Используйте ZODB.
Полка (сохранение dictonaris в файле / стандартном модуле Python)
ZODB - объектная база данных Persisatnce (база данных объектов Python, без SQL)
Дополнительные инструменты персистентности: http://wiki.python.org/moin/PersistenceTools
Как насчет Amazon SimpleDB?
Существует python-библиотека с открытым исходным кодом, называемая boto, для взаимодействия Python с веб-сервисами Amazon.