Найти - Пользователи
Полная версия: Подключение нескольких баз к проекту на Django.
Начало » Django » Подключение нескольких баз к проекту на Django.
1 2
PavelZ
Возникла дилемма, в моём проекте необходима работа с несколькими базами, более того по мере развития количество баз будет увеличиваться. Цель увеличить производительность системы за счёт использования удалённых баз. Не могу найти примеров, как подключить несколько баз к одному проекту или проще всего использовать несколько проектов и как то связать их между собой?
Александр Кошелев
Если имеются ввиду репликации, то есть очень хорошее решение - mysql_replicated

Если базы совсем разные, то их использовать в рамках одного проекта не получится. Тогда вариант, действительно, создать несколько проектов сервисов, которые предоставляют данные другим.

Или попробовать решить проблему ещё на уровне СУБД,
chkur
Александр Кошелев
Если базы совсем разные, то их использовать в рамках одного проекта не получится. Тогда вариант, действительно, создать несколько проектов сервисов, которые предоставляют данные другим.

Или попробовать решить проблему ещё на уровне СУБД,
Прошу прощения за откапывание темы. Нужно построить несколько проектов/приложений на предприятии с возможностью последующего быстрого их безболезненного разделения. Общего между ними - таблицы справочников. БД - PostgreSQL.
Варианты:
1. Одна БД, один проект, много приложений - выдумывать ничего не нужно, потом придется “резать” проект и базу.
1а. Одна БД, несколько проектов - придется “резать” базу.
2. Несколько БД, несколько проектов. Один из проектов содержит справочники и выдает необходимые данные по запросу через JSON или xml.
3. Несколько БД, несколько проектов. Справочники предоставляются в другие базы через удаленное представление (dblink+view). В теории должно работать, но пока не пробовал.

Что посоветуете?
Ferroman
Один проект, много приложений (если они действительно нужны), несколько баз. При необходимости приложения легко вынести в отдельные проекты.
chkur
Ferroman
Один проект, много приложений (если они действительно нужны), несколько баз.
Из более-менее вдумчивого чтения вот этого: http://docs.djangoproject.com/en/1.2/topics/db/multi-db/ - я понял, что мульти-db подключения возможны к базам одинаковой структуры. Я неправильно понял?
Или предлагаете делать несколько баз одной структуры и в разных приложениях заполнять различные таблицы? Как быть в этом случае со справочниками? Дублировать во всех базах или делать представления? (Примечание - справочники для всех приложений readonly).
В общем, пока не понял предложения…
Александр Кошелев
chkur
Прошу прощения за откапывание темы.
Не простим. Одна тема - один вопрос. Не надо бояться создвать темы - форум для этого и создан.
Александр Кошелев
chkur
я понял, что мульти-db подключения возможны к базам одинаковой структуры. Я неправильно понял?
Нет. Могут иметь разную структуру.
chkur
Как быть в этом случае со справочниками?
Что такое “справочники”?
chkur
Александр Кошелев
chkur
Как быть в этом случае со справочниками?
Что такое “справочники”?
Таблицы, используемые всеми приложениями в режиме readonly и регулярно обновляемые извне (к примеру, таблицы: справочник предприятий, справочник справочник почтовых индексов, телефонных кодов и т.д.) И, скажем, хотелось бы иметь одну общую таблицу пользователей (auth_user).

Александр Кошелев
chkur
я понял, что мульти-db подключения возможны к базам одинаковой структуры. Я неправильно понял?
Нет. Могут иметь разную структуру.
Пытаюсь осмыслить. В settings.py описываются местонахождение баз, затем роутерами описываются привязки приложений к базам, и в каждом приложении описываются свои модели. Так?

Как всё же лучше поступить со “справочными” “общими” таблицами? Согласно документации нельзя связывать таблицы из разных БД по ForeignKey или m2m. Все-таки делать “приложение-сервис”, предоставляющее данные из таблиц-справочников другим приложениям и затем обрабатывать связь вручную?
Ferroman
Вы бы взяли, да и сделали пробный проект, в нём бы всё и проверили.
chkur
Сегодня пробовали пользовать dblink - пока безрезультатно.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB