テーブル内のすべてのエンティティを一括読み込みする必要があります。(高速オンデマンド グラフ トラバーサル アルゴリズムのために、必要に応じてロードするのではなく、メモリ内に配置する必要があります。)
読み込み速度を上げるために、これを並列化する必要があります。したがって、複数のクエリを並列スレッドで実行し、それぞれが約をプルしたいと考えています。データベースからの 800 エンティティ。
QuerySplitterはこの目的を果たしますが、フレキシブル環境で実行しているため、クライアント ライブラリではなく Appengine SDK を使用しています。
MapReduce について言及されていますが、これは単純なデータのメモリへのロードを目的としたものではありません。Memcache は多少関係がありますが、高速アクセスのためには、これらすべてのオブジェクトが、自分のアプリの JVM の RAM にある密集したネットワークに必要です。
MultiQueryBuilderがこれを行う可能性があります。クエリの一部を並行して実行する際の並列性を提供します。
これら 3 つのアプローチのいずれを使用するか、または他のアプローチを使用するかに関係なく、最も困難な部分は、テーブル (Kind) を 800 程度のエンティティのチャンクに大まかに分割するフィルターまたはその他の形式のスピットを定義することです。「1 から 800 までのオブジェクト」、「801 から 1600 まで、...」というフィルターを作成しますが、それが非現実的であることはわかっています。それで、どうやってそれをするのですか?