Objectifyを使用して、Google App Engineのデータストアからランダムな要素を取得するにはどうすればよいですか?エンティティのすべてのキーを取り出してランダムに選択するか、より良い方法がありますか?Objectifyエンティティからランダムなエントリを取得する
答えて
0と1の間の乱数を、格納するときに各エンティティに割り当てます。ランダムなレコードを取得するには、0と1の間の別の乱数を生成し、ランダムな値を持つ最小のエンティティをクエリします。
すべてを取得する必要はありません。例えば :
- countall =クエリ(X.class).count()// http://groups.google.com/group/objectify-appengine/browse_frm/thread/3678cf34bb15d34d/82298e615691d6c5?lnk=gst&q=count#82298e615691d6c5
- RND =乱数[0..countall]
- ofy.queryを生成し(X.class ).order( " - 日付")。制限(rnd); //例-dateまたは
- 最終idはあなたの...
改善(最初の読み取りが平均50%以下であるといけないので、あなたが50%をfatchかでの平均で)(にあるいくつかの慢性インデックスフィールドのためにキャッシュ内に小さなキーテーブルを持つ)!
まず、すべてのX要素を覚えておいてください。 キャッシュid-sとその位置。次回は、選択したIDからさらに条件を問い合わせます(max ".limit(rnd%X)"はX-1になります)。
100%公平に近い場合、慢性的なフィールド値を推測する必要がない場合はランダムです(たとえば、10日間で1000レコード、ランダム501選択で5日以上の第2要素を選択した場合) 。
慢性フィールドの日付(またはそれに類するもの)がある場合は、ランダムな日付より古い要素を取り込み、次にランダムな日付+1(最初の日付と最後の日付を知る必要があります)の要素を取得します。 2番目はフェッチされたレコード間のランダムを選択します。クエリが空の場合などより大きい...
は客体データストアからいくつかのランダムな要素を選択についてthis postからの引用を選択:
あなたのIDが連続している場合は、一つの方法は、ランダムに5つの 番号を選択することであろう使用中であることが知られているID範囲からのものです。次に、filter()内の "in"のクエリを使用します。
5つのエントリが隣接していても構わない場合は、count()、 limit()、およびoffset()を使用して5つのエントリのブロックをランダムに見つけることができます。
それ以外の場合は、 に一度に1つのエントリをランダムに選択するには、おそらくlimit()とoffset()を使用する必要があります。
- ジョシュ
私はかなりMatejcを提供するアルゴリズムを適応させます。しかし、3つの事:代わりに、カウント()またはデータストアサービス工場(DatastoreServiceFactory.getDatastoreServiceを())を使用しての
、私は私が興味を持ってエンティティの合計数を追跡エンティティを持っていますこのアプローチの理由は次のとおりです。 a。たくさんのオブジェクトを扱うときにcount()が高価になる可能性があります。 b。ローカルにデータストアサービスのファクトリをテストすることはできません... prodでテストするのは悪い習慣です。 。乱数生成
:代わりに上限を()を使用してのThreadLocalRandom.current()nextLong(1、maxRange)
は、私が使用してオフセットので、私はソート」を心配する必要はありません。 "
- 1. Bookshelf - データベースからランダムなエントリを取得する
- 2. データストアから一意のランダムなエントリを取得する方法
- 3. カテゴリに基づいてランダムなエントリを取得する
- 4. Objectifyの親子エンティティを結合する
- 5. Tkinter、エントリから値を取得する
- 6. Spotify APIからランダムな曲を取得
- 7. Objectifyでキャッシュから古くなったデータを取得するには?
- 8. eventSubscriberからエンティティを取得
- 9. CRM 4.0からエンティティを取得する
- 10. エンティティ・プロキシ・タイプからエンティティPOCOタイプを取得する方法は?
- 11. Typescript:条件付きのオブジェクトからランダムなエントリを取得し、新しいオブジェクトに追加する
- 12. firebaseから1つのエントリを取得
- 13. .pcapファイルからランダムなパケットを取得する方法は?
- 14. シーケンシャルコレクションからランダムな要素を取得する
- 15. XMLからランダムなURLを取得する
- 16. PHP - 複数のフォルダからランダムな画像を取得する
- 17. Firebaseデータベースからランダムな子を取得する
- 18. サーバからランダムなリソースを取得する
- 19. 配列からランダムな数のセットを取得する
- 20. AngularJS ng-pluralizerからランダムな値を取得する方法は?
- 21. イメージからランダムなバウンディングボックスを取得する方法は? (python)
- 22. 配列からランダムな要素を取得する方法は?
- 23. 配列からx個のランダムな要素を取得する
- 24. サーバからランダムな画像を取得するjavascript/phaser
- 25. dev/urandomから本当にランダムなデータを取得する
- 26. 範囲からランダムな10進数を取得するには?
- 27. テーブルから3つのランダムなレコードを取得する
- 28. 二次元配列からランダムな値を取得する
- 29. Laravel:ディレクトリからランダムな画像を取得する方法は?
- 30. MongoDBからランダムなフィールドを取得する
データを選択する目的のみでインデックスを作成しているようですが、残念なことですが、残念です。私のテーブルはまれにしか更新されないので、私はキーのリストをローカルにキャッシュし、無作為に1つを取得することを考えています(追加のカラム/インデックス/クエリを避ける)。 –