通常のGoogle App Engineの使用、ポリモデル、または通常の「Bigtable」モデルで最高のパフォーマンスを発揮するものは何ですか?
ポリモデルは、事実上、継承追跡を提供する「クラス」と呼ばれる親テーブルに列を作成します。一方、親クラスから継承された通常のBigtableは、親にクエリを実行してすべてのサブタイプクラスのすべての子を検索する機能なしに、新しい別個のデータ構造を作成します。
通常のGoogle App Engineの使用、ポリモデル、または通常の「Bigtable」モデルで最高のパフォーマンスを発揮するものは何ですか?
ポリモデルは、事実上、継承追跡を提供する「クラス」と呼ばれる親テーブルに列を作成します。一方、親クラスから継承された通常のBigtableは、親にクエリを実行してすべてのサブタイプクラスのすべての子を検索する機能なしに、新しい別個のデータ構造を作成します。
回答:
おそらくパフォーマンスの違いはありますが、おそらくかなり小さいです。
ここに私が見つけたものがあります(すべてPython用Googleドキュメントに基づいています)。
BigTableは、PolyModel情報をネイティブにサポートしていません。代わりに、「クラス」プロパティを使用して実装されます。そのため、たとえば基本クラスを見つけるために検索を実行しようとすると、この「クラス」プロパティで検索します。
PolyModelクラスを使用するすべてのクエリには、特定のクラス(「class」プロパティを使用)でフィルタリングする追加のフィルターが適用されます。
PolyModelクラス用に作成されたインデックスは、追加の「クラス」列を考慮する必要があります。
基本的に、PolyModelクラスはそれ自体で「クラス」プロパティを処理し、クエリに挿入して他のクエリに利用します。それ以外は、標準のBigTableの使用法と同じように機能します。
したがって、違いは実際には1つの余分な列を追加して維持するだけです。
パフォーマンスに違いはありますか?はい、おそらくそうです。データベースシステムに追加するすべての列は、パフォーマンスに影響を与えます。しかし、それは重要ですか?おそらくない。