スケーラブルである必要があるショップ ソリューションの構築を検討しています。現在、複数の国に拠点を置くショップ (例: uk、us、de、dk、es など) で 1 日平均 1 ~ 2000 件の注文を取得していますが、この注文は 2 年後にはこの量の 10 倍になる可能性があります。
別の国ショップ データベースを使用して注文テーブルを保存するか、すべてを 1 つの注文テーブルに結合することを検討しています。
すべての注文がグローバル ID (auto num) と国 ID (例: uk、de、dk など) を持つ 1 つのテーブルに存在する場合、各国の注文も順番に並べる必要があります。したがって、本質的には、グローバル ID と国の注文 ID が必要であり、国の注文 ID は国に対してのみ連続しています。
グローバル ID = 1000、国 = UK、国オーダー ID = 1000
グローバル ID = 1001、国 = DE、国オーダー ID = 1000
グローバル ID = 1002、国 = DE、国オーダー ID = 1001
グローバル ID = 1003、国 = DE 、国オーダー ID = 1002
グローバル ID = 1004、国 = UK、国オーダー ID = 1001
グローバル ID は DB によって生成されるため、心配する必要はありません。しかし、次の連番を見つけるには、現在の国の注文ベースの ID + 1 を取得するクエリを実行する必要があると考えています。これについて私が懸念しているのは、1) テーブルに数百万行のデータがある可能性があり、書き込みの前に読み取りを行っている場合のクエリ時間、2) 同時書き込み/読み取りによる ID 番号の衝突の可能性です。
MyISAM テーブルを使用すると、ID 番号の競合を防ぐために、最後の国の注文 + 1 を取得している間、テーブル全体をロックできます。
誰かがよりエレガントなソリューションを知っているかどうか疑問に思っていますか?
乾杯、イマンク