Използвам версия на Django 0.97 с postgresql 9.0. Конфигурирах репликация с горещо поточно предаване на главен db сървър и подчинен db сървър. Приложението ми има интензивни записи, управлявани от ботове, в DB и чете само от потребителите. Така че, това го прави много оптимизирано, ако направя подчинената база данни за достъп за четене за потребителите и главната база данни за достъп за запис за достъп за запис на бота. За съжаление само Django 1.2 има поддръжка на множество бази данни и това е огромно усилие за надграждане в моето приложение. Получих някои насоки чрез следната връзка: http://www.eflorenzano.com/blog/post/easy-multi-database-support-django/ Това обаче също изисква от мен да променя всички случаи на достъп до db в моето приложение. Има ли някакъв по-прост начин за присвояване на отделни db сървъри за достъп за четене и достъп за запис, като си играете с django core db модула?
Как да разделя db сървър за четене и db сървър за запис на django 0.97?
Отговори (1)
Най-добрият ви залог е да надстроите до 1.2, тъй като ще бъде значително по-малко работа, отколкото да хакнете заедно функции, които вече съществуват. Ако се придържате към 0,97 много по-дълго, животът ви ще бъде само по-труден надолу по пътя.
Предполагам, че може да имате някои погрешни схващания за това как работи използването на множество DB в Django 1.2. Не е нужно да „променяте всички екземпляри на достъп до db във [вашето] приложение“, ако използвате Маршрутизатори на бази данни функция на Django.
С рутер можете да посочите коя база данни да използвате за четене и запис. Всички ваши съществуващи django модели трябва да работят и да започнат да изпращат заявки към правилната база данни. Доста лесно е да настроите рутер, просто проверете документи. Всичко, което се изисква, е да създадете класа на рутера, да го поставите някъде и след това да добавите ред в настройките си.
Работи наистина добре и не е толкова много работа, колкото може да очаквате. Може да имате други проблеми с надграждането, които не ни казвате, но що се отнася до моделите, не би трябвало да имате много проблеми.