Мультитенантность Django с несколькими базами данных с MongoDB

Существует ли программное обеспечение, обеспечивающее многопользовательскую поддержку нескольких баз данных для Django и работающее с MongoDB?

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

У меня довольно сложная модель пользователя. Некоторые пользователи могут просматривать определенные данные, введенные другими пользователями. Пользователи обычно принадлежат к организациям. Организации могут быть вложены иерархически, и может быть сходство в том, как приложение настроено для пользователей внутри организации (например, все пользователи в организации будут заполнять одну и ту же форму, если это не переопределено для отдельного пользователя). Иногда определенные данные, отправляемые пользователями, могут просматриваться пользователями за пределами их организации и даже за пределами иерархии, в которой находится их организация. Организации, использующие приложение, могут быть конкурентами, а данные, с которыми мы имеем дело, являются конфиденциальными, поэтому они должны быть очень безопасными. Его также нужно очень быстро развивать.

Я думаю дать каждому пользователю свою собственную БД, а затем либо иметь общие БД, либо одну общую БД с несколькими схемами для хранения конфигураций, которые являются общими для пользователей в организациях.


person Daniel    schedule 08.05.2015    source источник


Ответы (1)


Мультитенантность в MongoDB вполне жизнеспособна, мы используем ее в производстве на onliquid.com.

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

Некоторое время назад я написал сообщение в блоге об этом для Ruby. на Rails с использованием Mongoid большая часть деталей применима ко всем веб-фреймворкам и специфична для внутренней работы MongoDB.

person jasoares    schedule 28.05.2015