이 빠른 시작에서는 Java를 사용하여 기본 Azure DocumentDB 애플리케이션을 만듭니다. Azure DocumentDB는 애플리케이션이 클라우드에 문서를 저장하고 공식 MongoDB 드라이버를 사용하여 액세스할 수 있는 NoSQL 데이터 저장소입니다. 이 가이드에서는 Java를 사용하여 Azure DocumentDB 클러스터에서 문서를 만들고 기본 작업을 수행하는 방법을 보여 줍니다.
API 참조 | 소스 코드 | 패키지(Maven)
필수 조건
Azure 구독
- Azure 구독이 없는 경우 체험 계정 만들기
- Java 21 이상
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> 만들 때 입력한 자격 증명으로 바꾸거나 대화형으로 암호를 입력해야 합니다.
프로젝트 시작
현재 디렉터리에 새 Maven 프로젝트를 만듭니다.
빈 디렉터리에서 시작합니다.
현재 디렉터리에서 터미널을 엽니다.
빠른 시작 원형을 사용하여 새 Maven 프로젝트를 만듭니다.
mvn archetype:generate -DgroupId=com.example -DartifactId=azure-documentdb-java-quickstart -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false생성된 프로젝트 디렉터리로 이동합니다.
cd azure-documentdb-java-quickstart프로젝트가 성공적으로 만들어졌도록 프로젝트를 빌드합니다.
mvn compile
클라이언트 라이브러리 설치
클라이언트 라이브러리는 Maven을 통해 아티팩트 mongodb-driver-sync 로 사용할 수 있습니다.
MongoDB Java 드라이버 종속성을 파일에 추가합니다
pom.xml.<dependency> <groupId>org.mongodb</groupId> <artifactId>mongodb-driver-sync</artifactId> <version>5.2.0</version> </dependency>pom.xml 파일을 열고 검토하여 종속성 항목이 있는지 확인합니다.
필요한 패키지를 애플리케이션 코드로 가져옵니다.
import com.mongodb.client.MongoClient; import com.mongodb.client.MongoClients; import com.mongodb.client.MongoCollection; import com.mongodb.client.MongoDatabase; import com.mongodb.client.model.Filters; import com.mongodb.client.model.ReplaceOptions; import org.bson.Document; import org.bson.conversions.Bson; import java.util.Arrays; import java.util.List;
개체 모델
| 이름 | Description |
|---|---|
MongoClient |
MongoDB에 연결하는 데 사용되는 형식입니다. |
MongoDatabase |
클러스터의 데이터베이스를 나타냅니다. |
MongoCollection<Document> |
클러스터의 데이터베이스 내 컬렉션을 나타냅니다. |
코드 예제
이 애플리케이션의 코드는 adventureworks라는 이름의 데이터베이스와 products라는 이름의 컬렉션에 연결됩니다. 컬렉션에는 products 이름, 범주, 수량, 고유 식별자 및 각 제품에 대한 판매 플래그와 같은 세부 정보가 포함됩니다. 여기서 코드 샘플은 컬렉션을 사용할 때 가장 일반적인 작업을 수행합니다.
클라이언트 인증
먼저 기본 연결 문자열을 사용하여 클라이언트에 연결합니다.
main 메서드를 만들고 연결 문자열을 설정합니다. 를
<your-cluster-name><your-username>실제 클러스터 정보로 대체<your-password>합니다.public class App { public static void main(String[] args) { // Connection string for Azure DocumentDB cluster String connectionString = "mongodb+srv://<your-username>:<your-password>@<your-cluster-name>.global.mongocluster.cosmos.azure.com/?tls=true&authMechanism=SCRAM-SHA-256&retrywrites=false&maxIdleTimeMS=120000";MongoDB 클라이언트를 만들고 연결을 확인합니다.
// Create a new client and connect to the server try (MongoClient mongoClient = MongoClients.create(connectionString)) { // Ping the server to verify connection MongoDatabase database = mongoClient.getDatabase("admin"); database.runCommand(new Document("ping", 1)); System.out.println("Successfully connected and pinged Azure DocumentDB");
컬렉션 가져오기
이제 데이터베이스 및 컬렉션을 가져옵니다. 데이터베이스 및 컬렉션이 아직 없는 경우 드라이버를 사용하여 자동으로 만듭니다.
데이터베이스에 대한 참조를 가져옵니다.
// Get database reference MongoDatabase adventureWorksDatabase = mongoClient.getDatabase("adventureworks"); System.out.println("Connected to database: " + adventureWorksDatabase.getName());데이터베이스 내의 컬렉션에 대한 참조를 가져옵니다.
// Get collection reference MongoCollection<Document> productsCollection = adventureWorksDatabase.getCollection("products"); System.out.println("Connected to collection: products");
문서 만들기
그런 다음 컬렉션 내에 몇 가지 새 문서를 만듭니다. 문서를 업서트하여 동일한 고유 식별자를 사용한 기존 문서가 이미 존재하는 경우에는 해당 문서를 대체합니다.
Document 클래스를 사용하여 샘플 제품 문서를 만듭니다.
// Create sample products List<Document> products = Arrays.asList( new Document("_id", "00000000-0000-0000-0000-000000004018") .append("name", "Windry Mittens") .append("category", "apparel-accessories-gloves-and-mittens") .append("quantity", 121) .append("price", 35.00) .append("sale", false), new Document("_id", "00000000-0000-0000-0000-000000004318") .append("name", "Niborio Tent") .append("category", "gear-camp-tents") .append("quantity", 140) .append("price", 420.00) .append("sale", true) );upsert 작업을 사용하여 문서를 삽입합니다.
// Insert documents with upsert for (Document product : products) { Bson filter = Filters.eq("_id", product.getString("_id")); ReplaceOptions options = new ReplaceOptions().upsert(true); productsCollection.replaceOne(filter, product, options); System.out.println("Upserted product: " + product.getString("name")); }
문서 검색
다음으로 지점 읽기 작업을 수행하여 컬렉션에서 특정 문서를 검색합니다.
ID별로 특정 문서를 찾는 필터를 정의합니다.
// Retrieve a specific document by ID Bson filter = Filters.eq("_id", "00000000-0000-0000-0000-000000004018");쿼리를 실행하고 결과를 검색합니다.
Document retrievedProduct = productsCollection.find(filter).first(); if (retrievedProduct != null) { System.out.println("Retrieved product: " + retrievedProduct.getString("name") + " - $" + retrievedProduct.getDouble("price")); } else { System.out.println("Product not found"); }
쿼리 문서
마지막으로 MQL(MongoDB 쿼리 언어)을 사용하여 여러 문서를 쿼리합니다.
쿼리를 정의하여 특정 조건과 일치하는 문서를 찾습니다.
// Query for products on sale Bson saleFilter = Filters.eq("sale", true);커서를 반복하여 일치하는 모든 문서를 검색합니다.
System.out.println("Products on sale:"); for (Document product : productsCollection.find(saleFilter)) { System.out.printf("- %s: $%.2f (Category: %s)%n", product.getString("name"), product.getDouble("price"), product.getString("category")); } } catch (Exception e) { System.err.println("An error occurred: " + e.getMessage()); e.printStackTrace(); } } }
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 검색 창에서 리소스 그룹을 검색하고 선택합니다.
목록에서 이 빠른 시작에 사용한 리소스 그룹을 선택합니다.
리소스 그룹 페이지에서 리소스 그룹 삭제를 선택합니다.
삭제 확인 대화 상자에서 리소스 그룹의 이름을 입력하여 삭제할 것인지 확인합니다. 마지막으로 삭제를 선택하여 리소스 그룹을 영구적으로 삭제합니다.