Подтвердить что ты не робот

Приложение Multi-Tenant Django

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

4b9b3361

Ответ 1

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

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

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

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

Ответ 2

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