Cosmos DBで読み取りリージョンへ明示的にルーティングする

Cosmos DBのセッションでよくみかける「世界地図をポチポチしてDBをグローバルに分散させるデモ」、いとも簡単にデータを世界に分散させられるように見えますよね。
はい、確かに”DB”はポチポチするだけで分散します。でも、アプリのトラフィックはポチポチしただけでは分散しないんです。

私はこのテーマで1ヶ月くらい検証したり、ドキュメントを漁ったり、いろんな人を捕まえたりしてモヤモヤしてましたが、ようやくとある筋から確証情報を得たので、記事にすることにしました。

Read More

Azure MySQLでWordPressからのSSL接続を有効にする

Build2017でいよいよパブリックプレビューとなった Azure Database for MySQL ですが、既存のClearDBからの移行を試していると、(プレビューということもあり)案の定いくつかの問題に遭遇してしまいました。

ここでは、App ServiceにデプロイしているWordPressからのMySQLへのSSL接続について、発生する問題を回避しつつ設定する方法を紹介します。

Read More

Azure Cosmos DB (DocumentDB)のRU/mについて

Build2017ではさまざまな新製品やソリューションが発表されていますが、個人的に最も気になったのは、Azure Cosmos DB(DocumentDBが拡張されたサービスの新名称)で、スループットの予約単位「RU/m」が追加になったことです。

Read More

DocumentDBのData Explorer

これまで、ポータルでDocumentDBのコレクションやデータを操作しようとすると目的別に使う機能が異なり、とてもイライラさせられていました。しかし、ここへきてようやく統合されたデータ操作ツールである「Data Explorer」が利用できるようになりました(執筆時点でプレビュー)。

これでようやくDBとして最低限の管理ツールが使える状態になったかなというレベルになりましたね。どんどん育って、SQL ServerでいうところのSSMSくらいまで熟成して欲しいものです。

Read More

DocumentDBで集計関数を使う

Planet scale aggregates with Azure DocumentDBでアナウンスがあった通り、DocumentDBで集計関数が使えるようになりました。

DocumentDBはNoSQLでありながらSQL文が使えるという特長があっただけに、集計関数が使えなかったことが逆に目立ってしまっていました。私も関わっているプロジェクト関係者の方に「集計関数使えないんですか〜」と何回も聞かれた記憶があります。

しかし、これで集計関数が利用できるようになったので、DocumentDBを使ったデータハンドリングの幅が広がることは間違いなさそうです。

Read More

DocumentDBのChange Feed機能を使う方法

アナウンスされてから気になっていた、DocumentDBのChange Feedについて、ようやくじっくり調べられたので、理解したことをメモしておきます。前回に引き続きのDocumentDBネタですが、今回はXamarinは登場しませんっ。

Read More

XamarinからAzure DocumentDB(NoSQL)を利用する

これまでXamarinからは、(サーバを経由せず)直接DocumentDBに接続することはできませんでした。

しかし!How To Build Planet Scale Mobile App in Minutes with Xamarin and DocumentDBでアナウンスがあったように、ついにXamarinから直接DocumentDBに接続することが可能になりました(両方とも個人的な推し技術なので一人で舞い上がってます・・)。

これが実現した背景には、.NET Core対応のDocumentDB SDKがリリースされたことがあるのですが、個人的にはXamarinを.NET Standardで使うきっかけにもなる出来事にもなりました(いろいろ苦労もしました)。

Read More

WordPressをAppService on Linux上にデプロイする

AzureのApp Service on Linux(プレビュー)上にWordPressを構築する機会がありましたので、概要と手順を紹介します。
結論としては、Github連動などのApp Service付加機能を使うことで、Windows版とほぼ変わらない手順でLinux環境にもWordPressを構築できることを確認できました。

Read More

DocumentDBのコレクションをJSONにエクスポートする

AzureのDocumentDBにはちょっとお試ししたい時などに使えるFreeプランがありません。
なので、ちょっとした開発作業で使う場合などは、蓄積したDocumentDBのデータをJSONファイルとしてエクスポートしてしまい、課金の対象となるコレクションはすぐに削除するようにしています。

通常、データベースのサービスには何らかのインポート/エクスポートのツールが存在しているものです。古くからよくお世話になっているのは、オンプレならSQL ServerのSSISだったり、Azure上ならSQL DatabaseポータルでのBLOBへのエクスポート機能あたりでしょうか。

ところが、DocumentDBには一括エクスポートするような機能がポータルには存在していません。かといって、一時的な作業のためにREST APIやSDKなどを駆使してエクスポートするのもしんどいので、Azure DocumentDB Data Migration Toolというデータ移行用のツールをエクスポートにも利用するのがおすすめです。

Read More

Azure Functionsを使ってDocumentDBのコレクション情報を取得する

DocumentDBのデータの格納状況やRUの消費状況などのメトリクスは、基本的にポータルで確認することができますが、グラフでざっと全体感を見るよりも、特定のコレクションについての正確な情報が知りたい局面などもあると思います。

そのような時は、公式ドキュメントにも述べられているように、DocumentDBのAPI群を使ってコレクションのより詳細な使用状況データを取得するのが一般的です。

DocumentDB APIにはRESTを使ってアクセスする方法がありますが、さすがデータベースのマネージドサービスというだけあって、他のサービスのRESTよりもアクセス方法が厳しく、キーさえあれば良いというわけにはいかないとても複雑な手続きが必要です(ハッシュの生成に結局コードを書かなきゃいけない等、個人的には二度とやりたくない系)。

なので特に事情がなければ、REST APIではなく、DocumentDB .NET SDKを使って実装するのがオススメです。この記事では、せっかくなのでGAしたばかりのAzure Functions上に実装して、HTTPトリガーから気軽にDocumentDB APIを呼び出せるように実装してみたいと思います。

Read More