实现混合数据库系统的最佳实践 - Amazon DynamoDB

实现混合数据库系统的最佳实践

在一些情况下,从一个或多个关系数据库管理系统 (RDBMS) 迁移到 Amazon DynamoDB 可能无益。在这些情况下,创建混合系统可能更可取。

如果不想将所有内容迁移到 DynamoDB

例如,一些企业大笔投资代码,生成会计和运营所需的众多报告。生成报告所花时间对这些组织并不重要。关系系统的灵活性非常适合此类任务,在 NoSQL 环境中重新创建这些报告可能过于困难。

有些企业还保留几十年前获取或继承的各种旧式关系系统。迁移这些系统的数据可能风险过高,代价昂贵。

但是,这些组织现在可能发现,其运营依赖面向客户的高流量网站,非常注重毫秒级响应。除非投入海量费用(往往无法接受),否则无法缩放关系系统满足此要求。

在这种情况下,可以创建混合系统,DynamoDB 为一个或多个关系系统中存储的数据创建具体化视图,并按照视图处理高流量请求。这种系统无需以前处理面向客户的流量所需的服务器硬件、维护和 RDBMS 许可证,有可能降低成本。

如何实现混合系统

DynamoDB 可以利用 DynamoDB Streams 和 AWS Lambda,无缝集成一个或多个现有关系数据库系统:


        如何集成 DynamoDB 与现有 SQL 系统的示意图。

集成 DynamoDB Streams 和 AWS Lambda 的系统有以下优点:

  • 可以作为具体化视图的持久缓存运行。

  • 可以设置为在查询数据时,以及在 SQL 系统中修改数据时,逐步填充相关数据。这意味着无需预先填充整个视图,更有可能高效利用预置吞吐容量。

  • 管理成本低,可用性和可靠性高。

要实现此类集成,必须提供三种互操作性。


        集成 DynamoDB 与现有 SQL 系统所需的代码。
  1. 增量填充 DynamoDB 缓存。 查看项目时,首先在 DynamoDB 中查找。如果没有,则在 SQL 系统中查找,然后加载到 DynamoDB。

  2. 通过 DynamoDB 缓存写入。 如果客户更改 DynamoDB 中的值,将触发 Lambda 函数,将新数据写回 SQL 系统。

  3. 从 SQL 系统更新 DynamoDB。 如果内部流程(如库存管理或定价)更改 SQL 系统的值,将触发存储过程,将更改传输至 DynamoDB 具体化视图。

这些操作简单直接,但并不是所有情况都需要。

如果希望主要依赖 DynamoDB,同时保留一个小的关系系统以执行一次性查询,或用于需要特殊安全性或非时间关键型操作,也可以采用混合解决方案。