首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何设计多租户mysql数据库

如何设计多租户mysql数据库
EN

Stack Overflow用户
提问于 2011-04-07 00:54:45
回答 6查看 32.9K关注 0票数 39

比方说,我需要设计一个数据库,它将托管多个公司的数据。现在,出于安全和管理的目的,我需要确保不同公司的数据被适当隔离,但我也不想启动10个mysql进程来托管10个不同服务器上的10个公司的数据。用mysql数据库做这件事的最佳方法是什么?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2011-04-07 05:38:21

多租户数据库有几种方法。对于讨论,它们通常分为三类。

  • 每个租户一个数据库。
  • 共享数据库,每个租户一个架构。
  • 共享数据库,共享架构。租户标识符(租户密钥)将每行与正确的租户相关联。

MSDN有一篇关于pros and cons of each designexamples of implementations的好文章。

微软显然已经删除了我提到的页面,但它们在archive.org上。链接已更改为指向那里。

作为参考,这是original link for the second article

票数 48
EN

Stack Overflow用户

发布于 2018-08-24 00:55:00

在MySQL中,我更喜欢为所有租户使用一个数据库。我通过对每个租户使用单独的数据库用户来限制对数据的访问,每个租户只能访问只显示属于该租户的行的视图。

这可以通过以下方式完成:

  1. 将tenant_id列添加到每个表中
  2. 使用触发器在插入时使用当前数据库用户名填充tenant_id
  3. 为tenant_id = current_database_username
  4. Only的每个表创建视图使用特定于租户的用户名

将application

  • Connect中的视图用于数据库

我已经在一篇博客文章中完整地记录了这一点:https://opensource.io/it/mysql-multi-tenant/

票数 6
EN

Stack Overflow用户

发布于 2011-11-12 08:53:28

简单的方法是:对于每个共享表,添加一个列SEGMENT_ID。为每个客户分配适当的SEGMENT_ID。然后在SEGMENT_ID上为每个客户群创建视图,这些视图将保持与每个客户的数据分离。通过这种方法,可以共享信息,使操作和开发(存储过程也可以共享)变得简单。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5570102

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档