検索
連載

もう1つの、DBのかたち、分散Key-Valueストアとは分散Key-Valueストアの本命「Bigtable」(1)(1/3 ページ)

RDBとは別の、クラウド時代のデータベースとして注目を浴びている「分散Key-Valueストア」。その本命ともいえる、Googleの数々のサービスの基盤技術「Bigtable」について徹底解説

PC用表示 関連情報
Share
Tweet
LINE
Hatena

クラウド時代のデータベース「分散Key-Valueストア」

 グーグルがインターネットの世界をここまで席けんできた最大の理由は何でしょうか。実は、それは同社の優れた検索技術ではありません。グーグルが成し遂げた最も大きなブレークスルーの1つは、同社が生み出した巨大な分散データストア、「Bigtable」にあります。

 Bigtableは、Google検索をはじめ、YouTubeやGoogle Map、Google Earth、Google Analytics、Google App Engineなど、グーグルの70以上のプロジェクトの基盤として利用されています。合計で数PB(ペタバイト)に達する天文学的規模のデータを、全世界36カ所以上のデータセンターに配置された数万〜数十万台のサーバに分散して格納し、これらグーグルの各種サービスの圧倒的なスケーラビリティと高可用性を低コストで実現しています。


分散KVSは、「クラウド」という地殻変動の原因の1つ

 Bigtableは、リレーショナルデータベース(以下、RDB)ではなく、いわゆる「分散Key-Value Store(以下、KVS)」の1つです。KVSは、プログラミング言語の連想配列Mapと同様に「Key(キー)」と「Value()」のペアからなる、ごくシンプルなデータモデルに基づくデータストアです。KVSは「キー・バリュー型データストア」「Key/Valueストア」などと呼ばれることもあります。

 いま、このBigtableを代表とする分散KVSが、あたかも「ロード・オブ・ザ・リング」の“指輪”のような破壊的なパワーを発揮しつつあります。分散KVSは、グーグルの圧倒的な強さの源泉であり、インターネットの世界で起こりつつある「クラウドコンピューティング」という地殻変動の原因の1つでもあります。

知ってますか? いろいろな分散KVS

 例えばAmazonでは、大規模データ管理用の分散KVSとして「Amazon Dynamo」を開発して同社のサービス実装に用いているほか、その機能を外部向けサービス「Amazon SimpleDB」として一般公開しています(参考:米アマゾン、Webデータベース「SimpleDB」を開発)。

 またマイクロソフトは、同社のクラウドサービス「Windows Azure」にて、分散KVS「Azure Storage Services」を提供予定です。

 一方、国内でも、楽天では大規模分散データストア「ROMA」を開発し、サービスへの導入を検討している段階です(参考:大規模分散処理向けの国産“ウェブOS”をRubyで開発中)。

ほかにもKVS型データ管理システムが流行中データ管理システムが流行中

 さらに、Apache Software Foundationの「Apache CouchDB」は、並列プログラミング言語「Erlang」で実装されたスケーラビリティの高いドキュメント指向データベースとして、高い注目を集めています。

 CouchDBについては、下記をご参照ください。

ゆったリラックス! CouchDBがあるところ
ドキュメントを手軽にWebで公開したいとき、リレーショナルデータベースで実装することに違和感を覚えることはありませんか? CouchDBはそのようなニーズに合った、新しいデータベース管理システムです。CouchDBを知り、リラックスしながら実装をしていきましょう
Database Expert」フォーラム


 mixiでは、自社開発のKVS「Tokyo Tyrant」を用いて高負荷なログイン処理の実装に使用しています。

分散KVSとRDBは何が違うのか?

 ではなぜ、クラウドコンピューティングの基盤としてRDB(Relational DataBase)ではなく分散KVSへの移行がいま進みつつあるのでしょうか。この両者のデータモデルやアーキテクチャの違いを比較してみます。

図1 RDBと分散KVS
図1 RDBと分散KVS

 繰り返しますが、分散KVSは、「キー」と「値」のペアからなる、シンプルなデータモデルに基づくデータストアです。原則、分散KVSは「キーを指定して値を読み書きする」という単純な操作にのみ対応します。

表 分散KVSとRDBの比較
  分散KVS RDB
分散化のコスト ×
負荷分散
高可用性
複雑な検索や集計
トランザクション

 次ページからは、分散KVSとRDBの違いを具体的に見ていきます。

Copyright © ITmedia, Inc. All Rights Reserved.

       | 次のページへ
ページトップに戻る