くうと徒然なるままに

モバイルアプリを作りながらバックエンドも作っています。

#DocumentDB Loves Xamarin: Planet Scale Mobile App in Five Steps を翻訳してみた

これは、Kirill Gavrylyukによって書かれたDocumentDBチームの特別ゲスト投稿です。

KirillはDocumentDBチームのMicrosoftで働いています。 あなたは@kirillg_msftでTwitterで彼を見つけることができます。

今週、Xamarin開発者は、Azure NoSQLのデータベースとしてDocumentDBを利用できるようになりました。 モバイデベロッパーが必要とするすべてのもの、必要に応じて拡張されたサービスとしての完全管理のNoSQLデータベース、世界中のどこにいてもデータをアプリケーションに完全に透過的にもたらすことができます。 MobileDB開発者がDocumentDBですぐに利用できることは、次のとおりです。

https://s3.amazonaws.com/blog.xamarin.com/wp-content/uploads/2017/01/25110545/DocumentDBFeatures.png

スキーマレスデータに対する豊富なクエリ

DocumentDBは、スキーマレスJSONドキュメントとしてデータを異機種コレクションに格納し、スキーマや索引を気にせずに豊富で高速なクエリを提供します。

スピードとSLAの保証

DocumentDBを使用してドキュメントを読み書きするには、わずか数ミリ秒かかります。開発者は必要なスループットを指定でき、99.99%のSLAでDocumentDBがそれを尊重します。

無限スケール

あなたのアプリケーションが成長するにつれて、DocumentDBコレクションは成長します。小さなデータサイズと100秒間の要求から始めて、任意の大きさで、1秒あたりのスループットペタバイトのデータあたり10億〜100億回の要求に成長することができます

グローバルに分散

あなたのモバイルアプリのユーザーは、外出先で、世界中で頻繁に利用されています。 DocumentDBはグローバルに分散されたデータベースで、マップ上を1回クリックするだけで、ユーザーがいる場所にデータを持ち込むことができます。

組み込みのユーザー権限

DocumentDBを使用すると、複雑なカスタム認証コードなしで、ユーザー単位のデータやマルチユーザーの共有データなどの一般的なパターンを簡単に実装できます。

地理空間的クエリー

多くのモバイルアプリは、今日、地理的なコンテキスト体験を提供しています。ジオスペース型のファーストクラスのサポートにより、DocumentDBはこれらの体験を容易に達成します。

バイナリ添付ファイル

あなたのアプリデータには、しばしばバイナリブロブが含まれています。添付ファイルのネイティブサポートにより、DocumentDBをアプリケーションデータのワンストップショップとして簡単に使用できます。

以下の簡単な5つの手順に従って、惑星規模のアプリを構築してください!

ステップ1:入門

DocumentDBを使い始めるのは簡単です。 ポータルをAzureにして、新しいDocumentDBアカウントを作成し、Quickstartタブに行き、DocumentDBアカウントに接続されたXamarin.Forms ToDoリストのサンプルをダウンロードするだけです。

https://s3.amazonaws.com/blog.xamarin.com/wp-content/uploads/2017/01/25110821/Quickstart.png

既存のXamarinアプリケーションをお持ちの場合は、このDocumentDB NuGetパッケージを追加するだけです。 今日、私たちはXamarin.iOS、Xamarin.Android、およびXamarin.Forms共有ライブラリをサポートしています。

ステップ2:データの操作

データレコードは、異種コレクションのSchemaless JSONドキュメントとしてDocumentDBに格納されます。 構造が異なるドキュメントを同じコレクションに格納することができます。

var result = await client.CreateDocumentAsync (collectionLink, todoItem);

Xamarinプロジェクトでは、スキーマレスデータに対して言語統合クエリを使用できます。

var query = client.CreateDocumentQuery<TodoItem> (collectionUrl)
    .Where (todoItem => todoItem.Complete == false)
    .AsDocumentQuery ();
 
Items = new List<TodoItem> ();
while (query.HasMoreResults) {
    Items.AddRange (await query.ExecuteNextAsync<TodoItem> ());
}

ステップ3:ユーザーの追加

多くの「開始」サンプルと同様に、上記でダウンロードしたDocumentDBサンプルは、アプリケーションのコードにハードコードされたマスターキーを使用してサービスに認証します。これは、もちろん、あなたのローカルエミュレータを除いてどこでも実行しようとしているアプリケーションのための良い考えではありません。

代わりに、私たちのアプリケーションは、ログインしているユーザーのレコードにアクセスできるようにします。以下は、たとえば、ToDoリストアプリをマルチユーザToDoリストアプリに変更する方法です。サンプルの完全なバージョンがある、ここで入手できます。

  • FacebookActive Directory、または他のプロバイダを使用して、アプリケーションにログインを追加します。

  • / userIdをパーティションキーとして使用してDocumentDB UserItemsコレクションを作成します。あなたのコレクションのパーティションキーを指定することで、アプリケーションのユーザー数が増えるにつれてDocumentDBが無制限に拡張され、高速クエリーが提供されます。

  • DocumentDBリソースの追加トークンブローカーは、ユーザーを認証し、ログインしたユーザーに短いトークンを発行し、ユーザーのパーティション内の文書にのみアクセスできる単純なWeb APIです。この例では、App Token BrokerをApp Serviceでホストします。

  • Facebookでリソーストークンブローカーに認証するようにアプリケーションを変更し、ログインしたFacebookユーザーのリソーストークンを要求してから、UserItemsコレクションのユーザーのデータにアクセスします。

次の図は、このソリューションを示しています。

https://s3.amazonaws.com/blog.xamarin.com/wp-content/uploads/2017/01/25111449/UsersDocumentDB.png

ステップ4:オンデマンドスケーリング

DocumentDBは管理されたサービスとしてのデータベースです。ユーザーベースが増えるにつれて、VMのプロビジョニングやコアの増強について心配する必要はありません。DocumentDBに伝える必要があるのは、アプリが必要とする1秒あたりの処理数(スループット)だけです。あなたは、スループットと呼ばれるの尺度使用してポータルスケールタブを経由してスループットを指定することができます秒あたりの要求単位(RUを)。たとえば、1KBのドキュメントの読み取り操作には1 RUが必要です。「スループット」メトリックのアラートを追加してトラフィックの増加を監視し、アラートが発生したときにスループットをプログラムによって変更することもできます。

https://s3.amazonaws.com/blog.xamarin.com/wp-content/uploads/2017/01/25111556/ScalingDocumentDB.png

ステップ5:Go Planet-Scale!

あなたのアプリが人気を集めているので、あなたは世界中のユーザーを獲得するかもしれません。あるいは、あなたのDocumentDBコレクションで隕石がAzureデータセンターに攻撃を受けた場合、慎重に見逃したくないかもしれません。AzureポータルとDocumentDBアカウントに移動し、マップをクリックすると、世界中の任意の数の地域にデータを複製できます。これにより、ユーザーがどこにいてもデータを利用できるようになり、雨の日に備えてフェールオーバーポリシーを追加することができます。

https://s3.amazonaws.com/blog.xamarin.com/wp-content/uploads/2017/01/25112109/ReplicateDataGLobally.png

このブログとサンプルは、XamarinアプリケーションでDocumentDBを活用するのに役立ちます。いつものように、私たちがやっているとどのような改善あなたはを通してDocumentDBのために今後見たい方法を知っているユーザーボイス、StackOverflowのの#紺碧-documentdb、または私に手を差し伸べる@kirillg_msft。

翻訳元

blog.xamarin.com