なぜ誰かがメモリ内データベースを必要とするのでしょうか?

StackOverflow https://stackoverflow.com/questions/2955121

  •  23-10-2019
  •  | 
  •  

質問

私は、いくつかのデータベースをメモリ内で使用できるが、誰かがこの機能を使用したい理由を考えることはできないと読んだ。私は常にデータベースを使用して、データとメモリキャッシュを迅速にアクセスできるようにします。

役に立ちましたか?

解決

キャッシュは、ファイルシステムのように、一種のデータベースでもあります。 「メモリキャッシュ」は、メモリ内データベースの特定のアプリケーションにすぎず、一部のメモリデータベースはメモリキャッシュとして特化しています。

メモリ内データベースのその他の使用は、すでに他の回答に含まれていますが、使用も列挙してください。

  1. メモリキャッシュ。通常、その使用に特化したデータベースシステム(おそらく「データベース」ではなく「メモリキャッシュ」として知られています)が使用されます。
  2. データベース関連のコードをテストします。この場合、多くの場合、いくつかの一般的なデータベースシステムの「メモリ内」モードが使用されますが、専用の「メモリ内」データベースを使用して、他の「ディスク上」データベースを置き換えてテストを高速化することもできます。
  3. 洗練されたデータ操作。インメモリSQLデータベースは、この方法でよく使用されます。 SQLはデータ操作のための優れたツールであり、最終結果を計算しながらディスクにデータを記述する必要がない場合があります。
  4. 一時的なランタイム状態の保存。ある種のデータベースに状態を保存する必要がありますが、アプリケーションの再起動を介して保持する必要はありません。何らかのプロセスマネージャーを考えてみてください。サブプロセスを実行していることを追跡する必要がありますが、そのデータはアプリケーションとサブプロセスが実行されている限り有効です。

他のヒント

一般的なユースケースは、ユニット/統合テストを実行することです。

各テストの実行の間にデータの持続性を本当に気にしないでください。テストをできるだけ早く実行することを望みます(人々が頻繁に行うように促すために)。データベースをプロセスでホストすると、データに非常にすばやくアクセスできます。

メモリキャッシュにはSQLサポートがありますか?

インメモリデータベースを本当に賢いキャッシュと見なしているのはどうですか?

これにより、インメモリデータベースがどのように埋め込まれ、どのように更新され、複数のインスタンスで一貫性が保存されているかについての質問が残ります。

インデックスのようなトリックを使用しないと、100000の要素の中から何かを検索するのは遅いです。これらのトリックは、データベースエンジンにすでに実装されています(永続的であろうとメモリ内であろうと)。

メモリ内データベースは、自己執筆構造よりもすぐに自分自身を実装できるものよりも、より効率的な検索機能を提供する場合があります。

メモリ内データベースは、汎用(読み取り)クエリのために、従来のRDBMよりも少なくとも1桁速いです。ほとんどはディスクバックがあり、通常のRDBMとまったく同じ一貫性を提供します - データセット全体がRAMに適合する必要があるだけです。

コアのアイデアは、ディスクバックされたストレージには、DRAMには適用されない巨大なランダムアクセスペナルティがあります。データは、従来のRDBMSデータキャッシュスキームを使用して実行不可能なランダムアクセス最適化方法でインデックス/編成できます。

リアルタイムの応答が必要なアプリケーションでは、メモリデータベース、おそらく航空機を制御するためのアプリケーション、応答時間が重要な植物を使用したいアプリケーション

メモリデータベースは、ゲームプログラミングにも役立ちます。データベースよりもはるかに高速なメモリデータベースにデータを保存できます。

これらは、ランタイムデータを保存、クエリ、変更する高度なデータ構造として使用されます。

いくつかの異なるアプリケーションがデータセットにアクセスする場合、データベースが必要になる場合があります。データベースには、データにアクセス /変更するための一貫したインターフェイスがあり、ハッシュテーブル(または使用するものは何でも)がありません。

単一のプログラムがデータを扱っている場合、使用している言語でデータ構造を使用するだけで合理的です。

メモリ内データベースは、データベースキャッシングを実行するよりも優れています。データベースキャッシュは、操作の読み取りに関しては、インメモリデータベースと同様の機能です。

一方、操作の書き込みに関しては、データがディスクに持続するデータベースキャッシュと比較すると、メモリ内データベースが高速になります(IOオーバーヘッドにつながる)。

また、データベースキャッシュを使用すると、キャッシュミスで終了できますが、メモリ内データベースを使用する場合、キャッシュミスになることはありません。

速度とRAMの価格の低下を考えると、メモリ内データベースが将来的に支配的な技術になる可能性があります。 RAMよりも大きいデータセットを処理するためのSQLクエリ、セカンダリインデックス、エンジンなどの洗練された機能を開発したものがすでにあります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top