[英]Scalability in shared multi-tenant MySQL database
我正在为大量租户设计基于Web的通用CRM应用程序。 用户(租户)在线注册以使用该应用程序。 最初,不会有那么多用户,但是将来会有可能。
我想使用单个共享的MySQL数据库。 由于选择的方案和将来的功能集成,将不可能为每个租户创建单独的数据库。 编程将使用PHP。
但是,我应该如何解决数据可伸缩性问题:
MySQL是相当不错的比例了 ,即使有巨大的表。 基本上,您可以将数据库放在更大,功能更强大的服务器上,以处理需求。 以我的经验,它通常受RAM限制。
一旦该技术开始变得冒险,你可以通过创建数据库的读副本向外扩展。 基本上,这些是主数据库的只读副本,这些副本与主数据库连续同步。 在您的应用程序中,使用两个不同的数据库连接。 第一个连接到一个只读副本,并用于所有SELECT语句。 另一个连接是您的主数据库,该数据库将用于所有INSERT,UPDATE和DELETE语句。 由于许多应用程序执行的SELECT比其他任何操作都要多,并且可以创建的只读副本数量几乎没有限制,这将极大地扩展您的潜在规模。
在MySQL中,我倾向于为所有租户使用一个数据库,并通过为每个租户使用不同的数据库用户名来分割数据。 通过tenant_id列和按tenant_id筛选的视图,我可以确保租户无法访问其他租户的数据。 我写了一篇博客文章,介绍如何在周末将单租户应用程序转换为多租户: https : //opensource.io/it/mysql-multi-tenant/
对于所有租户来说,拥有一个数据库和一个代码库比维护多个数据库或模式要容易得多。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.