SQL vs NoSQL、グーグルにおける戦い(前編)。Google I/O 2012
クラウドにおけるデータベースのメリット
グーグルのAlfred Fuller氏︵NoSQL担当︶。![fig](http://www.publickey1.jp/blog/12/sqlnossql01.jpg)
クラウドはフォルトトレラントでメンテナンス不要、パッチも私たちが適用しており、利用者は運用について心配する必要がない、といったメリットがある。
データのレプリケーションや地域分散でデータも保全され、インターネット経由のアクセスも確保している。
![fig](http://www.publickey1.jp/blog/12/sqlnossql02.jpg)
Google App Engineは、開発が容易でスケーラブル、メンテナンス不要のアプリケーションプラットフォームだ。App Engineからは、リレーショナルデータベースの「Cloud SQL」、NoSQLの「Datastore」、そしてオブジェクトストレージの「CloudStorage」にアクセスできる。
![fig](http://www.publickey1.jp/blog/12/sqlnossql03.jpg)
DatastoreはGmailやGoogle Docsと同じテクノロジー
Datastoreは、GmailやGoogle Docsと同じテクノロジーで構築されたストレージであり、月間3兆回ものオペレーションが行われている。すべてが管理されたNoSQLソリューションだ。
![fig](http://www.publickey1.jp/blog/12/sqlnossql04.jpg)
一方、Cloud SQLもすべてが管理され、ピュアなMySQLデータベース互換のデータベースだ。
![fig](http://www.publickey1.jp/blog/12/sqlnossql05.jpg)
![fig](http://www.publickey1.jp/blog/12/sqlnossql06.jpg)
クエリ機能の比較
︵SQL担当︶クエリ機能から見ていこう。Cloud SQLは国際標準のSQLをサポートしている。 ︵NoSQL担当︶NoSQLもSQLのサブセットをサポートしているさ。しかも、SQLにはないようなContainsやAnyをサポートしているし、データが増えても性能劣化の心配がないスケーラビリティを備えている。![fig](http://www.publickey1.jp/blog/12/sqlnossql07.jpg)
(SQL担当)Cloud SQLは、SQLをフルサポートしているし、例えばグループバイで街ごとの平均年齢を集計したりできる。
![fig](http://www.publickey1.jp/blog/12/sqlnossql08.jpg)
![fig](http://www.publickey1.jp/blog/12/sqlnossql09.jpg)
トランザクション機能の比較
(SQL担当)多くのNoSQLがトランザクションをサポートしていないよね。サポートしていても1行だけに限ったトランザクションで、本物のトランザクションじゃない。
(NoSQL担当)Datastoreは本物のトランザクションをサポートしているさ。「Entityグループ」という行をまたがったトランザクションもある。
例えば、ゲームのプレイヤーがポーション(聖水)を飲んでヘルスを回復し、ポーションが削除される、という動作は、「db.transactional」を使って1つのトランザクションとして記述できる。
![fig](http://www.publickey1.jp/blog/12/sqlnossql10.jpg)
![fig](http://www.publickey1.jp/blog/12/sqlnossql11.jpg)
(SQL担当)もちろんトランザクションはSQLでも記述できる。start Transcation; commit;のあいだに書けばいい。
![fig](http://www.publickey1.jp/blog/12/sqlnossql12.jpg)
トランザクションやロックを使うケースでは、Cloud SQLのほうがよりうまく処理できるといえるね。
![fig](http://www.publickey1.jp/blog/12/sqlnossql13.jpg)
データ整合性︵コンシステンシ︶機能について
︵NoSQL担当︶確かにDatastoreはMegastoreレプリケーションを使っている。ただしMegastoreレプリケーションは、さっき説明したEntityグループを使っていて、トランザクションを用いてレプリケーションをしていて一貫性に矛盾はない。 レプリカにはマスターはないけれど、Entityグループの最新データを取得する方法などを提供している。![fig](http://www.publickey1.jp/blog/12/sqlnossql14.jpg)
![fig](http://www.publickey1.jp/blog/12/sqlnossql15.jpg)
(SQL担当)三連勝か。このまま楽勝だな。
![fig](http://www.publickey1.jp/blog/12/sqlnossql16.jpg)
あわせて読みたい
SQL vs NoSQL、グーグルにおける戦い(後編)。Google I/O 2012
≪前の記事
jQuery Mobileの必要なモジュールだけを選んでカスタマイズできる「Download Builder」、α版が公開