2016-06-14 92 views
0

在经历了一个痛苦的一天,试图找出是否应该使用DynamoDB来存储Json文档(vs mongo)并阅读几乎所有的AWS文档和在线示例之后,我决定询问我的问题在这里。亚马逊DynamoDB Json支持查询和扫描

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

例如,假设这是JSON文件 -

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

这些都是问题,我有

  1. 可我这整个JSON文档存储为迪纳摩表仍然是一个字符串属性能够根据Json内部特定属性的值检索记录,以及如何执行? 例如,我想要获取具有Feed ABC活动的所有项目。

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

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

回答

1

首先,如果您不使用DynamoDBMapper与DynamoDB交谈,则应考虑使用它而不是低级API,因为它提供了更方便的更高级别的抽象。现在

,问题的答案:

  • 把它作为一个字符串,而不是考虑使用地图。有关支持的数据类型的更多信息,请参见here。至于搜索,有two waysQuery(其中你需要提供你需要的记录的主键)和Scan。对于你的例子(即'所有的项目有ABC'),你不得不做一个Scan,因为你不知道主键。
  • DynamoDB具有高度可扩展性。 Query ing是高效的,但看起来你会更多地使用Scan。后者有其局限性,因为它确实贯穿每条记录,但应该适合你,因为你只有几千条记录。首先进行性能测试。