- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
FaunaDB 允许我按各个字段索引数据项,并通过索引分页,但我看不到选择随机项的方法。
最佳答案
在任何数据库中,大规模地选择随机项目都是困难的。根据您的要求,有两种主要技术可供选择。
为您的查询定义和使用索引。这使您可以完全控制行为,例如选择同一项目两次等。
搭载现有索引。这对于开发任务更有用,您只想查看随机记录,而不关心公平分配。
无论您选择哪个,您最终都会想要 FaunaDB index documentation .对于选项 2,此 Activity feed tutorial包含大量索引事件查询示例。
在每个包含随机数的实例上维护一个字段,并将其用作索引值。然后将值分页到随机开始键。此方法允许通过随机过程多次选择同一项目。
通过添加一个整数字段来计算实例被选取的次数,可以扩展它以获得更多控制。您可以在选择实例的同一事务中增加计数。通过使用选择计数作为索引项,您可以查询被选择为零次的随机项目。一旦您选择了所有项目一次,您可以重复 1
术语以开始选择已选择一次但未选择两次的项目。
FaunaDB 中的数据是时态的,因此您可以使用时态特征以足够随机的方式选择实例,具体取决于您的用例。
如果你想利用你已经拥有的索引,并且实际上并不关心公平随机性,而只是想要一种廉价的方式来检查数据集中的不同实例,你可以在期间从随机时间戳分页您的应用程序的生命周期,使用事件 View ,并在您的类中采样不同的实例。
使用无术语类索引,您将从整个类中选择实例,但它也可以用于在带术语的索引的单个术语中选择实例。
如果您的写入事件在某些时间段(最近的过去,对于快速增长的服务)有很大的平衡,您可能希望将合成游标偏向较重的时间段。
关于database - 我如何从 FaunaDB 中选择一个随机实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43725645/
我是一名优秀的程序员,十分优秀!