Googleの最新データ分散技術が凄すぎる ―独自の原子時計を設置

WIREDは26日(現地時間)、グーグルの最新分散データ処理技術「Spanner」がどのようにして地理的制約を超えて正確な同期を実現するのか、その内情の一部を明らかにしています。

そもそも「Spannerって何?」という状況ですが、2・3年ほど前に書籍で盛んに取り上げられた「Bigtable」は今から5年ほど前にメインで使われていた技術です(※語弊がある)。

Bigtableにも地理的な制約(例えばシンガポールと北米間のデータセンタ間で)を超えてレプリケーション(複製)を作る機能はあったものの不完全といえます。どちらかというと大量のデータをいかに効率的に読みつつ、安全に運用させるかという点に焦点が絞られていました。従って地理的な制約を超えるレプリケーションを安全に行うため、3年ほど前に「Megastore」という技術が登場しました。

そしてさらに進化したものが今回の「Spanner」です。実はSpannerの詳細は現在も明らかにされていません。

最近流行のNoSQLやら地理的制約を超えたデータ分散もグーグルの「Bigtable」プロジェクトに触発されたものですが、これらには問題がありました。それはネットワークトラフィックが増えすぎるという点です。データを同期するためにネットワークにデータを垂れ流しにしていたのではコスト的に不利といえます。さらに、利用者が増えれば増えるほどネットワークの遅延が影響して同期を維持するのが困難になります。そういった困難が伴う一方で分散技術への需要は大きく、ビッグデータブームも後押しする形で高度な研究が盛んに行われており、情報科学では活発な分野の一つであることは間違いありません。

そして、ここに1つのポイントがあります。それらの研究・技術・アルゴリズムの根底にあるものは「サーバ間で同じ内部時刻を保つのは無理である」という前提条件があるという点です(※大抵は)。仮に離れたマシン同士で同じ内部時刻を保てたら分散システムは急速に進化します。なぜなら時間という1つの統一基準を基にどれが最新のデータであるのかを即座に判断でき、整合性が取れるからです。しかし、それが無理という前提で話が進んでいるのです。一体なぜなのでしょうか。

それは、離れたサーバ同士で時間を統一するのは非常に困難だからです。このようなシステムを構築する際、人間が常々意識する1秒なんかよりもさらに細かいミリ秒単位での動きを意識しなければなりません。

Credit:Wired

通常、サーバやパソコンの時刻を一致させるにはNTPという技術があります。普段利用しているPCの時計が比較的正確を保っているのはNTPを使って定期的に時刻を補正しているおかげです。

ただし、NTPにも弱点があります。それはネットワークの遅延に影響されるということです。人間にはほとんど感じることのできないミリ秒単位の遅延でも、読み書きが多いデータベースでは致命的な誤差になります。従って、NTPなどの既存技術は使用することができず、前述した前提条件が存在しなければなりませんでした。

面白いことに、グーグルはこの流れを完全に無視して別のアプローチを採ったようです。ここが今回の肝になります。つまり「そんな前提条件を無くしてしまえばいい」と、ちゃぶ台返しのような方法を採用したのです。その方法とは、グーグルは「データセンタに独自の原子時計を設置すればいいじゃん」と考えてしまったようです。まさに “Google Way” 。

さらにGPSを使って時刻信号を受信するなどの策も講じているとのこと。そして、これらの正確な時間を計る技術は「TrueTime API」として提供され、社内のソフトウェアエンジニアが簡単に利用することができるようになっているようです。

これで離れたサーバ同士の時間を同一に保つことができるようになり、『時間』という統一基準を利用できるようになりました。その結果、比較的簡単にデータの整合性を保つことができるようになります。それどころか、高度な同期を実現するためのムダなトラフィックを抑えられるという仕組みです。

「前提条件を崩してしまえばいい」という考え方がいかにもグーグルらしいですが、この原子時計+GPSの技術を開発するのに4年もの歳月がかかっているとのことなので、やはり開発は大変なものだったと思われます。

大分長くなってしまいましたが、これでも噛み砕きながら端折ったつもりです…。本家WIREDの記事は技術者向けにもっと詳細に書かれており、日本語版でもそのうち翻訳記事が掲載されることでしょう。興味を持った方はぜひ読んでみてください。

[WIRED 英語]

このニュースでディスカッション
  • コメントを投稿する際には「コメントガイドライン」を必ずご覧ください
  • コメントを投稿した際には、コメント機能利用規約(ガイドライン)に同意したものとみなされます
  • 主要ニュースサイトなどの「許可サイト」以外のURLを含む投稿はコメントが保留されます