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

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

Memcachedの利用方法と利用例

前述したように、Memcachedはオープンソースで公開されていますので、ソースコードをダウンロードしてコンパイルすれば、利用することができます。

また、Linux等の各種のディストリビューションには、Memcachedのパッケージが用意されていることが多いです。例えば、Fedora 13では以下のコマンドでmemcachedをインストールすることができます。

yum install libevent
yum install libevent-devel
yum install memcached

インストールが完了したら、memcachedを起動します。Fedora 13だと、起動用のスクリプトもインストールされるようになっているので、サービスの一覧の画面で簡単に起動することができます。

この後、個々のプログラム言語にMemcachedのライブラリをインストールすれば、プログラムの中でMemcachedを使うことができます。例えば、PHPの場合だと、PECLにMemcachedのライブラリがありますので、それをインストールします。

Memcachedのプロトコルは非常にシンプルで、「データを保存する」「データを読み込む」「データを削除する」などのいくつかのコマンドがあるだけです。各プログラム言語のライブラリでも、これらのプロトコルに対応する機能が装備されています。

前述したように、Memcachedはデータベースから読み込んだデータをキャッシュするのに使うことが多いです。例えば、PHPでブログのシステムを作っているとして、特定のIDの記事(エントリー)をMemcachedでキャッシュしつつ読み込むなら、以下のリストのように処理を組みます。

3行目の文で、Memcachedにキャッシュした記事を読み込みます。そして、記事がなかった場合は、5行目の文によってデータベース等から記事を読み込み、6行目でMemcachedに記事をキャッシュします。

mixiを支えるキーバリューデータベース - Tokyo CabinetとTokyo Tyrant

次に、ファイルにデータを保存するタイプのキーバリュー型データベースとして、「Tokyo Cabinet」を紹介します。

Tokyo Cabinetは、mixiの平林幹雄氏によって開発されたキーバリュー型データベースのライブラリです。高速な動作や、巨大なデータを扱えることなどを目指して開発されました。プログラムの用途に応じて、表2の4種類のデータベースを扱うことができます。

ただ、Tokyo Cabinetは、ネットワーク越しにアクセスしたり、複数のプロセスでデータベースを共有したりすることが簡単ではありません。そこで、これらの機能を実現するためのサーバーとして、「Tokyo Tyrant」も公開されています。

Tokyo Tyrant(とTokyo Cabinetの組み合わせ)は、memcachedほどではないにせよ、高速に動作するようになっています。また、memcachedとは違って、ファイルにデータを保存するため、コンピュータの電源を切っても内容が保持されます。大量のデータをなるべく低負荷で処理する必要があり、またデータをファイルに保存したいような場合に、Tokyo Tyrantが適しています。

さらに、Tokyo Tyrantには、memcachedと同じプロトコルで動作するモードもあります。そのため、memcachedで動かしているシステムをTokyo Tyrantに移行させることも、比較的行いやすいです。

Tokyo Tyrantは、mixiの中で実際に使われています。mixiのエンジニアブログによると、mixiの各ユーザーの最終ログイン日時を管理する処理に、Tokyo Tyrantが使われているそうです(参照ページ)。

なお、Tokyo Cabinet/Tokyo Tyrantはオープンソースで公開されていて、ライセンスはLGPLです。

種類 特徴
ハッシュデータベース データの量が増えても、値の読み込み速度がほとんど変化しない
B+ツリーデータベース キーを文字コード順に読み出すことが可能
固定長データベース 高速性が最も高い
テーブルデータベース 複数の列からなる表を扱うことができる

表2:Tokyo Cabinetで扱えるデータベース

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

連載バックナンバー

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

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