NoSQLデータベースは、その柔軟性と拡張性から、多様なデータモデルを提供しています。
本記事では、No SQLのデータモデルの一つであるキーバリューストア(KVS)について紹介します。
2024年9月17日(火)ウェビナー:キーバリュー&ドキュメントDB vs RDB 〜Aerospikeでは何ができる?〜
キーバリューストア(KVS)とは
キーバリューストア(KVS)とは、データをキーとバリュー(値)のペアで格納する最もシンプルな形式のNoSQLデータベースです。
レコードストアと呼ばれることもあります。
キーバリューストアの特徴
- 各キーはコレクション内の1つだけのバリュー(値)と関連付けられる
- 各キーとバリュー(値)のペアでは、キーはファイル名、URI、ハッシュなどの任意の文字列で表される
- バリュー(値)は、画像、ユーザー設定ファイル、ドキュメントなど、どのような種類のデータでもかまわない
- バリュー(値)はblob(ブロブ)として保存されるため、前もってのデータモデリングやスキーマ定義は不要
- blobは、「Binary Large Object」の略称で、バイナリ形式で格納される大きなデータオブジェクトを指す。これは、通常、画像、音声、動画、ドキュメントなどの非構造化データを表す場合に使用されます。
- バリュー(値)をblobとして保存することで、パフォーマンスを向上させるためにデータにインデックスを付ける必要がなくなる。ただし、バリュー(値)は不透明であるため、バリュー(値)に基づいてリクエストから返されるものをフィルタリングしたり制御したりすることはできない
- キーバリュー・ストアにはクエリ言語がありません。
- データを取得する方法は、メモリ上またはディスク上のオブジェクトへの直接リクエストです。
キーバリューストア(KVS)とRDBとの違い
キーバリューストア(KVS)では、ユニークなキーを使ってレコード、またはバリュー(値)にアクセスします。
レコードの場合は複数のバリュー(値)が含まれるため、一見リレーショナルデータベース(RDB)と同じように見えますが、データを格納、管理、アクセスする方法においていくつか違いがあります。
キーでのアクセスが前提
キーでのアクセスに最適化されたデータの管理を行います。
そのため、他のデータとの関連を行わず、最適化をせず、必要なバリュー(値)はできるだけレコードに持つことになります。
一方、RDBの場合、データはテーブルに格納され行と列で構成されます。
どのようなバリュー(値)、カラムを持つのか定義されていない
キーバリューストアでは、バリュー(値)やカラム(列)の構造は通常、厳密に定義されていません。
これはキーバリューストアが「スキーマレス」であることを意味し、データを格納する際に固定されたスキーマや構造に従う必要がないという特徴を持っています。
そのため、レコードによってカラムが違うこともあります。
RDBでは、各テーブルは固定されたスキーマを持ち、データや制約が事前に定義されています。
スキーマが不要
スキーマとは、データがどのように構造化され、格納されるかを定義するルールや構造を指します。
キーバリューストアではデータを格納する前にスキーマを定義する必要がないため、アプリケーションの開発を柔軟かつ迅速に行うことができます。
単純なデータモデル
キーバリューストアは、その単純なデータモデルにより、高速な読み書き操作を実現します。
また、水平スケールなので、データ量の増加に伴って容易に拡張することができます。
これは、大量のデータを扱うアプリケーションにとって非常に重要な要素です。
RDBの場合は、一般的に垂直スケールに依存します。
関連ブログ:NoSQLとは?メリットやデメリットについても解説
キーバリューストアのメリット
キーバリューストアは、そのシンプルさと高速なパフォーマンスにより、特に大規模なデータセットやリアルタイムデータ処理、リアルタイムでのデータアクセスが必要なアプリケーションで広く使用されています。
高速なパフォーマンス
キーバリューストアは、データの読み書きが非常に高速です。
シンプルなキーとバリュー(値)のペアによるデータ構造は、効率的なデータアクセスを可能にします。
スケーラビリティ
多くのキーバリューストアは水平方向にスケーラブルであり、データ量の増加に伴って容易に拡張できます。
これにより、大規模なデータセットを効率的に処理することが可能です。
柔軟性
スキーマレスの特性により、データ構造を事前に定義する必要がなく、アプリケーションの開発と変更が容易になります。
シンプルなデータモデル
キーバリューストアは、データをキーと値のペアとして格納する単純なデータモデルを採用しています。
これにより、データベースの設計と管理が簡素化されます。
分散システムとの適合性
キーバリューストアは分散システムに適しており、データのレプリケーションや分散処理を効果的に行うことができます。
リアルタイム処理
リアルタイムでのデータアクセスが必要なアプリケーションに適しています。
例えば、Webアプリケーションのセッション管理やキャッシングによく使用されます。
キーバリューストアの事例
ここでは、キーバリューストアを用いてビジネス課題に取り組んだ2社の事例をご紹介します。
楽天
ディスプレイ広告プラットフォームを通じ、Eコマースをサポートするさまざまな広告を提供する楽天。
同社では、ターゲティング広告をサポートするために必要なスピードとボリュームを処理できるデータストアが必要でした。
Aerospike導入により、CPUに過度な負荷をかけることなく、メモリ内のインデックスとSSD内のデータを格納して高速なルックアップをサポート。
それだけでなく、仮にノードがダウンしたり、サーバーが再起動したりするなどの問題が発生した場合でも、Aerospikeが自動的に解決してくれるので、チーム内の業務効率も向上しました。
関連資料:楽天はAerospikeを活⽤してどのようにスピード、パフォーマンス、スケーラビリティを実現したのか
Caulis
クラウド型不正アクセス検知サービス「FraudAlert(フロードアラート)」の開発・販売を行うサイバーセキュリティ会社、Caulis(カウリス)は、オンラインでスケールイン/アウトができない、バックアップファイルが時折破損するといった課題解決のためにAerospikeを導入。
スケールアウトを得意としながらコストも低く、可用性も高いという点でAerospikeをご評価いただいています。
関連ブログ:株式会社カウリス〜Redisからの移行話〜
キーバリューストア(KVS)のユースケース
キーバリューストア(KVS)、サイズをうまく処理し、低レイテンシで一定のストリームの読み取り/書き込み操作を処理することが得意なことから、次のような用途に向いています。
- 大規模なセッション管理
- ユーザー嗜好とプロファイル・ストア
- 商品レコメンデーション:小売業者のウェブサイトで閲覧された最新の商品から、将来の顧客向け商品レコメンデーションを行う
- 広告サービス:顧客の買い物習慣から、顧客ごとにカスタマイズされた広告やクーポンなどをリアルタイムで提供
- 不正検知:リアルタイムまたはバッチ処理形式で大量のデータを処理することで、不正行為を検知するための高度な分析を提供
また、アクセスは多いものの更新頻度の低いデータのキャッシュとしても効果的に機能します。
Aerospikeでできること
Aerospikeでは、高性能かつスケーラブルで信頼性の高いNoSQLデータベースを提供。
ハイブリッドアーキテクチャによりTCOを削減します。
また、リアルタイムデータ処理に強みを持ち、特に広告技術、金融サービス、Eコマースなどの分野で広く利用されています。
そして、SSDやフラッシュ・ストレージの使用、セカンダリ・インデックスの実装など、パフォーマンスを向上させるために他の特性を利用するものもあり、これらによってビジネス課題解決をサポートします。
こちらも合わせてご覧ください:Aerospikeのアーキテクチャ