Выбор базы данных для проекта Django
Платформа Django ( http://djangoproject.com/) в настоящее время поддерживает следующие базы данных: PostgreSQL, SQLite 3, MySQL 5 и Oracle. Этот вопрос не о сравнении этих баз данных, напротив, я хочу узнать подробности об их совместимости с Django и о том, как выбрать подходящую базу данных для простого (но растущего) проекта.
3 ответа
Это зависит. Если вы не хотите платить (огромную) премию за Oracle, вы выбираете между MySQL и PostgreSQL (SQLite в основном предназначен для разработки, а не для производства). PostgreSQL, по-видимому, является выбором большинства разработчиков ядра Django (Эндрю Годвин зашел так далеко, что включил "друзья не позволяют друзьям использовать MySQL" в доклад DjangoCon). Тем не менее, MySQL полностью поддерживается Django и используется многими производственными веб-сайтами Django.
ИМХО, PostgreSQL имеет два явных преимущества перед MySQL:
- Если вы используете GeoDjango. Там действительно нет альтернативы PostGIS. Поддержка ГИС MySQL в лучшем случае слаба.
- Юг MySQL не может использовать транзакции во время миграций схемы, что означает, что если миграция на юг идет неправильно, вы зависаете между двумя миграциями без четкого пути вперед или назад. PostgreSQL экономит много боли в таких ситуациях.
Быстрый ответ: это на самом деле не имеет значения, но если бы мне пришлось выбрать один, то, вероятно, это был бы PostgreSQL.
Первоначально разработчики Django настоятельно рекомендовали PostgreSQL в первые дни. PostgreSQL, возможно, технически является "лучшей" базой данных, чем MySQL, поэтому, если вы никогда не использовали ее раньше, возможно, стоит потратить некоторое время на ее оптимизацию.
Сейчас я бы сказал, что можно с уверенностью предположить, что все драйверы БД работают одинаково хорошо. Так что, если вы более знакомы с MySQL или Oracle, не должно возникнуть проблем с их использованием. Я использовал Django только с MySQL, и у меня не было проблем.
Поддерживаются все подключаемые базы данных. Это означает, что модель / уровень базы данных будет абстрагироваться от специфики базы данных. Что касается производительности, я бы предложил MySQL 5 или Postgresql. Oracle определенно будет хорошо работать, но в долгосрочной перспективе может оказаться дороже. Если вы только начали свой проект, sqlite3 ваш друг, просто потому, что он будет настроен в течение нескольких секунд.
Обработка параллельных настроек для разработки и производства обсуждалась в различных постах блога, например, в этом: