1

データベースはメモ化のための合理的なデータ構造ですか?非常に大量のデータをキャッシュする必要がある場合、通常のソフトウェアがデータをメモリにアクティブに保持するのは不合理な場合があります。データベースを使用すると、後で使用するために計算結果を簡単に保存できます。つまり、プログラムの進行に影響を与えることなく、いつでも計算を停止および開始できます。データベースを共有している場合は、処理を複数のシステム(コンピュータークラスター)に分散させることもできます。

私の唯一の予約は、データベースのクエリによって引き起こされる遅延がアルゴリズムのパフォーマンスに影響を与える可能性があることです。特に、アルゴリズムが多くの順列を非常に高速に処理する場合はそうです。もちろん、データベースのメモ化は、アルゴリズム/アプリケーションのスペースの複雑さが非常に高い(ギガバイト)場合にのみ必要になります。何かご意見は?

4

1 に答える 1

3

1台のマシンで大量のデータに回答することを心配している場合、これに対する答えはほぼ間違いなくNOです。 また、最新のハードウェアでは、答えが「いいえ」でない場合は、計算にパターンがあるか、計算を実行不可能と判断する必要があります。しかし、それが理にかなっているいくつかのバリエーションがあります。

メモ化の利点は、再計算のコストが以前の回答を取得するよりも多いことです。しかし、答えがRAMに収まる場合は、ストアをメモリに保持する方が高速であるため、データベースを使用することにメリットはありません。したがって、データベースの唯一の興味深いケースは、答えがRAMに収まらない場合です。

議論のために、各キーと値のペアがなんと640バイトを占めると仮定しましょう。64GBのRAMを使用できると仮定します。したがって、RAMに収まらないようにするには、ランダムに作成/アクセスされる1億を超えるファクトが必要です。ただし、実際のハードウェアについて考えてみましょう。これらの事実は、RAMに収まらない場合、ハードドライブに保存されます。ハードドライブは、たとえば6k RPM、つまり1秒間に100回回転します。これにより、ランダムなデータをフェッチ/保存する時間が平均1/200秒になります(平均して、データを見つけるために途中でスピンする必要があります)。したがって、データ構造を入力した後、すべてに再度アクセスするには、ランダムに1億*0.005秒=500,000秒かかります。これは約590日です。我々' ハードウェアの平均故障間隔に危険なほど近づいているデータにアクセスするためだけに何年もかかります(データを作成することは言うまでもありません)。(ところで、ここで利用できる並列処理がいくつかあります。ハードドライブは一度に探している複数のディスクセクターを探しますが、それは限られており、あなたを救うことはできません。)

道徳は、ディスク上の大きなデータセットにランダムにアクセスすることは不可能であるということです。その前にデータベースを置いても。ハードドライブはRAMではないため、そのように考えるべきではありません。

しかし、すべてが失われるわけではありません。

データベースが理にかなっているシナリオは、分散コンピューティングの提案です。計算手順が高価で、メモ化された呼び出しが比較的少なく、データがメモリに収まる場合は、データベースが非常に便利です。データベースへの呼び出しは高速で(物はメモリ内にあります)、ローカルハードドライブに物を保持することはできません(データはCPUを使用するために複数のマシンに分散されているため、共有ハードドライブはありません)。そこにあるからといって便利かもしれません。(私は以前にこのようにデータベースを使用したことがあり、非常に満足しています。)

ただし、このシナリオでは、データベースは単なるキー/値ストアです。SQLデータベースは機能しますが、SQLを使用しないソリューションを検討することをお勧めします。また、no-SQLソリューションに移行すると、データの量に関係なく、すべてがRAMに収まるようにデータがシャーディングされたデータストアのオプションがあります。(はい、リレーショナルデータベースをシャーディングすることもできます。eBayは私が知っている会社の良い例ですが、一度やると、その「リレーショナル」部分を失う傾向があります。はい、いくつかの会社がそうではないと主張していることを知っています。彼らの主張には重大な警告が伴います。)

実際、Google検索を実行すると、この種のシャーディングされたデータストアに対して実行されます。このデータストアには、どのページがどのキーワードに一致し、どのページが最も関連性が高いかに関する多くの質問に対する本質的にメモ化された回答が含まれています。メモ化なしでは、彼らはそれを行うことができませんでした。しかし、答えを得るためにハードドライブに行かなければならない場合、彼らは実際にそれを行うこともできませんでした。(SQLも使用していません...)

于 2012-04-10T03:31:56.080 に答える