3

複雑なプロセスをSQLから.NETアプリケーションに移動しています。私は、SQLから必要なデータのみをプルダウンし、データテーブルに格納するというブルートフォースアプローチを採用しています。ステッピングを使用したパイプラインパターンを使用して、並列で実行できるプロセスを分割しました(他のプロセスに依存せず、同じデータビットで作業することもありません)。

すべてが順調に進んでいますが、DataSet/DataTable構造よりも優れたパフォーマンスを発揮するインメモリSQLソリューションがあるかどうかを知りたいです。一度に5万行について話し、最大1mのサポートデータ行(5b行を読み取る)を使用します。1行(サポートするすべてのデータ行を含む)の行サイズは、おそらく平均で約1Kです(文字列が大きいため)。

私の質問は、特にデータセットのパフォーマンス、メモリオーバーヘッド、および永続性に関するものです。リカバリの目的で、各段階でデータをディスクにシリアル化する必要があります。

代わりに、行を強く型付けされたモデルにマップする方がよいでしょうか?データセットの関係やその他の利点は必要ありません。並列処理を使用して、ほとんどの検索機能を独自のものに置き換えました。

データはプリミティブ型のみを使用し、ブロブ、ストリーム、地理などは使用しません。

4

1 に答える 1

4

ローカルSQL操作については、SQLiteをご覧ください。メモリ内で排他的に実行できるかどうかは覚えていませんが、ディスクキャッシングとトランザクションジャーナルをオフにすると、おそらくかなり近いでしょう。

Steve Shaunesseyは、何年も前にBorlandで高速のインメモリSQLエンジンを開発しました。それが今までに製品化されたかどうかはわかりません。Embarcadero.com Webサイトを見て、彼の作品の残骸が残っているかどうかを確認してください。

aidaim.comがインメモリSQLエンジンをアドバタイズしていることに気づきました。経験はありません。参考までに。

また、メモリ内クエリ操作にはLINQを検討してください。実行していることに注意を払うと、LINQのクエリ構成と遅延実行は、大きなデータであるIMOでうまく機能します。また、SQLパーサーは必要ありません。

于 2011-12-15T00:12:50.223 に答える