Amazon DocumentDB의 MongoDB 호환성 - Amazon DocumentDB

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

Amazon DocumentDB의 MongoDB 호환성

Amazon DocumentDB는 MongoDB 4.0과 MongoDB 5.0을 포함한 MongoDB 호환을 지원합니다. MongoDB 호환은 MongoDB 데이터베이스에서 현재 이미 사용하고 있는 애플리케이션, 드라이버 및 도구의 대다수를 거의 변경하지 않고 Amazon DocumentDB에서 사용할 수 있음을 의미합니다. 이 섹션에서는 MongoDB와의 Amazon DocumentDB 호환성에 대해 알아야 할 모든 것을 설명합니다. 여기에는 새로운 기능과 특성, 시작, 마이그레이션 경로 및 기능 차이 등이 포함됩니다.

MongoDB 5.0 호환성

Amazon DocumentDB 5.0의 새로운 기능

Amazon DocumentDB 5.0은 스토리지 제한 및 클라이언트 측 필드 레벨 암호화를 포함하는 새로운 기능과 특성을 소개합니다. 아래 요약은 Amazon DocumentDB 5.0에서 도입된 몇 가지 주요 특성을 소개합니다. 새로운 기능의 전체 목록을 보려면 릴리스 정보 섹션을 참조하세요.

  • 인스턴스 기반의 모든 Amazon DocumentDB 클러스터 및 샤드 기반의 탄력적 클러스터에 대해 128TiB로 스토리지 제한을 높였습니다.

  • Amazon DocumentDB 5.0 Engine Version 3.0.775) 소개

    • MongoDB 5.0 API 드라이버 지원

    • 클라이언트 측 FLE(Field Level Encryption)를 지원합니다. 이제 Amazon DocumentDB 클러스터에 데이터를 쓰기 전에 클라이언트 측에서 필드를 암호화할 수 있습니다. 자세한 내용은 클라이언트 측 필드 수준 암호화를 참조하세요.

    • 새 집계 연산자:$dateAdd, $dateSubtract

    • 연산자를 사용한 $elemMatch 인덱스 지원. 따라서 쿼리가 $elemMatch이면 인덱스 스캔이 발생합니다.

Amazon DocumentDB는 모든 MongoDB 5.0 기능을 지원하지는 않습니다. Amazon DocumentDB 5.0을 구축할 당시에는 고객이 가장 많이 구축하라고 요청한 기능과 특성을 다시 연구했습니다. 앞으로도 고객들이 구축을 요청하는 내용을 바탕으로 MongoDB 5.0 기능을 추가할 예정입니다. 지원되는 API의 최신 목록은 Amazon DocumentDB에서 지원되는 MongoDB APIs, 작업 및 데이터 유형 섹션을 참조하세요.

Amazon DocumentDB 5.0 시작하기

Amazon DocumentDB 5.0을 시작하려면 시작 가이드를 참조하세요. AWS Management Console 또는 AWS SDK, AWS CLI 또는 AWS CloudFormation을 사용하여 새 Amazon DocumentDB 5.0 클러스터를 만들 수 있습니다. Amazon DocumentDB에 연결할 경우 MongoDB 5.0 이상과 호환되는 MongoDB 드라이버 또는 유틸리티를 사용해야 합니다.

참고

AWS SDK, AWS CLI, 또는 AWS CloudFormation을 이용할 때, 엔진 버전은 기본적으로 5.0.0으로 설정됩니다. 새 Amazon DocumentDB 4.0 클러스터 또는 engineVersion = 3.6.0를 생성하거나 새 Amazon DocumentDB 3.6 클러스터를 생성하려면 engineVersion = 4.0.0 파라미터를 명시적으로 지정해야 합니다. 지정된 Amazon DocumentDB 클러스터의 경우 AWS CLI를 사용해 describe-db-clusters를 직접적으로 호출하여 클러스터 버전을 확인하거나 Amazon DocumentDB 관리 콘솔을 사용하여 특정 클러스터의 엔진 버전 번호를 확인할 수 있습니다.

Amazon DocumentDB 5.0은 클러스터에 대해 r6gt4.medium 인스턴스 유형과 같은 Amazon EC2 Graviton2 프로세서를 지원하며 모든 지원 리전에서 사용할 수 있습니다. 요금에 대한 자세한 내용은 Amazon DocumentDB(MongoDB 호환) 요금을 참조하세요.

Amazon DocumentDB 4.0으로 업그레이드 또는 마이그레이션

