目次:
- メモリ内のデータのキャッシュ
- スレーブへのデータの複製
- キー・バリュー・ストアでのデータ・モデリング多くのキー・バリュー・ストアは、バリュー・タイプの基本構造のみをサポートしているため、アプリケーション・プログラマーはデータを解釈する必要があります。単純なデータ型のサポートには、通常、文字列、整数、JSON、およびバイナリ値が含まれます。
- Redisには、RMU(read-modify-update)ステップを実行することなく、キー値を直接インクリメントおよびデクリメントする操作が含まれています。単一のトランザクション内でこれを行うことで、他のアプリケーションが更新中に値を変更しないようにすることができます。これらのデータ型固有の操作には、リストやセットへの項目の追加や削除も含まれます。
- Redisは非常に軽量ですが、驚異的な高速キーストアです。当初はメモリ内のキー値ストアとして設計されていましたが、現在はディスクベースのデータストレージを備えています。
ビデオ: NoSQL Strategy on AWS(日本語:AWS Summit Tokyo 2014 | TE-03) 2024
NoSQLのキー値ストアはすべてスピードに関するものです。さまざまな手法を使用して、データのキャッシュ、複数のデータのコピー、または最適なストレージ構造の使用など、その速度を最大限に高めることができます。
メモリ内のデータのキャッシュ
RAMに格納されているデータに簡単にアクセスできるため、RAMにデータをキャッシュするキーバリューストアを選択すると、データアクセスに要する時間が大幅に短縮されますより高いサーバーコスト
<! - 1 - >しかし、しばしば、このトレードオフは価値のあるものです。格納されたデータの何パーセントが頻繁に要求されているかを簡単に計算できます。 5%が一般的に数分ごとに要求されることが分かっている場合は、データサイズの5%を取り出し、その数をデータベースサーバー全体のスペアRAMスペースとして追加します。
オペレーティングシステム、他のアプリケーション、およびデータベースサーバにもメモリ要件があることに注意してください。
スレーブへのデータの複製
キー値ストアでは、特定のキーがクラスタ内のいずれかのサーバーに格納されます。このプロセスは キーパーティショニング と呼ばれます。つまり、このキーが絶えず要求されている場合、このノードは大量の要求を受け取ります。したがって、このノードは平均要求速度よりも遅く、潜在的にユーザーのサービス品質に影響します。
<! - 3 - >この状況を回避するために、一部のKey-Valueストアでは、読み取り専用レプリカ(スレーブとも呼ばれます)の追加がサポートされています。 Redis、Riak、Aerospikeは良い例です。レプリケーションでは、キーを複数のサーバーに複数回格納できるため、応答速度は向上しますが、ハードウェアは増えますが、
キーストアの中には、キーのレプリカがマスターと常に同じ値を持つことを保証するものがあります。この保証は完全に一貫していると呼ばれます。キーを保持しているマスターサーバーで更新が行われると、すべてのレプリカが最新の状態になることが保証されます。
すべてのKey-Valueストアがこのステータス(Riakなど)を保証するわけではないので、ミリ秒まで更新することが重要な場合は、レプリカが完全に一貫性のあるデータベース(Aerospikeなど)を選択します。
キー・バリュー・ストアでのデータ・モデリング多くのキー・バリュー・ストアは、バリュー・タイプの基本構造のみをサポートしているため、アプリケーション・プログラマーはデータを解釈する必要があります。単純なデータ型のサポートには、通常、文字列、整数、JSON、およびバイナリ値が含まれます。
多くのユースケースではこれがうまくいきますが、データへのより細かいアクセスが有用な場合もあります。
文字列
-
リスト
-
セット
-
ソートセット
-
ハッシュマップ
-
ビット配列
-
ハイパーログログ
-
ソートセットは、次のデータ型をサポートしています。日付でソートされた値のインデックスを照会するのと同じように、値の一致範囲を照会することができます。これは、型指定されたデータのサブセットを検索する場合に非常に便利です。
データ操作
Redisには、RMU(read-modify-update)ステップを実行することなく、キー値を直接インクリメントおよびデクリメントする操作が含まれています。単一のトランザクション内でこれを行うことで、他のアプリケーションが更新中に値を変更しないようにすることができます。これらのデータ型固有の操作には、リストやセットへの項目の追加や削除も含まれます。
Redis ZRANGEBYLEXコマンドを使用すると、アプリケーションのユーザーインターフェイスにオートコンプリート機能を提供することもできます。このコマンドは、文字列に部分的に一致するキーのセットを取得します。したがって、Redisで構築されたアプリケーションの検索バーに「NoSQL for」と入力すると、「NoSQL For Dummies」という提案が表示されます。 "
Redisの評価
Redisは非常に軽量ですが、驚異的な高速キーストアです。当初はメモリ内のキー値ストアとして設計されていましたが、現在はディスクベースのデータストレージを備えています。
Redisを使用すると、AOF(添付ファイルのみ)モードを有効にし、各クエリでデータを強制的にディスクに強制するようにRedisに指示することができます(強制
fsync flushing )。もちろん、AOFは書き込みを遅くしますが、データの耐久性を高めます。ただし、1秒までのコマンドを失う可能性はあることに注意してください。 また、Redis氏は最近、クラスタリングのサポートを追加しました。実際、この執筆時点では、Redisのクラスタリングのサポートはベータテスト段階にあります。幸い、Redisは、クライアントが直接書き込むことのない特定のキーとスレーブのマスターを持つ、シェアードナッシング・クラスタ・モデルを使用します。マスターだけがそうします。シェアード・ナッシング・クラスタリングを提供すると、すべてのレプリカへの書き込みを可能にするデータベースの場合よりも、Redisが信頼性の高いクラスタリングを容易に実装できるようになります。
非常に高速なメモリ内キャッシュ層を別のデータベースの前に配置する場合は、MongoDBまたはRiakをRedisで一般的に使用し、Redisをオプションとして評価します。おそらくRedisは、クラスタ化とデータ耐久性のサポートが進化するにつれ、他のバックエンドデータベースを追い越すことができます。