Подтвердить что ты не робот

ZODB в реальной жизни

Написание приложения на Python и игра с различными настройками ORM и прямым SQL. Все они уродливы, как грех.

Я смотрел на ZODB как хранилище объектов, и это выглядит многообещающей альтернативой... вы бы порекомендовали его? Каковы ваши переживания, проблемы и критика, особенно в отношении перспектив разработчика, масштабируемости, целостности, долгосрочного обслуживания и альтернатив? Кто-нибудь начнет с ним проект? Почему?

Хотя идеи, стоящие за ZODB, Pypersyst и другими, интересны, для них, кажется, нет энтузиазма: (

4b9b3361

Ответ 1

Я использовал ZODB уже более десяти лет, в Zope и снаружи. Это здорово, если ваши данные иерархичны. Самое большое хранилище данных, которое работает у клиента, может быть... Я не знаю... 100 ГБ в нем? Что-то на этом уровне величины все равно.

Вот сравнение производительности с Postgres.

Если вы пишете веб-приложение WSGI, эти пакеты могут быть полезны:

Ответ 2

По сравнению с "любым хранилищем ключей" ключевыми функциями для ZODB будут автоматическая интеграция изменений атрибутов с реальными транзакциями ACID и чистые "произвольные" ссылки на другие постоянные объекты.

ZODB больше, чем только FileStorage, используемый по умолчанию в Zope:

  • Бэкэнд RelStorage позволяет помещать ваши данные в RDBMS, которые могут быть скопированы, реплицированы и т.д., используя стандартные инструменты.
  • ZEO позволяет легко масштабировать приложения и автономные задания.
  • Поддержка двухфазной фиксации позволяет координировать транзакции между несколькими базами данных, включая RDBMS (предполагается, что они обеспечивают уровень поддержки TPC).
  • Простая иерархия на основе атрибутов объекта или сдерживания: вам не нужно писать рекурсивные самосоединения для эмуляции.
  • Поддержка BLOB на базе файловой системы упрощает работу с большими файлами.

В целом, я очень доволен использованием ZODB практически для любой проблемы, где форма данных явно не квадратная.

Ответ 3

Я бы порекомендовал его.

У меня действительно нет критики. Если это хранилище объектов, которое вы ищете, это тот, который нужно использовать. Я сохранил там 2,5 миллиона объектов и не чувствовал себя щепоткой.

Ответ 4

ZODB используется для большого количества больших баз данных

Большинство использования ZODB - это, вероятно, пользователи Zope, которые мигрировали, если они уходят из Zope

Производительность не так хороша, как реляционная база данных + ORM, особенно если у вас много записей.

Долгосрочное обслуживание не так уж плохо, вы хотите время от времени упаковывать базу данных, но это можно сделать вживую.

Вы должны использовать ZEO, если вы собираетесь использовать более одного процесса с ZODB, который намного медленнее, чем использование ZODB напрямую.

Я не знаю, как ZODB работает на флеш-дисках.

Ответ 5

С маринованием вы должны иметь возможность использовать любую значение ключа таким же образом.