AWS DMS 또는 mongodump, mongorestore, mongoimport, mongoexport와 같은 유틸리티를 사용하여 MongoDB 3.6 또는 MongoDB 4.0에서 Amazon DocumentDB 5.0으로 마이그레이션할 수 있습니다. 마이그레이션 방법에 대한 지침은 AWS Database Migration Service을 사용하여 Amazon DocumentDB 클러스터를 업그레이드하기 섹션을 참조하세요.

기능적 차이

Amazon DocumentDB 4.0 및 5.0 간의 기능적 차이

Amazon DocumentDB 5.0 릴리스는 Amazon DocumentDB 3.6 및 Amazon DocumentDB 4.0과 비교해 다음과 같은 기능적 차이가 있습니다.

  • 이제 백업 기본 제공 역할이 serverStatus를 지원합니다. 작업 - 백업 역할을 가진 개발자 및 응용프로그램은 Amazon DocumentDB 클러스터의 상태에 대한 통계를 수집할 수 있습니다.

  • replSetGetConfig 출력에서 SecondaryDelaySecs 필드가 slaveDelay를 대체합니다.

  • hello 명령이 isMaster를 대체함 - hello는 Amazon DocumentDB 클러스터의 역할을 설명하는 문서를 반환합니다.

  • Amazon DocumentDB 5.0은 이제 첫 번째 중첩 수준에서 $elemMatch 연산자를 사용한 인덱스 스캔을 지원합니다. 쿼리 전용 필터에 한 레벨의 $elemMatch 필터가 있는 경우 인덱스 스캔이 지원되지만 중첩된 $elemMatch 쿼리가 포함된 경우에는 필터가 지원되지 않습니다.

    예를 들어, Amazon DocumentDB 5.0에서 $elemMatch 연산자를 중첩 수준에 포함하면 Amazon DocumentDB 4.0에서처럼 값이 반환되지 않습니다.

    db.foo.insert( [ {a: {b: 5}}, {a: {b: [5]}}, {a: {b: [3, 7]}}, {a: [{b: 5}]}, {a: [{b: 3}, {b: 7}]}, {a: [{b: [5]}]}, {a: [{b: [3, 7]}]}, {a: [[{b: 5}]]}, {a: [[{b: 3}, {b: 7}]]}, {a: [[{b: [5]}]]}, {a: [[{b: [3, 7]}]]} ]); // DocumentDB 5.0 > db.foo.find({a: {$elemMatch: {b: {$elemMatch: {$lt: 6, $gt: 4}}}}}, {_id: 0}) { "a" : [ { "b" : [ 5 ] } ] } // DocumentDB 4.0 > db.foo.find({a: {$elemMatch: {b: {$elemMatch: {$lt: 6, $gt: 4}}}}}, {_id: 0}) { "a" : [ { "b" : [ 5 ] } ] } { "a" : [ [ { "b" : [ 5 ] } ] ] }
  • Amazon DocumentDB 4.0의 "$" 프로젝션은 모든 필드가 포함된 모든 문서를 반환합니다. Amazon DocumentDB 5.0에서는 "$" 프로젝션이 있는 find 명령은 "$" 프로젝션과 일치하는 필드만 포함된 쿼리 매개 변수와 일치하는 문서를 반환합니다.

  • Amazon DocumentDB 5.0에서 $regex$options 쿼리 매개 변수가 있는 find 명령은 "$regex$options 모두에서 옵션을 설정할 수 없습니다"라는 오류를 반환합니다.

  • Amazon DocumentDB 5.0에서 $indexOfCP는 이제 다음과 같은 경우에 "-1"을 반환합니다.

    • 문자열 표현식에서 하위 문자열을 찾을 수 없음, 또는

    • 시작이 끝보다 큰 숫자임, 또는

    • 시작이 문자열의 바이트 길이보다 큰 숫자임.

  • Amazon DocumentDB 4.0에서 $indexOfCP는 시작 위치가 끝 또는 문자열의 바이트 길이보다 큰 경우 "0"을 반환합니다.

  • Amazon DocumentDB 5.0에서 _id fields의 프로젝션 연산(예: {"_id.nestedField" : 1})은 프로젝션 필드만 포함하는 문서를 반환합니다. 단, Amazon DocumentDB 4.0에서는 중첩 필드 프로젝션 명령이 문서를 필터링하지 않습니다.

MongoDB 4.0 호환성

Amazon DocumentDB 4.0 특성

