Я использую версию Django 0.97 с postgresql 9.0. Я настроил горячую потоковую репликацию на главном сервере БД и подчиненном сервере БД. Мое приложение имеет интенсивную запись в БД, управляемую ботом, и читает только от пользователей. Таким образом, это делает его очень оптимизированным, если я создаю подчиненную базу данных с доступом для чтения для пользователей и главную базу данных с доступом для записи для доступа на запись бота. К сожалению, только Django 1.2 поддерживает несколько баз данных, и обновление моего приложения требует огромных усилий. Я получил несколько потенциальных клиентов по следующей ссылке: http://www.eflorenzano.com/blog/post/easy-multi-database-support-django/ Однако это также требует, чтобы я изменил все экземпляры доступа к базе данных в моем приложении. Есть ли более простой способ назначить отдельные серверы БД для доступа на чтение и доступ для записи, повозившись с модулем django core db?
Как разделить сервер чтения БД и сервер записи БД на django 0.97?
Ответы (1)
Лучше всего обновиться до 1.2, так как это будет значительно меньше работы, чем объединение функций, которые уже существуют. Если вы будете придерживаться 0,97 намного дольше, ваша жизнь будет только сложнее в будущем.
Я предполагаю, что у вас могут быть некоторые неправильные представления о том, как использование нескольких БД работает в Django 1.2. Вам не нужно «изменять все экземпляры доступа к базе данных в [вашем] приложении», если вы используете маршрутизаторы баз данных функция Django.
С помощью маршрутизатора вы можете указать, какую базу данных использовать для чтения и записи. Все ваши существующие модели django должны работать и начинать отправлять запросы в соответствующую базу данных. Настроить маршрутизатор довольно просто, просто проверьте документы. Все, что требуется, это создать класс маршрутизатора, разместить его где-нибудь, а затем добавить строку в свои настройки.
Это работает очень хорошо и не так много работы, как вы можете ожидать. У вас могут быть другие проблемы с обновлением, о которых вы нам не сообщаете, но что касается моделей, у вас не должно быть много проблем.