Bingを実現するために生まれたCosmos、Cosmosから生まれたAzure Data Lake
Q:Cosmosはいったいどういうものですか?
ウィンクラー:Cosmosは、マイクロソフトの検索サービス「Bing」に端を発しています。Bingの検索の仕組みを提供するには、インターネット上のさまざまなコンテンツのコピーを格納する必要がありました。格納したデータに対しインデックスを張り、高速に検索できるようにしたのです。そのための仕組みがCosmosです。
より良い検索結果を提示するには、コンテンツに対する理解が必要です。たとえば「寿司」という言葉を検索する際に、それが東京で検索されているなら東京にあり検索した人の近くにある店の情報が出てくるべきでしょう。これは画像検索などでも同様で、猫の画像を探しているならば猫のものだけを提供したい。このためには、画像コンテンツを理解している必要があるのです。
これはビジネス上の問題解決の場合も同様です。コンテンツを理解し適切な答えを返すことが「肝」です。GoogleやAltaVistaなど、他の検索エンジンでも基本的には同じことをやっています。もちろん解決方法は、それぞれに異なりますが。
Q:CosmosやAzure Data Lakeが登場した背景は?
ウィンクラー:Cosmosが歩んできた道のりと、ビジネス上の課題をITで解決してきた道のりには5つの共通トレンドがあります。1つ目が、ストレージのコストが大きく下がったことです。クラウドのストレージサービスも出てきて、今やストレージは潤沢にあります。なので、データ量の制限を気にする必要がなくなり、安価にデータ蓄積ができます。
2つ目のトレンドが、ストレージ運用管理が容易になりコストも安くなっていることです。そうでなかった時代には、企業ではオペレーショナルなデータだけを取って置くしかありませんでした。今では、あらゆるデータを蓄積できます。たとえばCosmosでは、インターネット上のコンテンツのデータだけをかつては蓄積していましたが、今はインターネット上のあらゆる情報、たとえばリンクをクリックしたデータまですべて保存しています。
3つ目のトレンドは、Cosmosでも顧客のビッグデータ環境でも、かつてはスキーマを固定しモデル化したデータだけを扱っていましたが、今はその場でモデル化を行いスキーマをすぐに作れるようになった。つまりは柔軟な形でデータを取り込めるようになったことです。これで、データベース管理チームにお願いし、手間をかけてデータマートを切り出すような作業が必要なくなりました。
4つ目のトレンドが、機械学習やグラフ・プロセッシングなどの技術が使えるようになったことです。かつてはモデル化したスキーマに対し、SQLを使ってアクセスしていました。それが今では機械学習やグラフ・プロセッシングなど、全く新しい方法でデータにアクセスできます。逆に、蓄積したデータに対しこれまでとは異なるワークロードや演算が扱えなければならなくなったとも言えます。
5つ目のトレンドが、今後はレポーティングを重視するようになることです。かつてはデータにインデックスを張り性能の高いサーチエンジンを作ることに注力していました。その時代も静的なレポートはありましたが、これから重視されるのは未来を予測するダイナミックなレポートです。たとえば、サイトのコンテンツへのクリック率を上げるためにアプリケーションが動的に変化する。それを実現するためのダイナミックなレポートです。これはアプリケーションとインテグレーションされたレポーティングでなければなりません。
Q:Cosmosはどのような設計方針で作られていますか?
ウィンクラー:ビッグデータを扱う上で直面する課題から、3つの設計原則があります。これらは他のビッグデータのシステムにも共通するものでしょう。1つ目が、データプラットフォームが経済性を持って拡張できることです。スケールアップでは限界があるので、スケールアウトになります。安価で簡単に手に入るマシンで拡張できることが重要です。
2つ目の原則が、拡張性がビッグデータ規模のデータ容量に耐えうることです。なので何千、何万台のサーバー規模で運用できなければなりません。そういった構成では、マシンが落ちるのは当たり前です。数千台もあれば、1日1台くらいはハードディスクに障害が発生します。それを前提とし、受け入れられるような仕組みでなければなりません。
どこかのハードディスクが故障しても、発行したクエリーは問題なく処理される。ユーザーはハードディスクの故障など気にせずに、検索結果が補償される仕組みでなければならないのです。
3つ目に重要なのが、開発者の生産性です。開発者は少ないデータを扱うのと同じように、膨大なデータも扱えなければなりません。ビッグデータを扱うために、特別なコードを書くようでは大変です。
Cosmosのアーキテクチャについては、リサーチペーパーを公開(http://www.goland.org/Scope-VLDB-final.pdf)しているので、興味のある人は是非そちらを参照してもらえば。
Q:CosmosとAzure Data Lakeの関係を教えてください。
ウィンクラー:Cosmosはすでに10年以上実績のあるシステムで、その経験やノウハウをそのまま外部向けAzureのサービスとして利用しています。Cosmosは、Bingだけでなく社内でXboxやOffice365の利用状況の分析、マイクロソフトのWebサイト解析などにも利用されています。さらには、Azure上のサービスを顧客がどのように利用しているかの解析にも使われています。CosmosとAzure Data Lakeは、同じテクノロジーを使いコードレベルでも同じです。つまりは、アーキテクチャがCosmosとAzure Data Lakeでは同じものなのです。