Google App Engine のデータストアがキーと ID を使用する理由について質問がありました。リレーショナル データベースのバックグラウンドから来て、エンティティを行と比較していますが、エンティティを保存するときにキー (自動生成された長い文字列) と ID (手動または自動で入力できる) が必要なのはなぜですか? これは、レコードを識別するためのスペースの大きな無駄のようです。繰り返しますが、私はこのタイプのデータベースを初めて使用するので、何かが欠けている可能性があります。
質問する
340 次
2 に答える
1
鍵の設計は、効率的なデータストア操作の重要な部分です。キーは、組み込みインデックスとカスタム インデックスに格納されているものであり、クエリを実行するときに、キーのみを返すように要求できます (Python の場合: keys_only=True
)。キーのみのクエリは、$$ と時間の両方で通常のクエリの一部のコストがかかり、逆シリアル化のオーバーヘッドが非常に低くなります。
そのため、キー ID に有用で興味深いものを保存している場合は、キーのみのクエリを実行して、多くの有用なデータを急いで非常に安価に取得できます。
これは親キーと名前空間にまで及ぶことに注意してください。これらはすべてキーの一部であるため、有用なデータを「保存」し、キーのみのクエリでそのすべてを取得できる追加の場所です。
これは、理解することが重要な最適化であり、全体的な設計の大部分を占めています。
于 2013-03-27T14:46:56.710 に答える
0
基本的に、鍵は次の 2 つの情報から作成されます。
- エンティティ タイプ (Objectify では、オブジェクトのクラス)
- エンティティの ID/名前
したがって、特定のエンティティ タイプでは、キーと ID はまったく同じです。
ID を自分で指定しない場合は、ランダム ID が生成され、そのランダム ID に基づいてキーが作成されます。
于 2013-03-27T04:31:31.620 に答える