Azure Cosmos DB에서 API 선택

적용 대상: NoSQL MongoDB Cassandra Gremlin 테이블 PostgreSQL

Azure Cosmos DB는 최신 앱 개발을 위한 완전 관리형 NoSQL, 관계형 및 벡터 데이터베이스입니다. Azure Cosmos DB는 자동 관리, 업데이트 및 패치를 통해 데이터베이스 관리를 직접 수행할 수 있습니다. 또한 용량과 비용을 일치시키기 위해 애플리케이션 요구 사항에 대응하는 비용 효율적인 서버리스 및 자동 확장 옵션으로 용량 관리를 처리합니다.

Azure Cosmos DB의 API

Azure Cosmos DB는 NoSQL, MongoDB, PostgreSQL Cassandra, Gremlin 및 Table을 포함하는 여러 데이터베이스 API를 제공합니다. 이러한 API에서 문서, 키-값, 그래프 및 열 패밀리 데이터 모델을 사용하여 실제 데이터를 모델링할 수 있습니다. 이러한 API를 통해 애플리케이션은 관리 오버헤드 및 스케일링 접근 방식을 사용하지 않고도 여러 다른 데이터베이스 기술처럼 Azure Cosmos DB를 처리할 수 있습니다. 다양한 API를 사용하면 Azure Cosmos DB에서 데이터 모델링 및 쿼리를 위해 이미 보유하고 있는 에코시스템, 도구 및 기술을 사용할 수 있습니다.

모든 API는 스토리지 및 처리량의 자동 스케일링, 유연성을 제공하고 성능을 보장합니다. 최선의 API가 하나만 있는 것이 아니며 애플리케이션을 빌드하기 위해 API 중 하나를 선택할 수 있습니다. 이 문서는 워크로드 및 팀 요구 사항을 기준으로 API를 선택하는 데 도움이 됩니다.

API 선택 시 고려 사항

NoSQL용 API는 Azure Cosmos DB의 기본 기능입니다.

MongoDB, PostgreSQL, Cassandra, Gremlin 및 Table용 API는 오픈 소스 데이터베이스 엔진의 유선 프로토콜을 구현합니다. 이러한 API는 다음 조건에 해당하는 경우에 가장 적합합니다.

  • 기존 MongoDB, PostgreSQL, Cassandra 또는 Gremlin 애플리케이션이 있는 경우
  • 전체 데이터 액세스 계층을 다시 작성하지 않으려는 경우
  • 데이터베이스에 대한 오픈 소스 개발자 에코시스템, 클라이언트 드라이버, 전문 지식 및 리소스를 사용하려는 경우
  • 다음과 같은 Azure Cosmos DB 핵심 기능을 사용하려는 경우:
    • 글로벌 분포
    • 스토리지 및 처리량의 탄력적 확장
    • 대규모 고성능
    • 짧은 대기 시간
    • 트랜잭션 및 분석 워크로드를 실행하는 기능
    • 완전 관리형 플랫폼
  • 다중 클라우드 환경에서 현대화된 앱을 개발하는 경우

이러한 API를 사용하여 새 애플리케이션을 빌드하거나 기존 데이터를 마이그레이션할 수 있습니다. 마이그레이션된 앱을 실행하려면 애플리케이션의 연결 문자열을 변경하고 이전처럼 계속 실행합니다. 기존 앱을 마이그레이션할 때는 이러한 API의 기능 지원을 평가해야 합니다.

워크로드에 따라 요구 사항에 맞는 API를 선택해야 합니다. 다음 이미지는 새 앱을 빌드하거나 기존 앱을 Azure Cosmos DB로 마이그레이션할 때 적절한 API를 선택하는 방법에 대한 순서도를 보여 줍니다.

Azure Cosmos DB에서 API를 선택하는 의사 결정 트리의 다이어그램

Azure Cosmos DB에서 API를 선택하는 의사 결정 트리의 다이어그램 다이어그램의 절반은 Azure Cosmos DB에 해당하는 API를 사용할 수 있는 기존 오픈 소스 데이터베이스 워크로드 수를 보여 줍니다. 다이어그램의 나머지 절반은 새 애플리케이션이 API for NoSQL을 사용하거나 오픈 소스 데이터베이스에 대한 API와 함께 기존 기술을 사용하는 방법을 보여 줍니다.

NoSQL용 API

