对于许多多租户SaaS应用程序,选择一个操作数据库可以提炼为关系数据库和非关系数据库之间的选择,或者两者的组合。要做出决定,请考虑以下高级应用程序数据要求和特征:
- 应用程序的数据模型
- 数据的访问模式
- 数据库延迟要求
- 数据完整性和事务完整性要求(原子性、一致性、隔离性和持久性或ACID)
- 跨区域可用性和恢复要求
下表列出了应用程序数据需求和特性,并在AWS数据库产品的上下文中讨论了它们:Aurora PostgreSQL Compatible和Amazon RDS for PostgreSQL(关系型),以及Amazon DynamoDB(非关系型)。当您试图在关系型和非关系型操作数据库产品之间做出选择时,可以参考此矩阵。
数据库 | SaaS应用程序数据需求和特征 | ||||
---|---|---|---|---|---|
数据模型 | 访问模式 | 延迟要求 | 数据和事务完整性 | 跨区域可用性和恢复 | |
Relational (Aurora PostgreSQL-Compatible and Amazon RDS for PostgreSQL) |
关系的或高度规范化的。 | 不必事先彻底计划 | 优选更高的延迟容忍度;默认情况下,Aurora可以通过实现读取副本、缓存和类似功能来实现较低的延迟。 | 默认情况下保持高数据和事务完整性。 | 在Amazon RDS中,您可以为跨区域扩展和故障切换创建一个读副本。Aurora在很大程度上自动化了这一点,但目前还没有针对主动-主动配置的写转发功能。 |
非关系型 (Amazon DynamoDB) |
通常是非规范化的。这些数据库利用模式对多对多关系、大型项目和时间序列数据进行建模。 | 在生成数据模型之前,必须彻底了解数据的所有访问模式(查询)。 | 使用Amazon DynamoDB Accelerator(DAX)等选项,延迟非常低,可以进一步提高性能。 | 以性能为代价的可选事务完整性。数据完整性问题转移到应用程序。 | 轻松的跨区域恢复和具有全局表的主动-主动配置。(ACID合规性仅在单个AWS区域内实现。) |
一些多租户SaaS应用程序可能具有独特的数据模型或特殊情况,上表中未包含的数据库可以更好地为其提供服务。例如,时间序列数据集、高度连接的数据集或维护集中交易分类账可能需要使用不同类型的数据库。分析所有可能性超出了本指南的范围。有关AWS数据库产品的全面列表以及它们如何在高级别上满足不同的用例,请参阅《亚马逊Web服务概述》白皮书的数据库部分。
本指南的其余部分重点介绍支持PostgreSQL的AWS关系数据库服务:Amazon RDS和Aurora PostgreSQL Compatible。DynamoDB需要一种不同的方法来优化SaaS应用程序,这超出了本指南的范围。有关DynamoDB的更多信息,请参阅AWS博客文章《使用AmazonDynamoDB分区池多租户SaaS数据》。
在Amazon RDS和Aurora之间选择
在大多数情况下,我们建议使用Aurora PostgreSQL Compatible over Amazon RDS for PostgreSQL。下表显示了在选择这两个选项时应考虑的因素。
DBMS组件 | Amazon RDS for PostgreSQL | Aurora PostgreSQL-Compatible |
---|---|---|
可扩展性 | 复制延迟分钟,最多5个读取副本 | 复制延迟不到一分钟(对于全局数据库,通常小于1秒),最多15个读取副本 |
崩溃恢复 | 检查点间隔5分钟(默认情况下),会降低数据库性能 | 使用并行线程进行异步恢复以实现快速恢复 |
Failover | 除了崩溃恢复时间外,还有60-120秒 | 通常约30秒(包括崩溃恢复) |
Storage | 最大IOPS为256,000 | IOPS仅受Aurora实例大小和容量的限制 |
高可用性和灾难恢复 | 2个具有备用实例的可用性区域,跨区域故障切换以读取副本或复制的备份 | 默认情况下为3个可用区,使用Aurora全局数据库进行跨区域故障切换 |
备份 | 在备份窗口期间,可能会影响性能 | 自动增量备份,无性能影响 |
数据库实例类 | See list of Amazon RDS instance classes | See list of Aurora instance classes |
在上表中描述的所有类别中,Aurora PostgreSQL Compatible通常是更好的选择。然而,AmazonRDS for PostgreSQL对于中小型工作负载可能仍然有意义,因为它有更多的实例类选择,可能会以Aurora更强大的功能集为代价提供更具成本效益的选项。有关详细的比较,请参阅AWS博客文章AmazonRDS For PostgreSQL或AmazonAurora PostgreSQL是我更好的选择吗?
最新内容
- 19 hours ago
- 21 hours ago
- 21 hours ago
- 3 days 12 hours ago
- 3 days 20 hours ago
- 3 days 20 hours ago
- 3 days 20 hours ago
- 3 days 21 hours ago
- 1 week 1 day ago
- 1 week 1 day ago