質問はそれをすべて言います。
例: データベース テーブルを分割する予定です。テーブルには、「アクティブ」、「完了」、および「削除済み」としてフラグが立てられた顧客注文が含まれています。また、フラグごとに 1 つずつ、合計 3 つのシャードがあります。
私が理解している限り、フラグが変更されたときに、行を正しいシャードに移動する必要があります。
私は正しいですか?これを行う最善の方法は何ですか?トリガーは使用できますか?
行をすぐに移動するのではなく、日/週/月の終わりにのみ移動することを考えましたが、特定のフラグを持つ行がどのシャードに存在し、すべてのシャードに対して常に検索を実行する必要があるかはわかりません。
編集:いくつかの明確化:
一般に、行が存在するシャードを決定する基準を選択する必要があります。この場合、上記のフラグにしたいと思います。これは、この種のデータを分割する最も自然な方法だからです。(私の意見では)非常に頻繁にアクセスされるアクティブな注文の数は限られています。めったにアクセスされない多数の完成した注文があり、ほとんどアクセスされない膨大な数のデータ行があります。
特定のデータ行が存在する場所を探したい場合、すべてのシャードを検索する必要はありません。ユーザーがアクティブな注文をロードしたい場合、どのデータベースを参照する必要があるかは既にわかっています。
現在、私のシャーディング基準であるフラグが変更されており、このケースに対処する最善の方法を知りたいと思っています。レコードを元のデータベースにそのまま保持すると、最終的にすべてのデータが 1 つのテーブルに蓄積されます。