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

Какой механизм базы данных выбрать для приложения Django?

Я новичок в Django и только использовал sqlite3 в качестве механизма базы данных в Django. Теперь одно из приложений, над которыми я работаю, становится довольно большим, как с точки зрения сложности моделей, так и запросов/вторых.

Как поддерживаются Django двигатели баз данных с точки зрения производительности? Какие-нибудь подводные камни в использовании любого из них? И последнее, но не менее важное: насколько легко переключиться на другой движок, как только вы его используете какое-то время? Спасибо!

4b9b3361

Ответ 1

Если вы собираетесь использовать реляционную базу данных, наиболее популярным в сообществе Django является PostgreSQL. Это мой личный фаворит. Но, похоже, MongoDB становится довольно популярным в сообществе Python/Django (хотя я никогда с ним не работал). В MySQL также много успешных проектов. Но я лично предпочитаю PostgreSQL 9.0 или 9.1. Надеюсь, это поможет.

EDIT: Я не занимался этой работой. Просто хочу добавить еще несколько соображений.

Для подавляющего большинства веб-сайтов MySQL или PostgreSQL будут работать нормально. У обоих есть свои сильные и слабые стороны. Я предлагаю вам google "MySQL против PostgreSQL". В этом поиске много хитов (на момент написания этого я получил более 3 000 000). Вот несколько советов при проведении оценки.

  • Отдайте предпочтение более поздним статьям. Попробуйте убедиться, что вы сравниваете MySQL 5.5 с PostgreSQL 9.0 или 9.1.
  • MySQL позволяет вам выбирать механизм хранения. ИМО, закрытие сравнения Apple с Яблоком - это InnoDB для Postgres.
  • Имейте в виду, что вам не нужны все функции InnoDB или Postgres. Вы также должны посмотреть на некоторые из других механизмов хранения.

Кроме того, если вы планируете использовать какие-либо триггеры в своей системе, есть пара действительно неприятных ошибок с MySQL и InnoDB, связанных с ними и соответствия ACID. Здесь первый и здесь другой. Возможно, вам не нужна эта функциональность, просто имейте это в виду.

Последнее, что может повлиять на вас, это то, что с PostgreSQL вы можете писать функции db с помощью Python. Ниже приведена ссылка на документы.

Ответ 2

MySQL и Postgres являются двумя наиболее распространенными базами данных БД, используемыми в сообществе Django, и имеют сопоставимую производительность. Я согласен с тем, что Postgres более популярен в сообществе Django, хотя у меня нет жестких чисел, чтобы поддержать это. Я, конечно, не хочу выбирать MySQL, но я бы сказал, что есть некоторые распространенные ошибки при использовании MySQL с Django (или MySQL вообще):

  • Нет поддержки транзакций с MyISAM (больше не используется по умолчанию в 5.5.5)
  • Нет поддержки в миллисекундах для datetime
  • Поддержка часовых поясов для datetime
  • Уникальные поля символов должны быть меньше 255 символов
  • Значение по умолчанию не зависит от регистра.

Есть несколько документов о различных функциях Django, которые не поддерживаются на разных бэкэндах БД: https://docs.djangoproject.com/en/1.3/ref/databases/.

Ответ 3

MySQL и PostgreSQL лучше всего работают с Django. Я бы очень хотел, чтобы вы выбрали тот, который вы изменили настройки своего развития, чтобы использовать его во время разработки (против использования sqlite3 в режиме dev и "реальной" базы данных в prod), поскольку существуют тонкие поведенческие различия, которые могут вызвать множество головных болей в будущее.

Ответ 4

Я не уверен, какой DB использовать, но если кто-то планирует использовать MongoDB, тогда имейте в виду, что он работает только для py2, а не для py3.

Ссылки:

Настройка проекта с помощью Django 1.10, mongodb и Python 3.4.3

Ошибка при настройке MongoDB с помощью django с использованием движка django mongodb в окнах

Настройка MongoDB + Django