データストアのシンプルさ、スケーラビリティ、使いやすさが気に入っています。そして、新しいndbライブラリに見られる拡張機能は素晴らしいものです。
データストアのベスト プラクティスを理解しているので、クエリに一致するアイテムの数が多い場合、一致するクエリ結果のアイテム数やページ数を提供するコードを記述しないでください。これを行う唯一の方法は、リソースを集中的に使用するすべての結果を取得することです。
ただし、私たちのアプリケーションを含む多くのアプリケーションでは、一致するアイテムの数を確認し、ユーザーがそれらの結果の特定のページに移動できるようにすることが一般的に望まれます。データストアのページングの問題は、大きなデータセットを介したページングの記事で概説されているように、fetch(limit, offset=X)の制限を回避する必要があるため、さらに複雑になります。. 推奨されるアプローチをサポートするには、結果が表示される方法で順序付けできる一意の値を持つ列がデータに含まれている必要があります。この列は、結果の各ページの開始値を定義します。それを保存すると、対応するページを効率的に取得でき、要求に応じて特定のページまたは次のページに移動できます。したがって、複数の方法で並べ替えられた結果を表示する場合は、そのような列をいくつか維持する必要がある場合があります。
SDK v1.3.1 の時点で、クエリ カーソルはデータストアのページングを行うための推奨される方法であることに注意してください。IN および != フィルター演算子がサポートされていないなど、いくつかの制限があります。現在、重要なクエリのいくつかはINを使用していますが、クエリ カーソルで使用するためにORを使用して記述してみます。
提案されたガイドラインに従って、ユーザーには(次へ)および(前へ)ナビゲーション ボタンと、ナビゲーションが進むにつれて特定のページ ボタンが与えられます。たとえば、ユーザーが(次へ)を 3 回押した場合、アプリは次のボタンを表示し、それぞれの一意の開始レコードまたはカーソルを記憶して、効率的なナビゲーションを維持できます。(前) (ページ-1) (ページ-2) (ページ) -3) (Page-4) (次へ) .
カウントを個別に追跡することを提案する人もいますが、返される結果が異なる豊富なフィールド セットに対してユーザーがクエリを実行できる場合、この方法は実用的ではありません。
これらの問題全般と、具体的には次の質問に関する洞察を探しています。
これらの制限を回避するために、データストア アプリでクエリ結果のどのようなナビゲーション オプションを提供していますか?
ユーザーに効率的な結果カウントとクエリ結果セット全体のページ ナビゲーションを提供することが優先事項である場合は、現在提供されているGAE MySql ソリューションを優先して、データストアの使用を放棄する必要があります。
ビッグ テーブル アーキテクチャまたはデータストアの実装に、クエリの結果を効率的にカウントするための追加機能を提供する今後の変更はありますか?
ご協力いただきありがとうございます。