Amazon DocumentDB 4.0에는 ACID 트랜잭션과 스트림 변경을 위한 개선 사항을 포함한 많은 새로운 기능과 특성이 도입되었습니다. 아래 요약은 Amazon DocumentDB 4.0에서 소개된 주요 기능 중 일부 특성을 보여줍니다. 기능의 전체 목록을 보려면 릴리스 정보 섹션을 참조하세요.

  • ACID 트랜잭션: Amazon DocumentDB는 이제 여러 문서, 명령문, 컬렉션 및 데이터베이스에서 트랜잭션을 수행하는 기능을 지원합니다. 트랜잭션은 Amazon DocumentDB 클러스터 내의 하나 이상의 문서에서 원자적이고 일관적이며 격리되고 내구성이 뛰어난(ACID) 작업을 수행할 수 있도록 하여 애플리케이션 개발을 단순화합니다. 자세한 내용은 Amazon DocumentDB의 트랜잭션 섹션을 참조하세요.

  • 변경 스트림: 이제 클러스터 수준(client.watch() 또는 mongo.watch())과 데이터베이스(db.watch())에서 변경 스트림을 열 수 있고, 변경 스트림 커서를 열도록 startAtOperationTime을 지정할 수 있으며, 마지막으로 변경 스트림 보존 기간을 7일(이전에는 24시간)까지 연장할 수 있습니다. 자세한 내용은 Amazon DocumentDB에서 변경 스트림 사용 섹션을 참조하세요.

  • AWS Database Migration Service(AWS DMS): 이제 AWS DMS를 사용하여 MongoDB 4.0 워크로드를 Amazon DocumentDB로 마이그레이션할 수 있습니다. AWS DMS는 이제 MongoDB 4.0 소스, Amazon DocumentDB 4.0 대상 및 Amazon DocumentDB 3.6과 4.0 간의 업그레이드를 수행하기 위한 Amazon DocumentDB 3.6 소스를 지원합니다. 자세한 내용은 AWS DMS 설명서를 참조하세요.

  • 성능 및 인덱싱: 이제 $lookup을 통한 인덱스를 활용하고, 하나의 필드 또는 하나의 필드와 _id 필드(컬렉션에서 읽을 필요 없이 인덱스에서 직접 제공 가능(가려진 쿼리))를 포함하는 프로젝션이 있는 쿼리를 찾을 수 있으며, findAndModify와 함께 hint()를 실행할 수 있고, $addToSet에 대한 성능 최적화 및 전체 인덱스 크기를 줄일 수 있는 개선 사항이 제공됩니다. 자세한 내용은 릴리스 정보 섹션을 참조하세요.

  • 연산자: Amazon DocumentDB 4.0은 이제 다양한 다음과 같은 새로운 집계 연산자를 지원합니다: $ifNull, $replaceRoot, $setIsSubset, $setInstersection, $setUnion, $setEquals. Amazon DocumentDB에서 지원되는 MongoDB APIs, 작업 및 데이터 유형에서 지원하는 모든 MongoDB API, 작업 및 데이터 유형을 볼 수 있습니다.

  • 역할 기반 액세스 제어(RBAC): 이제 ListCollectionListDatabase 명령을 모두 사용하여 authorizedCollectionsauthorizedDatabases 파라미터를 선택적으로 사용하여 사용자가 listCollectionslistDatabase 역할을 필요로 하지 않고 액세스 권한이 있는 컬렉션 및 데이터베이스를 나열할 수 있습니다. 또한 KillCursor 역할 필요 없이 자신의 커서를 종료할 수 있습니다.

Amazon DocumentDB는 일부 MongoDB 4.0 기능을 지원하지 않습니다. Amazon DocumentDB 4.0을 구축할 때 고객이 가장 많이 구축하도록 요구했던 기능과 특성을 거꾸로 수행했습니다. 앞으로도 고객들이 구축을 요청하는 내용을 바탕으로 MongoDB 4.0 기능을 추가적으로 추가할 예정입니다. 예를 들어, Amazon DocumentDB 4.0은 현재 MongoDB 4.0에 도입된 유형 변환 연산자나 문자열 연산자를 지원하지 않습니다. 지원되는 API의 최신 목록은 Amazon DocumentDB에서 지원되는 MongoDB APIs, 작업 및 데이터 유형 섹션을 참조하세요.

Amazon DocumentDB 4.0 시작하기

Amazon DocumentDB 4.0을 시작하려면 시작 가이드를 참조하세요. AWS Management Console 또는 AWS SDK, AWS CLI 또는 AWS CloudFormation를 사용하여 새 Amazon DocumentDB 4.0 클러스터를 만들 수 있습니다. Amazon DocumentDB에 연결할 경우 MongoDB 4.0 이상과 호환되는 MongoDB 드라이버 또는 유틸리티를 사용해야 합니다.

