맨위로가기

아마존 심플DB

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

아마존 심플DB(Amazon SimpleDB)는 아마존 웹 서비스(AWS)에서 제공하는 웹 서비스로, 데이터 스토리지 및 쿼리 기능을 제공한다. 사용량, 데이터 전송량 등에 따라 과금되며, SQL과 유사한 쿼리를 지원하지만 관계형 데이터베이스는 아니다. 완전한 트랜잭션은 지원하지 않지만, 조건부 Put/Delete 및 낙관적 동시성 제어를 통해 데이터 일관성을 유지할 수 있다. SimpleDB는 결과적 일관성 모델을 사용하며, 가용성과 분할 허용성을 위해 일관성을 희생했다. 다이나모DB가 SimpleDB를 대체할 것이라는 이야기가 있지만, 아마존은 SimpleDB를 제거할 계획은 없다고 밝혔다.

더 읽어볼만한 페이지

  • 클라우드 데이터베이스 - 아마존 레드시프트
  • 클라우드 데이터베이스 - 아마존 오로라
    아마존 오로라는 아마존 웹 서비스에서 제공하는 관계형 데이터베이스로, MySQL 및 PostgreSQL 호환성을 제공하며 자동 스토리지 확장, 데이터 복제, 빠른 데이터베이스 복제 기능을 갖춘 클라우드 환경에 최적화된 시스템이다.
  • 문서 지향 데이터베이스 - 몽고DB
    몽고DB는 2007년 개발되어 2009년 오픈 소스로 전환된 문서 지향적 NoSQL 데이터베이스로, 다양한 데이터 쿼리, 인덱싱, 고가용성, 수평적 확장 기능을 제공하며, 2018년부터 멀티 도큐먼트 ACID 트랜잭션을 지원하고 다양한 에디션과 프로그래밍 언어를 지원한다.
  • 문서 지향 데이터베이스 - BSON
    BSON은 JSON과 유사한 이진 데이터 직렬화 형식으로, JSON보다 효율적인 저장 공간 활용과 빠른 검색 속도를 제공하며 다양한 데이터 유형을 지원하여 MongoDB의 주요 데이터 저장 및 전송 형식으로 사용된다.
  • 아마존 웹 서비스 - 아마존 알렉사
    아마존 알렉사는 아마존이 개발한 인공지능 음성 비서로, 스마트홈 기기 제어, 음악 스트리밍, 정보 검색 등의 기능을 제공하지만 개인 정보 보호 논란도 있으며, 아마존은 기능 확장과 수익성 개선을 위해 노력 중이다.
  • 아마존 웹 서비스 - 아마존 레드시프트
아마존 심플DB
개요
Amazon SimpleDB 로고
Amazon SimpleDB 로고
유형클라우드 기반 분산 데이터베이스 서비스
개발사아마존 웹 서비스
초기 출시2008년
상태중단됨 (2021년 8월 27일)
기술 정보
데이터 모델속성 그래프
서버 운영체제리눅스
라이선스독점 소프트웨어
특징
장점CAP 정리에 따라 일관성이 유지되지 않음.
쓰기 작업 후 읽기 작업 시 일관성이 유지되지 않으면 최대 1초 정도 소요될 수 있음.
단순한 구조의 데이터를 저장하고 관리하기에 적합함.
웹 애플리케이션에서 사용하기 용이함.
단점복잡한 관계를 표현하기 어려움.
트랜잭션 지원이 제한적임.
데이터베이스 크기 제한이 존재함.
추가 정보
관련 서비스아마존 S3
아마존 EC2
아마존 RDS

2. 과금 체계

아마존 사는 SimpleDB의 스토리지 사용량, 데이터 전송량 및 인터넷으로의 전송량에 따라 과금한다. 2008년 12월 1일, 1GB의 데이터와 머신 가동 25시간에 대해서는 무료가 되는 새로운 요금 형태를 발표했다[11]。 동일 지역 내의 다른 아마존 웹 서비스(Amazon Web Services)로의 데이터 전송은 무료이다[12]

3. 쿼리

