Какой ключ: хранилище значений использовать с Python? [закрыто]

StackOverflow https://stackoverflow.com/questions/1617309

Вопрос

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

memcachedb запрашивает порядка 17 000–23 000 вставок в секунду, 44 000–64 000 операций чтения в секунду.

Мне также интересно, как другие набирают скорость.

Это было полезно?

Решение

Это в основном зависит от ваших потребностей.

Прочитайте предупреждения об оценке баз данных в понять, как их оценить.

Другие советы

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

ZODB - постоянная база данных объектов (база данных объектов Python, без SQL)

Дополнительные инструменты персистентности: http://wiki.python.org/moin/PersistenceTools

Мои 5 центов:

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

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

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

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top