我有存储在图形数据库中的活动。在某些情况下,多项活动被分组并聚合为一项活动。
已处理的活动提要可能如下所示:
Activity 1
Activity 2
Grouped Activity
Activity 3
Activity 4
Activity 5
活动具有更新的时间戳和唯一的 ID。
活动按其更新时间排序,如果是分组活动,则使用其子活动中的最新更新时间。
活动可以插入列表中的任何位置(例如,如果我们开始关注某人,他们过去的活动将插入列表中)。
可以从列表中的任何位置删除活动。
由于数据量的原因,使用微秒的时间戳仍然会导致冲突(2个项目可以具有相同的时间戳)。
光标标识符应该是唯一且稳定的。添加和删除提要项目不应更改标识符。
我想介绍基于光标的分页,以允许客户通过类似于twitter 的. 似乎没有太多关于它们是如何构建的信息,因为我只发现这篇博客文章讨论了如何实现它们。但是,如果光标的标识符恰好指向已删除的项目,则似乎有问题。
有了上面的内容,我怎样才能产生一个可以用作上述光标的标识符?最初,我考虑将时间戳与唯一 id: 结合起来1371813798111111.myuniqueid
。但是,如果1371813798111111.myuniqueid
删除了 at 的项目,我可以获得带有1371813798111111
时间戳的项目,但无法确定我应该从哪个具有该时间戳的项目开始。
我的另一种方法是为每个提要结果分配一个递增的数字。由于数字是按顺序递增的,如果缺少数字/id,我可以选择下一个。但是,这样做的问题是,如果我开始在提要中间删除和添加提要项目,则光标 ID 会发生变化。我必须解决这个问题的一个解决方案是在每个数字之间有一个巨大的差距,但是很难确定如何以确定的方式将新项目添加到每个数字之间的空间中。此外,随着新项目的添加,以及正在填补的空白,我们最终会遇到同样的问题。
简而言之,如果我有一个可以从列表中的任何位置添加和删除项目的项目列表,那么为每个列表项生成 id 的最佳方法是什么,这样如果 id 的项目被删除,我仍然可以确定它在列表中的位置?