쿼리는 SQL과 유사한 구문으로 수행된다. 관계형 데이터베이스가 아니므로 JOIN은 없다. 스키마리스이므로, 열에 데이터 유형을 지정할 필요가 없으며, 숫자는 자동으로 쿼리 내에서 숫자로 처리된다. 날짜는 ISO 8601 형식으로 처리된다. 인덱스는 자동으로 생성된다. 하나의 열에 여러 데이터를 가질 수도 있다. LIKE를 사용하여 전방 일치, 후방 일치, 부분 일치의 문자열 검색이 가능하다.

3. 1. 지원하는 데이터 형식

쿼리는 SQL과 유사한 구문으로 수행된다. 관계형 데이터베이스가 아니므로 JOIN은 없다. 스키마리스이므로, 열에 데이터 유형을 지정할 필요가 없으며, 숫자는 자동으로 쿼리 내에서 숫자로 처리된다. 날짜는 ISO 8601 형식으로 처리된다. 인덱스도 자동으로 생성된다. 하나의 열에 여러 데이터를 가질 수도 있다. LIKE를 사용하여 전방 일치, 후방 일치, 부분 일치의 문자열 검색이 가능하다.

3. 2. 인덱스

쿼리는 SQL과 유사한 구문으로 수행된다. 관계형 데이터베이스가 아니므로 JOIN은 없다. 스키마리스이므로, 열에 데이터 유형을 지정할 필요가 없으며, 숫자는 자동으로 쿼리 내에서 숫자로 처리된다. 날짜는 ISO 8601 형식으로 처리된다. 인덱스는 자동으로 생성된다. 하나의 열에 여러 데이터를 가질 수도 있다. LIKE를 사용하여 전방 일치, 후방 일치, 부분 일치의 문자열 검색이 가능하다.

4. 트랜잭션

아마존 심플DB는 완전한 트랜잭션을 처리할 수는 없지만, 조건부 Put과 조건부 Delete를 통해 지정한 컬럼이 특정 값일 때만 갱신 또는 삭제를 할 수 있다. 이를 통해 데이터의 일관성을 유지하면서 데이터를 갱신하고 삭제할 수 있다.

4. 1. 조건부 Put/Delete

조건부 추가 및 조건부 삭제는 2010년 2월에 추가된 작업이다. 이는 SimpleDB에 동시에 접근할 때 발생하는 문제를 해결한다. 예를 들어 SimpleDB를 사용하여 증가하는 숫자인 카운터를 저장하는 프로그램을 생각해 보자. 이 프로그램은 다음 세 가지 작업을 수행해야 한다.

# SimpleDB에서 카운터의 현재 값을 가져온다.

# 값에 1을 더한다.

# 새 값을 SimpleDB에서 이전 값과 같은 위치에 저장한다.

이 프로그램이 다른 프로그램이 SimpleDB에 접근하지 않는 동안 실행되면 올바르게 작동한다. 그러나 소프트웨어 애플리케이션(특히 웹 애플리케이션)이 동일한 데이터에 동시에 접근하는 경우가 많다. 동일한 데이터에 동시에 접근하면 경쟁 조건이 발생하여 데이터 손실이 발생할 수 있다.

앞선 예에서, 동일한 프로그램을 실행하는 두 프로세스 A와 B를 생각해 보자. SimpleDB가 두 프로세스 A와 B 모두로부터 1단계에 설명된 대로 데이터를 요청한다고 가정한다. A와 B는 동일한 값을 본다. 카운터의 현재 값이 0이라고 가정하면, 2단계와 3단계로 인해 A는 1을 저장하려고 시도한다. B도 동일한 작업을 시도한다. 따라서 최종 카운터 값은 1이 된다. 시스템이 A와 B에 의해 두 번의 증가 작업을 시도했기 때문에 예상되는 최종 카운터 값은 2임에도 불구하고 말이다.

이 문제는 조건부 추가를 사용하여 해결할 수 있다. 3단계를 다음과 같이 변경한다고 가정해 보자. 새 값을 무조건 저장하는 대신, 프로그램은 현재 저장하고 있는 값이 1단계에서 검색된 값과 동일한 경우에만 새 값을 저장하도록 SimpleDB에 요청한다. 그러면 카운터의 값이 실제로 증가하는 것을 확인할 수 있다. 이것은 약간의 추가 복잡성을 초래한다. 현재 값이 예상과 달라서 SimpleDB가 새 값을 저장할 수 없는 경우, 프로그램은 조건부 추가 작업이 실제로 저장된 값을 변경할 때까지 1-3 단계를 반복해야 한다.

