Какой ключ: хранилище значений использовать с Python? [закрыто]
-
06-07-2019 - |
Вопрос
Итак, я смотрю на различные ключи: значение (где значение - это строго одно значение или, возможно, объект) хранит для использования с 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.