도큐먼트 데이터베이스는 JSON과 유사한 형식의 문서로 데이터를 저장하고 쿼리하는 데 사용할 수 있는 NoSQL 데이터베이스 유형입니다. JavaScript Object Notation(JSON)은 인간과 기계가 모두 읽을 수 있는 오픈 데이터 교환 형식입니다. 개발 작업 시 코드에서 JSON 문서를 사용하고 도큐먼트 데이터베이스에 직접 저장할 수 있습니다. 문서와 도큐먼트 데이터베이스는 유연하고 반구조화된 계층적 특성이 있기 때문에 애플리케이션의 요구 사항에 따라 발전시킬 수 있습니다.

JSON 도큐먼트 데이터베이스
JSON 도큐먼트 데이터베이스 쿼리

도큐먼트 데이터베이스의 장점은 무엇인가요?

도큐먼트 데이터베이스는 유연한 인덱싱, 강력한 임시 쿼리, 문서 모음에 대한 분석을 지원합니다. 아래에서 이점에 대해 자세히 알아보세요.

개발 용이성

JSON 문서는 대부분의 프로그래밍 언어에서 흔히 사용되는 데이터 유형인 객체에 매핑됩니다. 개발자는 애플리케이션을 빌드할 때 코드에서 직접 문서를 유연하게 만들고 업데이트할 수 있습니다. 즉, 데이터 모델을 미리 만드는 데 소요되는 시간이 줄어듭니다. 따라서 애플리케이션 개발이 더 빠르고 효율적입니다.

유연한 스키마

문서 지향 데이터베이스를 사용하면 동일한 컬렉션 내에 서로 다른 필드를 포함하는 여러 문서를 만들 수 있습니다. 이는 이메일이나 소셜 미디어 게시물처럼 구조화되지 않은 데이터를 저장할 때 유용할 수 있습니다. 그러나 일부 도큐먼트 데이터베이스는 스키마 검증을 제공하므로 구조에 몇 가지 제한을 둘 수 있습니다.

대규모 성능

도큐먼트 데이터베이스는 기본 제공 배포 기능을 제공합니다. 성능에 영향을 주지 않고 여러 서버에 걸쳐 수평적으로 확장할 수 있어 비용 효율적이기도 합니다. 또한 도큐먼트 데이터베이스는 기본 제공 복제 기능을 통해 내결함성과 가용성을 제공합니다.

도큐먼트 데이터베이스의 사용 사례는 무엇인가요?

문서 모델은 콘텐츠 관리, 카탈로그, 센서 관리 등과 같은 사용 사례에 적합합니다. 각 사용 사례에서 각 문서는 고유하며 시간이 지남에 따라 발전합니다.

콘텐츠 관리

도큐먼트 데이터베이스는 블로그 및 비디오 플랫폼과 같은 콘텐츠 관리 애플리케이션을 위한 탁월한 선택입니다. 도큐먼트 데이터베이스를 사용하면 애플리케이션이 추적하는 각 엔터티를 단일 문서로 저장할 수 있습니다. 도큐먼트 데이터베이스는 요구 사항이 변화함에 따라 더욱 직관적으로 애플리케이션을 업데이트할 수 있습니다. 게다가, 데이터 모델을 변경해야 하는 경우에도 영향을 받는 문서만 업데이트하면 됩니다. 스키마를 업데이트하거나 데이터베이스 가동 중단이 필요하지 않습니다.

카탈로그

문서 데이터베이스는 카탈로그 정보를 효율적·효과적으로 저장할 수 있습니다. 예를 들어 전자 상거래 애플리케이션에서 제품의 개별 속성 수는 제품마다 다릅니다. 관계형 데이터베이스에서는 수많은 속성을 관리하는 것이 비효율적이며 읽기 성능에도 영향을 줍니다. 도큐먼트 데이터베이스를 사용하면 각 제품의 속성을 단일 문서로 기술하여 관리가 쉽고 읽기 속도도 빨라집니다. 한 제품의 속성을 변경해도 다른 제품에는 영향을 주지 않습니다.

센서 관리

