11

私は、将来の分析のために保存したいシミュレーションから 1,000 万から 1 億の出力を生成するプロジェクトに取り組んできました。データにはいくつかの性質の組織レベルがあります。たとえば、クラスルームには、いくつかの異なるパフォーマンス メトリックを持つテストを受ける生徒がいます。

私のデータは、一度にメモリに収まるという点で境界線にあるようです (シミュレーションの計算には、計算を行うためにメモリ内にかなりの量のデータが必要であることを考えると) が、差し迫った必要はありません。プログラムですべてのデータを一度に利用できるようにします。

計算値をSQLデータベースに出力するか、フラットテキストファイルに出力するか検討中です。どのアプローチがより速く/より維持しやすいかについてのアドバイスを探しています(または、私がそれを受け入れているデータを保存するための別の提案がある場合)。

データを他の人と共有できるようにする必要も、何年も先のデータへのアクセスについて心配する必要もありません。値の分析を微調整するたびにシミュレーションを再生成するのを避けるための便利な方法が必要です。

4

4 に答える 4

4

データベースの使用を検討したいと思います。1 億のファイルは、ある種の分類スキームのないファイル システムには多すぎますが、データベースはこの数の行を簡単に処理できます。出力を BLOB 列にシリアル化するだけで、マップする必要がなくなります。また、SQL Server にはファイル ストリーム アクセスがあるため、これは本質的に、SQL がファイルを管理するハイブリッド アプローチになる可能性があることを考慮してください。

于 2012-12-21T01:40:21.117 に答える
3

一方で、各シミュレーション実行の結果をフラットファイルに保存する方がよいように思われます。テキストファイルである必要はありません。バイナリである可能性があります。

1つ以上のシミュレーションを実行した後、ファイルを読み取ってデータウェアハウスに配置し、後で分析することができます。

于 2012-12-21T01:34:29.687 に答える
2

MongoDB を見てみましょう。これは明らかに、SQL Server 2008 よりも約 30 倍から 50 倍高速です。

http://blog.michaelckennedy.net/2010/04/29/mongodb-vs-sql-server-2008-performance-showdown/

于 2012-12-21T03:22:42.283 に答える