Amazon dynamodb dynamodb中的自动递增整数

Amazon dynamodb dynamodb中的自动递增整数,amazon-dynamodb,aws-amplify,aws-appsync,Amazon Dynamodb,Aws Amplify,Aws Appsync,我正在为发票应用程序建模dynamodb图表,我正在寻找生成需要从1增加到X的唯一发票id。2019年,aws appsync和dynamodb作为数据源可以解决此类问题?dynamodb中不建议使用自动递增整数模式,尽管可以使用应用程序级逻辑实现类似的功能。DynamoDB表根据表的分区键分布到许多逻辑分区。然后根据项目的排序键对该分区内的项目进行排序。你需要决定什么样的结构对你的应用程序有意义,以及自动递增对你的应用程序意味着什么。最简单的情况是省略一个排序键,并将自动递增的id视为分区键,

我正在为发票应用程序建模dynamodb图表,我正在寻找生成需要从1增加到X的唯一发票id。2019年,aws appsync和dynamodb作为数据源可以解决此类问题?

dynamodb中不建议使用自动递增整数模式,尽管可以使用应用程序级逻辑实现类似的功能。DynamoDB表根据表的分区键分布到许多逻辑分区。然后根据项目的排序键对该分区内的项目进行排序。你需要决定什么样的结构对你的应用程序有意义,以及自动递增对你的应用程序意味着什么。最简单的情况是省略一个排序键,并将自动递增的id视为分区键,这将保证其唯一性,但也意味着每一行都位于其自己的分区中,因此列出的所有发票都必须是一个扫描,因此不保留顺序,这可能对你的应用程序

如本文()所述,您可以使用如下代码:

const params = {
  TableName: 'CounterTable',
  Key: { HashKey : 'auto-incrementing-counter' },
  UpdateExpression: 'ADD #a :x',
  ExpressionAttributeNames: {'#a' : "counter_value"},
  ExpressionAttributeValues: {':x' : 1},
  ReturnValues: "UPDATED_NEW" // ensures you get value back the new key
};
new AWS.DynamoDB.DocumentClient().update(params, function(err, data) {});
以原子方式递增存储在分区键“自动递增计数器”指定的计数器表行中的整数。在原子增量之后,您可以使用返回的id创建新的发票


您可以使用DynamoDB&AppSync实现此模式,但首先要确定的是它是否适合您的用例。您可能还对通过RDS数据API进行的RDS集成感兴趣,RDS数据API本机支持自动递增ID,但会失去对DynamoDB的设置,忘记它的缩放。

虽然可以使用应用程序实现类似的功能,但DynamoDB中不推荐使用自动递增整数层次逻辑。DynamoDB表根据表的分区键分布到许多逻辑分区。然后根据项目的排序键对该分区内的项目进行排序。你需要决定什么样的结构对你的应用程序有意义,以及自动递增对你的应用程序意味着什么。最简单的情况是省略一个排序键,并将自动递增的id视为分区键,这将保证其唯一性,但也意味着每一行都位于其自己的分区中,因此列出的所有发票都必须是一个扫描,因此不保留顺序,这可能对你的应用程序

如本文()所述,您可以使用如下代码:

const params = {
  TableName: 'CounterTable',
  Key: { HashKey : 'auto-incrementing-counter' },
  UpdateExpression: 'ADD #a :x',
  ExpressionAttributeNames: {'#a' : "counter_value"},
  ExpressionAttributeValues: {':x' : 1},
  ReturnValues: "UPDATED_NEW" // ensures you get value back the new key
};
new AWS.DynamoDB.DocumentClient().update(params, function(err, data) {});
以原子方式递增存储在分区键“自动递增计数器”指定的计数器表行中的整数。在原子增量之后,您可以使用返回的id创建新的发票


您可以使用DynamoDB&AppSync实现此模式,但首先要确定的是它是否适合您的用例。您可能还对通过RDS数据API进行的RDS集成感兴趣,RDS数据API本机支持自动递增ID,但会失去对DynamoDB的设置,忘记它的缩放。

您需要确保按顺序使用每个数字,还是只确保数字增加而不重复?不幸的是,如果我的发票id超过一个数字,可能会产生法律问题。您可以在表中创建一个项目来容纳一个数字计数器,并始终检查计数器以获取当前id,但是,您还需要更新它。这是我的第一个想法,但我不确定在多次请求期间订单是否良好。如果两个人执行相同的操作,订单将是相同的,或者可能是相反的?您是否需要确保每个数字都按顺序使用,或者只是确保数字增加且不重复?不幸的是,如果我的发票id跳过一个数字,则可能会产生法律问题。您可以在表中创建一个项目来保存数字计数器,并且总是检查计数器以获得当前id,但是,您还需要更新它这是我的第一个想法,但是我不确定在多次请求期间订单是否会好。如果两个人执行相同的操作,顺序将是相同的,或者可能是相反的?