确定有序列表的排名(位置)属性

时间:2018-08-13 20:30:46

标签: javascript database sqlite position rank

有序列表存储在不保留订单的客户端数据库中(认为sqlite表)。列表的多个版本将同时存储和编辑,有时会合并。为了在同时进行编辑时保持顺序,使用了rank(位置)属性对列表进行排序。

rank属性应该是什么样?插入列表时,可以使用哪种算法来确定新商品的rank

说明

在待办事项应用程序中,多个脱机客户端编辑同一列表,但偶尔会联机并同步。待办事项列表是一组无序的实体,例如:

[{id: 1001, rank: 1}, {id: 1002, rank: 2}, {id: 1003, rank: 3}]

通过rank属性,客户端可以在任意位置添加项目或重新排序列表。在我的示例中,整数用于指示位置,但是可以使用任何可排序的JSON数据类型(字符串,浮点数甚至集合)代替。 id属性是随机生成的。

当客户上线时,其列表将自动合并。在此过程中,不应丢失任何更新,并且合并后的列表应符合用户的期望。

假定以下约束:

  • 项目应具有确定的排序顺序。
  • 客户需要能够在任何位置插入待办事项(在第一个项目之前,在第一个项目之后,...在最后一个项目之后)。
  • 绝对不可能在两个项目之间插入一个项目。

在插入新项目时,对列表项目重新编号可能是不可避免的。但是,就重新编号事件影响合并而言,应将令人惊讶的合并行为降至最低。

0 个答案:

没有答案