Adobe Commerce Cloudでの注文の非連続増分ID
Adobe Commerce Cloud Proでは、注文、請求書、出荷、その他のエンティティの増分IDは、1ずつ増やす代わりに、100000001 → 100000004 → 100000007などの手順で増やされます。 この動作は、Cloud Pro環境で使用されるGalera マルチノードデータベースアーキテクチャが原因で発生します。 これを修正するには、増分IDを一意のIDとしてのみ扱い、連続番号に依存しないようにします。
説明 description
環境
マルチノード MySQL (Galera クラスター)を備えたCloud Pro上のAdobe Commerce
問題/症状
マーチャントは、増分IDについて次の点を確認します。
- ステップの増加(一般的に+3)
- 厳格な順序に従わない
- 値をスキップ
こうした行動により、次のような懸念が生まれます。
- 顧客向け注文番号
- 内部レポート
- 監査およびコンプライアンス要件
原因
Cloud Pro環境では、高可用性とデータの一貫性をサポートするために、3 ノードのGalera クラスターを使用します。
同時書き込み中のプライマリキーの競合を防ぐために、MySQLでは次の設定を使用します。
auto_increment_increment = 3auto_increment_offset = {1,2,3}(ノードごと)
各ノードは、独自のシーケンスで個別にIDを生成します。 次に例を示します。
- ノード 1 → 1、4、7、10…
- ノード 2 → 2、5、8、11…
- ノード 3 → 3、6、9、12…
これにより、増分IDは次のようになります。
- グローバルに一意
- 単一ストリームと見なされる場合の非シーケンシャル
期待される動作
- 増分IDは、シーケンスに従うことが保証されていません。
- ギャップとステップの増加は正常です。
- この動作は、自動インクリメントを使用するすべてのエンティティに適用されます。
この動作は、次の理由により、クラスター環境の外部でも発生します。
- 失敗したトランザクション
- ロールバック
- 同時運用
影響
- システムの機能とデータの整合性は影響を受けません。
- IDは、すべてのAdobe Commerce Cloudの運用に対して一意かつ有効なままです。
- 連番の番号付けの期待値のみが影響を受けます。
解決策 resolution
この問題を解決するには、次の手順に従います。
-
連続的な増分IDに依存するのは避けてください。
-
増分IDは、順序付けされた値ではなく、一意のIDとして扱います。
-
注文とレポートには、次を使用します。
created_at個のタイムスタンプ- エンティティ間の関係またはビジネスロジック
-
-
レポートおよび監査ツールを更新。
-
ツールで厳密なシーケンス処理が期待される場合:
- 連続しないIDを処理するロジックを更新します。
- 数値連続性への依存を削除します。
-
-
カスタムシーケンスを実装する(必要な場合)。
-
ビジネスで厳密に連続番号が必要な場合:
- カスタムシーケンスジェネレーター(カスタムモジュールなど)を作成します。
- 値を別の属性として保存します(増分IDを置き換えないでください)。
- レースの状態を防ぐために適切なロックを使用してください。
-
ベストプラクティス
増分IDは、チケットカウンターではなく、ライセンスプレートと同様に扱います。
- アイテムを一意に識別し
- 彼らは秩序を保証しない
まとめ
Cloud Proの非シーケンシャル増分IDは、プラットフォームの分散型データベース設計の直接的な結果です。 これにより、拡張性と信頼性が確保されますが、厳格なシーケンス処理はインフラストラクチャ・レベルではサポートされていません。 連続番号が必要なユースケースの場合は、カスタムまたは外部ソリューションが必要です。