Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services 使用排序键的DynamoDB版本控制_Amazon Web Services_Nosql_Amazon Dynamodb_Amazon Dynamodb Streams - Fatal编程技术网

Amazon web services 使用排序键的DynamoDB版本控制

Amazon web services 使用排序键的DynamoDB版本控制,amazon-web-services,nosql,amazon-dynamodb,amazon-dynamodb-streams,Amazon Web Services,Nosql,Amazon Dynamodb,Amazon Dynamodb Streams,是否有人使用中所述的排序键实现了版本控制 尝试使用typescript来实现这一点,以便使用项目的版本构建数据库。使用updateItem有什么方法可以做到这一点,还是需要一个get+put操作 任何样品,让我开始或帮助是非常感谢的 使用排序键进行版本控制的概念涉及到创建一个使用相同分区键和不同排序键的全新项 DynamoDB提供了一些允许以原子方式更新对象中的值的操作,这个用例非常适合于当您有计数器或数量之类的东西,并且希望减少/增加它而不必首先读取它的值时 如前所述,在您试图实现的情况下,您

是否有人使用中所述的排序键实现了版本控制

尝试使用typescript来实现这一点,以便使用项目的版本构建数据库。使用updateItem有什么方法可以做到这一点,还是需要一个get+put操作


任何样品,让我开始或帮助是非常感谢的

使用排序键进行版本控制的概念涉及到创建一个使用相同分区键和不同排序键的全新项

DynamoDB提供了一些允许以原子方式更新对象中的值的操作,这个用例非常适合于当您有计数器或数量之类的东西,并且希望减少/增加它而不必首先读取它的值时

如前所述,在您试图实现的情况下,您实际上是在创建一个新对象。DynamoDB本身没有任何版本控制的概念,这种模式所做的是巧妙地利用分区键和排序键之间的关系以及PK可以有多个SK与之关联的事实,来关联同一个表的多行

为了回答您的问题,如果您唯一的真相来源(或数据存储)是DynamoDB,那么是的,您的客户机必须首先查询表以了解更新项的最后一个版本,然后插入新版本。 如果您在其他地方记录此信息,并且仅使用DynamoDB存储这些版本,则不需要一次put操作,但同样,这假设您可以在其他地方检索此信息

就示例而言,AWS SDK的官方文档始终是一个良好的开端,在您的情况下,我假设您希望使用可以找到的Javascript

在非常高的级别上,您必须执行以下操作:

  • 创建一个
    AWS.DynamoDB()
    客户端
  • 使用
    dynamodb.query()
    方法执行查询,并指定要更新的项的主键
  • 检查从上一个查询返回的项目(行),并找到版本号较大的项目(行)
  • 使用
    dynamodb.putItem()
    方法放置一个新项,传递一个版本号递增的项作为SK和相同的PK