사물 인터넷(IoT)으로 인해 조직은 센서 및 계량기와 같은 스마트 디바이스에서 정기적으로 데이터를 수집하게 되었습니다. 센서 데이터는 일반적으로 변수 값의 연속적인 스트림으로 들어옵니다. 지연 문제가 있으면 일부 데이터 객체가 불완전하거나 중복되거나 누락될 수 있습니다. 또한 분석을 위해 데이터를 필터링하거나 요약하려면 먼저 대량의 데이터를 수집해야 합니다.

이 경우 문서 스토어가 더 편리합니다. 센서 데이터를 정리하거나 사전 결정된 스키마를 따르지 않고도 있는 그대로 빠르게 저장할 수 있습니다. 또한 필요에 따라 규모를 조정하고 분석이 완료되면 전체 문서를 삭제할 수 있습니다.

도큐먼트 데이터베이스의 작동 방식

도큐먼트 데이터베이스는 데이터를 JSON 형식의 키-값 페어로 저장합니다. 프로그래밍 방식으로 JSON 문서를 읽고 데이터베이스에 쓸 수 있습니다.

JSON 문서 구조

JSON은 3가지 방식으로 데이터를 표현합니다.

키 값

키-값 페어는 중괄호 안에 기록됩니다. 키는 문자열이며 값은 정수, 십진수 또는 부울 같은 모든 데이터 유형일 수 있습니다. 예를 들어 간단한 키-값은 {"year”: 2013}입니다.

배열

배열은 왼쪽([) 및 오른쪽(]) 괄호 안에 정의되는, 순서가 지정된 값 컬렉션입니다. 배열의 항목은 쉼표로 구분됩니다. 예를 들어 {"fruit": ["apple","mango"]}입니다.

객체

객체는 키-값 페어의 컬렉션입니다. 개발자는 기본적으로 JSON 문서를 사용하여 객체를 포함하고 중첩된 페어를 만들 수 있습니다. 예를 들어 {"address": {"country": "USA","state": "Texas"}}입니다.

JSON 문서 예제

다음 예제에서는 JSON 유사 형식 문서로 필름 데이터 세트를 설명합니다.

[
    {
        "year" : 2013,
        "title" : "Turn It Down, Or Else!",
        "info" : {
            "directors" : [ "Alice Smith", "Bob Jones"],
            "release_date" : "2013-01-18T00:00:00Z",
            "rating" : 6.2,
            "genres" : ["Comedy", "Drama"],
            "image_url" : "http://ia.media-imdb.com/images/N/O9ERWAU7FS797AJ7LU8HN09AMUP908RLlo5JF90EWR7LJKQ7@@._V1_SX400_.jpg",
            "plot" : "A rock band plays their music at high volumes, annoying the neighbors.",
            "actors" : ["David Matthewman", "Jonathan G. Neff"]
        }
    },
    {
        "year": 2015,
        "title": "The Big New Movie",
        "info": {
            "plot": "Nothing happens at all.",
            "rating": 0
        }
    }
]

이 JSON 문서에는 간단한 값, 배열 및 객체가 매우 유연하게 들어 있다는 것을 알 수 있습니다. JSON 객체가 포함된 배열을 만들 수도 있습니다. 따라서 문서 지향 데이터베이스를 사용하면 포함된 JSON 객체의 제한 없는 수준의 계층 구조를 만들 수 있습니다. 문서 스토어에 어떤 스키마를 제공할지는 전적으로 사용자에게 달려 있습니다.

도큐먼트 데이터베이스 작업

데이터베이스에 저장된 전체 문서를 만들고, 읽고, 업데이트하고, 삭제할 수 있습니다. 도큐먼트 데이터베이스는 개발자가 다음 작업을 실행할 수 있는 쿼리 언어 또는 API를 제공합니다.

생성

데이터베이스에 문서를 만들 수 있습니다. 각 문서에는 키 역할을 하는 고유한 식별자가 있습니다.

읽기

API 또는 쿼리 언어를 사용하여 문서 데이터를 읽을 수 있습니다. 필드 값 또는 키를 사용하여 쿼리를 실행할 수 있습니다. 데이터베이스에 인덱스를 추가하여 읽기 성능을 높일 수도 있습니다.

업데이트

기존 문서를 유연하게 업데이트할 수 있습니다. 전체 문서를 다시 쓰거나 개별 값을 업데이트할 수 있습니다.

도큐먼트 데이터베이스와 키-값 스토어의 차이점은 무엇인가요?

키-값 데이터베이스는 간단한 키-값 메소드를 사용하여 데이터를 저장하는 NoSQL 데이터베이스입니다. 키를 고유한 식별자로 사용하는 키-값 페어의 컬렉션으로 데이터를 저장합니다. 단순한 객체부터 복잡한 객체에 이르기까지 무엇이든 키와 값이 될 수 있습니다.

문서 지향 데이터베이스는 문자열만 키로 사용될 수 있는 특수한 유형의 키-값 스토어입니다. 또한 문서는 JSON과 같은 표준 또는 XML과 같은 관련 언어를 사용하여 인코딩됩니다. PDF, 이미지 파일 또는 텍스트 문서를 값으로 직접 저장할 수도 있습니다.

문서 스토어를 쿼리할 때 값을 읽거나 값의 일부를 읽을 수 있습니다. 특히 값이 다른 JSON 객체인 경우 더욱 그렇습니다. 예를 들어 {"book": {"id": 1,"price": $10}}이 있는 경우 book.price를 쿼리하면 데이터베이스가 10이라는 값을 반환합니다. 키-값 데이터베이스는 항상 ID 및 가격 정보와 함께 전체 값을 반환합니다.

AWS는 도큐먼트 데이터베이스 요구 사항을 어떻게 지원하나요?

Amazon DocumentDB(MongoDB 호환)는 MongoDB 워크로드를 포함하여 문서를 지원하는 완전관리형 네이티브 JSON 도큐먼트 데이터베이스 서비스입니다. 개발자는 Amazon DocumentDB에서 워크로드를 실행, 관리 및 크기 조정할 때 사용하는 것과 동일한 MongoDB 애플리케이션 코드, 드라이버 및 도구를 사용할 수 있습니다. 기본 인프라 관리에 대한 우려 없이 개선된 성능, 확장성 및 가용성을 활용할 수 있습니다. Amazon DocumentDB를 사용하면 다음을 수행할 수 있습니다.

  • Amazon DocumentDB Elastic 클러스터를 사용하면 성능에 거의 또는 전혀 영향을 주지 않고 기본 인프라를 관리할 필요 없이 초당 수백만 건의 읽기 및 쓰기 요청으로 확장할 수 있습니다.
  • 스토리지와 컴퓨팅이 분리되어 있기 때문에 동일한 기본 스토리지를 공유하는 최대 15개의 읽기 전용 복제본을 사용하여 읽기 성능을 높일 수 있습니다. 복제본 노드에서 쓰기를 수행할 필요가 없습니다.
  • 하드웨어 프로비저닝, 패치, 설정 등 차별화되지 않은 수동 데이터베이스 관리 작업을 라이선싱 비용 없이 자동화합니다.
  • 빠른 로컬 읽기 성능을 지원하는 글로벌 분산 애플리케이션의 경우 Amazon DocumentDB 글로벌 클러스터로 99.99%의 향상된 고가용성을 달성합니다. 
  • 자동 복제, 지속적 백업 및 엄격한 네트워크 격리를 통해 99.99%의 내구성을 달성합니다.
  • 내결함성 및 자가 복구 스토리지, 시점 복구, 연속 백업 등을 통해 뛰어난 안정성과 내구성을 제공합니다. Amazon DocumentDB는 복사본 1개에 대한 요금으로 새로운 쓰기를 6가지 방식으로 복제하여 한 리전 내 3개 AZ에서 데이터를 안정적으로 유지합니다.
  • 기본 저장 시 암호화, 네트워크 격리 및 고급 감사 기능을 통해 매우 안전하고 세분화된 액세스로 리소스 수준 권한을 제어할 수 있는 기능을 제공합니다.
  • SOC(1, 2, 3), PCI DSS, HIPAA 적격 등을 포함한 광범위한 규정 준수 범위를 제공합니다.

지금 무료 계정을 만들어 AWS에서 도큐먼트 데이터베이스를 시작하세요.

Amazon DocumentDB를 사용한 데이터 모델링
Amazon DocumentDB Elastic 클러스터 소개