数据库 – 如何在DynamoDB中创建UUID?
在我的db方案中,我需要一个自动增量主键.我怎么能实现这个功能?
PS对于访问DynamoDB,我使用dynode,Node.js的模块. 解决方法免责声明:我是Dynamodb-mapper项目的维护者自动递增键直观的工作流程: >得到最后的柜台位置 这只是为了解释基本思想.不要这样做,因为它不是原子的.在某些工作负载下,您可以将相同的ID分配给2个不同的对象,因为它不是原子的.这将导致数据丢失. 解决方案是使用原子ADD操作以及ALL_NEW的UpdateItem: >原子地生成一个ID 在最坏的情况下,应用程序在保存对象之前崩溃,但不会有两次分配相同ID的风险. 还有一个问题:在哪里存储最后的ID值?我们选择了: { "hash_key"=-1,#0 was judged too risky as it is the default value for integers. "__max_hash_key__y"=N } 当然,为了可靠地工作,所有插入数据的应用程序都必须意识到这个系统,否则你可能再次覆盖数据. 最后一步是使流程自动化.例如: When hash_key is 0: atomically_allocate_ID() actual_save() 有关实现细节(Python,对不起),请参阅https://bitbucket.org/Ludia/dynamodb-mapper/src/8173d0e8b55d/dynamodb_mapper/model.py#cl-67 告诉你事实真相,我的公司并没有在生产中使用它,因为大多数时候最好是为用户找到一个ID,一个事务,一个日期时间,… 我在dynamodb-mapper’s documentation中写了一些例子,可以很容易地推断出Node.JS 如果您有任何问题,请随时问. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |