【发布时间】:2017-08-01 19:57:12
【问题描述】:
我知道这个主题已经在 SO 中的许多人中讨论过,但我有一个具体问题想征求您的意见。 我提前道歉,因为这完全不是编码问题。
我是一名自学成才的开发人员,我没有接触过 CS 学位或任何类型的学位。我所知道的大部分知识都是通过网络学习的。
我正计划开发一个多租户应用程序,它使用 angular 作为前端,laravel 用于后端/api 连接和 mysql 来存储数据。
我计划为每个由 2 或 3 个字母(稍后决定)标识的租户分配一个唯一密钥,用户必须在登录时输入该密钥来识别租户。我们称它为tenantId。 此外,我正在考虑使用子域并将子域作为租户 ID 进行分离。对于这种情况,我们假设我有 tenantId。
另外,laravel 将定义 2 个连接。假设租户连接(保存单个租户数据库凭据)和主连接。
Masterconnection 持有数据库的数据库凭据,该数据库在其中一张表中保存租户密钥、数据库用户名、数据库密码、数据库名称、mysql 服务器地址。
从 mastertenant 获取 db 凭据后,laravel 将更新在 config 文件夹中的 database.php 文件中初始化的租户连接。
所以每次 API 调用,laravel 都必须连接到 master 获取租户连接的凭据,然后调用 db。
在您看来/经验这有多实用/适用?
即使数据库服务器和应用程序服务器在同一个数据中心内,这是否会造成任何延迟?
这种连接方法在多租户环境中是一种公认的连接方法吗?
此外,在每次对 laravel 的 API 调用中,我都计划通过 JWT 发送租户 ID。我不太愿意在本地存储中保存租户 ID。
可以使用任何工具(例如 firebug 或类似性质的工具)来操作本地存储吗?
我曾想过使用共享数据库并在同一个数据库中使用模式,但该应用程序旨在保存财务数据,因此我认为将它们分开是最好的。我研究了利弊,并决定为每个租户使用单独的数据库是最好的。
非常感谢您的反馈。 抱歉,如果发布在错误的堆栈站点上。 很抱歉阅读时间过长。
【问题讨论】:
标签: php mysql database laravel multi-tenant