1

AppEngine データストアが、本質的にキーでソートされる Bigtable の上に構築されていることはよく知られています。AppEngine データストアによってキーがどのように生成されるか (多少)も知られています。アプリ ID、エンティティの種類、インスタンス パス、および一意のインスタンス識別子を "結合" することによって (おそらく連結によって、こちらを参照)。

明確ではないのは、保存前に一意のインスタンス識別子に対して変換が行われるかどうかです (たとえば、key_name="Test" を指定すると、"Test" は最後に連結されます)。もちろん、アプリ ID、エンティティの種類、およびパスをそのまま保持して、Bigtable でローカリティ/キーの並べ替えを利用することは理にかなっています (Google の他のプライマリ ストレージ テクノロジである F1 も同様に機能します)。階層キーを使用)、一意のインスタンス識別子についてはわかりません。

key_nameが AppEngine のデータストアにそのまま保存されていることに依存できますか?

4

2 に答える 2

4

キーは、エンコードするフィールドの自然な順序を保持する特別な Protocol Buffer シリアル化を使用して構成されます。つまり、同じ種類と親を持つ 2 つのエンティティのキ​​ーは、キー名順に並べられます。

ただし、ソート順ではエンティティ タイプと親キーが最初になるため、タイプが異なる 2 つのエンティティ、または同じタイプで親エンティティが異なる 2 つのエンティティは、キーが連続していても連続して表示されないことに注意してください。

于 2013-11-15T08:29:55.720 に答える