キーバリュー型データベースは、レコードが一連のキー(識別子)と値(識別子の値)として格納される NoSQL の非リレーショナル・ストレージ戦略です。キーと値のペアは、単純な数値や文字列、画像や地理空間データなどのオブジェクトです。高速な応答を必要とする大容量アプリケーションは、重要な価値を持つデータベースのメリットを享受できます。
キーバリュー・ストア
リレーショナル・データベースはデータをテーブルに格納しますが、キーバリュー型の関係は一連のキーと値です。キーは、データベースに正しい値を求めるための一意の識別子です。例えば、ある商品の価格は、「price」をキー、「12.00」を値として格納することができます。一部のアプリケーションでは、メタデータにキーバリュー・ストアを使用して、大規模なリレーショナル・データベースやその他の非リレーショナル・データベースで追加情報をクエリできます。
一連のキーと値のペアを保存すると、クエリが高速化されるため、迅速な応答が必要なアプリケーションや何百万人ものユーザーをサポートするアプリケーションでは、キーバリュー型データベースを使用するメリットがあります。キーバリュー・ストレージは、シンプルなメタデータを保存して、より大きなデータ・サイロにリンクする必要がある場合にも役立ちます。一部のビジネスでは、キーと値のペアを使用して単純なデータセットを作成し、何百万もの要求がデータベースに到達しましたが、クエリごとに返される値はわずかです。
キーバリュー・ストアの利用例
小規模なデータセットをクエリするアプリケーションは、キーバリュー・ストアのスピードからメリットを得ることができます。例えば、何百万人ものユーザーがソーシャルメディア・フィードを使用しているとします。ユーザーは常にフィードを更新し、アプリケーションはフィードの上位 5 つのスレッドを表示します。最新の投稿と投稿へのリンクを持つキーバリュー・ペアを保存できます。
リアルタイムのアプリケーションは、重要な価値を持つ店舗の活用にも役立ちます。キーバリュー・ストアはデータを迅速に返すため、ティッカーや 2 秒ごとの更新があるアプリケーションではデータが使用されます。例えば、特定の銘柄の最新の値を表示する銘柄ティッカーでは、毎秒の表示の更新が必要です。これらのクエリには、キーバリュー型データベースを使用できます。
キーバリュー型データベースの例
キーバリュー・ストアとリレーショナル・データベースの比較
従来型のリレーショナル・データベースは、従来型のアプリケーションにおいて依然としてその目的を持っています。リレーショナル・データベースは、テーブルのような戦略で値を格納します。単一のレコードには複数の列があり、各列には値が割り当てられています。開発者は、各レコードに一意の識別子を割り当てるため、情報を適切なレコードに関連付けることができます。例えば、一意の顧客識別子は、顧客の名前と住所をリンクします。この例では、名前とアドレスは 2 つの列で、一意の識別子、名前、アドレスを含む顧客の情報は 1 つのレコードです。
キーバリュー・ストアは、単一の一意の識別子キーを値に関連付けます。値は単なる数値や文字列以上のものでなければなりません。キーバリュー・ストアは、オブジェクトを単一のキー識別子に割り当てることができるため、開発者は基本的なデータに制限されません。キーの組み合わせを使用して特定のデータを取得することもできます。
キーバリュー・ストアの選択
キーバリュー・ストアを使用するアプリケーションは迅速な応答を必要とするため、インメモリ・キャッシュを提供するデータベースを探してください。頻繁に使用されるデータはメモリにキャッシュされるため、データベース・エンジンはディスク上のデータを検索し、取得し、要求するアプリケーションに転送する必要はありません。キーバリュー・ストアは、継続的な高速読み取り/書き込み動作を実行するため、キャッシュは性能にとって最適です。
大規模なデータ・ストレージの要件は、データのパーティショニングと配布の恩恵を受ける可能性があります。水平分散により、管理者はデータベース・クラスタにノードを追加することで、性能を向上させることができます。ハッシュ化やシャーディングなど、いくつかのパーティショニング戦略を利用できます。インフラと管理者の好みにあった戦略を選択してください。
キーバリュー・ストア導入のためのベストプラクティス
重要な価値を持つストアをオンプレミスでもクラウドでも導入する場合は、性能を維持するためにいくつかのベストプラクティスに従う必要があります。性能の問題に最初は気付かないかもしれませんが、データベースが増え、アプリケーション・ユーザー数が増えた後に現れることがよくあります。ベストプラクティスをいくつか紹介します。
複合主キーを使用して、範囲指定クエリを最適化
さまざまなクエリにはソートキーを使用
分散ストレージにはシャーディング・キーを使用
上記の例では、性能のためにベストプラクティスが必要です。キーバリュー・データベースは、リアルタイム・アプリケーションをサポートするために、性能が非常に重要です。データをキャッシュすることで性能も向上するため、それをサポートするデータベース・エンジンを選択してください。
まとめ
キーと値のペアとして保存できるデータを要求する大容量アプリケーションの場合は、キーバリュー・ストアが最適です。速度はデータベースの重要な要素であるため、データをメモリにキャッシュし、分散ハッシュやシャーディング方法を提供するものを選択してください。オンプレミスやクラウドのデータベースで作業できますが、ソリューションをお探しの場合は、ピュア・ストレージがビジネスにあったストレージ・ソリューションを提供します。