gpt4 book ai didi

php - 管理 Multi-Tenancy 数据库连接

转载 作者:行者123 更新时间:2023-11-29 19:15:40 24 4
gpt4 key购买 nike

我知道这个主题已经在很多人中讨论过,但我有一个具体问题想征求您的意见。我提前道歉,因为这完全不是编码问题。

我是一名自学的开发人员,我没有计算机科学学位或任何类型的经验。我所知道的大部分内容都是通过网络学到的。

我计划开发一个 Multi-Tenancy 应用程序,它使用 Angular 作为前端,使用 Laravel 作为后端/API 连接,使用 MySQL 来存储数据。

我计划为每个租户分配一个由 2 或 3 个字母(稍后决定)标识的唯一 key ,用户必须在登录时键入该 key 才能识别租户。我们将其称为tenantId。另外,我正在考虑使用子域并将子域作为租户 ID 进行分离。让我们假设在这种情况下我有tenantId。

此外,laravel 将定义 2 个连接。假设租户连接(用于保存单个租户数据库凭据)和主连接。

Masterconnection 保存数据库的数据库凭据,该数据库在其表之一中保存租户 key 、数据库用户名、数据库密码、数据库名称、mysql 服务器地址。

从 mastertenant 获取数据库凭据后,laravel 将更新在 config 文件夹中的 database.php 文件中初始化的租户连接。

因此,每次 API 调用,laravel 都必须连接到 master,获取租户连接的凭据,然后调用数据库。

根据您的观点/经验,这有多实用/适用?

即使数据库服务器和应用程序服务器位于同一数据中心内,这也会造成任何延迟吗?

这种连接方法是 Multi-Tenancy 环境中可接受的连接方法吗?

此外,在对 Laravel 的每次 API 调用中,我计划通过 JWT 发送租户 ID。我不太愿意在本地存储上保存租户ID。

可以使用任何工具(例如 firebug 或类似的工具)来操作本地存储吗?

我想过使用共享数据库并在同一数据库中使用模式,但该应用程序旨在保存财务数据,因此我认为将它们分开是最好的。我研究了利弊,并决定为每个租户使用单独的数据库是最好的。

非常感谢您的反馈。抱歉,如果发布在错误的堆栈站点上。抱歉,阅读时间过长。

最佳答案

您的大多数问题都是基于观点的,这使得它有点偏离主题。我只想添加一条评论,但它不适合。

Can this pose any latency even if the db server and app server is within the same datacenter?

我认为 10~20ms 的延迟不会造成任何问题。确保您了解 MySQL 索引的基础知识,因为如果有一天您遇到数据库问题,重要的是不要自动假设这是租户错误。通常是坏索引。

Is this method of connecting an accepted method of connecting in a multi tenant environment?

我想是的,我就是这样使用的。唯一的区别是我的应用程序不是Web App + API。我用 Blade 。

Also, on every API call to laravel i plan on sending the tenantid through JWT. I am not really comfortable of saving tenantid on localstorage.

我不知道你的项目规范。如果每个用户可以访问多个租户,那么是的,这似乎是一个好方法。如果每个用户BelongsTo 唯一的租户,那么为什么要为租户 ID 烦恼呢?只需从通过 token 验证的用户处获取租户即可。

Can localstorage be manipulate by using any tools such as firebug or something similar of that nature?

How to view or edit localStorage

关于php - 管理 Multi-Tenancy 数据库连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42735887/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com