新しいプロジェクト用に MySQL データベースを設計しています。毎日 50 ~ 60 MB のデータをインポートします。
主キーを持つメイン テーブルがあります。次に、独自の主キーとメイン テーブルを指す外部キーを持つ子テーブルが作成されます。
新しいデータは、巨大なテキスト ファイルから解析する必要があり、マスター データベースにインポートする前にいくつかの小さな操作を行う必要があります。解析とインポート操作には大量のトラブルシューティングが必要になる可能性があるため、新しいデータを一時データベースにインポートし、マスターに追加する前にその整合性を確保したいと考えています。
このため、最初は、毎日新しいデータを解析して別の一時データベースにインポートすることを考えていました。このようにして、マスターに追加する前にデータを調べることができ、同時に、後で個々の一時データベースからマスターを再構築する必要がある場合に備えて、毎日のデータを別のデータベースとして保存することができます。
テーブル間のリレーショナル整合性を維持するために、InnoDB エンジンで主キー/外部キーを使用することを検討しています。これは、毎日新しいデータをインポートするときに、自動インクリメント ID (主キー) に重複がないことを心配する必要があることを意味します。
では、この状況を考えると、何が最善でしょうか?
マスターのコピーを作成し、毎日マスターのコピーに直接インポートします。既存のマスターを新しいコピーに置き換えます。
毎日新しいデータを一時データベースにインポートしますが、主キーの自動インクリメント開始値をマスターの最大値よりも大きくなるように変更します。次に、すべてのテーブル (メイン テーブルとその子テーブル) の主キーの自動インクリメント値も変更しますか?
主キーの値を気にせずに、毎日新しいデータを一時データベースにインポートします。主キーの競合なしで一時データベースをマスターとマージする他の方法を見つけますか? この戦略を使用する場合、子テーブルとのすべての関係が正しいままであることを確認しながら、新しいデータのメイン テーブルの主キーを更新するにはどうすればよいですか?