2

可能重复:
从 Google App Engine 数据存储中获取随机记录?

如何使用 GQL 有效地选择随机数据库记录?

例如。我有一个报价模型,我每次都需要选择一个随机报价。这个问题源于我的理解,即不能保证 ID 属性在生产服务器中的每次插入时都会自动递增。

4

1 回答 1

4

自动生成的 id 保证是唯一的,但不是连续的或严格递增的。

在stackoverflow和小组中已经有 很多 关于此的问题。

有几种常见的解决方案:

  • 在创建实体时生成并存储一个随机数,然后选择一个随机数并(通过查询)查找它的壁橱记录。
  • 实施一些机制以确保您的实体 id 被“密集”填充,然后使用键在已知范围内获取。
  • 定期生成实体的随机列表并从这些列表中返回实体。这可以采用弹出实体的堆栈的形式,或者作为返回的实际列表。

不想做的是选择随机偏移量。偏移量非常低效,因为数据存储仍然必须扫描所有跳过的实体。

于 2010-12-04T04:07:32.323 回答