0

私はクライアントのためのプログラムを書いています。彼らが私たちに送るデータは本質的には平文化されたリレーショナルデータベースからの情報であり、1行に数フィールドしか変化しない極めて冗長な情報からなる巨大なカンマ区切りのテキストファイルになっています。未整理の関連データを大量に保存し、受信時に整理するにはどうすればよいですか?

これを型指定されたデータセットに読み込んで、基本的には3番目の正規形になっているデータを整理しています。これは冗長性の大幅な削減につながります。そこから、データセット内のデータをXMLに変換し、別のプログラムに送信してフォームやステートメントを作成します。

しかし、これについてもっと良い方法があるのだろうかと思っています。それは私が思うほど悪くないかもしれませんが、これを行うためのより良い、より速い方法があるという感覚を揺さぶることはできません。重要なのは、データが整理され、容易に理解できることと、XMLに変換する前に制約チェックと検証が行われていることです。

データを永続化する必要はないので(実際には使用しないでください)、毎回使用後にクリアするようにすれば、実際のRMDBは価値がないように見えます。

プログラムは、無数の環境でも動作する必要があります。私のワークステーションはWindows 7 64ビット、テストサーバーはWindows XP 32ビット、プロダクションサーバーはWindows 7 64ビットまたは32ビットです。

+0

「ボトルネック」を定義する - データセットが配列と比べて重いかもしれませんが、重複したフィールドなどを削除できるようにデータが必要なように聞こえ、データセットには名前付きフィールドの利点がありますデバッグが容易になります。 "重要なことは、データが整理され、容易に理解され、XMLに変換する前に制約チェックと検証が行われることです。 - あなたはデータセットの中で自分自身をかなり話しました;-)。 – peterG

+0

@peterGボトルネックは適切な単語ではなかったかもしれません。しかし、私はまだこれを行うより良い、またはより速い方法があるかどうか疑問に思っています。一見するとそうではないようです。私が見つけることができる最も近い同等物は、メモリ内接続を使用してsqliteを実行することです。 – sonicbhoc

+0

それはアプリの状況やデータに依存します - テキストファイルとは - それはCSVですか?個人的に私はLINQよりもSQLに自信がありますので、私の判断にも影響を与えるのは私のこと(私は言いたいことが恥ずかしいですね:-))と、メモリ内のアプローチがどれだけ実用的であるかということですexのためにXPを実行している可能性のあるクライアントマシンで実行するか、64ビットの32GBボックスで実行されることはわかりますか?また、保守性とは対照的に、パフォーマンスはどれくらい重要ですか? – peterG

答えて

1

IMHO私は、SQL Expressから始めます。これは、そのような種類のデータボリュームを処理するように設計されており、実行しているさまざまなプラットフォームに適応します。必要に応じてより大きなバージョンにスケーラブルです。 SSMSには中間結果などを簡単に調べるツールがあり、.csvをインポートするのは簡単です。それは無料です。 上記の理由から、SQL Expressに実際のパフォーマンスを評価してもらうことにしました。 元の質問に戻って、私の意見はこれが合理的なアプローチだということです。私はあなたが何かを欠けているとは思わない。

+0

新しいバージョンのSQL Expressには、完璧なソリューションのように見えるLocalDBオプションがあります。助けてくれてありがとう! – sonicbhoc

関連する問題