Google App Engineのデータストアに一貫性と可用性のオプションが追加

2010年4月2日

グーグルは「Google App Engine Blog」にて、データストアに2つの新機能、Eventual Consistency(結果整合性)とDatastore Deadline(データストアデッドライン)を追加したことを明らかにしました。これにより開発者は、データの一貫性と可用性のどちらを重視するのか、選べるようになりました。

プライマリが落ちていたらコピーを他のデータストアから取得

Google App Engine Blog: Read Consistency & Deadlines: More control of your Datastore

Eventual Consistency(結果整合性)オプションは、プライマリのデータストア以外のデータストアにコピーされたデータを読み込むことを許すオプションです。

グーグルの解説によると、これまでのGoogle App Engineのデータストアはいわゆる「Strong Consistency」(強い一貫性)を採用しており、プライマリのストレージが障害などでアクセスできなくなると、タイムアウトするまで処理待ちが生じていました。

強い一貫性の特徴は、アクセス時に必ず最新のデータが返ってくることが保証されていることです。例えば直前にデータの変更や削除などが行われた場合、強い一貫性が保証されていれば、それを読み出したときに必ずそのデータが変更されたことや削除されたことが分かります。しかしプライマリデータストアが障害などでアクセスできないときには、アプリケーションはリトライを繰り返した後にエラー値が返ります。

新しく追加された「結果整合性」オプションでは、プライマリ以外のストレージから読み込むことを許すため、読み込んだときにプライマリに対して行われた最新の状態が反映されているかどうかは保証されませんが、可用性は向上します。デベロッパーは、一貫性と可用性のトレードオフを選べるようになるわけです。

ただしトランザクション内のアクセスについてはつねに強い一貫性が適用されます。

グーグルは、一般的に数百ミリ秒から数秒でプライマリ以外のストレージに最新の状態が反映されると説明しており、結果整合性オプションを用いることでわずかながら検索時に最新の状況が反映されていない可能性があるとしています。しかし例えばSNSアプリケーションにおけるフォロー先の最新状況など、多少の遅れや一貫性の乱れは無視してもいいアプリケーションなどでは非常に有効なオプションとなるでしょう。

タイムアウト時間を設定

もう1つ新たに追加されたのが、Datastore Deadline(データストアデッドライン)です。これは、データベースへのアクセスへのタイムアウト時間を設定するオプションです。

デフォルトでは30秒間リトライを繰り返す設定になっていますが、この時間をミリ秒単位で最大30秒まで自由に設定できるようになったとのことです。

一貫性と可用性のトレードオフが広がってきた

Amazonクラウドで利用可能なデータベース「SimpleDB」でも先月、一貫性と可用性を選べるオプションが追加されたことをお伝えしました。

いわゆる「CAP定理」が教えているように、一貫性(C)、可用性(A)、ネットワーク分断耐性(P)は同時に2つしか満たせないトレードオフの関係にあります。いままでの商用リレーショナルデータベースでは自動的に一貫性と可用性が重視されてきましたが、NoSQLを中心にしてこの3つの中から何を重視するのか、開発者に選択できるような仕組みが少しずつ広がってきたようです。

あわせて読みたい

NoSQL クラウド CAP定理 Google App Engine




タグクラウド

クラウド
AWS / Azure / Google Cloud
クラウドネイティブ / サーバレス
クラウドのシェア / クラウドの障害

コンテナ型仮想化

プログラミング言語
JavaScript / Java / .NET
WebAssembly / Web標準
開発ツール / テスト・品質

アジャイル開発 / スクラム / DevOps

データベース / 機械学習・AI
RDB / NoSQL

ネットワーク / セキュリティ
HTTP / QUIC

OS / Windows / Linux / 仮想化
サーバ / ストレージ / ハードウェア

ITエンジニアの給与・年収 / 働き方

殿堂入り / おもしろ / 編集後記

全てのタグを見る

Blogger in Chief

photo of jniino

Junichi Niino(jniino)
IT系の雑誌編集者、オンラインメディア発行人を経て独立。2009年にPublickeyを開始しました。
詳しいプロフィール

Publickeyの新着情報をチェックしませんか?
Twitterで : @Publickey
Facebookで : Publickeyのページ
RSSリーダーで : Feed

最新記事10本