「キーバリュー型データベース」の版間の差分
編集の要約なし |
|||
3行目: | 3行目: | ||
[[ファイル:BabbageKeyValueCard.tiff|サムネイル|350x350ピクセル|[[チャールズ・バベッジ|バベッジ]]の[[解析機関]]のために提案された表形式のカードで、キーと値の対 (この例では数値とその[[常用対数]]) を示している。]] |
[[ファイル:BabbageKeyValueCard.tiff|サムネイル|350x350ピクセル|[[チャールズ・バベッジ|バベッジ]]の[[解析機関]]のために提案された表形式のカードで、キーと値の対 (この例では数値とその[[常用対数]]) を示している。]] |
||
'''キーバリュー型データベース'''({{lang-en-short|key–value database}})、または'''キーバリュー型ストア'''({{lang-en-short|key–value store}})は、[[連想配列]]の格納、取得、および管理するために設計されたデータストレージ[[パラダイム]]であり、今日では辞書(''{{lang-en-short|dictionary}}'')または[[ハッシュテーブル]](''{{lang-en-short|hash table}}'')として一般的に知られている[[データ構造]]である。辞書は[[オブジェクト (プログラミング)|オブジェクト]]または[[レコード (計算機科学)|レコード]]の集合を含み、[[レコード (計算機科学)|レコード]]の中には[[データ (コンピュータ)|データ]]を含むさまざまな[[フィールド (計算機科学)|フィールド]]を持っている。これらのレコードは、レコードを一意に識別するキーを使用して保存および取得され、[[データベース]]内のデータを見つけるために使用される。 |
'''キーバリュー型データベース'''({{lang-en-short|key–value database}})、または'''キーバリュー型ストア'''({{lang-en-short|key–value store}})は、[[連想配列]]の格納、取得、および管理するために設計されたデータストレージ[[パラダイム]]であり、今日では辞書(''{{lang-en-short|dictionary}}'')または[[ハッシュテーブル]](''{{lang-en-short|hash table}}'')として一般的に知られている[[データ構造]]である。 |
||
== 概要 == |
|||
辞書は[[オブジェクト (プログラミング)|オブジェクト]]または[[レコード (計算機科学)|レコード]]の集合を含み、[[レコード (計算機科学)|レコード]]の中には[[データ (コンピュータ)|データ]]を含むさまざまな[[フィールド (計算機科学)|フィールド]]を持っている。これらのレコードは、レコードを一意に識別するキーを使用して保存および取得され、[[データベース]]内のデータを見つけるために使用される。 |
|||
[[ファイル:KeyValue.PNG|サムネイル|300x300ピクセル|さまざまなキーに関連づけられたさまざまなフォーマット済みのデータ値を示す表。]] |
[[ファイル:KeyValue.PNG|サムネイル|300x300ピクセル|さまざまなキーに関連づけられたさまざまなフォーマット済みのデータ値を示す表。]] |
2023年11月1日 (水) 11:29時点における最新版
キーバリュー型データベース(英: 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がある。
脚注
[編集]- ^ “Storage Engines”. ArangoDB. 16 November 2020閲覧。
- ^ Oracle NoSQL Database.
参照項目
[編集]- ビッグデータ
- データ解析
- 分散データストア
- ドキュメント指向データベース
- マルチモデルデータベース - 単一の統合されたバックエンドに対して、複数のデータモデルをサポートするように設計されたデータベース管理システム
- タプル空間 - 並列/分散コンピューティングのための連想記憶パラダイムの実装