Azure Cosmos DB NoSQL용 API는 데이터를 문서 형식으로 저장합니다. 인터페이스, 서비스 및 SDK 클라이언트 라이브러리를 완전히 제어할 수 있으므로 최상의 종단 간 환경을 제공합니다. Azure Cosmos DB에 롤아웃되는 새로운 기능은 NoSQL용 API 계정에서 처음 사용할 수 있습니다. NoSQL 계정은 JSON 개체를 쿼리할 수 있는 가장 친숙하고 인기 있는 쿼리 언어 중 하나인 SQL(구조적 쿼리 언어) 구문을 사용하여 항목을 쿼리할 수 있도록 지원합니다. 자세한 내용은 Azure Cosmos DB NoSQL용 API 학습 모듈 및 SQL 쿼리 시작 문서를 참조하세요.

Oracle, DynamoDB, HBase 등의 다른 데이터베이스에서 마이그레이션하려고 하며 최신 기술을 사용하여 앱을 빌드하려면 NoSQL용 API가 권장되는 옵션입니다. NoSQL용 API는 분석을 지원하고 운영 및 분석 워크로드 간에 성능을 격리할 수 있도록 합니다.

MongoDB용 API

Azure Cosmos DB MongoDB용 API는 BSON 형식을 통해 문서 구조에 데이터를 저장합니다. MongoDB 유선 프로토콜과 호환되지만 네이티브 MongoDB 관련 코드를 사용하지는 않습니다. MongoDB용 API는 Azure Cosmos DB 기능 사용에 영향을 주지 않으면서 더욱 광범위한 MongoDB 에코시스템과 기술을 사용하려는 경우에 선택하는 것이 좋습니다.

절충할 필요가 없는 Azure Cosmos DB에서 제공하는 기능은 다음과 같습니다.

  • 확장
  • 고가용성
  • 지역에서 복제
  • 여러 쓰기 위치
  • 자동 및 투명 분할 관리
  • 운영 및 분석 저장소 간의 투명한 복제

연결 문자열을 변경하여 MongoDB용 API에서 기존 MongoDB 앱을 사용할 수 있습니다. Mongodump 및 mongorestore와 같은 네이티브 MongoDB 도구를 사용하거나 Azure Database Migration 도구를 사용하여 기존 데이터를 이동할 수 있습니다. MongoDB 셸, MongoDB CompassRobo3T와 같은 도구는 쿼리를 실행하고 네이티브 MongoDB에서와 같이 데이터 작업을 수행할 수 있습니다. 자세한 내용은 MongoDB용 API 문서를 참조하세요.

PostgreSQL용 API

Azure Cosmos DB for PostgreSQL은 Citus 오픈 소스의 강력한 분산 테이블로 어떤 규모에서든 PostgreSQL을 실행하기 위한 관리되는 서비스입니다. 데이터를 단일 노드에 저장하거나, 다중 노드 구성으로 분산합니다.

Azure Cosmos DB for PostgreSQL는 PostgreSQL 포크가 아닌 네이티브 PostgreSQL을 기반으로 하며 PostgreSQL 커뮤니티에서 지원하는 주요 데이터베이스 버전을 선택할 수 있습니다. 다양한 인덱싱, 지리 공간 기능 및 JSONB 지원을 통해 단일 노드 데이터베이스에서 시작하는 데 적합합니다. 나중에 추가 성능이 필요한 경우 가동 중지 시간이 0인 클러스터에 노드를 추가할 수 있습니다.

고성능 및 지역 복제를 사용하는 관리되는 오픈 소스 관계형 데이터베이스를 찾는 경우 Azure Cosmos DB for PostgreSQL을 선택하는 것이 좋습니다. 자세한 내용은 Azure Cosmos DB for PostgreSQL 소개를 참조하세요.

Apache Cassandra용 API

Azure Cosmos DB Cassandra용 API는 열 기반 스키마에 데이터를 저장합니다. Apache Cassandra는 열 기반 스키마에 대한 유연한 접근 방식을 제공하면서 대량의 데이터를 저장하는 고도로 분산된 수평 스케일링 방법을 제공합니다. Azure Cosmos DB의 Cassandra용 API는 분산 NoSQL 데이터베이스와 관련해서 이 원칙을 따릅니다. 이 Cassandra용 API는 네이티브 Apache Cassandra와 호환되는 유선 프로토콜입니다. Azure Cosmos DB의 탄력성 및 완전히 관리되는 특성과 대부분의 네이티브 Apache Cassandra 기능, 도구 및 에코시스템을 사용하려는 경우 Cassandra용 API를 고려하는 것이 좋습니다. 이 완전 관리형 특성은 Cassandra용 API에서 OS, Java VM, 가비지 수집기, 읽기/쓰기 성능, 노드, 클러스터 등을 관리할 필요가 없음을 의미합니다.