완전한 트랜잭션은 처리할 수 없지만, 조건부 Put과 조건부 Delete가 있어, 지정한 컬럼이 지정한 값일 때만 갱신/삭제를 수행할 수 있다. 이를 사용하여 데이터의 일관성을 유지하면서 데이터 갱신/삭제를 수행할 수 있다.

4. 2. 낙관적 동시성 제어

완전한 트랜잭션은 처리할 수 없지만, 조건부 Put과 조건부 Delete가 있어, 지정한 컬럼이 지정한 값일 때만 갱신/삭제를 수행할 수 있다. 이를 사용하여 데이터의 일관성을 유지하면서 데이터 갱신/삭제를 수행할 수 있다. 데이터에 버전을 갖는 컬럼을 추가하면, 낙관적 동시성 제어를 수행할 수 있다.

5. 제한 사항

아마존 심플DB(SimpleDB)는 다른 데이터베이스 관리 시스템과 비교하여 약한 형태의 일관성인 결과적 일관성을 제공한다.[4] 이는 SimpleDB를 사용하는 올바른 프로그램을 작성하기 어렵게 만들기 때문에 종종 제한 사항으로 간주된다. 이러한 제한은 근본적인 설계 트레이드 오프의 결과이다. 일관성을 포기함으로써 시스템은 가용성과 분할 허용성이라는 두 가지 다른 매우 바람직한 속성을 달성할 수 있다.


  • 가용성: 시스템 구성 요소가 실패해도 서비스는 계속 올바르게 작동한다.
  • 분할 허용성: 시스템 구성 요소는 컴퓨터 네트워크로 서로 연결된다. 구성 요소가 네트워크를 사용하여 서로 연락할 수 없는 경우(네트워크 분할)에도 시스템 작동은 계속된다.


구성 요소 실패는 불가피한 것으로 간주되므로, 이 두 가지 속성은 안정적인 웹 서비스를 제공하는 데 필요한 것으로 간주되었다. CAP 정리는 시스템이 이러한 속성을 일관성과 함께 가질 수 없다고 명시한다. 따라서 설계자는 약한 형태의 일관성에 만족해야 했다.[4]

SimpleDB에는 다음과 같은 제한 사항들이 게시되어 있다.[13]

(하위 섹션에서 스토리지 제약과 쿼리 제약에 대한 더 자세한 내용을 확인할 수 있다.)

5. 1. 스토리지 제약

속성최대
도메인계정당 250개의 활성 도메인 (양식 작성으로 추가 요청 가능)[5]
각 도메인의 크기10GB
도메인당 속성1,000,000,000
항목당 속성256개
속성당 크기1024바이트


5. 2. 쿼리 제약

속성최대
쿼리 응답에서 반환되는 항목 수2500개
쿼리 실행 시간5초
쿼리 술어별 속성 이름 수1개
술어별 비교 연산자 수20개[1]
쿼리 표현식당 술어 수20개


5. 3. 일관성 모델

SimpleDB는 다른 데이터베이스 관리 시스템과 비교하여 약한 형태의 일관성인 결과적 일관성을 제공한다.[4] 이는 SimpleDB를 사용하는 올바른 프로그램을 작성하기 어렵게 만들기 때문에 종종 제한 사항으로 간주된다. 이러한 제한은 근본적인 설계 트레이드 오프의 결과이다. 일관성을 포기함으로써 시스템은 다음과 같은 두 가지 다른 매우 바람직한 속성을 달성할 수 있다.

# 가용성 – 시스템 구성 요소가 실패할 수 있지만 서비스는 계속 올바르게 작동한다.

# 분할 허용성 – 시스템의 구성 요소는 컴퓨터 네트워크로 서로 연결된다. 구성 요소가 네트워크를 사용하여 서로 연락할 수 없는 경우(네트워크 분할이라고 하는 조건)에도 시스템은 계속 작동한다.

