База данных для Python Twisted - PullRequest
       19

База данных для Python Twisted

16 голосов
/ 26 апреля 2010

Существует API для приложений Twisted для масштабируемого взаимодействия с базой данных: twisted.enterprise.dbapi

Непонятно, какую базу данных выбрать?

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

(пользователи только для чтения не обязательно выбирают данные, которые вставляет приложение Twisted; не то, чтобы база данных использовалась в качестве очереди сообщений)

Мое понимание - , которое я хотел бы исправить / посоветовать - это:

  • Postgres - отличная БД, но почти все привязки Python - и их запутанный лабиринт - заброшены
  • Для postgres есть psycopg2 , но это создает много шума из-за создания собственного пула соединений и прочего; это изящно / полезно / прозрачно сосуществует с пулом асинхронных подключений к базе данных Twisted и т.п.?
  • SQLLite - отличная база данных для мелких вещей, но если она используется многопользовательским способом, она блокирует целую базу данных, поэтому производительность может не соответствовать описанной мной схеме использования; он также имеет разные механизмы для ввода значений столбцов?
  • MySQL - после захвата Oracle кто захочет принять его сейчас или принять форк?
  • Есть что-нибудь еще?

Ответы [ 3 ]

15 голосов
/ 26 апреля 2010

Масштабируемость

twisted.enterprise.adbapi не обязательно является интерфейсом для масштабируемого общения с базами данных. Масштабируемость - это проблема, которую вы решаете отдельно. Единственное, на что действительно претендует twisted.enterprise.adbapi, - это позволить вам использовать модули DB-API 2.0 без блокировок, которые обычно подразумевают.

Postgres

Да. Это правильный ответ. Я не думаю, что все привязок Python являются заброшенными - например, psycopg2, похоже, активно поддерживается. Фактически, они просто добавили несколько новых привязок для асинхронного доступа, которые Twisted может в конечном итоге предложить интерфейс.

SQLite3 тоже довольно крутой. Возможно, вы захотите сделать возможным использование Postgres или SQLite3 в вашем приложении; Например, ваши модульные тесты будут лучше работать с SQLite3, даже если вы хотите использовать Postgres.

Другое

Трудно понять, будет ли другая база данных целиком (возможно, что-то нереляционная) соответствовать вашему приложению лучше, чем Postgres. Это во многом зависит от конкретных данных, которые вы собираетесь хранить, и от запросов, которые вам нужно выполнить. Если в вашей базе данных есть интересные отношения, Postgres кажется довольно хорошим ответом. Если все ваши запросы выглядят как «SELECT foo, bar FROM baz», возможно, существует более простой и высокопроизводительный вариант.

10 голосов
/ 04 января 2012

Существует библиотека txpostgres, которая заменяет twisted.enterprise.dbapi, вместо пула потоков и блокирует ввод-вывод БД, она полностью асинхронная, используя встроенные асинхронные возможности psycopg2.

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

0 голосов
/ 01 июля 2012

Вы можете посмотреть базы данных nosql, такие как mongodb или couchdb с витой. Масштабирование может быть проще с базами данных на основе nosql, чем с mysql или postgres.

...