MongoDB 的 Django 多数据库多租户

Django multi-DB multitenancy with MongoDB

是否有为 Django 提供多数据库多租户支持并与 MongoDB 一起使用的软件?

我认为我只需要数据库级别的多租户,可能还需要模式级别的多租户,但不需要应用程序级别的多租户。

我有一个非常复杂的用户模型。一些用户可以查看其他用户输入的某些数据。用户通常属于组织。组织可以分层嵌套,并且在为组织内的用户配置应用程序的方式上可能存在相似之处(例如,组织内的所有用户将填写相同的表单,除非为单个用户覆盖)。有时,用户提交的某些数据可以被其组织外部的用户查看,甚至可以被其组织所在的层次结构之外的用户查看。使用该应用程序的组织可能是竞争对手,而我们处理的数据是敏感的,因此需要非常安全。它也需要非常快速地发展。

我正在考虑为每个用户提供他们自己的数据库,然后拥有共享数据库或一个具有多个模式的共享数据库,以便存储组织内跨用户共享的配置。

MongoDB 上的多租户是完全可行的,我们正在 onliquid.com 的生产中使用它。

我不知道有任何库、插件或特定软件可以为您做到这一点,但它可以不费吹灰之力完成。如果您想深入研究它,我建议您在选择要读取和写入的数据库并开始处理该数据库时,特别注意您使用的驱动程序的行为方式。另请查看 MongoDB 配置选项,例如 smallfilesdirectoryperdb,它们可以让您更好地管理差异并避免一些问题。

前段时间我在 Rails 上用 Mongoid 为 Ruby 写了一个 blog post ,大部分细节适用于所有 web 框架,并特定于内部工作原理MongoDB.