インメモリデータベースは、主に内部メモリを使用してデータストレージする目的別データベースです。標準のディスクドライブ (SSD) にアクセスする必要がないため、応答時間を最小限に抑えることができます。インメモリデータベースは、ゲームリーダーボード、セッションストア、リアルタイムデータ分析などの、マイクロ秒の応答時間を必要としたり、トラフィックが急増するアプリケーションに最適です。メインメモリデータベース (MMDB)、インメモリデータベースシステム (IMDS)、およびリアルタイムデータベースシステム (RTDB) という用語も、インメモリデータベースを指します。

インメモリデータベースの利点

インメモリデータベースには、以下で詳しく説明するいくつかの利点があります。

低レイテンシー、リアルタイム応答を提供

レイテンシーは、データへのアクセス要求からアプリケーションの応答までのタイムラグのことです。インメモリデータベースは、規模に関係なく予測可能な低レイテンシーを実現します。マイクロ秒単位の読み取りレイテンシー、1 桁のミリ秒単位の書き込みレイテンシー、および高スループットを提供します。

その結果、インメモリストレージにより、企業はデータに基づいた意思決定をリアルタイムで行うことができます。手遅れになる前に、データを処理して変更に対応するアプリケーションを設計できます。たとえば、自動運転車のセンサーデータをインメモリで計算することで、急ブレーキの瞬時の応答が可能になります。

高スループット

インメモリデータベースはスループットが高いことで知られています。スループットとは、特定の期間における読み取り (読み取りスループット) または書き込み (書き込みスループット) 操作の数を指します。例としては、1 分あたりのバイト数や 1 秒あたりのトランザクション数などがあります。

高いスケーラビリティ

インメモリデータベースをスケーリングして、変動するアプリケーション需要に対応できます。パフォーマンスに悪影響を及ぼすことなく、書き込みと読み取りの両方のスケーリングが可能です。データベースはオンラインのままであり、サイズ変更中も読み取り/書き込み操作をサポートします。

インメモリデータベースのユースケース

インメモリデータベースは、銀行、通信、ゲーム、モバイル広告業界に適しています。以下に、インメモリデータベースのユースケースをいくつか示します。

キャッシュ

キャッシュは、通常は一時的なデータのサブセットを保存する高速データストレージレイヤーです。キャッシュの主な目的は、基盤となる低速なストレージレイヤーにアクセスする必要を減らすことによって、データ取得のパフォーマンスを向上させることです。つまり、そのデータに対する今後のリクエストは、データのプライマリストレージにアクセスするよりも高速に処理されます。

キャッシュにより、以前に取得または計算されたデータを効率的に再利用できるようになります。インメモリデータストレージは、キャッシュされたデータにすばやくアクセスするのに適しています。キャッシュは耐久性と応答時間のトレードオフになります。データはメモリから取得されるので応答時間は速くなりますが、キャッシュではメモリ内のデータが失われることを防ぐことはできません。そのため、キャッシュはディスクベースの耐久性の高いデータベースと組み合わせて使用されることがよくあります。

リアルタイム入札

リアルタイム入札とは、オンライン広告インプレッションを売買することです。入札は通常、ユーザーがウェブページを読み込んでいる間、100~120 ミリ秒、時には 50 ミリ秒もの速さで行われます。この時間の中で、リアルタイム入札アプリケーションは、すべての購入者の広告スポットへの入札を要求し、複数の条件に基づく落札価格の選択し、オファーの表示し、広告表示後の情報を収集します。インメモリデータベースは、ミリ秒未満のレイテンシーでリアルタイムデータの取り込み、プロセス、分析をするのに最適です。

ゲームのリーダーボード

ゲームの相対リーダーボードでは、同じようなレベルの他のプレイヤーに相対したゲーマーのポジションが表示されます。これらのリーダーボードは、プレイヤー間のエンゲージメントを構築し、ゲーマーがトッププレイヤーとの比較でモチベーションを下げないようにするのに役立ちます。数百万人のプレイヤーがいるゲームでは、インメモリデータベースがソート結果を迅速に提供し、リーダーボードをリアルタイムで更新します。

インメモリキャッシュの仕組み

インメモリキャッシュは、ランダムアクセスメモリ (RAM) を使用してデータを保存します。このテクノロジーは、データテーブルを外付けドライブではなく RAM に直接保存します。特殊なデータ構造により、データレコードのインデックスを作成できます。インデックスは、特定の行と列への直接ポインタとして機能します。ただし、実際の物理データは圧縮されており、非リレーショナル形式です。アクセス要求を行うと、データベースはインデックスを使用して正確なデータ値にナビゲートします。保存されたデータは、いつでも直接使用できる形式で利用できます。

