インメモリキャッシュ(redis、memcached)、インメモリデータグリッド(gemfire)、インメモリデータベース(VoltDB)の違いを説明できるかどうか疑問に思っていました。 3つの主要な特性を区別するのに苦労しています。
キャッシュ-定義により、メモリに保存されます。アクセスを高速化するためにメモリ(RAM)に保存されたデータは、キャッシュと呼ばれます。例:Ehcache、Memcache通常、文字列をキーとしてオブジェクトをキャッシュに入れ、キーを使用してキャッシュにアクセスします。それは非常に簡単です。これは、アプリケーションがデータベースにアクセスするタイミングに依存し、キャッシュで複雑な処理は発生しません。キャッシュが複数のマシンにまたがる場合、分散キャッシュと呼ばれます。たとえば、Netflixは、Memcacheの上に構築されたEVCAcheを使用して、ホーム画面に表示されるユーザーのおすすめ動画を保存します。
In Memory Database-キャッシュのすべての機能に加えて、処理/クエリ機能があります。 Redisはこのカテゴリに分類されます。 Redisは複数のデータ構造をサポートしており、Redisでデータをクエリできます(最後にアクセスした10個のアイテムを取得する、最も使用頻度の高いアイテムを取得するなどの例)。複数のマシンにまたがることができ、通常は非常に高いパフォーマンスを発揮し、必要に応じてディスクへの永続性もサポートします。たとえば、Twitterは、Redisデータベースを使用してタイムライン情報を格納します。
GemfireとVoltDBについては知りませんが、memcachedとredisでも非常に異なります。 Memcachedは非常に単純なキャッシュであり、非常に複雑な方法で変数を格納し、それらを取得するため、データが必要になるたびにファイルやデータベースの検索に行く必要がありません。変数のタイプは非常に単純です。一方、Redisは実際にはメモリ内データベースであり、非常に興味深いデータ型が選択されています。ソートされたリストを実行するための素晴らしいデータ型があり、リーダーボードなどのアプリケーションに最適です。新しいレコードをデータに追加すると、自動的にソートされます。
だから私はカテゴリーに夢中になることはありません。実際に各ツールを異なる方法で調べて、ツールが何をできるか、および作成しているアプリケーションを確認する必要があります。これは、nosqlデータベースで比較を描画しようとするようなものです。これらはすべて非常に異なり、さまざまなことをうまく行っています。
「データベース」のカテゴリのものは、単純な「キャッシュ」よりもデータを保護および複製する機能が多い傾向があると付け加えます。キャッシュは一時的(通常)であり、データベースデータは永続的である必要があります。私が見たキャッシュソリューションの多くはディスクに永続化されないため、クラスター全体の電源が失われると、キャッシュ内のすべてが失われます。
ただし、永続化機能とレプリケーション機能を備えたキャッシュソリューションもあるので、線はぼやけています。