참고

AWS SDK, AWS CLI, 또는 AWS CloudFormation을 이용할 때, 엔진 버전은 기본적으로 5.0.0으로 설정됩니다. 새 Amazon DocumentDB 4.0 클러스터 또는 engineVersion = 3.6.0를 생성하거나 새 Amazon DocumentDB 3.6 클러스터를 생성하려면 engineVersion = 4.0.0 파라미터를 명시적으로 지정해야 합니다. 지정된 Amazon DocumentDB 클러스터의 경우 를 사용하여 AWS CLI 클러스터 버전을 확인하거나 Amazon DocumentDB 관리 콘솔을 describe-db-clusters 호출하여 특정 클러스터의 엔진 버전 번호를 확인할 수 있습니다.

Amazon DocumentDB 4.0은 클러스터에 대해 r5, r6g, t3.mediumt4g.medium 인스턴스 유형을 지원하며 지원되는 모든 영역에서 사용할 수 있습니다. Amazon DocumentDB 4.0 사용에 대한 추가 요금은 없습니다. 요금에 대한 자세한 내용은 Amazon DocumentDB(MongoDB 호환) 요금을 참조하세요.

Amazon DocumentDB 4.0으로 업그레이드 또는 마이그레이션

AWS DMS 또는 mongodump, mongorestore, mongoimport, mongoexport 등의 유틸리티를 사용하여 MongoDB 3.6 또는 MongoDB 4.0에서 Amazon DocumentDB 4.0으로 마이그레이션할 수 있습니다. 마찬가지로 동일한 도구를 사용하여 Amazon DocumentDB 3.6에서 Amazon DocumentDB 4.0으로 업그레이드할 수 있습니다. 마이그레이션 방법에 대한 지침은 AWS Database Migration Service을 사용하여 Amazon DocumentDB 클러스터를 업그레이드하기 섹션을 참조하세요.

기능적 차이

Amazon DocumentDB 3.6 및 4.0 간의 기능적 차이

Amazon DocumentDB 4.0의 릴리스에서는 Amazon DocumentDB 3.6 과 Amazon DocumentDB 4.0 간에 기능적 차이가 있습니다:

  • 중첩 문서에 대한 프로젝션: Amazon DocumentDB 3.6은 프로젝션을 적용할 때 중첩된 문서의 첫 번째 필드를 고려합니다. 그러나 Amazon DocumentDB 4.0은 하위 문서를 구문 분석하고 각 하위 문서에도 프로젝션을 적용합니다. 예를 들어"a.b.c": 1, 프로젝션이 다음과 같으면 두 버전의 동작은 동일합니다. 하지만 프로젝션이 프로젝션인 {a:{b:{c:1}}} 경우 Amazon DocumentDB 3.6은 프로젝션을 'a'에만 적용하고 'b' 또는 'c'에는 적용하지 않습니다.

  • minKey, maxKey에 대한 동작: Amazon DocumentDB 4.0에서 {x:{$gt:MaxKey}}에 대한 동작은 아무것도 반환하지 않으며, {x:{$lt:MaxKey}}에 대한 동작은 모든 것을 반환합니다.

  • 문서 비교 차이: 하위 문서(예: {"_id" :1, "a" :{"b":1}}b)에서 서로 다른 유형(double, int, long)의 수치를 비교함으로써, 이제 수치 데이터 유형과 문서의 각 수준에 걸쳐 일관된 출력이 제공됩니다.

Amazon DocumentDB 4.0 및 MongoDB 4.0 간의 기능적 차이

다음은 Amazon DocumentDB 4.0 및 MongoDB 4.0 간의 기능적 차이입니다.

  • 경로에서 빈 키로 조회: 컬렉션에 배열 내에 빈 컨테이너가 있는 문서가 포함되어 있고(예:{"x" : [ { "" : 10 }, { "b" : 20 } ]}) 쿼리에 사용된 키가 빈 문자열로 끝나는 경우(예:x.), Amazon DocumentDB는 배열의 모든 문서를 순회하므로 해당 문서를 반환하지만 MongoDB는 해당 문서를 반환하지 않습니다.

  • 경로에서 $setOnInsert$ 함께: $setOnInsert 필드 연산자는 Amazon DocumentDB의 경로에서 $와 함께 작동하지 않으며, 이는 MongoDB 4.0과도 일치합니다.