SQL vs NoSQL、グーグルにおける戦い(後編)。Google I/O 2012
SQLとNoSQLではどちらが優れているのか? グーグルの担当者がディベート(というより小芝居:-)を行ったセッション「Google I/O 2012 - SQL vs NoSQL: Battle of the Backends - YouTube」が公開されています。
(この記事は「SQL vs NoSQL、グーグルにおける戦い(前編)。Google I/O 2012」の続きです)
スケーラビリティについて
(NoSQL担当)あらゆる面で、こちらが高いスケーラビリティを提供している。
(SQL担当)そんな訳ないだろ。
(NoSQL担当)そんな訳あるさ。
(SQL担当)じゃあまず、Cloud SQLがどう使われているか紹介しよう。例えば「グーグルorgチャート」。グーグルの3万人の従業員について、組織内のつながりや仕事を示すアプリケーションだ。
社内では誰もがこのWebサイトを開いていて、毎秒10から100程度のクエリをCloud SQLが処理している。大規模な組織のアプリケーションでも十分に使えることを示しているだろう。
(NoSQL担当)大人気のモバイルアプリケーションの開発を考えてみてほしい。 毎秒数千のクエリと数百万ユーザーもいるような。しかしDatastoreなら、スケーラビリティの心配もプロビジョニングの心配もなく、ちゃんと動作する。
Datastoreはグーグルのインフラの上に構築されており、それぞれがスケーラビリティの重要な機能をになっている。
いちばん下のレイヤはGoogle File Systemで、これは必要なだけ大規模な容量を実現している。その上位レイヤにはBigTableがあり、負荷を自動的に分散してくれるため、スパイクが発生してもうまく処理してくれる。
そのうえにMegastoreがある。これは分散データストアであり、複数の地域に分散したレプリケーションを実現してくれる。
Datastoreは障害が発生しても自動的にフェイルオーバーして動作し続ける。Entityグループで一貫性も保証されており、データセンターが壊滅的な状態になっても別のデータセンターに切り替えるため、ユーザーに影響はない。
(NoSQL担当)スコアを見てみよう。オーイエー! 次はマネジメントについて話そう。
マネジメント機能の比較
(NoSQL担当)冒頭でクラウドのメリットについて話した。パッチを当てる心配も、ハードディスクを入れ替える心配もなく、ソフトウェアを購入する必要もない。
(SQL担当)そのメリットはCloud SQLも同じことだ。Cloud SQLは、フォームにアプリケーションのIDと名前を入力、課金の情報を入力し、インスタンスの名前を入れてサイズを決めると、数秒で立ち上がってくる。
そしたらSQLプロンプトが使えるので、Create Databaseを入力、Create Tableを入力すればテーブルが作れる。
(NoSQL担当)Datastoreなら、そんなスライドを使って紹介する必要がないほど簡単さ。アプリケーションのコードを書いたら、Datastoreはすでにそのデータ受け取る準備は出来ている。データベースの準備も設定も不要だ。データをプットしていけばいい。
こっちの勝ちだね。
(SQL担当)次だ次! 次はスキーマについて。
スキーマ機能の比較
(SQL担当)Cloud SQLではスキーマが厳格に適用される。これはメリットと考えられることができ、存在しないカラムにデータを追加するような間違った処理を避けられる。
テーブルのスキーマを変更するのにはAlter Table文を使う。また、オンラインでのスキーマ変更も可能だ。
(NoSQL担当)Datastoreでは、コードを書き換えれば自動的に新たなフィールドが追加される。さかのぼってデフォルト値設定される。実に簡単だ。
(NoSQL担当)さあ、これでタイになったね。
SQLとNoSQLの協力
両者が協力するシナリオもあるだろう。例えば、Cloud SQLをシングルマシンで実行してインメモリでアクティブなデータを入れる。そして古くなったデータはDatastoreにアーカイブしていく。
Cloud SQLは少数だがアクティブなデータをメモリにデータを保存するのに適していて、容量が増えていくアーカイブデータはDatastoreに入れるのに適しているといえる。
以下が公開されているこのセッションの動画。
あわせて読みたい
Amazonクラウドを襲った嵐が、EC2、EBS、ELB、RDSの障害に発展した理由(前編)
≪前の記事
SQL vs NoSQL、グーグルにおける戦い(前編)。Google I/O 2012