演習: MongoDB ワークロードを Cosmos DB に移行する

完了

あなたは、温度データを収集する IoT センサーを持つ公益事業会社で働いています。 温度は、タイムスタンプと共に MongoDB データベースに記録されます。 各デバイスには一意の ID があります。 これらのデバイスをシミュレートし、データベースにデータを格納する MongoDB アプリケーションを実行します。 また、ユーザーが各デバイスに関する統計情報を照会できるようにする 2 つ目のアプリケーションも使用します。 MongoDB から Cosmos DB にデータベースを移行した後、Cosmos DB に接続するように両方のアプリケーションを構成し、それらが正しく機能することを確認します。

この演習では、既存の MongoDB データベースを取得し、Cosmos DB に移行します。 Azure Database Migration Service を使用します。 代わりに、MongoDB データベースを使用して Cosmos DB データベースに接続する既存のアプリケーションを再構成する方法についても説明します。

重要

Azure Data Migration Service は、無料の Azure サンドボックス環境ではサポートされていません。 これらの手順を自分の個人サブスクリプションで実行してみるのでも、読んでデータベースの移行方法を理解するだけでもかまいません。

Azure で MongoDB データベースを作成する

まず、温度デバイスからキャプチャされたデータを保持するための MongoDB データベースを作成します。

