amazon-web-services - 仅将白名单项目写入 DynamoDB

标签 amazon-web-services nosql amazon-dynamodb

我有一组(~1.000.000)台可以发送消息的设备,每个设备都有一个 ID 并且可以发送多条消息。设备的子集(~10.000)应该能够使用我的服务,并且这些 ID 被放入白名单(DynamoDB 表)中。 给定持续的消息流,我希望仅将白名单中的一次保留在 DynamoDB 表中。

我一直在看的事情如下:

  1. 简单的方法是在 lambda 将数据写入 DynamoDB 时在代码中进行过滤,由于我首先需要查询白名单表来检查我可以写入哪些消息,因此不确定这种扩展效果如何。
  2. 我想要使用 DynamoDB 条件写入(或者如果有其他一些智能功能)来指定“仅当此项目存在于白名单中时才将其写入表中” 并让DynamoDB 引擎负责过滤。

我的问题是,在 DynamoDB 中是否有一些聪明的方法可以做到这一点?

最佳答案

这对 DynamoDB 来说既是福也是祸 - 起初,这很痛苦,但过了一会儿,DDB 的简单性开始闪耀 - 您可以在短时间内学习它的整个 API。

每个问题都是不同的,并且您在问题中提出了一些问题,因此我仅提供一些希望有所帮助的观点:

  • 您无法查询/引用 DDB 中的另一个表,因此没有“智能”方法可以做到这一点。
  • DDB 非常快,因此我不用担心数据库端的扩展问题。
  • 先查询再写入是完全可以接受的模型,只需确保您有一个高效的索引并且您使用的是 GetItemQuery - 换句话说,不要使用扫描
  • 如果您确实想最大程度地减少调用,那么您可以考虑创建一个简单的白名单 ID 内存缓存。这可能会导致扩展复杂性,具体取决于您的基础设施,但这很容易解决。如果您正在考虑这一点,那么我建议您将 DDB Streams 视为确保缓存最新的一种方法。但说实话,除非你确实有吞吐量问题,否则这个选项就有点矫枉过正了。

关于amazon-web-services - 仅将白名单项目写入 DynamoDB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63751327/

相关文章:

amazon-dynamodb - 如何在DynamoDB中建模一对一,一对多和多对多关系

python - 无法调用 AWS CLI 服务以获取 ELB 数据

c# - 在C#中设置生命周期规则

java - 使用 AWS ApiGateway 签名的 URL

java - spring data mongodb 支持手动引用还是仅支持 DBrefs?

javascript - 高效查找和替换文档中的字符串

python - redis - 使用哈希

amazon-web-services - 在浏览器中打开对象 URL 时 AWS S3 访问被拒绝

php - 访问Docker容器(如URL)

database - 如何使用 DynamoDB (NoSQL) 为学生/类(class)建模