MongoDB Atlas-多租户应用程序和数据架构方法

时间:2020-05-09 06:21:42

标签: node.js mongodb database-design mongodb-atlas

我对社区中有关当前正在开发的应用程序的最佳实践Mongo Atlas多租户方法的想法感兴趣。到目前为止,根据我的研究,有关该方法的信息很少。

我正在使用的Web应用程序是一个基于nodejs的基本早期状态原型,可以表达,反应,打字稿,并使用Mongo Atlas作为数据库,同时使用Auth0进行身份验证。在继续构建遵循SaaS产品模型的应用程序之前,我希望数据架构正确无误。

当前状态

我已经构建了该应用程序,以允许用户注册,身份验证和更新用户个人资料。用户当前可以在Auth0中注册,从而在Auth0中创建用户,并在具有以下结构的Mongo Atlas文档中创建用户详细信息记录(名称,电话号码,电子邮件地址等):

Mongo Atlas Cluster
  --users (Database)
    --users (Collection)
      --user_record (Document)

以下是用户记录文档的示例:

_id:ObjectID("5ced24301914b800066d629b")
given_name:"James"
family_name:"Test"
email:"email@gmail.com"
password:"$$6ag2$xVFSPdbhekW9Dx.opGJlluytGb9Ktka5uZshUg4Hw0GmOt4N/wAi."
addressLineOne:"Line 1"
addressLineTwo:"Line 2"
city:"New York"
company:"Company Name"
country:"USA"
postCode:"10001"
telephone:"555 789 987"

未来状态-多租户

当新用户注册时,我正在考虑创建一个要在群集上创建的新数据库,该数据库会将大多数应用程序数据与所有其他租户隔离开。每个租户的数据库将来都会包含不同的集合和文档,以管理其特定的应用程序设置,用户权限,项目数据等。

主要好处是:

  1. 高度可扩展
  2. 隔离其他租户的数据

Mongo Atlas集群结构类似于以下示例,其中有3个租户,每个租户都有自己的专用租户数据库:

Mongo Atlas Cluster
  --tenant_tenant1 (Database)
  --tenant_tenant2 (Database)
  --tenant_tenant3 (Database)
  --user_management (Database)
    --user_management (Collection)
      --user_record_1 (Document)
      --user_record_2 (Document)
      --user_record_3 (Document)

可以按照以下示例扩展user_record文档架构以标识用户的租户数据库:

_id:ObjectID("5ced24301914b800066d629b")
tenant_db:"tenant_tenant1"
tenant_db_user:"dbuserid"
tenant_db_password:"%26ag2$xVFSPdbhekW9Dx.opGJlluytGb9Ktka5uZshUg4Hw0GmOt4N/wAi"
given_name:"James"
family_name:"Test"
email:"email@gmail.com"
password:"$$6ag2$xVFSPdbhekW9Dx.opGJlluytGb9Ktka5uZshUg4Hw0GmOt4N/wAi."
addressLineOne:"Line 1"
addressLineTwo:"Line 2"
city:"New York"
company:"Company Name"
country:"USA"
postCode:"10001"
telephone:"555 789 987"

为了实现这一点,我认为Mongo Atlas API必须用作标准Mongo连接字符串,因为Mongoose特定于单个数据库。除了几乎所有的Mongo Atlas功能之外,Mongo Atlas API还允许创建数据库。

在构建应用程序时,每个租户数据库都将扩展为包括特定于租户的集合和文档。

我的主要问题是:

  1. 使用Mongo Atlas为应用设置多租户时,您认为这是个好方法吗?
  2. 您认为有更好或不同的方法吗?
  3. 您以后会看到这种架构有什么潜在的陷阱吗?

感谢您的帮助,并期待您对此的看法。

詹姆斯

0 个答案:

没有答案
相关问题