64 ビットコンピューティング、低価格の RAM、マルチコアサーバーなどにより、インメモリストレージがより一般的になっています。さらに、クラウドベースのデータストアでは、必要に応じて RAM リソースをスケールアップまたはスケールダウンできるため、インメモリテクノロジーの柔軟性とアクセス性が向上します。

インメモリキャッシュと従来のディスクベースのデータベースの違い

従来のデータベースは、すべてのデータを外部ディスクドライブまたはソリッドステートドライブに保存します。すべての読み取り/書き込み操作にはディスクアクセスが必要です。逆に、インメモリキャッシュはデータの永続性を優先しません。たとえば、キャッシュは定期的に外部ストレージメディアにのみデータを保存できます。インメモリキャッシュと従来のデータベースの違いを以下にまとめました。

インメモリキャッシュとインメモリデータベースの違い

インメモリキャッシュでは、書き込みが永続化されないためパフォーマンスが向上し、データの永続化に必要な余分な時間がなくなります。インメモリデータベースは書き込みを永続化するため、データ変更の耐久性が高まります。この耐久性の代償として、書き込みのパフォーマンスが低下します。ただし、インメモリデータベースは、依然としてディスクベースのデータベースよりもパフォーマンスが優れています。パフォーマンスの観点から見ると、これらはインメモリキャッシュとディスクベースのデータベースの中間に位置します。

インメモリキャッシュの制限

すべてのデータはメモリにのみ保存および管理されているので、インメモリキャッシュは処理やサーバー障害によってデータが失われてしまうリスクがあります。耐久性を向上させるために、インメモリキャッシュはデータをディスクデータベースに定期的に保存する場合があります。以下では、耐久性を向上させるためのメカニズムを詳しく説明します。

スナップショットファイル

スナップショットファイルには、特定の時点でのデータベースの状態が記録されます。インメモリキャッシュは、定期的に、または制御されたシャットダウン中にスナップショットを生成します。スナップショットを作成すると耐久性がある程度向上しますが、スナップショット間でデータが失われる可能性があります。

トランザクションロギング

トランザクションロギングは、データベースへの変更を外部のジャーナルファイルに記録します。ロギングはデータの読み取り/書き込みに依存せず、パフォーマンスには影響しません。ジャーナルファイルは、インメモリキャッシュの自動回復を容易にします。

レプリケーション

インメモリキャッシュの中には、高可用性を実現するために冗長性に依存しているものがあります。同じデータの複数のコピーを異なるメモリモジュールに保存します。モジュールに障害が発生すると、複製されたバックアップコピーに自動的にフェイルオーバーされます。これにより、キャッシュによるデータ損失のリスクが軽減されます。

AWS がインメモリキャッシュとデータベースの要件をサポートする方法

AWS では、お客様の特定のニーズに合わせて、フルマネージド型のインメモリキャッシュとデータベースサービスをいくつか提供しています。

インメモリデータベース

Amazon MemoryDB

Amazon MemoryDB は、耐久性に優れたインメモリデータベースサービスで、超高速パフォーマンスを実現します。Redis OSS との互換性があるため、お客様は、現在既に使用しているものと同一の、柔軟で使いやすい Redis OSS のデータ構造、API、コマンドを使用して、アプリケーションをすばやく構築できます。MemoryDB は、マルチ AZ トランザクションログを使用することで複数のアベイラビリティーゾーン (AZ) 全体にデータを耐久的に保存して、高速なフェイルオーバー、データベースリカバリ、およびノードの再起動も可能にします。

インメモリキャッシュ

Amazon ElastiCache

Amazon ElastiCache は非常に高速なインメモリキャッシングサービスで、マイクロ秒のレイテンシーを実現することでインターネット規模のリアルタイムアプリケーションを強化します。ElastiCache には、Redis OSS および Memcached との互換性があります。デベロッパーは、ElastiCache をインメモリキャッシュとして、または高度なデータ耐久性を必要としないユースケースとして使用することができます。ElastiCache クラスター設定は、単一クラスターで最大 6.1 TB のインメモリキャパシティのワークロードを実行できるようにお客様をサポートします。ElastiCache は、実行中のクラスターにシャードの追加や削除を実行する機能も提供します。ElastiCache クラスターワークロードは、需要の変化に合わせて動的にスケールアウト/スケールインできます。

今すぐ無料のアカウントを作成して、AWS でインメモリキャッシュまたはデータベースの使用を開始しましょう。