キーバリュー型データベース

ウィキペディアから無料の百科事典

バベッジ解析機関のために提案された表形式のカードで、キーと値の対 (この例では数値とその常用対数) を示している。

キーバリュー型データベース: key–value database)、またはキーバリュー型ストア: key–value store)は、連想配列の格納、取得、および管理するために設計されたデータストレージパラダイムであり、今日では辞書(: dictionary)またはハッシュテーブル: hash table)として一般的に知られているデータ構造である。

概要[編集]

辞書はオブジェクトまたはレコードの集合を含み、レコードの中にはデータを含むさまざまなフィールドを持っている。これらのレコードは、レコードを一意に識別するキーを使用して保存および取得され、データベース内のデータを見つけるために使用される。

さまざまなキーに関連づけられたさまざまなフォーマット済みのデータ値を示す表。

キーバリュー型データベースは、よく知られている関係データベース: relational database、RDB)とは大きく異なる方法で働く。RDBは、データベース内のデータ構造を、明確に定義されたデータ型のフィールドを含む一連のテーブルとして事前定義する。このデータ型をデータベースプログラムに開示することで、多くの最適化を適用できる。これに対してキーバリューシステムでは、データを単一の非開示の集合体として扱い、レコードごとに異なるフィールドを持つことができる。これはかなりの柔軟性を提供し、オブジェクト指向プログラミングのような現代的な概念をより追求している。ほとんどのRDBのように、オプションの値はプレースホルダや入力パラメータで表現されないため、キーバリュー型データベースでは、同じデータを格納するために使用するメモリがはるかに少ないことが多く、特定の作業負荷で性能が大きく向上する可能性がある。

性能面、標準化の欠如、その他の問題から、キーバリューシステムは長年ニッチな用途に限定されていた。しかし、2010年以降、クラウドコンピューティングへの急速な移行が進み、より広範なNoSQL移行の一部として再流行が起こった。ArangoDB英語版[1]のようなグラフデータベース英語版も内部的にはキーバリュー型データベースであり、レコード間の関係(ポインタ)の概念を一級データ型として追加している。

種類と例[編集]

キーバリュー型データベースは、結果整合性から直列化可能性まで、一貫性モデルを使用することができる。キーの順序付けをサポートするものもある。

データをメモリ (RAM) に保持するものもあれば、ソリッドステートドライブ回転ディスクを使用するものもある。

すべての実体entiryレコード)はキーとバリュー(値)の対からなる集合である。1つのキーは複数の要素を持ち、順序付きリストとして指定される。主分類キー(メジャーキー、major key)はレコードを識別するもので、キーの先頭の構成要素からなる。後続の構成要素は小分類キー(マイナーキー、minor keys)と呼ばれる。この構成は、ファイルシステムディレクトリパス指定に似ている(例:/Major/minor1/minor2/)。 キー・バリュー対の「バリュー」の部分は、単に任意の長さをもつ未解釈のバイト文字列である[2]

Unix系システムではdbmが提供されており、もともとはケン・トンプソンによって1979年に書かれたライブラリであった。これは、Microsoft Windowsにも移植され、Perl for Win32などのプログラミング言語を通じて提供された。dbmは、任意のデータの連想配列を一つのキー(プライマリキー)で管理する。最近の実装には、sdbm、GNU dbm、Berkeley DBがある。dbmはNoSQLの概念に先行しており、現代の言説ではほとんど言及されないが、多くのソフトウェアで利用されている。

キーバリュー型データベースの最近の例としては、ArangoDBなど他のデータベース管理システムのストレージエンジンとして利用されているRocksDBがある。

脚注[編集]

  1. ^ Storage Engines”. ArangoDB. 2020年11月16日閲覧。
  2. ^ Oracle NoSQL Database.

参照項目[編集]