이 빠른 시작에서는 Python을 사용하여 기본 Azure DocumentDB 애플리케이션을 만듭니다. Azure DocumentDB는 애플리케이션이 클라우드에 문서를 저장하고 공식 MongoDB 드라이버를 사용하여 액세스할 수 있는 NoSQL 데이터 저장소입니다. 이 가이드에서는 Python을 사용하여 Azure DocumentDB 클러스터에서 문서를 만들고 기본 작업을 수행하는 방법을 보여 줍니다.
필수 조건
Azure 구독
- Azure 구독이 없는 경우 체험 계정 만들기
- Python 3.12 이상
Azure DocumentDB 클러스터 만들기
시작하려면 먼저 NoSQL 데이터를 저장하고 관리하기 위한 기초 역할을 하는 Azure DocumentDB 클러스터를 만들어야 합니다.
Azure Portal(https://portal.azure.com)에 로그인합니다.
Azure Portal 메뉴 또는 홈 페이지에서 리소스 만들기를 선택합니다.
새 페이지에서 Azure DocumentDB를 검색하여 선택합니다.
Azure DocumentDB 클러스터 만들기 페이지 및 기본 사항 섹션 내에서 클러스터 계층 섹션 내에서 구성 옵션을 선택합니다.
크기 조정 페이지에서 이러한 옵션을 구성한 다음 저장을 선택하여 클러스터 계층에 대한 변경 내용을 유지합니다.
가치 클러스터 계층 M30 tier, 2 vCore, 8-GiB RAM샤드당 스토리지 128 GiB
기본 사항 섹션으로 돌아가서 다음 옵션을 구성합니다.
가치 Subscription Azure 구독 선택 리소스 그룹 새 리소스 그룹을 만들거나 기존 리소스 그룹을 선택합니다. 클러스터 이름 전역적으로 고유한 이름 입력 위치 구독에 대해 지원되는 Azure 지역 선택 MongoDB 버전 8.0선택관리자 사용자 이름 사용자 관리자로 클러스터에 액세스하는 사용자 이름 만들기 암호 사용자 이름과 연결된 고유한 암호 사용
팁 (조언)
사용자 이름 및 암호에 사용하는 값을 기록합니다. 이러한 값은 이 가이드의 뒷부분에서 사용됩니다. 유효한 값에 대한 자세한 내용은 클러스터 제한 사항을 참조하세요.
다음: 네트워킹을 선택합니다.
네트워킹 탭의 방화벽 규칙 섹션에서 다음 옵션을 구성합니다.
가치 연결 방법 Public accessAzure 내의 Azure 서비스 및 리소스에서 이 클러스터로의 공용 액세스 허용 활성화됨 + 현재 클라이언트 IP 주소 추가를 선택하여 현재 클라이언트 디바이스에 대한 방화벽 규칙을 추가하여 클러스터에 대한 액세스 권한을 부여합니다.
팁 (조언)
대부분의 회사 환경에서는 VPN 또는 다른 회사 네트워크 설정으로 인해 개발자 컴퓨터 IP 주소가 숨겨집니다. 이러한 경우 IP 주소 범위를 방화벽 규칙으로 추가하여
0.0.0.0-255.255.255.255모든 IP 주소에 대한 액세스를 일시적으로 허용할 수 있습니다. 이 방화벽 규칙은 연결 테스트 및 개발의 일부로 일시적으로만 사용합니다.Review + create를 선택합니다.
제공한 설정을 검토한 다음, 만들기를 선택합니다. 클러스터를 만드는 데 몇 분이 걸립니다. 리소스 배포가 완료되기를 기다립니다.
마지막으로 리소스로 이동을 선택하여 포털에서 Azure DocumentDB 클러스터로 이동합니다.
클러스터 자격 증명 가져오기
클러스터에 연결하는 데 사용하는 자격 증명을 가져옵니다.
클러스터 페이지의 리소스 메뉴에서 연결 문자열 옵션을 선택합니다.
연결 문자열 섹션에서 연결 문자열 필드의 값을 복사하거나 기록합니다.
중요합니다
포털의 연결 문자열에는 암호 값이 포함되지 않습니다. 자리 표시자를 클러스터를 <password> 만들 때 입력한 자격 증명으로 바꾸거나 대화형으로 암호를 입력해야 합니다.
프로젝트 시작
새 Python 프로젝트를 만들고 현재 디렉터리에 가상 환경을 설정합니다.
빈 디렉터리에서 시작합니다.
현재 디렉터리에서 터미널을 엽니다.
가상 환경을 만들고 활성화합니다.
python -m venv venv venv\Scripts\activate
클라이언트 라이브러리 설치
클라이언트 라이브러리는 PyPI에서 pymongo 패키지로 제공됩니다.
pip를 사용하여 MongoDB Python 드라이버를 설치합니다.
pip install pymongo애플리케이션 코드에 이름이 지정된
main.py새 Python 파일을 만듭니다.필요한 모듈을 애플리케이션 코드로 가져옵니다.
from pymongo import MongoClient from pymongo.errors import ConnectionFailure import sys
개체 모델
| 이름 | Description |
|---|---|
MongoClient |
MongoDB에 연결하는 데 사용되는 형식입니다. |
Database |
클러스터의 데이터베이스를 나타냅니다. |
Collection |
클러스터의 데이터베이스 내 컬렉션을 나타냅니다. |
코드 예제
이 애플리케이션의 코드는 adventureworks라는 이름의 데이터베이스와 products라는 이름의 컬렉션에 연결됩니다. 컬렉션에는 products 이름, 범주, 수량, 고유 식별자 및 각 제품에 대한 판매 플래그와 같은 세부 정보가 포함됩니다. 여기서 코드 샘플은 컬렉션을 사용할 때 가장 일반적인 작업을 수행합니다.
클라이언트 인증
먼저 기본 연결 문자열을 사용하여 클라이언트에 연결합니다.
main 함수를 만들고 연결 문자열을 설정합니다. 를
<your-cluster-name><your-username>실제 클러스터 정보로 대체<your-password>합니다.def main(): try: # Connection string for Azure DocumentDB cluster connection_string = "mongodb+srv://<your-username>:<your-password>@<your-cluster-name>.global.mongocluster.cosmos.azure.com/?tls=true&authMechanism=SCRAM-SHA-256&retrywrites=false&maxIdleTimeMS=120000" # Create a new client and connect to the server client = MongoClient(connection_string)MongoDB 클라이언트에 연결하고 연결을 확인합니다.
# Ping the server to verify connection client.admin.command('ping') print("Successfully connected and pinged Azure DocumentDB")
컬렉션 가져오기
이제 데이터베이스 및 컬렉션을 가져옵니다. 데이터베이스 및 컬렉션이 아직 없는 경우 드라이버를 사용하여 자동으로 만듭니다.
데이터베이스에 대한 참조를 가져옵니다.
# Get database reference database = client["adventureworks"] print(f"Connected to database: {database.name}")데이터베이스 내의 컬렉션에 대한 참조를 가져옵니다.
# Get collection reference collection = database["products"] print("Connected to collection: products")
문서 만들기
그런 다음 컬렉션 내에 몇 가지 새 문서를 만듭니다. 문서를 업서트하여 동일한 고유 식별자를 사용한 기존 문서가 이미 존재하는 경우에는 해당 문서를 대체합니다.
샘플 제품 문서를 만듭니다.
# Create sample products products = [ { "_id": "00000000-0000-0000-0000-000000004018", "name": "Windry Mittens", "category": "apparel-accessories-gloves-and-mittens", "quantity": 121, "price": 35.00, "sale": False, }, { "_id": "00000000-0000-0000-0000-000000004318", "name": "Niborio Tent", "category": "gear-camp-tents", "quantity": 140, "price": 420.00, "sale": True, } ]upsert 작업을 사용하여 문서를 삽입합니다.
# Insert documents with upsert for product in products: filter_doc = {"_id": product["_id"]} collection.replace_one(filter_doc, product, upsert=True) print(f"Upserted product: {product['name']}")
문서 검색
다음으로 지점 읽기 작업을 수행하여 컬렉션에서 특정 문서를 검색합니다.
ID별로 특정 문서를 찾는 필터를 정의합니다.
# Retrieve a specific document by ID filter_doc = {"_id": "00000000-0000-0000-0000-000000004018"}쿼리를 실행하고 결과를 검색합니다.
retrieved_product = collection.find_one(filter_doc) if retrieved_product: print(f"Retrieved product: {retrieved_product['name']} - ${retrieved_product['price']}") else: print("Product not found")
쿼리 문서
마지막으로 MQL(MongoDB 쿼리 언어)을 사용하여 여러 문서를 쿼리합니다.
쿼리를 정의하여 특정 조건과 일치하는 문서를 찾습니다.
# Query for products on sale sale_filter = {"sale": True} sale_products = list(collection.find(sale_filter))결과를 반복하여 일치하는 문서를 표시합니다.
print("Products on sale:") for product in sale_products: print(f"- {product['name']}: ${product['price']:.2f} (Category: {product['category']})") except ConnectionFailure as e: print(f"Could not connect to MongoDB: {e}") sys.exit(1) except Exception as e: print(f"An error occurred: {e}") sys.exit(1) finally: client.close() if __name__ == "__main__": main()
Visual Studio Code를 사용하여 데이터 탐색
Visual Studio Code의 DocumentDB 확장을 사용하여 데이터 쿼리, 삽입, 업데이트 및 삭제를 비롯한 핵심 데이터베이스 작업을 수행합니다.
Visual Studio Code를 엽니다.
확장 보기로 이동한 후 용어를
DocumentDB검색하세요. VS Code용 DocumentDB 확장을 찾습니다.확장에 대한 설치 단추를 선택합니다. 설치가 완료되기를 기다립니다. 메시지가 표시되면 Visual Studio Code를 다시 로드합니다.
작업 표시줄에서 해당 아이콘을 선택하여 DocumentDB 확장으로 이동합니다.
DocumentDB 연결 창에서 + 새 연결...을 선택합니다.
대화 상자에서 서비스 검색 을 선택한 다음 , Azure DocumentDB - Azure 서비스 검색을 선택합니다.
Azure 구독 및 새로 만든 Azure DocumentDB 클러스터를 선택합니다.
팁 (조언)
대부분의 회사 환경에서는 VPN 또는 다른 회사 네트워크 설정으로 인해 개발자 컴퓨터 IP 주소가 숨겨집니다. 이러한 경우 IP 주소 범위를 방화벽 규칙으로 추가하여
0.0.0.0-255.255.255.255모든 IP 주소에 대한 액세스를 일시적으로 허용할 수 있습니다. 이 방화벽 규칙은 연결 테스트 및 개발의 일부로 일시적으로만 사용합니다. 자세한 내용은 방화벽 구성을 참조하세요.DocumentDB 연결 창으로 돌아가서 클러스터의 노드를 확장하고 기존 문서 및 컬렉션 노드로 이동합니다.
컬렉션의 상황에 맞는 메뉴를 열고 DocumentDB 스크랩북 새 DocumentDB 스크랩북>을 선택합니다.
다음 MQL(MongoDB 쿼리 언어) 명령을 입력한 다음 모두 실행을 선택합니다. 명령의 출력을 관찰합니다.
db.products.find({ price: { $gt: 200 }, sale: true }) .sort({ price: -1 }) .limit(3)
자원을 정리하세요
Azure DocumentDB 클러스터를 완료하면 만든 Azure 리소스를 삭제하여 더 많은 요금이 발생하지 않도록 할 수 있습니다.
Azure Portal 검색 창에서 리소스 그룹을 검색하고 선택합니다.
목록에서 이 빠른 시작에 사용한 리소스 그룹을 선택합니다.
리소스 그룹 페이지에서 리소스 그룹 삭제를 선택합니다.
삭제 확인 대화 상자에서 리소스 그룹의 이름을 입력하여 삭제할 것인지 확인합니다. 마지막으로 삭제를 선택하여 리소스 그룹을 영구적으로 삭제합니다.