如何更新AWS Dynamo数据库条目时得到通知?

时间:2018-12-19 18:35:16

标签: amazon-web-services amazon-dynamodb

我想在DynamoDB表更改时收到通知,就像Google Firebase实时数据库一样。

我在前端javascript应用程序中使用此服务。

3 个答案:

答案 0 :(得分:2)

DynamoDB和Firebase / Firestore确实不同。

Firebase / Firestore是一个实时数据库,您可以在其中扫描订阅客户端上的更改。 DynamoDB是用于存储键/值对的NoSQL数据库。

更适合类似用例的是“ AWS AppSync”,它提供了Firebase / Firestore这样的实时更新。

但是,如果您想使用DynamoDB,请查看DynamoDB流以在表更新时触发事件。

然后的问题是,如何将更新发送给客户端。

您可以向SNS主题发送消息,并在必要时向客户端发送推送通知。

但是最后,您将使用DynamoDB Streams和SNS以及Lambda构建Firebase / Firestore或“ AWS AppSync”提供的现成功能。

答案 1 :(得分:1)

DynamoDB没有实时通知/触发器来更新表。

但是在这种情况下,您可以尝试使用DynamoDB流来捕获表活动。

  

以下是一些示例用例:

     

一个AWS区域中的应用程序修改DynamoDB中的数据   表。另一个AWS区域中的第二个应用程序读取这些数据   修改并将数据写入另一个表,创建一个副本   与原始表格保持同步。

     

一个流行的移动应用程序以以下速率修改DynamoDB表中的数据:   每秒数千次更新。另一个应用程序捕获并   存储有关这些更新的数据,提供近乎实时的使用   移动应用程序的指标。

     

全球多人游戏具有多主机拓扑,可存储数据   在多个AWS区域中。每个主服务器通过消耗和保持同步   重播边远地区发生的更改。

     

应用程序自动向移动设备发送通知   一个朋友上传新照片后,该组中的所有朋友中的所有朋友。

     

新客户将数据添加到DynamoDB表中。此事件调用   另一个向新客户发送欢迎电子邮件的应用程序。

DynamoDB Streams文档中的更多详细信息。

这是如何集成DynamoDB Streams with AWS Javascript SDK的方法:

var dynamodbstreams = new AWS.DynamoDBStreams();
dynamodbstreams.describeStream(params, function (err, data) {
  if (err) console.log(err, err.stack); // an error occurred
  else     console.log(data);           // successful response
});

DynamoDB流支持一些事件

  

eventName —(字符串)已执行的数据修改的类型   在DynamoDB表上:

     

插入-新项目已添加到表中。

     

MODIFY-修改现有项目的一个或多个属性。

     

删除-该项目已从表格中删除。

顺便说一句,如果您想通过另一种方式而不是DynamoDB流来通知客户端,则可以尝试使用this article来使用Lambda函数。

希望这可以帮助您解决问题。

答案 2 :(得分:0)

我通常会看到DynamoDB-> SNS主题模式->(带有自定义lambda)。

如果您的应用程序是移动应用程序,请看一下AWS SNS Mobile Push,看看它是否更适合您的体系结构。