구성 요소 실패는 불가피한 것으로 간주되므로, 이 두 가지 속성은 안정적인 웹 서비스를 제공하는 데 필요한 것으로 간주되었다. CAP 정리는 시스템이 이러한 속성을 일관성과 함께 가질 수 없다고 명시하고 있다. 따라서 설계자는 약한 형태의 일관성에 만족해야 했다.[4]

5. 3. 1. 일관된 읽기 (Consistent Read)

일관적 읽기는 조건부 삽입 및 조건부 삭제와 동시에 출시된 새로운 기능이다. 이름에서 알 수 있듯이, 일관적 읽기는 SimpleDB의 최종 일관성 모델로 인해 발생하는 문제를 해결한다. (제한 사항 섹션 참조) 다음 연산 시퀀스를 보자.

1. 프로그램 A가 SimpleDB에 데이터를 저장한다.

2. 직후, A는 방금 저장한 데이터를 요청한다.

SimpleDB의 최종 일관성 보장은 2단계에서 검색된 데이터가 1단계에서 이루어진 업데이트를 반영한다고 말할 수 없게 한다. 최종 일관성은 2단계가 1단계의 완전한 업데이트 집합을 반영하거나, 이러한 업데이트를 전혀 반영하지 않음을 보장한다. 일관적 읽기를 사용하면 2단계에서 검색된 데이터가 1단계의 변경 사항을 반영하도록 보장할 수 있다.

일관적 읽기 연산을 사용하지 않을 때 일관되지 않은 결과가 발생할 수 있는 이유는 SimpleDB가 여러 위치에 데이터를 저장하고(가용성을 위해), 1단계의 새 데이터가 SimpleDB가 2단계에서 데이터 요청을 받을 때 모든 위치에 기록되지 않을 수 있기 때문이다. 그 경우, 2단계의 데이터 요청이 새 데이터가 기록되지 않은 위치 중 하나에서 처리될 수 있다.

아마존은 정확성을 위해 필요한 경우를 제외하고 일관적 읽기 사용을 권장하지 않는다. 이 권장의 이유는 일관적 읽기 연산이 처리되는 속도가 일반 읽기보다 낮기 때문이다.

6. DynamoDB와의 관계

SimpleDB는 다이나모DB로 대체될 것이라는 이야기가 있다. 아마존은 SimpleDB를 제거할 계획은 없지만, 더 이상 "반복적으로 개선"하지는 않는다. 다이나모DB는 SimpleDB의 후속 제품으로 보인다.

참조

[1] 웹사이트 What You Need To Know About Amazon SimpleDB https://web.archive.[...]
[2] 웹사이트 AWS | Amazon SimpleDB – Simple Database Service https://aws.amazon.c[...]
[3] 웹사이트 SimpleDB - Free Tier - A shift in AWS pricing http://blog.sdbexplo[...] 2008-12-25
[4] 간행물 SimpleDB Developer Guide http://docs.amazonwe[...] Amazon
[5] 웹사이트 Request to Increase Allocation of Amazon SimpleDB Domains http://aws.amazon.co[...] Aws.amazon.com 2013-08-09
[6] 웹사이트 AWS Developer Forums: SimpleDB future? ... https://forums.aws.a[...]
[7] 웹사이트 Dynamo created " to address the limitations of SimpleDB." http://aws.amazon.co[...]
[8] 웹사이트 Amazon DynamoDB – a Fast and Scalable NoSQL Database Service Designed for Internet Scale Applications - All Things Distributed https://www.allthing[...] 2012-01-18
[9] 웹사이트 Amazon SimpleDB- Limited Beta http://www.amazon.co[...]
[10] 웹사이트 What You Need To Know About Amazon SimpleDB http://www.satine.or[...]
[11] 웹사이트 SimpleDB - Free Tier - A shift in AWS pricing http://blog.sdbexplo[...]
[12] 웹사이트 Amazon SimpleDB official home page http://www.amazon.co[...]
[13] 간행물 Amazon SimpleDB Limits http://docs.amazonwe[...] Amazon



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com