0

Python を開発スクリプトと NDB として使用しています。

自動数値 ID (キー) を生成するデフォルトのアルゴリズムは何ですか? アプリケーションの総レコード数が 32 ビット範囲を下回っている場合、そのアプリケーションでキーの値が決して超えないと仮定しても安全ですか?

私の実際の問題は、クライアント アプリが 64 ビット整数をサポートしていないことです。AppEngine が 32 ビット整数より大きい数値キーを生成すると、クライアント アプリが予期しない動作をします。1 つの解決策は、文字列キーを使用することです。しかし、クライアントの大部分は既に作成されており、クライアント コードを変更するには膨大なリファクタリングが必要になります。

32 ビット値未満の数値キーを生成するように AppEngine を制限することは可能ですか? ありがとう

4

1 に答える 1

0

いいえ。ドキュメントに記載されているのは、ID がシステムで生成されたものであるということだけです: https://developers.google.com/appengine/docs/python/ndb/entities#numeric_keys

ただし、allocate_idsシステムにいくつかの ID を生成させるために を使用できる場合があり、それらの ID を使用するかどうかを決定できます。これは、最終的に十分に小さい値を返す限り機能しallocate_idsますが、それも保証されていません。

これを回避する (ただし保証はされません) 方法の 1 つは、エンティティ グループを使用することです。各エンティティ グループには、独自の一連の数値 ID があります。ただし、エンティティ グループへの書き込み速度が制限されているため、これはエンティティ グループの優れた使用法ではありません (1 秒あたりの書き込みが経験則です)。

本当の解決策は、クライアント アプリで大きな整数 ID を処理できるようにすることです。

于 2013-04-13T11:12:44.123 に答える