- 締切済み
【設計】vb.netでファイルを読み込みDB登録を行う
すみません、vb.netで開発を行うにあたり設計に詳しい方が いらっしゃいましたらご教授願います。 開発する機能はタイトルの通り、txtファイルからデータを読み取り 内容をデータベースに登録するというものですが 現在、開発するにあたり二つのロジックを思いついており どちらが適切か迷っております。 (1) あらかじめtxtファイルの内容を全てリードし配列等の一時変数に退避 ファイルリード終了後、配列に格納されたデータを1件ずつ登録 (2) txtファイルの内容を1件リードするごとにデータベースに登録 開発環境は、vb.net、Oracle です。 txtファイルに格納されているデータ量はファイルにより様々ですが 多くても2万件が予想されます。 迷っている理由としては、 (1)は2万件のデータ量を配列に格納したとしてメモリが耐えれるかどうか? (2)は、1件ずつ読込みデータベースに登録するとなると その分ファイル及びデータベースへのアクセス時間が長くなり 負荷がかかるのでは? という、懸念事項が考えられ迷っております。 上記、二つの開発手法の内どちらがベストか または、上記以外にベストなロジックがあればご教授お願い致します。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- kazuhisa01
- ベストアンサー率32% (158/487)
データ項目数 配列の持ち方 データベースへ登録の仕方 で、どちらでも負荷が掛かります。 項目数が少なく、件数のみ2万件を超えるのであればどちらでもかわらない。 トランザクションをどの単位で切るのか 登録でエラーが発生した場合はどう対処するのか ファイルのアクセスは他からあるのか などを考慮して先に全部読むのか、1件ずつ読んで登録するのか決めるべきです。
- rivoisu
- ベストアンサー率36% (97/264)
>2万件のデータ量をメモリーできるか メモリー量は件数かける1件当たりのメモリー消費量だから耐えられるかなんてあなた以外のだれもわからない >1件ずつ読込みデータベースに登録するとなると その分ファイル及びデータベースへのアクセス時間が長くなり 負荷がかかるのでは? それを軽減するための機構がコンピュータには40年以上前から備わっています。 バッファリング なーーんにも考えずに1件ずつ処理しましょう。 勝手にメモリー内にためて適切なところ実際の読み書きをしてくれます。(まともなOSならば) 2万件の見積もりがいつもっと大きくなるか解りません。 まぁ大量の配列を用意するような場合プログラムの場合はOSが勝手にスワッピングという方法で対処してくれますけど。
お礼
アドバイス有難うございます。 1件ずつ処理を実施して問題ないみたいですね。 ありがとうございました。 アドバイスを参考にさらに考えてみます。
- imogasi
- ベストアンサー率27% (4737/17069)
>設計に詳しい方が といった大げさな話ではないのでは。 実際 http://oshiete1.watch.impress.co.jp/qa3294474.html などを参考に、実際やってみたらどうでしょう。 Googleで「テキスト Oracle 読み込み VB.Net」 などで照会してみてコードを探すとか。 >多くても2万件が予想されます。 この程度(?)の件数で、なぜそんなに心配するのかな。 >データを読み取り内容をデータベースに登録するというものですが ・例えばシステム切り替えなどで、バッチ処理でのことなのかな。 ・処理の最初に読み込んでおけば仕舞いの例かな。 ・多種類の2万件のテキストデータがあるとして、それを検索時などに読み込んでオラクルに入れて検索し、結果を返し、続けて他の場合は他の2万件の別のテキストファイルを読んで、そこから検索し、結果を返すとして、応答時間にいらいらしないか、というようなことかな。 こういう場合は全てのテキストデータでオラクルデータベースを作ってしまえばよいと思う。
お礼
おはようございます。 回答及び御礼が遅くなり 大変申し訳ございませんでした。 教えて頂いたURLを参考にさせて頂きます。
お礼
アドバイス有難うございます。 御礼が遅くなり大変申し訳ございません。 >データ項目数 >配列の持ち方 >データベースへ登録の仕方 >で、どちらでも負荷が掛かります。 ご指摘通りなのですが、お恥ずかしい話 DBのレイアウトがまだ決まってない状況なのです。。。 ですので、2万件のレコードと書きましたが 1レコード当りのデータ量が予測できないため 具体的な数値でお伝えすることができない状況です。 >トランザクションをどの単位で切るのか >登録でエラーが発生した場合はどう対処するのか >ファイルのアクセスは他からあるのか >などを考慮して先に全部読むのか、 >1件ずつ読んで登録するのか決めるべきです。 上記内容を考慮し、また他の皆様の意見を 参考にさせて頂きたいと思います。 有難うございました。