dynamoDB中全局二级索引范围键的最大值

时间:2014-02-20 19:16:22

标签: database amazon-dynamodb

我在dynamoDB中有一个表,其中id为主键,全局二级索引(GSI)。 GSI的哈希密钥为p_identifier,范围密钥为financialIDFinancialID是一个以100000开头的6位数字。我需要获得financialID的最大值,以便添加下一条记录可以使financialID增加1。

任何人都可以帮我完成这项工作吗?还有其他替代方法吗?

3 个答案:

答案 0 :(得分:1)

我会采用不同的方法。

根据您的要求,我假设financialID应该是唯一的。 数据库不会阻止您复制它,您应该确保应用程序的其他部分同步这些数字。所以你需要一个原子计数器。

如果必须单独使用DynamoDB,则应该为此类任务设置一个表。 一个表,其中有一个名为financial_id_counter的哈希主键,并将其原子地提高1并使用检索到的ID作为要使用的下一个财务ID。 这不是理想的,但在使用UpdateItem ADD发布更新时可以正常工作。

答案 1 :(得分:0)

首先,递增对于DynamoDB来说不是一个好主意,但以下可能是一种解决方法:

  1. 我们必须基于等于运算符进行查询,所以让我们说:

    p_identifier = 101
    

    你可以使用

    scanIndexForward-false
    

    (将根据您的范围键对数据进行降序排序)并获取该项目并增加您的密钥。

  2. 如果你不知道p_identifier,那么你需要扫描(不推荐)并手动找到最大的密钥和增量。

答案 2 :(得分:0)

如果你需要严格的财务ID,@ Chen的方法是好的。

另一方面,如果您只需要一个唯一ID,则可以使用UUID。这里碰撞的可能性也很小。要解决此问题,您需要使用具有“存在”条件的API - 如果调用存在则调用将失败,然后您可以使用其他UUID重试。

相关问题