SaaS数据库设计 - 多个数据库?分裂?

Vyr*_*tek 20 architecture database-design saas multi-tenant database-schema

我见过SaaS应用程序以多种不同的方式托管.跨多个数据库拆分功能和模块是一个好主意吗?例如,将User表放在一个DB上,将功能/ app特定表放在另一个DB上,也可能放在另一个DB中的其他常用共享表中?

Ser*_*lov 33

从一个数据库开始.在项目需要时拆分数据/功能.

以下是我们可以从LinkedIn学到的东西:

  • 单个数据库不起作用
  • 不可能有参照完整性
  • 任何数据丢失都是一个问题
  • 缓存即使在适度有效的情况下仍然很好
  • 永远不要低估增长轨迹

资源:

LinkedIn架构

LinkedIn通信架构


Tom*_*ter 13

高可伸缩性是一个用于扩展SaaS应用程序的好博客.如前所述,按照您的建议在数据库之间拆分表通常是个坏主意.但类似的概念是分片,您可以保留相同(或类似)的架构,但将数据拆分到多个服务器上.例如,用户1-5000在server1上,用户5000-10000在server2上.根据应用程序使用的查询,它可以是一种有效的扩展方式.


Vai*_*hav 9

对于SaaS应用程序,您可以为多个租户使用多个数据库,但通常不会按模块方式对其进行拆分.

这是我在SaaS应用程序设计中看到的最常见的模型.将为添加到应用程序的每个租户复制基础架构.