Google Cloud Spanner recommendsは、主キーの単調増加整数を使用しています。これは、ホットスポットを作成するように、トップレベルのテーブルには理にかなっています。しかし、インターリーブされたテーブルはどうですか?彼らはとにかく同じノードに格納されます。それらはソートされた順序で保持されるので、UUIDやその他のランダムIDを使用すると、特にソートされた順序で取得される場合には、最適ではないようです。Google Cloud Spannerの自動インクリメント
最大IDを読み取り、新しい行のmaxId + 1を正しいソリューションに保存していますか?
答えをありがとう。インタリーブされたテーブルで増加する数値を使用するベストプラクティスは何ですか?それは簡単ですか: max = read( "SELECT MAX(SubId)FROM SubTable WHERE ParentId = ..."); 書き込み( "サブタブ(SubId、...)の値を挿入する(" +(max + 1)+ "、...)") ? –
一般に、必要に応じて順次IDのための列を持つUUIDを避けて使用することは、まだ良い考えです。トランザクションの中でそれを行うことを確認するなど最新の(そして最大)値が削除された場合どうなるか、再利用できるかどうかなど、多くの危険が潜んでいます。おそらく、別のテーブルを使用してカウンターを保管し、適切な取引があることを確認する方がよいでしょう。 –