查询DynamoDB表

时间:2017-04-05 13:48:45

标签: java amazon-dynamodb

我在DynamoDB中有下表。

ID   Author     storyName
1   AuthorOne   Story 1
2   AuthorOne   Story 2
3   AuthorTwo   Story 1
4   AuthorTwo   Story 2

我是DynamoDB的新手,我需要一个可以检索所有作者姓名的查询。如果是常规数据库(RDBMS),我会使用下面的查询。

select DISTINCT Author from tableName;

如何在DynamoDB中执行此操作?

3 个答案:

答案 0 :(得分:1)

您可以扫描表格,仅投影ID和作者属性,然后从项目属性和.map(item -> item.getS("Author")投射.collect(Collectors.toSet())。如果您不想在每次需要查找作者列表时扫描表,则需要将表的更新流式传输到AWS ElasticSearch或其他支持计数的平台。

答案 1 :(得分:0)

DynamoDB没有像SQL这样的内置功能来获取属性的不同值。

但是,您可以使用与DynamoDB集成的 AWS EMR服务来运行类似Distinct查询的SQL。

Hive查询: -

所有要素类型(feature_class)按字母顺序排列:

SELECT DISTINCT feature_class
FROM ddb_features
ORDER BY feature_class;

Refer the data in DynamoDB table with Apache Hive on Amazon EMR

答案 2 :(得分:-2)

不幸的是,DynamoDB不支持SQL查询或任何其他实现此目的的方法。 DynamoDB的查询能力非常有限。您可以为表指定分区键和排序键,以过滤行,仅此而已。

名为Rockset的服务可以拖尾DynamoDB表并在它们上提供功能齐全的SQL。

此博客讨论如何使用Rockset通过SQL查询DynamoDB表中的数据:https://rockset.com/blog/running-fast-sql-on-dynamodb-tables/

全面披露:我在Rockset的工程团队工作。