リソース グループと仮想ネットワークを作成する

  1. Web ブラウザーを使用して新しいタブを開き、Azure portal に移動します。

  2. Azure portal で、[リソース グループ ] を選択し、[+の追加]選択します。

  3. リソース グループの作成] ページで、次の詳細を入力します。

    プロパティ 価値
    サブスクリプション <あなたのサブスクリプション>
    リソース グループ mongodbrg
    リージョン 最も近い場所を選択します
  4. [確認および作成] を選択し、次に [作成] を選択します。 リソース グループが作成されるまで待ちます。

  5. Azure portal のメニューで、[+ リソースの作成] を選択します。

  6. [新しい] ページの [Marketplace の検索] ボックスに「Virtual Network 入力し、Enter キーを押します。

  7. [仮想ネットワーク] ページで、 [作成] を選択します。

  8. 仮想ネットワーク の作成] ページで、次の詳細を入力し、[次へ: IP アドレス 選択します。

    プロパティ 価値
    リソース グループ mongodbrg
    名前 databasevnet
    リージョン リソース グループに指定したのと同じ場所を選択します
  9. IP アドレス ページで、IPv4 アドレス空間 を 10.0.0.0/24 に設定します。

  10. 既定のサブネットを選択し、[サブネット 削除] を選択します。

  11. [ + サブネットの追加] を選択します。 [サブネット の追加] ウィンドウで、[サブネット名の を既定の に設定し、サブネットのアドレス範囲 を 10.0.0.0/28 に設定し、[の追加] を選択します。

  12. [IP アドレス] ページで、[次へ: セキュリティ ]選択します。

  13. [セキュリティ] ページで、Azure DDoS ネットワーク保護 が [を無効にする]に設定されていること、および [ファイアウォール を無効にする]設定されていることを確認します。 [ 確認と作成] を選択します。

  14. [仮想ネットワークの作成] ページで、[作成] を選択します。 仮想ネットワークが作成されるまで待ってから続行します。

MongoDB データベース サーバーを作成する

  1. Azure portal のメニューで、[+ リソースの作成] を選択します。

  2. [Marketplace を検索する] ボックスに「Ubuntu 入力して、Enter キーを押します。

  3. Marketplace ページで、Ubuntu Server 18.04 LTS 選択します。

  4. Ubuntu Server 18.04 LTS ページで、[の作成]選択します。

  5. 仮想マシン の作成] ページで、次の詳細を入力します。

    プロパティ 価値
    リソース グループ mongodbrg
    仮想マシン名 mongodbserver
    リージョン リソース グループに指定したのと同じ場所を選択します
    可用性オプション インフラストラクチャ冗長は必要ありません
    Image Ubuntu Server 18.04 LTS - Gen1
    Azure Spot インスタンス オフ
    サイズ Standard A1_v2
    認証の種類 パスワード
    ユーザー名 azureuser
    パスワード Pa55w.rdPa55w.rd
    [パスワードの確認入力] Pa55w.rdPa55w.rd
    パブリック受信ポート [選択したポートを許可する]
    受信ポートの選択 SSH (22)
  6. [次へ: ディスク]> を選択します。

  7. [ディスク] ページで、設定を既定値のままにして、[次へ: ネットワーク >]選択します。

  8. [ネットワーク] ページで、次の詳細を入力します。

    プロパティ 価値
    仮想ネットワーク databasevnet
    サブネット default (10.0.0.0/28)
    パブリック IP (新規) mongodbserver-ip
    NIC ネットワーク セキュリティ グループ 詳細
    ネットワーク セキュリティ グループを構成する (新規) mongodbserver-nsg
    高速ネットワーキング オフ
    負荷分散 オフ
  9. [確認と作成 >] を選びます。

  10. 検証ページで、Createを選択してください。

  11. 仮想マシンがデプロイされるのを待ってから続行します

  12. Azure portal のメニューで、[すべてのリソース] 選択します。

  13. [すべてのリソース ] ページで、mongodbserver-nsg 選択します。

  14. [mongodbserver-nsg] ページの [設定]で、[受信セキュリティ規則] 選択します。

  15. mongodbserver-nsg - 受信セキュリティ規則 ページで、+追加を選択します。

  16. [受信セキュリティ規則の追加] ペインで、次の詳細を入力します。

    プロパティ 価値
    情報源 どれでも
    接続元ポート範囲 *
    行き先 どれでも
    宛先ポート範囲 8080
    プロトコル どれでも
    アクション 許す
    優先順位 1030
    名前 Mongodb-port
    説明 クライアントが MongoDB への接続に使用するポート
  17. 追加を選択します。

この演習では、ポート 8080 を使用するように MongoDB を構成します。 これは、この環境のセキュリティ上の制約が原因で行う必要があるだけです。 通常は、27017の既定の MongoDB ポートを使用します。

MongoDB のインストール

  1. Azure portal のメニューで、[すべてのリソース] 選択します。

  2. [すべてのリソース ] ページで、mongodbserver-ip 選択します。

  3. mongodbserver-ip ページで、IP アドレスのを書き留めます。

  4. Azure portal の上部にあるツール バーで、Cloud Shell 選択します。

  5. ストレージがマウントされていない メッセージ ボックスが表示されたら、[ストレージ 作成] を選択します。

  6. Cloud Shell が起動したら、Cloud Shell ウィンドウの上にあるドロップダウン リストで、Bash 選択します。

  7. Cloud Shell で、次のコマンドを入力して mongodbserver 仮想マシンに接続します。 <ip アドレス> を、mongodbserver-ip IP アドレスの値に置き換えます。

    ssh azureuser@<ip address>
    
  8. プロンプトで、「はい」 入力して接続を続行します。

  9. パスワードを Pa55w.rdPa55w.rd 入力します。

  10. パッケージ データベースを再読み込みするには、次のコマンドを入力します。

    sudo apt-get update
    
  11. MongoDB をインストールするには、次のコマンドを入力します。

    sudo apt-get install -y mongodb
    

    インストールは、パッケージのインストール、準備、そしてアンパックに関するメッセージを表示しながら進行します。 インストールが完了するまでに数分かかる場合があります。

MongoDB データベースを構成する

既定では、Mongo DB インスタンスは認証なしで実行するように構成されています。 このタスクでは、他のコンピューターからの接続を受け入れるように、ローカル ネットワーク インターフェイスにバインドするように MongoDB を構成します。 また、認証を有効にし、移行を実行するために必要なユーザー アカウントを作成します。 最後に、テスト アプリケーションがデータベースのクエリに使用できるアカウントを追加します。

  1. MongoDB 構成ファイルを開くには、次のコマンドを実行します。

    sudo nano /etc/mongodb.conf
    
  2. ファイルで、bind_ip 設定を見つけて、0.0.0.0に設定します。

  3. ポート 設定を見つけて、8080に設定します。

  4. 構成ファイルを保存するには、Esc 押し、Ctrl + X 押します。y 押し、Enter して変更したバッファーを保存します。

  5. MongoDB サービスを再起動して変更を適用するには、次のコマンドを入力します。

    sudo service mongodb restart
    
  6. MongoDB サービスに接続するには、次のコマンドを入力します。

    mongo --host 127.0.0.1:8080
    
  7. > プロンプトで、管理者 データベースに切り替えるには、次のコマンドを実行します。

    use admin;
    
  8. 管理者 という名前新しいユーザーを作成するには、次のコマンドを実行します。 読みやすくするために、コマンドを 1 行または複数行にわたって入力できます。 コマンドは、mongo プログラムがセミコロンに達したときに実行されます。

    db.createUser(
        {
            user: "administrator",
            pwd: "Pa55w.rd",
            roles: [
                { role: "userAdminAnyDatabase", db: "admin" },
                { role: "clusterMonitor", db:"admin" },
                "readWriteAnyDatabase"
            ]
        }
    );
    
  9. mongo プログラムを終了するには、次のコマンドを入力します。

    exit;
    
  10. 新しい管理者のアカウントで MongoDB に接続するには、次のコマンドを実行します。

    mongo admin -u "administrator" -p "Pa55w.rd" --host 127.0.0.1:8080
    
  11. DeviceData データベースに切り替えるには、次のコマンドを実行します。

    use DeviceData;    
    
  12. deviceadmin という名前ユーザーを作成するには、アプリがデータベースへの接続に使用します。次のコマンドを実行します。

    db.createUser(
        {
            user: "deviceadmin",
            pwd: "Pa55w.rd",
            roles: [ { role: "readWrite", db: "DeviceData" } ]
        }
    );
    
  13. mongo プログラムを終了するには、次のコマンドを入力します。

    exit;
    
  14. 次のコマンドを実行して、mongodb サービスを再起動します。 エラー メッセージなしでサービスが再起動することを確認します。

    sudo service mongodb restart
    
  15. 次のコマンドを実行して、deviceadmin ユーザーとして mongodb にログインできることを確認します。

    mongo DeviceData -u "deviceadmin" -p "Pa55w.rd" --host 127.0.0.1:8080
    
  16. > プロンプトで、次のコマンドを実行して mongo シェルを終了します。

    exit;
    
  17. bash プロンプトで、次のコマンドを実行して MongoDB サーバーから切断し、Cloud Shell に戻ります。

    exit
    

MongoDB データベースにデータを挿入してクエリを実行する

これで、MongoDB サーバーとデータベースが作成されました。 次の手順では、このデータベース内のデータを設定してクエリを実行できるサンプル アプリケーションを示します。

アプリをビルドして実行して MongoDB データベースを設定する

  1. Azure Cloud Shell で、次のコマンドを実行してサンプル コードをダウンロードします。

    git clone https://github.com/MicrosoftLearning/DP-060T00A-Migrating-your-Database-to-Cosmos-DB migration-workshop-apps
    
  2. migration-workshop-apps/MongoDeviceDataCapture/MongoDeviceCapture フォルダーに移動します。

    cd ~/migration-workshop-apps/MongoDeviceDataCapture/MongoDeviceDataCapture
    
  3. Code エディターを使用して、TemperatureDevice.cs ファイルを調べます。

    code TemperatureDevice.cs
    

    このファイルのコードには、データをキャプチャして MongoDB データベースに保存する温度デバイスをシミュレートする TemperatureDevice という名前のクラスが含まれています。 .NET Framework 用の MongoDB ライブラリを使用します。 TemperatureDevice コンストラクターは、アプリケーション構成ファイルに格納されている設定を使用してデータベースに接続します。 RecordTemperatures メソッドは、読み取りを生成し、データベースに書き込みます。

  4. コード エディターを閉じ、ThermometerReading.cs ファイルを開きます。

    code ThermometerReading.cs
    

    このファイルは、アプリケーションがデータベースに格納するドキュメントの構造を示します。 各ドキュメントには、次のフィールドが含まれています。

    • オブジェクト ID。 各ドキュメントを一意に識別するために MongoDB によって生成される "_id" フィールドです。
    • デバイス ID。 各デバイスには、プレフィックス "Device" が付いた番号があります。
    • デバイスによって記録された温度。
    • 温度が記録された日時。
  5. コード エディターを閉じ、App.config ファイルを開きます。

    code App.config
    

    このファイルには、MongoDB データベースに接続するための設定が含まれています。

  6. Address キーの値を、前に記録した MongoDB サーバーの IP アドレスに設定します。

  7. アプリが使用するポートを 8080 変更します。

  8. CTRLキーを使用してファイルを保存し、次にCTRLキーを使用してエディターを閉じます。

  9. 次のコマンドを実行して、アプリケーションをリビルドします。

    dotnet build
    

    これには約 5 分かかる場合があります。

  10. アプリケーションを実行します。

    dotnet run
    

    アプリケーションは、同時に実行されている 100 台のデバイスをシミュレートします。 アプリケーションを数分実行し、Enter キーを押して停止します。

MongoDB データベースに対してクエリを実行する別のアプリをビルドして実行する

  1. DP160T00A-Migrating-your-Database-to-Cosmos-DB/MongoDeviceDataCapture/DeviceDataQuery フォルダーに移動します。

    cd ~/migration-workshop-apps/MongoDeviceDataCapture/DeviceDataQuery
    

    このフォルダーには、各デバイスによってキャプチャされたデータを分析するために使用できる別のアプリケーションが含まれています。

  2. Code エディターを使用して、Program.cs ファイルを調べます。

    code Program.cs
    

    アプリケーションは、(ファイルの下部にある ConnectToDatabase メソッドを使用して) データベースに接続し、ユーザーにデバイス番号の入力を求めます。 アプリケーションは、.NET Framework の MongoDB ライブラリを使用して、指定されたデバイスの次の統計情報を計算する集計パイプラインを作成して実行します。

    • 記録された読取数。
    • 記録された平均気温。
    • 最低の測定値。
    • 最も高い数値。
    • 最後の測定値。
  3. コード エディターを閉じ、App.config ファイルを開きます。

    code App.config
    
  4. Address キーの値を、前に記録した MongoDB サーバーの IP アドレスに設定します。

  5. アプリが使用するポートを 8080 変更します。

  6. CTRLキーを使用してファイルを保存し、次にCTRLキーを使用してエディターを閉じます。

  7. アプリケーションをビルドして実行します。

    dotnet build
    dotnet run
    
  8. デバイス番号の入力 プロンプトで、0 ~ 99 の値を入力します。 アプリケーションはデータベースのクエリを実行し、統計を計算して、結果を表示します。 Q 押して、アプリケーションを終了します。

MongoDB データベースを Cosmos DB に移行する

次の手順では、MongoDB データベースを取得し、Cosmos DB に転送します。

Cosmos アカウントとデータベースを作成する

  1. Azure portal に戻ります。

  2. メニューで、[+ リソースの作成] を選択します。

  3. 新規 ページの [Marketplace の検索] ボックスに「*Azure Cosmos DB」と入力し、Enterキーを押します。

  4. [Azure Cosmos DB] ページで、 [作成] を選択します。

  5. [Azure Cosmos DB アカウント の作成] ページで、次の設定を入力します。

    プロパティ 価値
    リソース グループ mongodbrg
    アカウント名 mongodb*nnn*。ここで、nnn は、ユーザーが選択した乱数です
    API Azure Cosmos DB for MongoDB API
    Notebooks オフ
    場所 MongoDB サーバーと仮想ネットワークに使用したのと同じ場所を指定する
    容量モード プロビジョニング済みスループット
    無料ティア割引を適用 Apply
    アカウントの種類 非運用
    バージョン 3.6
    geo 冗長 無効にする
    マルチリージョン書き込み 無効にする
    Availability Zones 無効にする
  6. [ 確認と作成] を選択します。

  7. 検証ページで、の作成選択し、Cosmos DB アカウントがデプロイされるのを待ちます。

  8. Azure portal のメニューで、[すべてのリソース ] を選択し、新しい Cosmos DB アカウント (mongodbnnn) を選択します。

  9. mongodbnnn ページで、データ エクスプローラーの 選択します。

  10. [データ エクスプローラーの] ウィンドウで、[新しいコレクション] 選択します。

  11. [コレクションの追加] ウィンドウで、次の設定を指定します。

    プロパティ 価値
    データベース ID [新規作成] を選択し、「DeviceData」と入力します
    データベーススループットをプロビジョニングする オン
    スループット 10,000
    コレクション識別子 温度
    ストレージ容量 無制限
    シャード キー deviceID
    シャード キーが 100 バイトを超えています オフのまま
    すべてのフィールドにワイルドカード インデックスを作成する オフのまま
    分析ストア オフ
  12. [ OK] を選択します

データベース移行サービスを作成する

  1. Azure portal に戻ります。

  2. [すべてのサービス] をクリックし、[サブスクリプション] をクリックして、自分のサブスクリプションをクリックします。

  3. [サブスクリプション] ページの [設定] で、[リソース プロバイダー] をクリックします。

  4. [名前でフィルター] ボックスに「DataMigration」と入力し、その後 [Microsoft.DataMigration] をクリックします。

  5. Microsoft.DataMigration が登録されていない場合は、[登録] をクリックし、[状態][登録済み] に変わるまで待ちます。 状態の変化を確認するには、[Refresh](最新の情報に更新) をクリックする必要がある場合があります。

  6. Azure portal のメニューで、[+ リソースの作成] を選択します。

  7. 「新規」ページで [Marketplace を検索] ボックスに「Azure Database Migration Service」と入力して、次に Enter キーを押します。

  8. [Azure Database Migration Service] ページで、 [作成] を選択します。

  9. [移行サービスの作成] ページで、次の設定を入力します。

    プロパティ 価値
    リソース グループ mongodbrg
    サービス名 MongoDBMigration
    場所 以前使用したのと同じ場所を選択します
    サービス モード 紺碧
    価格レベル Standard: 1 仮想コア
  10. [次へ: ネットワーク] を選択します。

  11. [ネットワーク] ページで、databasevnet/default を選択し、[確認と作成] を選択します。

  12. の作成選択し、サービスがデプロイされるまで待ってから続行します。 この操作には約 10 分かかる場合があります。

新しい移行プロジェクトを作成して実行する

  1. Azure portal のメニューで、[リソース グループ] 選択します。

  2. リソース グループ ウィンドウで、mongodbrg 選択します。

  3. mongodbrg ウィンドウで、MongoDBMigration 選択します。

  4. [MongoDBMigration] ページで、[+ 新しい移行プロジェクトの] を選択します。

  5. [新しい移行プロジェクト ] ページで、次の設定を入力します。

    プロパティ 価値
    プロジェクト名 MigrateTemperatureData
    ソース サーバー名 MongoDB
    ターゲット サーバーの種類 Cosmos DB (MongoDB API)
    アクティビティの種類を選択します オフライン データの移行
  6. [アクティビティ 作成して実行] を選択します。

  7. 移行ウィザードの が開始されたら、[ソースの詳細] ページで、次の詳細を入力します。

    プロパティ 価値
    モード Standard モードの
    Source server name (依存元サーバー名) 前に記録した mongodbserver-ip IP アドレスの値を指定します
    サーバー ポート 8080
    ユーザー名 管理者
    パスワード Pa55w.rd
    SSL が必要 オフ
  8. [次へ 選択: ターゲットを選択します。

  9. [ターゲット の選択] ページ で、次の詳細を入力します。

    プロパティ 価値
    モード Cosmos DB ターゲット を選択する
    Comos DB 名を選択する mongodb*nnn*
    接続文字列 Cosmos DB アカウント用に生成された接続文字列を受け入れる
  10. [次 : データベース設定を選択します。

  11. [データベースの 設定] ページで、次の詳細を入力します。

    プロパティ 価値
    ソース データベース DeviceData
    [対象になるデータベース] DeviceData
    スループット (RU/秒) 1000
    コレクションをクリーンアップする このボックスをクリアします
  12. [次 : コレクションの設定]を選択します。

  13. [コレクションの 設定] ページで、DeviceData データベースのドロップダウン矢印を選択し、次の詳細を入力します。

    プロパティ 価値
    名前 温度
    ターゲット コレクション 温度
    スループット (RU/秒) 1000
    シャード キー deviceID
    ユニーク 空白のままにする
  14. [次 : 移行の概要] を選択します。

  15. [移行の概要] ページの [アクティビティ名] フィールドに「mongodb-migration 入力して、移行 の開始選択します。

  16. mongodb-migration ページで、移行 完了するまで 30 秒ごとに [ の更新] を選択します。 処理されたドキュメントの数をメモします。

移行が成功したことを確認する

  1. Azure portal のメニューで、[すべてのリソース] 選択します。

  2. [すべてのリソース ] ページで、mongodbnnn選択します。

  3. mongodb*nnn ページで、[データ エクスプローラー] 選択します。

  4. データ エクスプローラーの ウィンドウで、DeviceData データベースを展開し、Temperatures コレクションを展開して、[ドキュメント] 選択します。

  5. [ドキュメント] ウィンドウで、ドキュメントの一覧をスクロールします。 各ドキュメントのドキュメント ID (_id) とシャード キー (/deviceID) が表示されます。

  6. 任意のドキュメントを選択します。 ドキュメントの詳細が表示されます。 一般的なドキュメントは次のようになります。

    {
        "_id" : ObjectId("5ce8104bf56e8a04a2d0929a"),
        "deviceID" : "Device 83",
        "temperature" : 19.65268837271849,
        "time" : 636943091952553500
    }
    
  7. ドキュメント エクスプローラーの ペインのツール バーで、[新しいシェル 選択します。

  8. シェル 1 ペインで、> プロンプトで次のコマンドを入力し、Enter キーを押します。

    db.Temperatures.count()
    

    このコマンドは、Temperatures コレクション内のドキュメントの数を表示します。 移行ウィザードによって報告された数と一致する必要があります。

  9. 次のコマンドを入力し、Enter キーを押します。

    db.Temperatures.find({deviceID: "Device 99"})
    

    このコマンドは、デバイス 99 のドキュメントをフェッチして表示します。

Cosmos DB を使用するように既存のアプリケーションを再構成して実行する

最後の手順では、Cosmos DB に接続するように既存の MongoDB アプリケーションを再構成し、それらが引き続き機能することを確認します。 これにより、アプリケーションがデータベースに接続する方法を変更する必要がありますが、アプリケーションのロジックは変更されません。

  1. [mongodbnnn] ウィンドウの [設定]で、[接続文字列 選択します。

  2. [mongodbnnn 接続文字列] ページで、次の設定を書き留めます。

    • ホスト
    • ユーザー名
    • プライマリ パスワード
  3. Cloud Shell ウィンドウに戻り (セッションがタイムアウトした場合は再接続)、migration-workshop-apps/MongoDeviceDataCapture/DeviceDataQuery フォルダーに移動します。

    cd ~/migration-workshop-apps/MongoDeviceDataCapture/DeviceDataQuery
    
  4. コード エディターで App.config ファイルを開きます。

    code App.config
    
  5. ファイルの [MongoDB 設定] セクションで、既存の設定をコメント アウトします。

  6. Cosmos DB Mongo API の設定セクションのコメントを解除し、これらの設定の値を次のように設定します。

    設定 価値
    住所 [mongodbnnn 接続文字列] ページの [ホスト]
    港 / ポート [mongodbnnn 接続文字列] ページのポート
    ユーザー名 [mongodbnnn 接続文字列] ページのユーザー名
    パスワード [mongodbnnn 接続文字列] ページのプライマリ パスワード

    完成したファイルは次のようになります。

    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
        <appSettings>
            <add key="Database" value="DeviceData" />
            <add key="Collection" value="Temperatures" />
    
            <!-- Settings for MongoDB 
            <add key="Address" value="nn.nn.nn.nn" />
            <add key="Port" value="27017" />
            <add key="Username" value="deviceadmin" />
            <add key="Password" value="Pa55w.rd" />
            End of settings for MongoDB -->
    
            <!-- Settings for CosmosDB Mongo API -->
            <add key="Address" value="mongodbnnn.documents.azure.com"/>
            <add key="Port" value="10255"/>
            <add key="Username" value="mongodbnnn"/>
            <add key="Password" value="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=="/>
            <!-- End of settings for CosmosDB Mongo API -->
        </appSettings>
    </configuration>
    
  7. ファイルを保存し、コード エディターを閉じます。

  8. コード エディターを使用してProgram.cs ファイルを開きます。

    code Program.cs
    
  9. ConnectToDatabase メソッドまで下にスクロールします。

  10. MongoDB に接続するための資格情報を設定する行をコメントアウトし、Cosmos DB に接続するための資格情報を指定するステートメントのコメントを解除します。 コードは、次のようになります。

    // Connect to the MongoDB database
    MongoClient client = new MongoClient(new MongoClientSettings
    {
        Server = new MongoServerAddress(address, port),
        ServerSelectionTimeout = TimeSpan.FromSeconds(10),
    
        //
        // Credential settings for MongoDB
        //
    
        // Credential = MongoCredential.CreateCredential(database, azureLogin.UserName, azureLogin.SecurePassword),
    
        //
        // Credential settings for CosmosDB Mongo API
        //
    
        UseTls = true,
        Credential = new MongoCredential("SCRAM-SHA-1", new MongoInternalIdentity(database, azureLogin.UserName), new PasswordEvidence(azureLogin.SecurePassword))
    
        // End of Mongo API settings
    });
    

    元の MongoDB データベースで SSL 接続が使用されていないため、これらの変更が必要です。 Cosmos DB では常に SSL が使用されます。

  11. ファイルを保存し、コード エディターを閉じます。

  12. アプリケーションをリビルドして実行します。

    dotnet build
    dotnet run
    
  13. デバイス番号の入力 プロンプトで、0 ~ 99 のデバイス番号を入力します。 アプリケーションは、Cosmos DB データベースに保持されているデータを使用する場合を除き、以前とまったく同じように実行する必要があります。

Cosmos DB でのクエリ パフォーマンスの向上

Cosmos DB を使用すると、クエリのパフォーマンスを向上させるためにインデックスを追加できます。 deviceID を集計してインデックスとしてそのフィールドを追加すると、クエリが高速化されます。

  1. Azure portal に戻ります。

  2. 左側の [データ エクスプローラー] 選択します。

  3. データ エクスプローラーの ペインで、DeviceData データベースを展開し、Temperatures コレクションを展開して、[設定] 選択します。

    Cosmos DB インデックス作成ポリシーの追加を示すスクリーンショット。

  4. [インデックス作成ポリシー を選択します。

  5. _id の下に新しいインデックスを追加し、定義deviceID を入力し、種類として単一フィールド を選択します。

  6. 保存 を選択して、新しいインデックスを追加します。

  7. Cloud Shell に戻ってクエリをもう一度試し、アプリケーションでの応答の改善に注意してください。

  8. 他のデバイス番号を使用してアプリケーションをテストします。 Q 入力して完了します。

MongoDB データベースを Cosmos DB に正常に移行し、新しい Cosmos DB データベースに接続するように既存の MongoDB アプリケーションを再構成しました。

作成したリソースをクリーンアップする

重要

独自の個人用サブスクリプションでこれらの手順を実行した場合は、リソースを個別に削除するか、リソース グループを削除してリソースのセット全体を削除することができます。 使われていないリソースが動作し続けると、費用がかかります。

  1. リソース グループを削除するには、Cloud Shell を使用して次のコマンドを実行します。

    az group delete --name mongodbrg