Amazon DynamoDB
개발자 안내서 (API 버전 2012-08-10)

SQL에서 NoSQL로

애플리케이션 개발자라면 RDBMS(관계형 데이터베이스 관리 시스템) 및 SQL(Structured Query Language)을 사용한 경험이 어느 정도 있을 것입니다. Amazon DynamoDB 작업을 시작해 보면 비슷한 점도 많겠지만 다른 점도 상당히 많습니다. 이 단원에서는 SQL 문을 그에 상당하는 DynamoDB 작업과 비교 대조하면서 공통 데이터베이스 작업에 대해 설명합니다.

NoSQL은 가용성과 확장성이 높고 고성능에 최적화된 비관계형 데이터베이스 시스템을 설명하는 데 사용되는 용어입니다. NoSQL 데이터베이스는(DynamoDB처럼) 관계형 모델 대신 키-값 페어나 문서 스토리지 같은 대안적 모델을 데이터 관리에 사용합니다. 자세한 내용은 http://aws.amazon.com/nosql 부분을 참조하십시오.

참고

이 단원의 SQL 예제는 MySQL RDBMS와 호환됩니다.

이 단원의 DynamoDB 예제는 DynamoDB 작업의 이름과 함께 JSON 형식의 해당 작업 파라미터를 보여 줍니다. 이러한 작업을 사용하는 코드 예제에 관한 내용은 DynamoDB SDK 시작하기 단원을 참조하십시오.

SQL 또는 NoSQL?

오늘날의 애플리케이션의 요구 사항은 그 어느 때보다 까다롭습니다. 예를 들어 온라인 게임은 소수의 사용자와 아주 작은 양의 데이터만으로 시작될 수 있습니다. 하지만 게임이 성공을 거두면 기본 데이터베이스 시스템의 리소스를 가볍게 초과할 수 있습니다. 웹 기반 애플리케이션의 동시 사용자가 수백 명, 수천 명 또는 수백만 명에 이르고, 매일 테라바이트 규모의 데이터가 새로 생성되는 경우는 드물지 않습니다. 이런 애플리케이션의 데이터베이스는 초당 수만(혹은 수십만) 건의 읽기 및 쓰기를 처리해야 합니다.

Amazon DynamoDB는 이런 종류의 워크로드에 적합합니다. 개발자는 작은 양의 프로비저닝된 처리량에서 시작해 애플리케이션의 인기가 높아짐에 따라 점차로 이를 늘려 갈 수 있습니다. DynamoDB는 대량의 데이터와 매우 많은 수의 사용자를 처리할 수 있도록 완벽하게 조정됩니다.

다음 표에서는 RDBMS와 DynamoDB의 몇 가지 세부적 차이점을 보여줍니다.

특성 관계형 데이터베이스 관리 시스템(RDBMS) Amazon DynamoDB
최적의 워크로드 임시 쿼리, 데이터 웨어하우징, OLAP(Online Analytical Processing). 소셜 네트워크, 게이밍, 미디어 공유, IoT(사물 인터넷) 등 웹 규모의 애플리케이션입니다.
데이터 모델 관계형 모델의 경우 데이터가 테이블, 행 및 열로 정규화되는 잘 정의된 스키마가 필요합니다. 뿐만 아니라 테이블, 행, 인덱스 및 기타 데이터베이스 간의 모든 관계가 정의됩니다. DynamoDB는 스키마가 없습니다. 각 테이블에는 각각의 데이터 항목을 고유하게 식별하는 기본 키가 있어야 하지만 키가 아닌 다른 속성에는 비슷한 제한이 없습니다. DynamoDB는 JSON 문서를 비롯한 정형 또는 반정형 데이터를 관리할 수 있습니다.
데이터 액세스 SQL은 데이터 저장과 검색을 위한 표준입니다. 관계형 데이터베이스는 데이터베이스 중심 애플리케이션 개발을 단순화하는 풍부한 도구 세트를 제공하지만 이 도구 모두가 SQL을 사용하는 것은 아닙니다. AWS Management 콘솔 또는 AWS CLI를 사용하여 DynamoDB 작업을 수행하고 특별 작업을 수행할 수 있습니다. 애플리케이션은 AWS SDK(소프트웨어 개발 키트)를 활용하여 객체 기반, 문서 중심 또는 하위 수준 인터페이스를 사용하는 DynamoDB 작업을 할 수 있습니다.
성능 관계형 데이터베이스는 스토리지에 최적화되어 있으므로 일반적으로 성능은 디스크 하위 시스템에 좌우됩니다. 개발자와 데이터베이스 관리자는 성능 극대화를 위해 쿼리, 인덱스 및 테이블 구조를 최적화해야 합니다. DynamoDB는 컴퓨팅에 최적화되어 있기 때문에 성능은 주로 기본 하드웨어와 네트워크 지연 시간의 함수입니다. 관리형 서비스로서 DynamoDB는 사용자와 사용자 애플리케이션을 이런 구현 세부 사항에서 격리시키므로 견고한 고성능 애플리케이션 설계와 구축에 집중할 수 있습니다.
확장 보다 빠른 하드웨어를 통한 확장은 더할 나위 없이 쉽습니다. 데이터베이스 테이블을 분산 시스템의 여러 호스트에 배치하는 것도 가능하지만 여기에는 추가 투자가 필요합니다. 관계형 데이터베이스는 파일 숫자와 크기에 최대치가 있어 이것이 확장성의 상한선이 됩니다. DynamoDB는 분산된 하드웨어 클러스터를 사용하여 확장할 수 있도록 설계되었습니다. 이런 설계 덕에 지연 시간 증가 없는 처리 능력 증대가 가능합니다. 고객이 처리량 요구 사항을 지정하면 DynamoDB는 충분한 리소스를 할당하여 이 요구 사항을 충족합니다. 테이블당 항목 수에 상한선이 없고, 테이블의 총 크기 역시 마찬가지입니다.

이 페이지에서: