Google Datastoreが自分のニーズに合うかどうかを理解しようとしています。Google Datastoreの多くのエンティティで合計を実行するにはどうすればよいですか?
私は多くのエンティティを持っており、特定のプロパティで合計を実行する必要があります。 基本的には、select count(value1) from entity1 where [some filter]
を実行したいと思います。entity1は、フィールド/プロパティーの一部の種類のデータを追跡するエンティティですvalue1
。
私はこれらの関数がリレーショナルデータベースではないため、データストアでは使用できないことを知っています。したがって、最も直接的な解決策はselect
を実行し、アプリケーションの結果セットの合計を計算することです。だから私は(nodejsを使用して、しかし、私は、言語を気にしない)のようなものを持っているでしょう:
query = client.query(kind='Task')
query.add_filter('done', '=', False)
results = list(query.fetch())
total = 0
for(v in results)
total += v.value
問題は結果が300の000の記録等であってもよいので、私は、何千ものレコードを持っているということです。
ボトルネックを起こさずにこれを行うには、どのような方法が最適ですか?
最初の質問ですが、どのくらいの頻度でこれを行う必要がありますか?次に、「完了」タスクのステータスは更新されますか?これらの数字の両方が、あなたが取るアプローチに影響を与える可能性があります。たとえば、カウントを増やしたり、バッチ処理を行うだけです。あなたが何かを数えたら、もう一度数える必要がありますか? –
読み取り操作(データの合計を要求する操作)が頻繁に行われます。 「完了」は単なる例に過ぎませんでした。 カウントは、必要に応じて再実行する必要があります。 –
これは時折のみ実行する場合、ボトルネックとはどういう意味ですか?合計を実行するためにあなたの懸念全体の実行時間ですか?私は、300kレコードの合計にはおよそ2〜5分かかると推測します。 –