インメモリデータベース(IMDb、またはメインメモリデータベースシステム(MMDB)、またはメモリ常駐データベース)は、コンピュータのデータストレージに主にメインメモリを使用するデータベース管理システムです。これは、ディスクストレージメカニズムを使用するデータベース管理システムとは対照的です。インメモリデータベースは、ディスクアクセスがメモリアクセスよりも遅く、内部最適化アルゴリズムがより単純でCPU命令の実行回数が少ないため、ディスク最適化データベースよりも高速です。メモリ内のデータにアクセスすることで、データのクエリ時にシーク時間がなくなり、ディスクよりも高速で予測可能なパフォーマンスが得られます。[ 1 ] [ 2 ]
通信ネットワーク機器やモバイル広告ネットワークなど、応答時間が重要なアプリケーションでは、メインメモリデータベースがよく使用されます。[ 3 ] IMDBは、特にデータ分析の分野で、 2000年代半ばから 大きな注目を集めています。これは主に、大容量メモリを扱えるマルチコアプロセッサと、RAMの価格低下によるものです。[ 4 ] [ 5 ]
インメモリデータストレージにおける潜在的な技術的障害は、RAMの揮発性です。特に、意図的か否かを問わず、電源喪失が発生した場合、揮発性RAMに保存されたデータは失われます。[ 6 ]不揮発性ランダムアクセスメモリ技術の導入により、インメモリデータベースは、電源障害が発生した場合でもフルスピードで動作し、データを維持できるようになります。[ 7 ] [ 8 ] [ 9 ]
最も単純な形態では、メインメモリデータベースは揮発性メモリデバイスにデータを保存します。これらのデバイスは、電源が切れたりリセットされたりすると、保存されたすべての情報を失います。この場合、IMDBはACID特性(原子性、一貫性、分離性、耐久性)の「耐久性」の部分をサポートしていないと言えます。揮発性メモリベースのIMDBは、原子性、一貫性、分離性という他の3つのACID特性をサポートすることができ、実際によくサポートしています。
多くのIMDbサイトは、以下の仕組みによって耐久性を高めています。
一部のIMDBでは、データベーススキーマでデータベースの特定の領域に対して異なる耐久性要件を指定できます。そのため、容易に再生成できる変化の速いデータや、システムシャットダウン後に意味をなさなくなるデータは、耐久性のためにジャーナル化する必要はありません(ただし、高可用性のために複製する必要はあります)。一方、構成情報は保存が必要なものとしてフラグ付けされます。
メモリ内にデータを保存するとパフォーマンス上の利点が得られますが、データ保存方法としてはコストがかかります。メモリ内ストレージの利点を実現しつつコストを抑えるアプローチとして、最も頻繁にアクセスされるデータをメモリ内に保存し、残りをディスクに保存する方法があります。どのデータをメモリ内に保存し、どのデータをディスクに保存するかという明確な区別がないため、一部のシステムではデータの使用状況に基づいてデータの保存場所を動的に更新します。[ 10 ]このアプローチは、最も頻繁にアクセスされるデータをメモリ内に保存するのではなく、最も最近アクセスされたデータをキャッシュするキャッシングとは微妙に異なります。
ハイブリッドアプローチの柔軟性により、以下の要素のバランスを取ることが可能になります。
クラウドコンピューティング業界では、この点でデータの保存方法を説明するために、「データ温度」、つまり「ホットデータ」と「コールドデータ」という用語が登場しました。[ 11 ]ホットデータは、頻繁にアクセスする必要があるミッションクリティカルなデータを説明するために使用され、コールドデータは、アーカイブや監査目的で保持されるデータなど、あまり頻繁に必要とされず、緊急性も低いデータを説明します。ホットデータは、高速な取得と変更が可能な方法で保存する必要があり、多くの場合、メモリ内ストレージによって実現されますが、常にそうとは限りません。一方、コールドデータは、よりコスト効率の良い方法で保存でき、ホットデータと比較してデータアクセスが遅くなる可能性が高いことが受け入れられています。これらの説明は有用ですが、「ホット」と「コールド」には具体的な定義がありません。[ 11 ]
製造効率の向上は、インメモリとオンディスクを組み合わせたデータベースシステムを選択するもう一つの理由となります。特に家電製品などでは、一部のデバイス製品ラインには、永続ストレージを備えたユニットと、ストレージにメモリを使用するユニット(セットトップボックスなど)が含まれています。このようなデバイスにデータベースシステムが必要な場合、メーカーは、ディスクレス製品とディスクベース製品にそれぞれ個別のインメモリデータベースとオンディスクデータベースを使用するよりも、低コストと高コストで、コードのカスタマイズも少なく済むハイブリッドデータベースシステムを採用できます。
単一のデータベース内でメモリ内テーブルとディスク上テーブルの両方をサポートする最初のデータベースエンジンであるWebDNAは、1995年にリリースされた。
別のバリエーションとしては、サーバーに大量の不揮発性メモリを搭載するものがあり、例えば、ディスクアレイとして構造化するのではなく、アドレス指定可能なメモリとしてフラッシュメモリチップを使用する。この形式のメモリを使用したデータベースは、非常に高速なアクセス速度と、再起動や停電後もデータが保持されるという利点を兼ね備えている。[ 12 ]