我们正在努力重写我们现有的 RIA 并重新设计我们的数据库以重新构建它的设计。现在我们对数据库有两种看法:
(此选项适用于基于 SaaS 的托管。)
1) 每个客户的单独数据库。
2) 所有客户的单一数据库。
我们期待大量的数据,我们的一些客户的数据库大小从 2GB 到 10GB 不等。 # of tables are around 100.
我能得到关于我们应该选择哪个的答案吗?
目前我们还没有考虑 NoSQL 解决方案,但我们计划使用 JPA(Java Persistence API)支持大约 4-5 个数据库,目前包括 MySQL、Postgres、Oracle、MSSQL。
P.S:我们可能会利用亚马逊云进行托管。
最佳答案
通常应用于此类 Multi-Tenancy 需求的数据库使用的三种主要技术如下。您已经指定了其中一些。
- 每个租户的独立数据库:
- 成本非常高,易于维护/定制,易于调整,易于备份,易于编码。
- 共享数据库但架构不同:
- 与 (1) 相比成本较低,可能会随着数据库大小的增加而很快遇到问题,每个租户易于个性化,每个租户难以备份/恢复,易于编码。
- 共享数据库共享架构:
- 成本低,一个租户的负载会影响其他租户,安全和应用程序开发是一个挑战,难以对每个租户进行个性化设置,也难以恢复/备份。
我认为以上几点适用于本地托管或云端托管。 如果您看到租户数量增长或数据变大,则 1) 或 2) 更好。我使用了选项 2),并发现它有助于开发和维护。
关于database - 用于在云上构建企业 Web (RIA) 应用程序的数据库架构(单一数据库与客户端特定数据库),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15683213/