Amazon SimpleDB는 여러 데이터 세트를 생성 및 저장하고 데이터를 쉽게 쿼리하고 결과를 반환하기 위한 간단한 웹 서비스 인터페이스를 제공합니다. 데이터는 자동으로 인덱싱되어 필요한 정보를 쉽게 신속하게 찾을 수 있습니다. 스키마를 미리 정의하거나 나중에 새 데이터가 추가된 경우 스키마를 변경할 필요가 없습니다. 또한 새 서버를 구축하는 대신 스케일 아웃하면 되는데 스케일 아웃은 새 도메인을 생성하는 것만큼 간단합니다.
Amazon SimpleDB를 사용하려면 다음과 같이 하면 됩니다.
- 데이터세트 구축
- 지연 시간 최적화, 비용 최소화 또는 규정 요건 준수에 적합한 도메인 지역을 선택합니다. Amazon SimpleDB는 현재 미국 동부(버지니아 북부), 미국 서부(오레곤), 미국 서부(캘리포니아 북부), EU(아일랜드), 아시아 태평양(싱가포르), 아시아 태평양(도쿄), 아시아 태평양(시드니) 및 남아메리카(상파울루) 지역에서 사용할 수 있습니다.
- 쿼리 도메인을 작성하고 관리하려면 CreateDomain, DeleteDomain, ListDomains, DomainMetadata를 사용합니다.
- 각 쿼리 도메인 내에서 데이터세트를 생성하고 관리하려면 Put, Batch Put 및 Delete를 사용합니다.
- 데이터 검색
- 특정 항목을 검색하려면 GetAttributes를 사용합니다.
- 지정된 조건을 만족하는 항목에 대한 데이터세트를 쿼리하려면 Select를 사용합니다.
- 사용한 리소스에 대해서만 비용 지불
Amazon SimpleDB에서 사용하는 데이터 모델은 구조화된 데이터를 쉽게 저장, 관리 및 쿼리할 수 있게 해줍니다. 개발자는 데이터세트를 도메인으로 구성하고 특정 도메인에 저장되어 있는 모든 데이터에 대해 쿼리를 실행할 수 있습니다. 도메인은 속성-값 쌍으로 설명되는 항목의 모음입니다.
이러한 용어를 기존 스프레드시트 테이블의 개념과 유사한 것으로 생각해 봅시다. 예를 들어, 아래 테이블에 표시된 고객 관리 데이터베이스의 세부 정보가 있다고 가정하고 이러한 세부 정보가 Amazon SimpleDB에 어떻게 표현되는지 생각해 봅시다. 전체 테이블이 "고객"이라는 도메인으로 표시되고, 개별 고객은 테이블의 행이 되거나 도메인의 항목이 됩니다. 문의처 정보는 열 머리글(속성)로 표시됩니다. 값은 개별 셀에 있습니다. 이제 아래의 레코드가 도메인에 추가하려는 새 고객이라고 가정해 봅시다.
고객 ID | 이름 | 성 | 주소 | 구/군/시 | 시/도 | 우편 번호 | 전화번호 |
---|---|---|---|---|---|---|---|
123 | Bob | Smith | 123 Main St | Springfield | MO | 65801 | 222-333-4444 |
456 | James | Johnson | 456 Front St | Seattle | WA | 98104 | 333-444-5555 |
Amazon SimpleDB에서 위의 레코드를 추가하려면 각 고객에 대한 속성-값 쌍과 함께 고객 ID를 도메인에 PUT합니다. 구체적인 구문 없이 다음과 같은 모양이 됩니다.
PUT (항목, 123), (이름, Bob), (성, Smith), (주소, 123 Main St.), (구/군/시, Springfield), (시/도, MO), (우편 번호, 65801), (전화번호, 222-333-4444) PUT (항목, 456), (이름, James), (성, Johnson), (주소, 456 Front St.), (구/군/시, Seattle), (시/도, WA), (우편 번호, 98104), (전화번호, 333-444-5555)
Amazon SimpleDB는 기존 데이터베이스 테이블과 중요한 방식에서 다릅니다. 나중에 쉽게 되돌아가고 특정 레코드에만 적용되는 새 속성을 추가하는 유연성을 가질 수 있습니다. 예를 들어, 주문 상태에 대한 실시간 알림을 활성화하기 위해 고객의 이메일 주소를 캡처한다고 가정해 봅시다. “customer” 테이블을 다시 구축하고 쿼리를 다시 작성하고 인덱스를 다시 구축하는 등의 작업을 수행하는 대신 간단히 기존 “customers” 도메인에 새 레코드와 추가 속성을 추가하면 됩니다. 결과로 생성되는 도메인은 다음과 같은 모양이 됩니다.
고객 ID | 이름 | 성 | 주소 | 구/군/시 | 시/도 | 우편 번호 | 전화번호 | 이메일 |
---|---|---|---|---|---|---|---|---|
123 | Bob | Smith | 123 Main St | Springfield | MO | 65801 | 222-333-4444 | |
456 | James | Johnson | 456 Front St | Seattle | WA | 98104 | 333-444-5555 | |
789 | Deborah | Thomas | 789 Garfield | 뉴욕 | NY | 10001 | 444-555-6666 | [email protected] |
Amazon SimpleDB는 데이터 쓰기, 인덱싱 및 쿼리를 구현하는 소수의 간단한 API 호출을 제공합니다. 인터페이스 및 기능 세트는 의도적으로 핵심 기능에 집중되어 개발자가 구축의 기반으로 사용할 수 있는 기본 API를 제공하고 서비스를 쉽게 배우고 간단히 사용할 수 있게 해줍니다.
- CreateDomain – 데이터 세트를 포함하는 도메인을 만듭니다.
- DeleteDomain – 도메인을 삭제합니다.
- ListDomains – 모든 도메인을 나열합니다.
- DomainMetadata – 도메인 생성 시간에 대한 정보를 검색하고, 스토리지의 속성과 항목 이름 개수뿐 아니라 전체 크기(바이트)를 보여줍니다.
- PutAttributes – 항목 및 항목의 속성을 추가 또는 업데이트하거나, 속성-값 쌍을 이미 존재하는 항목에 추가합니다. 항목은 수신될 때 자동으로 인덱싱됩니다.
- BatchPutAttribute – 대량 쓰기의 전체 처리량을 늘리기 위해 단일 호출에서 최대 25건의 PutAttribute 동작을 수행합니다.
- DeleteAttributes – 항목, 속성 또는 속성 값을 삭제합니다.
- BatchDeleteAttributes – 대량 삭제의 전체 처리량을 늘리기 위해 단일 호출에서 최대 25건의 DeleteAttributes 동작을 수행합니다.
- GetAttributes – 항목을 검색하거나 항목의 속성과 값 모두 또는 하위 집합을 검색합니다.
- Select – 익숙한 “select target from domain_name where query_expression" 구문에서 데이터 세트를 쿼리합니다. 지원되는 값 테스트는 =, !=, =, like, not like, between, is null, is not null, 및 every ()입니다. 예: select * from mydomain where every(keyword) = ‘Book’. SORT 연산자를 사용하는 주문 결과 및 Count 연산자를 사용하는 쿼리에서 조건자에 의해 지정된 조건을 만족하는 개수 항목입니다.
참고: Amazon SimpleDB는 AWS Identity and Access Management와 통합되어 Amazon SimpleDB 리소스를 미세하게 제어할 수 있습니다. AWS Identity and Access Management와의 통합을 통해 SimpleDB를 사용하도록 등록된 AWS 계정은 여러 사용자를 생성할 수 있습니다. 차례로 이러한 사용자는 AWS 계정에서 소유한 SimpleDB 도메인에 액세스할 수 있는 SimpleDB API 수준 권한을 부여받을 수 있습니다. 자세한 내용은 AWS Identity and Access Management 세부 정보 페이지를 참조하십시오.
Amazon SimpleDB는 각 도메인의 여러 지역에 분산된 사본을 저장하여 높은 가용성과 데이터 내구성을 확보합니다. 성공적인 쓰기(PutAttributes, BatchPutAttributes, DeleteAttributes, BatchDeleteAttributes, CreateDomain 또는 DeleteDomain 사용)는 도메인의 모든 사본이 내구성 있게 지속됨을 의미합니다. Amazon SimpleDB는 두 가지 읽기 일관성 옵션 즉, 최종 읽기 일관성과 읽기 일관성을 지원합니다.
- 최종 읽기 일관성(기본값) – 최종 일관성 옵션은 읽기 성능을 최대화합니다(짧은 지연 시간 및 높은 처리량 측면). 그러나 최종 읽기 일관성(Select 또는 GetAttributes 사용)은 최근에 완료된 쓰기(PutAttributes, BatchPutAttributes, DeleteAttributes, BatchDeleteAttributes 사용) 결과를 반영하지 않을 수 있습니다. 모든 데이터 사본에서의 일관성은 보통 1초 내에 도달되고 짧은 시간이 지난 후 읽기를 반복하면 업데이트된 데이터를 반환해야 합니다.
- 읽기 일관성 – Amazon SimpleDB는 최종 일관성 외에 애플리케이션이나 애플리케이션의 요소에서 읽기 일관성을 필요로 하는 경우 읽기 일관성을 요청하기 위한 유연성과 제어도 제공합니다. 읽기 일관성(Select 또는 GetAttributes와 ConsistentRead=true 사용)은 읽기 전에 성공적인 응답을 받은 모든 쓰기를 반영하는 결과를 반환합니다.
기본적으로 GetAttributes 및 Select는 최종 읽기 일관성을 수행합니다. 읽기 일관성은 잠재적으로 긴 지연 시간과 낮은 읽기 처리량을 발생시킬 수 있으므로 애플리케이션 시나리오에서 읽기 작업이 해당 읽기 전에 성공적인 응답을 수신한 모든 쓰기를 읽도록 절대적으로 요구하는 경우에만 사용하는 것이 가장 좋습니다. 다른 모든 시나리오의 경우 기본값인 최종 읽기 일관성이 최고의 성능을 발휘합니다. 또한 Amazon SimpleDB를 통해 각 개별 읽기 요청에 대한 일관성 설정을 지정할 수 있으므로 동일한 애플리케이션에 서로 다른 일관성 설정을 따르는 상이한 부분이 있을 수 있습니다.
Amazon SimpleDB는 관계형 데이터베이스가 아니며, Amazon SimpleDB에는 고유한 기능 및 성능 특성을 제공하기 위해 복잡한 트랜잭션과 관계(즉, 조인)가 없습니다. 그러나 Amazon SimpleDB는 다음과 같은 트랜잭션 의미 체계를 제공합니다.
- Conditional Puts/Deletes – 기존 속성 값이 새로 지정하는 값과 일치하는 경우 항목의 속성 값을 하나 이상 삽입하거나 바꾸거나 삭제할 수 있습니다. 값이 일치하지 않거나 존재하지 않는 경우 업데이트가 거부됩니다. Conditional Puts/Deletes는 서로 다른 원본에서 동시에 동일한 항목에 쓰려고 하는 경우 업데이트가 손실되는 것을 방지할 때 유용합니다.
Conditional puts 및 deletes는 예상 값으로 옵션 조건을 지정하여 PutAttributes 및 DeleteAttributes API를 통해 표시됩니다. 예를 들어, 애플리케이션이 좌석을 예약하거나 이벤트에 대한 티켓을 판매하는 경우 지정된 좌석이 여전히 이용 가능한 경우(옵션 조건)에만 구매(즉, 쓰기 업데이트)를 허용할 수 있습니다. 또한 이러한 의미 체계를 사용하여 이미 존재하고 있지 않은 경우에만 항목을 삽입하는 카운터와 같은 기능 및 OCC(Optimistic Concurrency Control)를 구현할 수 있습니다. 애플리케이션은 항목에 버전 번호(또는 타임스탬프) 속성을 유지관리하고, 이 버전 번호의 값을 기준으로 조건부 추가/삭제를 수행하여 OCC를 구현할 수 있습니다.
Amazon SimpleDB에서의 트랜잭션 의미 체계 또는 일관성에 대한 자세한 내용은 Amazon SimpleDB Developer Guide 또는 Consistency Enhancements Whitepaper를 참조하십시오.
Amazon RDS를 통해 완전한 기능의 관계형 데이터베이스를 실행하면서 데이터베이스 관리 작업 부담은 덜 수 있습니다. Amazon DynamoDB는 매우 빠르고 예측 가능한 성능과 원활한 확장성을 제공하는 완전 관리형 NoSQL 데이터베이스 서비스입니다. Amazon SimpleDB는 소규모 데이터 세트를 위한 비관계형 서비스를 제공합니다. Amazon EC2 및 Amazon EBS에서 여러 AMI 중 하나를 사용하면 하드웨어 공급 및 설치 부담 없이 데이터베이스를 완전하게 제어할 수 있습니다.
데이터베이스 솔루션마다 중요한 차이점이 있으므로, 차이점을 확인하여 목적에 맞는 데이터베이스를 선택하십시오.
애플리케이션에 적용할 수 있는 다양한 데이터베이스 옵션에 대한 자세한 내용을 보려면 AWS에서 데이터베이스 실행 페이지를 방문하십시오.
Amazon S3와 달리, Amazon SimpleDB는 원시 데이터를 저장하지 않습니다. 대신 Amazon SimpleDB는 데이터를 입력으로 받은 다음 확장하여 여러 인덱스를 생성함으로써 해당 데이터를 신속하게 쿼리할 수 있게 해줍니다. 또한 Amazon S3와 Amazon SimpleDB는 서로 다른 유형의 물리적 스토리지를 사용합니다. Amazon S3는 대량의 객체를 저렴한 비용으로 저장할 수 있는 고밀도 스토리지 드라이브를 사용합니다. Amazon SimpleDB는 보다 작은 데이터 비트를 저장하고 데이터 액세스 속도에 대해 최적화된 보다 밀도가 낮은 드라이브를 사용합니다.
AWS 서비스 전체에서 비용을 최적화하려면 큰 객체 또는 파일은 Amazon S3에 저장해야 하는 반면 보다 작은 데이터 요소나 파일 포인터(Amazon S3 객체에 대한 것일 수 있음)는 Amazon SimpleDB에 저장하는 것이 가장 좋습니다. AWS 환경 내에서의 서비스와 무료 데이터 전송 간의 긴밀한 통합 덕분에 개발자는 쉽게 Amazon SimpleDB의 속도 및 쿼리 기능과 Amazon S3의 저렴한 데이터 저장 비용을 모두 활용할 수 있으며, 이는 두 서비스를 애플리케이션에 통합함으로써 가능합니다.
Amazon SimpleDB는 현재 개별 도메인을 각각 최대 10GB까지 증가시킬 수 있도록 허용합니다. 데이터세트가 10GB보다 큰 경우 Amazon SimpleDB의 스케일 아웃 아키텍처를 활용하고 데이터를 여러 도메인으로 분산시키면 됩니다. Amazon SimpleDB는 병렬 처리를 염두에 두고 설계되었으므로 데이터를 여러 도메인으로 분산시키면 쓰기 및 읽기 처리량도 증가합니다. 처음에는 최대 250개의 도메인이 할당됩니다. 추가 도메인이 필요할 경우 이 양식을 작성해 주십시오.
얼마나 많은 개발자가 Amazon S3와 함께 Amazon SimpleDB를 사용하여 혜택을 누리고 있는지 자세히 살펴보려면 여기를 클릭하십시오.
Amazon SimpleDB에서 구조화된 데이터 스토리지의 크기를 예측하는 가장 좋은 방법은 다음과 같습니다.
모든 항목 ID의 원시 바이트 크기(GB) + 항목당 45바이트 + 모든 속성 이름의 원시 바이트 크기(GB) + 속성 이름당 45바이트 + 모든 속성-값 쌍의 원시 바이트 크기(GB) + 속성-값 쌍당 45바이트
미국 동부(버지니아 북부) 리전 또는 미국 서부(오레곤) 리전에 대한 월별 추정 스토리지 비용을 계산하려면, 위에서 계산한 결과 값(GB)에 0.25 USD를 곱합니다. EU(아일랜드) 리전, 아시아 태평양(싱가포르) 리전, 아시아 태평양(시드니) 리전 또는 미국 서부(캘리포니아 북부) 리전의 경우, 결과 값(GB)에 0.275 USD를 곱합니다. 아시아 태평양(도쿄) 리전의 경우 결과 값(GB)에 0.276 USD를 곱합니다. 남아메리카(상파울루) 리전의 경우 결과 값(GB)에 0.34 USD를 곱합니다.
Amazon SimpleDB는 각 요청의 머신 사용률을 측정하여 특정 요청(SELECT, GET, PUT 등)을 완료하는 데 사용된 머신 용량을 기준으로 요금을 부과합니다(2007년 1.7GHz 제온 프로세서의 시간당 용량으로 정규화됨). 시스템 사용률은 각 요청에서 처리한 데이터 양(속성 수, 속성 길이)을 기반으로 도출됩니다. 같은 GET 작업으로 속성을 256개 검색할 때가 하나를 검색할 때보다 리소스를 더 많이 사용합니다. 100,000개의 속성을 검토하는 다중 조건자 SELECT는 250개의 속성을 검토하는 단일 조건자보다 많은 비용을 소비합니다.
각 요청에 대한 응답 메시지에서 Amazon SimpleDB는 리소스 사용량이라는 필드를 반환합니다. 리소스 사용량은 각 요청에서 사용한 시스템 리소스의 측정값이며, 대역폭이나 스토리지를 포함하지 않습니다. 리소스 사용량은 특정 요청을 완료하는 데 사용된 시스템 시간의 일부로 보고됩니다. 미국 동부(버지니아 북부) 지역 및 미국 서부(오레곤) 지역의 경우 개별 요청 비용은 리소스 사용량(시간 단위로 표시됨) * Amazon SimpleDB 시스템 시간당 0.14 USD입니다. 모든 요청 비용은 리소스 사용량(시간 단위로 표시됨) * 0.14 USD의 합계입니다.
예를 들어, 한 달 동안 요청에 대한 리소스 사용량 합계가 9시간 동안 하나의 1.7GHz 프로세서를 사용한 것과 같다면 요금은 다음과 같습니다.
9시간 * Amazon SimpleDB 시스템 시간당 0.14 USD = 1.26 USD
쿼리 도메인이 EU(아일랜드) 리전, 아시아 태평양(도쿄) 리전, 아시아 태평양(싱가포르) 리전, 아시아 태평양(시드니) 리전 또는 미국 서부(캘리포니아 북부) 리전에 있는 경우, Amazon SimpleDB 머신 시간은 머신 시간당 0.154 USD로 책정됩니다. 쿼리 도메인이 남아메리카(상파울루) 지역에 있는 경우 Amazon SimpleDB 시스템 시간은 시스템 시간당 0.19 USD로 부과됩니다. 모든 비용 계산은 관련 지역의 요금 책정을 반영하도록 조정되어야 합니다.
이 서비스 사용은 Amazon Web Services 고객 계약에 따릅니다.