AWS

AWS DocumentDB(MongoDB 호환)

misankim 2023. 3. 16. 00:30

NoSQL DB 중 도큐먼트 형태의 DB인 MongoDB와 호환되는 AWS 관리형 서비스인 DocumentDB에 대해 간단히 소개해드립니다.

도큐먼트 데이터베이스에 대해

AWS DocumentDB의 특징에 대해 알아보기 전에 도큐먼트 데이터베이스인 MongoDB에 대해 알아보겠습니다. MySQL, PostgreSQL, MSSQL과 같이 관계형 데이터베이스의 경우 아래와 같이 컬럼과 레코드의 집합인 테이블로 이루어져 있습니다. 관계형 데이터베이스에서 테이블의 모습은 표의 모습과 유사한 형태를 가지고 있습니다.

반면 도큐먼트 데이터베이스의 경우 아래와 같이 json 형태의 데이터를 저장하며, 관계형 데이터베이스와 같이 정형화된 형태가 아닌 json 형태로 자유롭게 데이터 입력이 가능합니다.


관계형 데이터베이스와 도큐먼트 데이터베이스에서 사용하는 용어의 차이는 아래와 같습니다.

관계형 데이터베이스와 달리 도큐먼트 데이터베이스는 스키마(데이터베이스의 자료 구조, 표현, 관계를 정의한 구조)를 가지고 있지 않으며, 빠른 처리 속도, 샤딩을 쉽게 지원하여 스케일 아웃에 용이, 데이터 형식의 유연함 등의 장점이 있습니다. 하지만 데이터의 무결성을 보장하지 않는 점, 데이터간 관계를 정의하기 어려운 점 등의 단점도 있습니다.

AWS DocumentDB 의 구조

DocumentDB는 클러스터로 생성되며, 아래와 같이 클러스터 엔드포인트와 읽기 엔드포인트가 별도로 있는 구조입니다. 때문에 읽기와 쓰기 워크로드를 분리할 수 있는 특징이 있습니다.

이러한 특징은 오로라 DB 클러스터의 스토리지 구조와 유사한 것을 확인할 수 있습니다.

AWS DocumentDB 클러스터 생성

DocumentDB 클러스터 생성 시 인스턴스의 갯수는 최소 1개에서 최대 16개까지 생성할 수 있습니다. 인스턴스 개수가 2개 이상인 경우 1개의 쓰기 인스턴스를 가지며, 나머지 인스턴스는 읽기전용 복제본으로 생성됩니다. 인스턴스 개수의 경우 클러스터 생성 이후에 추가 인스턴스를 생성하거나, 기존 인스턴스를 삭제 가능합니다. 오로라 DB와 유사하게 디스크 사용량을 미리 지정하는 것이 아닌 사용함에 따라 자동으로 증가하기 때문에 디스크 사용량을 설정하는 옵션은 없습니다.

RDS와 동일하게 KMS를 통한 암호화를 지원하며, 클러스터 생성 시 클러스터 엔드포인트와 읽기 엔드포인트가 별도로 구성된 것을 확인할 수 있습니다. 통신을 위해서는 TCP 27017 포트를 사용하며, 포트는 변경 가능합니다.

또한 인스턴스 추가 시 오로라 DB와 같이 추가할 인스턴스의 타입을 기존 인스턴스들과 다르게도 선택 가능합니다.

클러스터 연결을 위한 가이드가 제시되어 있습니다. EC2 인스턴스를 생성하여 연결해보겠습니다.

mongo CLI를 통해 접속 시 정상적으로 접속되는 것을 확인할 수 있습니다.

테스트 데이터를 입력한 뒤, find 매소드를 이용하여 저장된 데이터를 확인해봅니다.

결론

대부분 데이터베이스하면 관계형 데이터베이스를 생각하지만 여러 NoSQL 데이터베이스 중 구성하려는 서비스에 적합한 NoSQL 데이터베이스를 관계형 데이터베이스와 혼합하여 아키텍쳐를 구성하면 저장하려는 데이터의 특성에 따라 더욱 효율적으로 데이터를 처리할 수 있을 것 같다는 생각을 했습니다.