0

Google App Engine のデータストアがキーと ID を使用する理由について質問がありました。リレーショナル データベースのバックグラウンドから来て、エンティティを行と比較していますが、エンティティを保存するときにキー (自動生成された長い文字列) と ID (手動または自動で入力できる) が必要なのはなぜですか? これは、レコードを識別するためのスペースの大きな無駄のようです。繰り返しますが、私はこのタイプのデータベースを初めて使用するので、何かが欠けている可能性があります。

4

2 に答える 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 に答える