PR

キーバリュー型データベースの概要とその例

2010年10月8日(金)
藤本 壱

キーバリュー型データベースの概要

まず、日々の天気を記録するようなプログラムを作ることを考えてみてください。この場合、表1のような2列の表を作って、片方の列に日付、もう片方の列に天気を保存する、といったことを行うことが考えられます。

この例のように、プログラムを作る中で、以下のような処理を行うことは、よくあることです。

  1. 2つの情報からなる組を扱う
  2. 2つの情報のうちの1つが、個々の組を識別するための情報になっている(表1の例だと日付)
  3. もう片方の情報が、主に必要な情報になっている(表1の例だと天気)

このような「2つの情報の組」のうち、個々の組を識別する情報を「キー」(Key)と呼び、もう片方の情報を「バリュー」(Value、値)と呼びます。キーバリュー型データベースは、このような「キー」と「バリュー」の組を保存するためのデータベースです。

多くのプログラム言語では、キーとバリューからなるデータ構造を扱う機能を持っています(例:PHPの連想配列や、Perlのハッシュなど)。そのため、このようなデータ構造を永続的に保存する手段として、キーバリュー型データベースは、古くから使われてきました。

リレーショナルデータベースが広く使われるようになってからは、キーバリュー型データベースが使われる機会は減りました。しかし、キーバリュー型データベースは仕組みがシンプルで、リレーショナルデータベースよりも高速に動作させることができます。

そのため、最近の巨大Webアプリケーションなどで、キーバリュー型データベースが見直されるようになり、さまざまなキーバリュー型データベースの実装が出回るようになりました。

日付 天気
2010年10月1日
2010年10月2日 晴のち曇
2010年10月3日 曇り時々雨

表1:日々の天気を記録する

メモリ上で動作するキーバリューデータベース - Memcached

キーバリュー型データベースの中で、現在よく使われているものの1つとして、「Memcached」があります。

Memcachedは、元々は「LiveJournal」というブログシステムのために、Danga Interactiveによって作られたキーバリュー型のデータベースです。オープンソースで公開されていて、多くのWebサービスでMemcachedが使われるようになり、現在の大規模Webサービスを支える重要なデータベースになっています。LiveJournalはもちろんのこと、WikipediaやFlickrといった著名なWebサービスでも使われています。

一般的なデータベースでは、データをファイル(ハードディスク等)に保存します。一方のMemcachedでは、「mem」という単語が入っていることから分かるように、データをすべてメモリ上で管理します。メモリはファイルよりも高速にアクセスすることができますので、Memcachedも高速に動作します。

「cache」という単語も含まれていて、その名の通りキャッシュ用途に使われることが多いです。リレーショナルデータベースから読み込んだデータをMemcachedでキャッシュし、次回に同じデータを読み込む際にはMemcachedのキャッシュを使うようにするのが、一般的な使い方です。このようにすれば、リレーショナルデータベースへのアクセス回数を減らし、システムのパフォーマンスを高めることができます。

また、Memcachedはネットワークを介して動作する仕組みになっています。Memcachedを複数のサーバーで動作させて、大量なアクセスが発生した際の負荷を分散させることもできます。

さらに、Memcachedにアクセスするためのライブラリも、PHPやPerlなどの各種の言語に対応したものがあります。

1969年生まれ。神戸大学工学部電子工学科卒。ソフトメーカー勤務後、フリーライターとして独立。現在では、パソコン関係およびマネー関係の書籍を中心に執筆活動を行っている。ブログ「The blog of H.Fujimoto」は、Movable TypeやWordPressの情報を中心に毎日更新している(http://www.h-fj.com/blog/)。

連載バックナンバー

Think IT会員サービス無料登録受付中

Think ITでは、より付加価値の高いコンテンツを会員サービスとして提供しています。会員登録を済ませてThink ITのWebサイトにログインすることでさまざまな限定特典を入手できるようになります。

Think IT会員サービスの概要とメリットをチェック

他にもこの記事が読まれています

キーバリュー型データベースの概要とその例 | Think IT(シンクイット)

Think IT(シンクイット)

サイトに予期せぬエラーが起こりました。しばらくたってから再度お試しください。