Apache Cassandra 클라이언트 드라이버를 사용하여 Cassandra용 API에 연결할 수 있습니다. Cassandra용 API를 사용하면 이미 익숙한 CQL(Cassandra 쿼리 언어), CQL 셸과 같은 도구, Cassandra 클라이언트 드라이버를 사용하여 데이터와 상호 작용할 수 있습니다. Cassandra용 API는 현재 OLTP 시나리오만 지원합니다. Cassandra용 API를 사용하여 변경 피드와 같은 Azure Cosmos DB의 고유한 기능을 사용할 수도 있습니다. 자세한 내용은 Cassandra용 API 문서를 참조하세요. Apache Cassandra에 이미 익숙하지만 Azure Cosmos DB는 처음 사용하는 경우 자세한 내용은 Cassandra용 API에 적응하는 방법을 참조하세요.

Apache Gremlin용 API

Azure Cosmos DB Gremlin용 API를 사용하면 그래프 쿼리를 만들 수 있으며 데이터를 모서리와 꼭짓점으로 저장합니다.

다음과 같은 시나리오에 Gremlin용 API를 사용합니다.

  • 동적 데이터 관련
  • 복잡한 관계와 데이터 관련
  • 관계형 데이터베이스로 모델링하기에 너무 복잡한 데이터 관련
  • 기존 Gremlin 에코시스템 및 기술을 사용하려는 경우

Gremlin용 API는 그래프 데이터베이스 알고리즘의 기능을 고도로 스케일링이 가능한 관리형 인프라와 결합합니다. 이 API는 유연성과 관계형 접근 방식이 결여되어 발생하는 일반적인 데이터 문제에 대한 고유하고 유연한 솔루션을 제공합니다. Gremlin용 API는 현재 OLTP 시나리오만 지원합니다.

Gremlin용 API는 Apache TinkerPop 그래프 컴퓨팅 프레임워크를 기준으로 합니다. Gremlin용 API는 동일한 Graph 쿼리 언어를 사용하여 데이터를 수집하고 쿼리합니다. Azure Cosmos DB의 파티션 전략을 사용하여 그래프 데이터베이스 엔진에서 읽기/쓰기 작업을 수행합니다. Gremlin용 API는 오픈 소스 Gremlin을 사용하여 유선 프로토콜을 지원하므로 오픈 소스 Gremlin SDK로 애플리케이션을 빌드할 수 있습니다. Gremlin용 API는 복잡한 분석 그래프 시나리오에 맞춰 Apache Spark 및 GraphFrames에서도 작동합니다. 자세한 내용은 Gremlin용 API 문서를 참조하세요.

Table용 API

Azure Cosmos DB Table용 API는 데이터를 키/값 형식으로 저장합니다. 현재 Azure Table Storage를 사용하고 있는 경우 대기 시간, 스케일링, 처리량, 글로벌 배포, 인덱스 관리, 낮은 쿼리 성능에 대해 몇 가지 제한 사항이 있을 수 있습니다. Table용 API는 이러한 제한을 해결하며, Azure Cosmos DB의 이점을 사용하기 위해서는 앱을 마이그레이션하는 것이 좋습니다. Table용 API는 OLTP 시나리오만 지원합니다.

Azure Table Storage에 대해 작성된 애플리케이션은 코드를 거의 변경하지 않고 Table용 API로 마이그레이션할 수 있으며 프리미엄 기능을 활용할 수 있습니다. 자세한 내용은 Table용 API 문서를 참조하세요.

데이터를 마이그레이션할 때 용량 계획

기존 데이터베이스 클러스터에서 Azure Cosmos DB for NoSQL 또는 MongoDB로 마이그레이션하기 위한 용량 계획을 수행하려고 하나요? 용량 계획을 위해 기존 데이터베이스 클러스터에 대한 정보를 사용할 수 있습니다.

다음 단계