如何使用 java 对 Amazon dynamodb 中的数据进行排序

Posted

技术标签:

【中文标题】如何使用 java 对 Amazon dynamodb 中的数据进行排序【英文标题】:How to sort the data in Amazon dynamodb using java 【发布时间】:2015-03-20 20:07:01 【问题描述】:

如何在amazon dynamodb中使用java对countryCode列数据进行升序或降序排序

如何在代码中使用SortOrder enum

SortOrder 枚举在 packagecom.amazonaws.services.codedeploy.model.SortOrder 中可用。

import java.io.Serializable;

import com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBAutoGeneratedKey;
import com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBHashKey;
import com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBTable;

@DynamoDBTable(tableName = "cd_country")
public class Country implements Serializable 

    private static final long serialVersionUID = 5698425418072128936L;

    @DynamoDBAutoGeneratedKey
    @DynamoDBHashKey
    private String countryId;

    private String countryCode;

    private String countryName;

    private Long isActive;

    public String getCountryId() 
        return countryId;
    

    public void setCountryId(String countryId) 
        this.countryId = countryId;
    

    public String getCountryCode() 
        return countryCode;
    

    public void setCountryCode(String countryCode) 
        this.countryCode = countryCode;
    

    public String getCountryName() 
        return countryName;
    

    public void setCountryName(String countryName) 
        this.countryName = countryName;
    

    public Long getIsActive() 
        return isActive;
    

    public void setIsActive(Long isActive) 
        this.isActive = isActive;
    


【问题讨论】:

是什么让您认为 com.amazonaws.services.codedeploy.model.SortOrder 将用于 DynamoDB? AWS 开发工具包本质上是按服务拆分的。 @MikeKobit 在SortOrder 类中,它包含Ascending("ascending"), Descending("descending");。你能告诉我如何在java中按升序/降序对countryCode列数据进行排序。 SortOrder 特定于 AWS CodyDeploy。正如我在回答中所说,您需要使用Scan 操作来读取整个表并将结果拉入内存中,您必须对其进行排序。另一种选择是使用DynamoDB Online Indexing announced yesterday 在表上创建索引,然后您可以使用Query 操作来获取排序结果,您可以分页而无需先读取整个表。 @MikeKobit 你能发个代码吗。 【参考方案1】:

您无法对countryCode 进行排序,因为它上面没有index。您必须使用Scan 来获取所有行并对应用程序中的数据进行排序。

旁注:countryCode 不是 DynamoDB 中的列 - 它是一个属性。请参阅DynamoDB DataModel 了解更多信息。

【讨论】:

以上是关于如何使用 java 对 Amazon dynamodb 中的数据进行排序的主要内容,如果未能解决你的问题,请参考以下文章

Amazon's Dynamo 论文中文版

Dynamo分布式系统——「RWN」协议解决多备份数据如何读写来保证数据一致性,而「向量时钟」来保证当读取到多个备份数据的时候,如何判断哪些数据是最新的这种情况

使用 AWS Appsync 和 GraphQL 查询 Dynamo DB 中的多个表

如何使用 java 对 Amazon dynamodb 中的数据进行排序

Dynamo涉及的算法和协议——p2p架构,一致性hash容错+gossip协议获取集群状态+向量时钟同步数据

Amazon Dynamodb:使用 Merkle 树的反熵副本同步