Q:Azureにはさまざまなデータベースがありますが、その中でもDocumentDBはどのようなサービスですか?
ネア氏:従来の(SoRの)アプリケーションで利用されるリレーショナルデータベースでは、低レイテンシーとデータの永続性が重要になります。一方グローバルで利用するような(SoEの)モダンな(モバイル向けの)アプリケーションでは、顧客の近くにデータがあることが重要です。
さらには実装のスピードと柔軟性も必要になります。そのためにはNoSQLデータベースのスキーマレスなアーキテクチャが向いており、それでDevOpsにも対応しやすくなります。Azure DocumentDBは、NoSQLデータベースの柔軟性とリレーショナルデータベースの永続性、低レイテンシーの両方を備えたデータベースになります。
その上でDocumentDBは、クラウドサービスであるAzure SQL Databaseのテクノロジーと同じように作られており、グローバル・ディストリビューションを前提に構築されています。そのため、リージョンをまたいだ形で利用することが可能です。つまり顧客がどこの国にいても、顧客の近くでデータの読み込み、書き込みができるのです。
DocumentDBは、書き込みに最適化されラッチフリーなデータベース・エンジンを持っています。これにより、ドキュメント型(JSON形式)のデータの検索が、極めて高速に行えます。DocumentDBでは、読み込み検索の処理の99%以上が10ミリ秒以下のレスポンスを確保しており、書き込みの処理も15ミリ秒以下をSLAで保証しています。
Q:改めてDocumentDBの特長を教えてください。
ネア氏:クラウドのNoSQLデータベースのサービスには、CAP(Consistency:一貫性、Availability:可用性、Partition-tolerance:分断耐性)定理があります。分散コンピュータの環境でデータがパーティショニングされている際には、これら3つの要素を同時に確保することは難しいのです。DocumentDBの場合は、アプリケーションの開発者がCAPのどれを優先するかを選べるようになっています。一貫性を保つようにするのか、可用性を重視するのか。さらにスループットをとるのか。それを開発者が自分で決めることができます。
もう1つ、さまざまなデータアクセス方法を持っていることも挙げられます。SQLやMongoDBと同じアクセス方法(Mongoクエリ言語)、JavaScriptも使えます。JSON形式のデータを扱うデータベースとしてMongoDBは、今や一般的で堅牢なものです。そのため既にMongoDBのフレームワークを使っているアプリケーションは数多くあり、DocumentDBではMongoDB用に構築したコードを変更することなく利用できます。
さらにストレージのスループットを最適化でき、ストレージやスループットを自由に選択できるのも特長です。これによりTCOの最適化も可能です。
Q:DocumentDBは、どのような用途に向いているのでしょうか?
ネア氏:DocumentDBには、既に多くの実績があります。用途の1つとしては、IoTなどのアプリケーションがあります。またグローバルレベルで利用するアプリケーションにも向いています。これはDocumentDBが、クリック1つでリージョンをまたいでレプリケーションができるからです。つまり、ユーザーがどこにいても、ローカルにいるのと同じレイテンシーでデータを読み込めます。フェイルオーバーの仕組みも組み込まれているので、どこかのサービスがダウンしても何ら問題はありません。
Q:DocumentDBは、マイクロソフトが1から構築した独自のデータベースなのですか?
ネア氏:クラウドの環境においてグローバル規模で利用するために、マイクロソフトがオリジナルで開発したデータベースになります。オープンソースを利用しているわけではなく、マイクロソフト独自のエンジンとなっています。とはいえ、MongoDBのオープンなプロトコルもサポートしています。エンジンとランタイムはマイクロソフト独自ですが、データへのアクセスはオープンです。