Мультитенантное приложение Django - PullRequest
17 голосов
/ 10 июля 2009

Существуют ли общие шаблоны, которые люди используют для создания мультитенантных приложений с использованием Django Встроенная структура "сайтов" выглядит как вариант. Есть ли другие подходы, с которыми люди добились успеха?

Ответы [ 2 ]

9 голосов
/ 10 июля 2009

Использование инфраструктуры сайтов имеет большое значение для обеспечения гарантий безопасности "арендаторам", при условии, что вы предоставляете каждому экземпляру сайта уникальную таблицу.

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

Использование внешнего ключа клиента почти во всех ваших моделях будет работать нормально, а ORM в Django упрощает (облегчает) обеспечение безопасности с помощью пользовательских менеджеров . Недостатком является производительность, если вы начинаете сталкиваться с большим количеством пользователей, потому что нет простого способа увеличить масштаб.

Если вам нужно масштабировать, я думаю, что лучшим решением может быть комбинация обоих подходов. Каждая модель имеет внешний ключ клиента, поэтому базы данных могут совместно использоваться, но затем вы разрабатываете механизм на более высоком уровне, чем Django, для направления клиентов в экземпляр сайта. Это позволяет вам размещать действительно больших арендаторов в их собственных базах данных с ресурсами, настроенными только для них (например, надлежащим числом демонов mod_wsgi, числом соединений с базой данных, пулом memcache надлежащего размера и т. Д.), А арендаторы меньшего размера используют общие ресурсы.

7 голосов
/ 08 июля 2012

Взгляните на https://github.com/bcarneiro/django-tenant-schemas У вас будет только один экземпляр проекта, и вам не придется вносить много изменений в код.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...