グーグルのクラウドを支えるテクノロジー > 第6回 大規模構造化データに最適化された分散キーバリューストアBigtable(パート2)
私が編集支援しているCTC教育サービスでグーグルの中井悦司氏によるコラム「 グーグルのクラウドを支えるテクノロジー > 第6回 大規模構造化データに最適化された分散キーバリューストアBigtable(パート2)」が公開されました。
今回は前回に続いて「Bigtable」の構造解説です。興味がある方は是非お読みください!
###
はじめに
前回に続いて、2006年に公開された論文「Bigtable: A Distributed Storage System for Structured Data」をもとに、分散キーバリューストア「Bigtable」の構造を解説します。前回、Bigtableを構成するサーバーの全体像を紹介した際に、次のような疑問点を指摘しました。
(1) クライアントは、アクセス対象の行を含むTablet、および、該当のTabletを担当するTabletサーバーをどのようにして発見するのか?
(2) マスターサーバーは、Tabletサーバーの障害をどのように検知して、Tabletの再割り当てを行うのか?
(3) Tabletの実体は、「memtable」と「SSTable」によってどのように構成されているのか?
今回は、これらの点について解説を進めていきましょう。
Tabletサーバーの検索
Bigtableで作成したテーブルに含まれる行は、Row Keyの文字列に対して辞書順にソートされており、1つのテーブルを複数のTabletに分割する際は、この順序が保持されます。つまり、1つのTabletは、一定範囲のRow Keyに対応する行を含みます。そして、1つのテーブルに含まれるTabletの位置情報は、Root tablet、および、METADATA tabletと呼ばれる、特別なTabletに記録されます。
これは、図1のようなツリー型の階層構造になっており、Row Keyの範囲ごとに次のTablet(および、それを担当するTabletサーバー)が指定されており、このツリーをたどっていくことで、該当のRow Keyを含むTabletを検索することができます。また、Root tableを担当するTabletサーバーの情報は、分散ロックサービスを提供するChubbyに保存されています。クライアントは、ChubbyからRoot tableの情報を取得した後、自分自身でツリーをたどってTabletの検索を行います。
この続きは以下をご覧ください
http://www.school.ctc-g.co.jp/columns/nakai2/nakai206.html