[英]Order items with single write
具有简单整数order
值的高级概述可以帮助我理解:
id (primary) | order (sort) | attributes ..
----------------------------------------------------------
ft8df34gfx 1 ...
ft8df34gfx 2 ...
ft8df34gfx 3 ...
ft8df34gfx 4 ...
ft8df34gfx 5 ...
通常,更改order
很容易(例如,如果用户在前端拖放列表项):转移项目,计算新的order
值并使用新的order
更新db中受影响的项目。
限制条件:
我最初的想法:
使用epoch作为order
并添加一些独特的东西,以避免重复的epoch时间,例如<epoch>#<something-unique-to-item>
。 初始值为插入时间(因此默认顺序是最新的)。
客户/服务器(计算order
)知道其子集中的每个子项的时代。
如果项目已移动,请查看上一个和下一个项目的纪元(如果具有上一个或下一个-可以移动到第一个或最后一个),在之间选择一个值并更新。 超过1个班次? 重复该过程。
但..
这有可能吗? 我应该将什么类型/值用作order
?
DynamoDB不允许更改特定项的主分区键和排序键(要更改它们,则需要删除该项并使用新的键值重新创建),因此您可能需要使用本地或全局键次要索引。
假设您提到的分区键/排序键用于二级索引,建议您存储顺序的自然数(1、2、3等),然后根据需要进行更新。
实际上,您将需要考虑以下三种情况:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.