FaunaDB允许我按单个字段索引数据项,并通过索引分页,但我没有看到选择随机项的方法。
答案 0 :(得分:2)
在任何数据库中,大规模选择随机项目都很困难。根据您的要求,有两种主要技术可供选择。
为查询定义并使用索引。这使您可以完全控制两次选择相同项目等行为,
现有索引的背驮式。这对于开发任务更有用,您只想查看随机记录,但不关心公平分配。
无论您选择哪种方式,您最终都会想要FaunaDB index documentation。对于选项2,此Activity feed tutorial包含大量索引事件查询示例。
在每个包含随机数的实例上维护一个字段,并将其用作索引值。然后将值分页到随机开始键。此方法允许随机过程多次选择相同的项目。
可以通过添加整数字段来扩展以进行更多控制,以计算实例被选中的时间。您可以在选择实例的同一事务中增加计数。通过使用selection-count作为索引术语,您可以查询已选择零次的随机项。一旦您选择了所有商品,就可以使用1
字词重复开始选择已选择一次但不是两次的商品。
数据是FaunaDB是暂时的,因此您可以使用时态特征以可能足够随机的方式选择实例,具体取决于您的用例。
如果您想利用已有的索引,并且实际上并不关心公平的随机性,只是想要一种便宜的方法来检查数据集中的不同实例,您可以随机分页应用程序生命周期中的时间戳,使用事件视图,并在您的班级中对不同的实例进行采样。
使用无条件类索引,您将从整个类中选择实例,但它也可以用于在带有术语的索引的单个术语中选择实例。
如果某些时间段的写入活动(最近的过去,对于快速增长的服务)有很大的平衡,您可能希望将合成光标偏向重度期间。