SQL Server 2014 のインメモリ OLTP (Hekaton) は、Redisと同じまたは類似の概念ですか?
インメモリ ストレージ (RAM 内のストレージ) とキャッシュに Redis を使用し、別の SQL Server データベース (StackExchange のように) を使用します。ヘカトンも同じことできる?
SQL Server 2014 のインメモリ OLTP (Hekaton) は、Redisと同じまたは類似の概念ですか?
インメモリ ストレージ (RAM 内のストレージ) とキャッシュに Redis を使用し、別の SQL Server データベース (StackExchange のように) を使用します。ヘカトンも同じことできる?
どちらも主にメモリ内にあるという点で似ていますが、それだけです。
Redisはメモリ内のキー値データベースです。構成すればデータをディスクに永続化できますが、データセット全体をメモリに保持するため、十分な RAM が必要です。キーと値のアーキテクチャでは、さまざまなデータ型を使用できるため、単純な文字列やリスト、セット、ハッシュなどとして値を格納できます。基本的に、プログラミング言語内で使用できるすべてのデータ構造は、Redis でネイティブに利用できます。
SQL Server Hekaton (インメモリ OLTP)は、リレーショナル テーブルをメモリ内で実行するために設計された新しいエンジンです。これらのテーブルのすべてのデータは RAM に保持されますが、ディスクにも保存されるため、完全に耐久性があります。
Hekaton は、SQL Server データベース内の個々のテーブルを取得し、MVCC (ページとロックの代わりに) およびその他の最適化を使用して別のプロセスで実行できるため、操作は従来のディスクベースのエンジンよりも数千倍高速です。これについては多くの研究が行われており、主なユースケースは、負荷の高いテーブルを取得し、メモリ内で実行するように切り替えて、パフォーマンスとスケーラビリティを向上させることです。
Hekaton は、メモリ内でデータベース全体を実行することを意図したものではなく (実際に実行したい場合は実行できます)、インターフェイスを同じに保ちながら特定のケースを処理するように設計された新しいエンジンとして設計されました。SQL、ストアド プロシージャ、トリガー、インデックス、ACID プロパティを使用したアトミック操作を使用でき、通常のテーブルとメモリ内テーブルの両方のデータをシームレスに操作できます。
Hekaton の潜在的なパフォーマンスにより、速度が必要で、従来のリレーショナル テーブル内でデータをモデル化したい場合は、Redis の代わりに Hekaton を使用できます。Redis のその他のキー値とデータ構造の機能が必要な場合は、そのままにしておくことをお勧めします。
SQL 2016 SP1 以降では、SQL Server のすべての層が同じ機能にアクセスできるようになりました。唯一の違いは、サポートと容量の価格です。
まず、 Hekaton (インメモリ OLTP) を使用するには、SQL Serverのエンタープライズ エディション (非常に高価) が必要です。CPU ごとに SQL サーバーの料金を支払う必要があることに注意してください。SQL サーバーにワークロードを追加すると、より多くの CPU が必要になるため、ライセンス コストが大幅に増加する可能性があります。
ただし、Redis とは異なり、トリガーまたはストアド プロシージャを使用して、データベース トランザクションの一部として「メモリ内キャッシュ」を更新できます。また、Hekaton は十分に高速であるため、メイン テーブルとは別のキャッシュ セットを必要としないこともあるでしょう。
はい、Hekaton は Redis と同じことを行うことができますが、その使用にそれほど費用がかからない限り、そのように使用することは賢明ではありません。
Hekaton が真価を発揮するのは、Redis などでキャッシングを利用するためにシステムを再設計するためのプログラミング コストに投資することなく、より多くのデータを処理できる場合です。