연습: MongoDB 워크로드를 Cosmos DB로 마이그레이션
온도 데이터를 수집하는 IoT 센서가 있는 유틸리티 회사에서 일합니다. 온도는 타임스탬프와 함께 MongoDB 데이터베이스에 기록됩니다. 각 디바이스에는 고유한 ID가 있습니다. 이러한 디바이스를 시뮬레이션하고 데이터베이스에 데이터를 저장하는 MongoDB 애플리케이션을 실행합니다. 또한 사용자가 각 디바이스에 대한 통계 정보를 쿼리할 수 있도록 하는 두 번째 애플리케이션을 사용합니다. MongoDB에서 Cosmos DB로 데이터베이스를 마이그레이션한 후에는 Cosmos DB에 연결하도록 두 애플리케이션을 모두 구성하고 여전히 제대로 작동하는지 확인합니다.
이 연습에서는 기존 MongoDB 데이터베이스를 가져와 Cosmos DB로 마이그레이션합니다. Azure Database Migration Service를 사용합니다. 대신 MongoDB 데이터베이스를 사용하여 Cosmos DB 데이터베이스에 연결하는 기존 애플리케이션을 다시 구성하는 방법도 확인할 수 있습니다.
중요합니다
Azure Data Migration Service는 체험용 Azure 샌드박스 환경에서 지원되지 않습니다. 자신의 개인 구독에서 이러한 단계를 수행할 수도 있고 단순히 다음 내용을 보고 데이터베이스 마이그레이션 방법을 알아볼 수도 있습니다.
Azure에서 MongoDB 데이터베이스 만들기
먼저 온도 디바이스에서 캡처한 데이터를 보관하기 위한 MongoDB 데이터베이스를 만듭니다.
리소스 그룹 및 Virtual Network 만들기
웹 브라우저를 사용하여 새 탭을 열고 Azure Portal로 이동합니다.
Azure Portal에서 리소스 그룹을 선택한 다음, +추가를 선택합니다.
리소스 그룹 만들기 페이지다음 세부 정보를 입력합니다.
재산 가치 구독 <사용자의 구독> 리소스 그룹 mongodbrg 지역 가장 가까운 위치를 선택합니다. 검토 + 생성를 선택한 다음, 생성를 선택합니다. 리소스 그룹이 만들어질 때까지 기다립니다.
Azure Portal 메뉴에서 + 리소스 생성을 선택합니다.
새 페이지의 Marketplace 검색 상자에 Virtual Network입력하고 Enter 키를 누릅니다.
Virtual Network 페이지에서 생성를 선택합니다.
가상 네트워크 만들기 페이지에서 다음 세부 정보를 입력한 다음 다음을 선택합니다. IP 주소.
재산 가치 리소스 그룹 mongodbrg 이름 databasevnet 지역 리소스 그룹에 대해 지정한 위치와 동일한 위치를 선택합니다. IP 주소 페이지에서 IPv4 주소 공간10.0.0.0/24설정합니다.
기본 서브넷을 선택한 다음, 서브넷 제거 선택합니다.
+ 서브넷 추가를 선택합니다. 서브넷 추가 창에서 서브넷 이름 기본 설정하고 서브넷 주소 범위10.0.0.0/28설정한 다음 추가를 선택합니다.
IP 주소 페이지에서 다음: 보안선택합니다.
보안 페이지에서 Azure DDoS 네트워크 보호사용 안 함으로 설정되어 있는지 확인하고 방화벽사용하지 않도록설정되어 있는지 확인합니다. 검토 + 만들기를 선택합니다.
가상 네트워크 만들기 페이지에서 만들기선택합니다. 계속하기 전에 가상 네트워크가 만들어질 때까지 기다립니다.
MongoDB 데이터베이스 서버 만들기
Azure Portal 메뉴에서 + 리소스 생성을 선택합니다.
Marketplace 검색 상자에 Ubuntu입력한 다음 Enter 키를 누릅니다.
Marketplace 페이지에서 Ubuntu Server 18.04 LTS 선택합니다.
Ubuntu Server 18.04 LTS 페이지에서 만들기선택합니다.
가상 머신 만들기 페이지에서 다음 세부 정보를 입력합니다.
재산 가치 리소스 그룹 mongodbrg 가상 머신 이름 mongodbserver 지역 리소스 그룹에 대해 지정한 위치와 동일한 위치를 선택합니다. 가용성 옵션 인프라 중복 필요 없음 이미지 Ubuntu Server 18.04 LTS - Gen1 Azure Spot 인스턴스 체크 해제 크기 표준 A1_v2 인증 유형 암호 사용자 이름 azureuser 암호 Pa55w.rdPa55w.rd 암호 확인 Pa55w.rdPa55w.rd 공용 인바운드 포트 선택한 포트 허용 인바운드 포트 선택 SSH(22) 다음: 디스크 >를 선택합니다.
디스크 페이지에서 설정을 기본값으로 두고 다음: 네트워킹 >선택합니다.
네트워킹 페이지에서 다음 세부 정보를 입력합니다.
재산 가치 가상 네트워크 databasevnet 서브넷 default(10.0.0.0/28) 공용 IP (신규) mongodbserver-ip NIC 네트워크 보안 그룹 고급 네트워크 보안 그룹 구성 (신규) mongodbserver-nsg 가속화된 네트워킹 체크 해제 부하 분산 체크 해제 검토 + 생성 >를 선택합니다.
유효성 검사 페이지에서 만들기선택합니다.
계속하기 전에 가상 머신이 배포될 때까지 기다립니다.
Azure Portal 메뉴에서 모든 리소스 선택합니다.
모든 리소스 페이지에서 mongodbserver-nsg 선택합니다.
mongodbserver-nsg 페이지의 설정아래에서 인바운드 보안 규칙을 선택합니다.
mongodbserver-nsg - 인바운드 보안 규칙 페이지에서 +추가를 선택합니다.
인바운드 보안 규칙 추가 창에서 다음 세부 정보를 입력합니다.
재산 가치 출처 모두 원본 포트 범위 * 목적지 모두 대상 포트 범위 8080 프로토콜 모두 조치 허용하다 우선권 1030 이름 Mongodb-port 설명 클라이언트가 MongoDB에 연결하는 데 사용하는 포트 추가를 선택합니다.
비고
이 연습에서는 포트 8080을 사용하도록 MongoDB를 구성합니다. 이 환경의 보안 제약 조건으로 인해 이 작업을 수행해야 합니다. 일반적으로 27017기본 MongoDB 포트를 사용합니다.
MongoDB 설치
Azure Portal 메뉴에서 모든 리소스 선택합니다.
모든 리소스 페이지에서 mongodbserver-ip 선택합니다.
mongodbserver-ip 페이지에서 IP 주소기록해 둡니다.
Azure Portal 위쪽의 도구 모음에서 Cloud Shell선택합니다.
스토리지가 탑재되지 않은 메시지 상자가 나타나면, 스토리지 만들기를 선택하세요.
Cloud Shell이 시작되면 Cloud Shell 창 위의 드롭다운 목록에서 Bash 선택합니다.
Cloud Shell에서 다음 명령을 입력하여 mongodbserver 가상 머신에 연결합니다. <ip 주소>mongodbserver-ip IP 주소의 값으로 바꿉니다.
ssh azureuser@<ip address>프롬프트에서 연결을 계속하려면 예 입력합니다.
암호 Pa55w.rdPa55w.rd입력합니다.
패키지 데이터베이스를 다시 로드하려면 다음 명령을 입력합니다.
sudo apt-get updateMongoDB를 설치하려면 다음 명령을 입력합니다.
sudo apt-get install -y mongodb설치는 패키지 설치, 준비 및 압축 해제에 대한 메시지를 계속 진행해야 합니다. 설치가 완료되는 데 몇 분 정도 걸릴 수 있습니다.
MongoDB 데이터베이스 구성
기본적으로 Mongo DB 인스턴스는 인증 없이 실행되도록 구성됩니다. 이 작업에서는 MongoDB가 다른 컴퓨터의 연결을 수락할 수 있도록 로컬 네트워크 인터페이스에 바인딩하도록 구성합니다. 또한 인증을 사용하도록 설정하고 마이그레이션을 수행하는 데 필요한 사용자 계정을 만듭니다. 마지막으로 테스트 애플리케이션이 데이터베이스를 쿼리하는 데 사용할 수 있는 계정을 추가합니다.
MongoDB 구성 파일을 열려면 다음 명령을 실행합니다.
sudo nano /etc/mongodb.conf파일에서 bind_ip 설정을 찾아 0.0.0.0설정합니다.
포트 설정을 찾아 8080설정합니다.
구성 파일을 저장하려면 Esc 누른 다음 ctrl+X 누릅니다. y 누른 다음 Enter 눌러 수정된 버퍼를 저장합니다.
MongoDB 서비스를 다시 시작하고 변경 내용을 적용하려면 다음 명령을 입력합니다.
sudo service mongodb restartMongoDB 서비스에 연결하려면 다음 명령을 입력합니다.
mongo --host 127.0.0.1:8080> 프롬프트에서 관리자 데이터베이스로 전환하려면 다음 명령을 실행합니다.
use admin;관리자새 사용자를 만들려면 다음 명령을 실행합니다. 가독성을 높이기 위해 한 줄 또는 여러 줄에 명령을 입력할 수 있습니다. 이 명령은
mongo프로그램이 세미콜론에 도달하면 실행됩니다.db.createUser( { user: "administrator", pwd: "Pa55w.rd", roles: [ { role: "userAdminAnyDatabase", db: "admin" }, { role: "clusterMonitor", db:"admin" }, "readWriteAnyDatabase" ] } );mongo프로그램을 종료하려면 이 명령을 입력합니다.exit;새 관리자의 계정으로 MongoDB에 연결하려면 다음 명령을 실행합니다.
mongo admin -u "administrator" -p "Pa55w.rd" --host 127.0.0.1:8080DeviceData 데이터베이스로 전환하려면 다음 명령을 실행합니다.
use DeviceData;앱이 데이터베이스에 연결하는 데 사용할 deviceadmin사용자를 만들려면 다음 명령을 실행합니다.
db.createUser( { user: "deviceadmin", pwd: "Pa55w.rd", roles: [ { role: "readWrite", db: "DeviceData" } ] } );mongo프로그램을 종료하려면 이 명령을 입력합니다.exit;다음 명령을 실행하여 mongodb 서비스를 다시 시작합니다. 오류 메시지 없이 서비스가 다시 시작되는지 확인합니다.
sudo service mongodb restart다음 명령을 실행하여 이제 deviceadmin 사용자로 mongodb에 로그인할 수 있는지 확인합니다.
mongo DeviceData -u "deviceadmin" -p "Pa55w.rd" --host 127.0.0.1:8080> 프롬프트에서 다음 명령을 실행하여 mongo 셸을 종료합니다.
exit;bash 프롬프트에서 다음 명령을 실행하여 MongoDB 서버에서 연결을 끊고 Cloud Shell로 돌아갑니다.
exit
MongoDB 데이터베이스 채우기 및 쿼리
이제 MongoDB 서버 및 데이터베이스를 만들었습니다. 다음 단계는 이 데이터베이스의 데이터를 채우고 쿼리할 수 있는 샘플 애플리케이션을 보여 주는 것입니다.
MongoDB 데이터베이스를 채우는 앱 빌드 및 실행
Azure Cloud Shell에서 다음 명령을 실행하여 샘플 코드를 다운로드합니다.
git clone https://github.com/MicrosoftLearning/DP-060T00A-Migrating-your-Database-to-Cosmos-DB migration-workshop-appsmigration-workshop-apps/MongoDeviceDataCapture/MongoDeviceCapture 폴더로 이동합니다.
cd ~/migration-workshop-apps/MongoDeviceDataCapture/MongoDeviceDataCapture코드 편집기를 사용하여 TemperatureDevice.cs 파일을 검사합니다.
code TemperatureDevice.cs이 파일의 코드에는 데이터를 캡처하고 MongoDB 데이터베이스에 저장하는 온도 디바이스를 시뮬레이션하는 TemperatureDevice이라는 클래스가 포함되어 있습니다. .NET Framework용 MongoDB 라이브러리를 사용합니다. TemperatureDevice 생성자는 애플리케이션 구성 파일에 저장된 설정을 사용하여 데이터베이스에 연결합니다. RecordTemperatures 메서드는 읽기를 생성하고 데이터베이스에 씁니다.
코드 편집기를 닫은 다음 ThermometerReading.cs 파일을 엽니다.
code ThermometerReading.cs이 파일은 애플리케이션이 데이터베이스에 저장하는 문서의 구조를 보여줍니다. 각 문서에는 다음 필드가 포함됩니다.
- 개체 ID. MongoDB에서 각 문서를 고유하게 식별하기 위해 생성한 "_id" 필드입니다.
- 디바이스 ID입니다. 각 디바이스에는 접두사 "Device"가 있는 숫자가 있습니다.
- 디바이스에서 기록한 온도입니다.
- 온도가 기록된 날짜 및 시간입니다.
코드 편집기를 닫은 다음 App.config 파일을 엽니다.
code App.config이 파일에는 MongoDB 데이터베이스에 연결하기 위한 설정이 포함되어 있습니다.
Address 키의 값을 이전에 기록한 MongoDB 서버의 IP 주소로 설정합니다.
앱이 사용하는 포트를 8080으로 변경합니다.
파일을 저장하고 CTRL + s를 사용하여 편집기를 닫은 다음 CTRL + q.
다음 명령을 실행하여 애플리케이션을 다시 빌드합니다.
dotnet build이 작업은 약 5분 정도 걸릴 수 있습니다.
애플리케이션을 실행합니다.
dotnet run애플리케이션은 동시에 실행되는 100개의 디바이스를 시뮬레이션합니다. 애플리케이션이 몇 분 동안 실행되도록 허용한 다음 Enter 키를 눌러 중지합니다.
MongoDB 데이터베이스를 쿼리하는 다른 앱 빌드 및 실행
DP160T00A-Migrating-your-Database-to-Cosmos-DB/MongoDeviceDataCapture/DeviceDataQuery 폴더로 이동합니다.
cd ~/migration-workshop-apps/MongoDeviceDataCapture/DeviceDataQuery이 폴더에는 각 디바이스에서 캡처한 데이터를 분석하는 데 사용할 수 있는 다른 애플리케이션이 포함되어 있습니다.
코드 편집기를 사용하여 Program.cs 파일을 검사합니다.
code Program.cs애플리케이션은 데이터베이스에 연결하고(파일 맨 아래에 있는 ConnectToDatabase 메서드 사용) 사용자에게 디바이스 번호를 묻는 메시지를 표시합니다. 애플리케이션은 .NET Framework용 MongoDB 라이브러리를 사용하여 지정된 디바이스에 대해 다음 통계를 계산하는 집계 파이프라인을 만들고 실행합니다.
- 기록된 읽기 수
- 기록된 평균 온도입니다.
- 가장 낮은 읽기
- 최고 기록
- 새로운 측정값.
코드 편집기를 닫은 다음 App.config 파일을 엽니다.
code App.configAddress 키의 값을 이전에 기록한 MongoDB 서버의 IP 주소로 설정합니다.
앱이 사용하는 포트를 8080으로 변경합니다.
파일을 저장하고 CTRL + s를 사용하여 편집기를 닫은 다음 CTRL + q.
다음과 같이 애플리케이션을 빌드하고 실행합니다.
dotnet build dotnet run장치 번호 입력 프롬프트에서 0에서 99 사이의 값을 입력합니다. 애플리케이션은 데이터베이스를 쿼리하고, 통계를 계산하고, 결과를 표시합니다. Q 눌러 애플리케이션을 종료합니다.
MongoDB 데이터베이스를 Cosmos DB로 마이그레이션
다음 단계는 MongoDB 데이터베이스를 가져와 Cosmos DB로 전송하는 것입니다.
Cosmos 계정 및 데이터베이스 만들기
Azure Portal로 돌아갑니다.
메뉴에서 + 리소스 만들기를 선택합니다.
새 페이지의 Marketplace 검색 상자에 *Azure Cosmos DB입력한 다음 Enter 키를 누릅니다.
Azure Cosmos DB 페이지에서 생성를 선택합니다.
Azure Cosmos DB 계정 만들기 페이지에서 다음 설정을 입력합니다.
재산 가치 리소스 그룹 mongodbrg 어카운트 이름 mongodb*nnn*. 여기서 nnn 사용자가 선택한 난수입니다. 응용 프로그램 인터페이스 (API) Azure Cosmos DB for MongoDB API 노트북 끄기 위치 MongoDB 서버 및 가상 네트워크에 사용한 것과 동일한 위치 지정 용량 모드 프로비전된 처리량 무료 계층 할인 적용 적용 계정 유형 비프로덕션 버전 3.6 지리적 중복 비활성화 다중 지역 쓰기 비활성화 가용성 영역 비활성화 검토 + 만들기를 선택합니다.
유효성 검사 페이지에서 만들기를 선택하고 Cosmos DB 계정이 배포될 때까지 기다립니다.
Azure Portal 메뉴에서 모든 리소스 선택한 다음 새 Cosmos DB 계정(mongodbnnn)을 선택합니다.
mongodbnnn 페이지에서 데이터 탐색기 선택합니다.
데이터 탐색기 창에서 새 컬렉션 선택합니다.
컬렉션 추가 창에서 다음 설정을 지정합니다.
재산 가치 데이터베이스 ID 새로 만들기 선택한 다음 DeviceData를 입력합니다. 데이터베이스 처리량 할당 선택됨 처리량 10000 컬렉션 ID 온도 스토리지 용량 무제한 분할 키 deviceID 샤드 키가 100바이트보다 큽니다. 선택 취소 상태로 두기 모든 필드에 와일드카드 인덱스 만들기 선택 취소 상태로 두기 분석 저장소 끄기 확인을 선택합니다.
Database Migration Service 만들기
Azure Portal로 다시 전환합니다.
모든 서비스를 클릭하고 구독을 클릭한 다음, 사용자 구독을 클릭합니다.
구독 페이지의 설정에서 리소스 공급자를 클릭합니다.
이름으로 필터링 상자에 DataMigration을 입력한 다음, Microsoft.DataMigration을 클릭합니다.
Microsoft.DataMigration이 등록되어 있지 않은 경우 등록을 클릭하고 상태가 등록됨으로 변경될 때까지 기다립니다. 상태 변경을 보려면 새로 고침을 클릭해야 할 수도 있습니다.
Azure Portal 메뉴에서 + 리소스 생성을 선택합니다.
새 페이지의 Marketplace 검색 상자에 Azure Database Migration Service 입력한 다음 Enter 키를 누릅니다.
Azure Database Migration Service 페이지에서 생성를 선택합니다.
Migration Service 만들기 페이지에서 다음 설정을 입력합니다.
재산 가치 리소스 그룹 mongodbrg 서비스 이름 MongoDBMigration 위치 전에 사용한 동일한 위치 선택 서비스 모드 Azure 가격 책정 계층 표준: vCore 1개 다음: 네트워킹을 선택합니다.
네트워킹 페이지에서 databasevnet/default를 선택한 다음, 검토 + 만들기를 선택합니다.
만들기선택하고 계속하기 전에 서비스가 배포될 때까지 기다립니다. 이 작업은 약 10분이 걸릴 수 있습니다.
새 마이그레이션 프로젝트 만들기 및 실행
Azure Portal 메뉴에서 리소스 그룹을 선택합니다.
리소스 그룹 창에서 mongodbrg 선택합니다.
mongodbrg 창에서 MongoDBMigration선택합니다.
MongoDBMigration 페이지에서 + 새 마이그레이션 프로젝트선택합니다.
새 마이그레이션 프로젝트 페이지에서 다음 설정을 입력합니다.
재산 가치 프로젝트 이름 MigrateTemperatureData 원본 서버 유형 MongoDB 대상 서버 유형 Cosmos DB(MongoDB API) 활동 유형 선택 오프라인 데이터 마이그레이션 활동 만들기 및 실행 선택
마이그레이션 마법사 시작되면 원본 세부 정보 페이지에서 다음 세부 정보를 입력합니다.
재산 가치 모드 표준 모드 원본 서버 이름 이전에 기록한 mongodbserver-ip IP 주소의 값을 지정합니다. 서버 포트 8080 사용자 이름 관리자 암호 Pa55w.rd SSL 필요 선택 취소됨 다음을 선택합니다: 대상 선택.
대상 선택 페이지에서 다음 세부 정보를 입력합니다.
재산 가치 모드 Cosmos DB 대상을 선택 Comos DB 이름 선택 mongodb*nnn* 연결 문자열 Cosmos DB 계정에 대해 생성된 연결 문자열 수락 다음: 데이터베이스 설정선택합니다.
데이터베이스 설정 페이지에서 다음 세부 정보를 입력합니다.
재산 가치 원본 데이터베이스 DeviceData 대상 데이터베이스 DeviceData 처리량(RU/초) 1000 컬렉션 정리 이 상자 비우기 다음: 컬렉션 설정선택합니다.
컬렉션 설정 페이지에서 DeviceData 데이터베이스의 드롭다운 화살표를 선택하고 다음 세부 정보를 입력합니다.
재산 가치 이름 온도 대상 컬렉션 온도 처리량(RU/초) 1000 샤드 키 deviceID 고유한 비워 둠 다음: 마이그레이션 요약선택합니다.
마이그레이션 요약 페이지의 활동 이름 필드에 mongodb-migration을 입력한 다음, 마이그레이션 시작을 선택합니다.
mongodb 마이그레이션 페이지에서 마이그레이션이 완료될 때까지 30초마다 새로 고침 선택합니다. 처리된 문서 수를 확인합니다.
마이그레이션에 성공했는지 확인
Azure Portal 메뉴에서 모든 리소스 선택합니다.
모든 리소스 페이지에서 mongodbnnn선택합니다.
mongodb*nnn 페이지에서 데이터 탐색기 선택합니다.
Data Explorer 창에서 DeviceData 데이터베이스를 확장하고 Temperatures 컬렉션을 확장한 다음 문서 선택합니다.
문서 창에서 문서 목록을 스크롤합니다. 각 문서에 대한 문서 ID(_id)와 분할 키(/deviceID)가 표시됩니다.
문서를 선택합니다. 문서의 세부 정보를 확인할 수 있습니다. 일반적인 문서는 다음과 같습니다.
{ "_id" : ObjectId("5ce8104bf56e8a04a2d0929a"), "deviceID" : "Device 83", "temperature" : 19.65268837271849, "time" : 636943091952553500 }문서 탐색기 창의 도구 모음에서 새 셸 선택합니다.
Shell 1 창의 > 프롬프트에서 다음 명령을 입력한 다음 Enter 키를 누릅니다.
db.Temperatures.count()이 명령은 Temperatures 컬렉션의 문서 수를 표시합니다. 마이그레이션 마법사에서 보고한 번호와 일치해야 합니다.
다음 명령을 입력한 다음 Enter 키를 누릅니다.
db.Temperatures.find({deviceID: "Device 99"})이 명령은 디바이스 99에 대한 문서를 가져오고 표시합니다.
Cosmos DB를 사용하도록 기존 애플리케이션 다시 구성 및 실행
마지막 단계는 Cosmos DB에 연결하기 위해 기존 MongoDB 애플리케이션을 다시 구성하고 여전히 작동하는지 확인하는 것입니다. 이렇게 하려면 애플리케이션이 데이터베이스에 연결하는 방식을 수정해야 하지만 애플리케이션의 논리는 변경되지 않은 상태로 유지되어야 합니다.
mongodbnnn 창의 설정아래에서 연결 문자열선택합니다.
mongodbnnn 연결 문자열 페이지에서 다음 설정을 기록해 둡니다.
- 호스트
- 사용자 이름
- 기본 암호
Cloud Shell 창(세션 시간이 초과된 경우 다시 연결)으로 돌아가서 migration-workshop-apps/MongoDeviceDataCapture/DeviceDataQuery 폴더로 이동합니다.
cd ~/migration-workshop-apps/MongoDeviceDataCapture/DeviceDataQuery코드 편집기에서 App.config 파일을 엽니다.
code App.config파일의 MongoDB 설정 섹션에서 기존 설정을 주석 처리합니다.
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>파일을 저장한 다음 코드 편집기를 닫습니다.
코드 편집기를 사용하여 Program.cs 파일을 엽니다.
code Program.csConnectToDatabase 메서드까지 아래로 스크롤합니다.
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을 사용합니다.
파일을 저장한 다음 코드 편집기를 닫습니다.
애플리케이션을 다시 빌드하고 실행합니다.
dotnet build dotnet run장치 번호 입력 프롬프트에서 0에서 99 사이의 디바이스 번호를 입력합니다. 애플리케이션은 Cosmos DB 데이터베이스에 저장된 데이터를 사용하는 경우를 제외하고 이전과 정확하게 실행되어야 합니다.
Cosmos DB에서 쿼리 성능 향상
Cosmos DB를 사용하면 더 많은 인덱스를 추가하여 쿼리 성능을 향상시킬 수 있습니다. deviceID를 집계할 때 해당 필드를 인덱스로 추가하면 쿼리 속도가 빨라집니다.
Azure Portal로 다시 전환합니다.
왼쪽에서 데이터 탐색기 선택합니다.
Data Explorer 창에서 DeviceData 데이터베이스를 확장하고 Temperatures 컬렉션을 확장한 다음 설정선택합니다.

인덱싱 정책선택합니다.
_id 아래에 새 인덱스를 추가하고, 정의에 deviceID를 입력한 후, 유형으로 단일 필드를 선택합니다.
저장 선택하여 새 인덱스 추가
Cloud Shell로 돌아가서 쿼리를 다시 시도하고 애플리케이션에서 향상된 응답을 확인합니다.
다른 디바이스 번호로 애플리케이션을 테스트합니다. Q 입력하여 완료합니다.
MongoDB 데이터베이스를 Cosmos DB로 마이그레이션하고 새 Cosmos DB 데이터베이스에 연결하도록 기존 MongoDB 애플리케이션을 다시 구성했습니다.
생성된 리소스 정리
중요합니다
자신의 개인 구독에서 이러한 단계를 수행한 경우 리소스를 개별적으로 삭제할 수도 있고 리소스 그룹을 삭제하여 전체 리소스 세트를 삭제할 수도 있습니다. 리소스를 실행 상태로 남겨두면 비용이 발생할 수 있습니다.
Cloud Shell에서 다음 명령을 실행하여 리소스 그룹을 삭제합니다.
az group delete --name mongodbrg