查询和扫描时支持Amazon DynamoDB Json

时间:2016-06-14 01:19:17

标签: mongodb spring-boot amazon-dynamodb

在痛苦的一天试图弄清楚我们是否应该使用DynamoDB存储Json文档(对mongo)并阅读几乎所有的AWS文档和在线示例,我决定在这里提出我的问题。

我们是一个Spring Boot Java应用程序,我们正在使用aws-dynamodb sdk插件。我们的应用程序必须管理成千上万的Json文档,并能够根据各种条件进行检索。

例如,假设这是JSon文档 -

{ 
"serial":"123123",
"feed":{
      "ABC":{
          "queue": "ABC",
          "active": true
            },
       "XYZ" : {
           "queue":"XYZ",
           "active": false
 }
}

这些是我的问题

  1. 我可以将整个Json文档存储为Dynamo表中的String属性,并且仍然能够根据Json中某些属性的值来检索记录以及如何? 例如,我想获得所有具有Feed ABC活动的项目。

  2. 此解决方案的可扩展性如何?

  3. 我知道我可以在Mongo中很容易地做到这一点但是却无法让它在发电机上工作。

1 个答案:

答案 0 :(得分:1)

首先,如果你没有使用DynamoDBMapper与DynamoDB交谈,你应该考虑使用它而不是低级API,因为它提供了更方便的高级抽象。

现在,回答你的问题:

  • 不要将其存储为String,而应考虑使用Map。有关支持的数据类型的更多信息,请参见here。至于搜索,有two waysQuery(您需要提供所需记录的主键)和Scan。对于您的示例(即“所有已激活Feed ABC的项目”),您必须执行Scan,因为您不知道主键。
  • DynamoDB具有高度可扩展性。 Query效率很高,但看起来你会Scan更多。后者有其局限性,因为它确实通过每个记录,但应该适合你,因为你只有几千条记录。不过先做性能测试。