Q:
2週間前に次の問題に直面しましたが、パフォーマンスの問題、データの整合性を考慮して、どのように対処すればよいかわかりません。
私がしていることは:
XMLファイルからデータベース内の同様のテーブルにデータを移行したいと思います。
例えば :
私は2つのノード(XMLファイル)を持っています:
courses
、teachers
2つのテーブル(データベース)
courses
、teachers
。
ユーザーがXMLファイルをサーバー上のフォルダーにアップロードできるようにし、XMLファイルの読み取りを開始して、データベースにデータを挿入します。
問題は:
挿入操作中に何らかの障害が発生した場合、すべてのテーブルに挿入されたすべてのレコードを削除(またはロールバック)したいと思います。
私は考え始めますtransaction
、各エンティティの挿入はトランザクションを通じて実行されますが、私は2つの問題に直面します:
アップローダーごとに、すべてのエンティティのすべての挿入を1つのトランザクションに入れるか、1つのエンティティを1つずつトランザクションに入れる必要がありますか?(すべてのエンティティデータをすべて挿入するか、挿入しない必要があります)。
膨大な数のレコードがある場合(1500レコード)、次の例外が表示されます。
このIfxTransactionは完了しました。それはもはや使用できません、誰もそれを修正しません。
私のチームリーダーは、トランザクションを使用しないように言いました。これは、テーブルがロックされ、多くのユーザーがそれらのテーブルを使用するためです。彼は他のメカニズムを望んでいます。
私の問題の解決策(詳細な説明)、このケースを処理し、パフォーマンスの問題とデータの整合性と一貫性を維持する方法を教えてください。