aws

[AWS]데이터베이스 (1)

하리하링웹 2024. 7. 16. 19:14

관계형 데이터베이스

관계형 데이터베이스는 최소 하나 이상의 테이블을 지닌다. 테이블은 열(col)과 행(row)으로 구성되며, 열은 속성(attribute), 행은 레코드(record) 또는 튜플(tuple)로 불린다. 각 열의 데이터는 미리 정의된 타입과 일치해야 하며, 이는 데이터 조회와 쿼리 작업을 유연하게 하는 장점이 있다. 또한 테이블 생성 후 필요에 따라 열을 추가하거나 삭제할 수 있다. 삭제 시에는 해당 열의 모든 데이터가 함께 삭제된다.

 

구조화 질의어 (SQL)

사용자는 SQL(Structured Query Language)을 사용하여 데이터 저장, 조회, 유지 보수 작업을 수행한다. 이로 인해 관계형 DB를 SQL DB라고도 부른다. 문법은 각 RDBMS마다 다를 수 있다.

데이터 조회

  • SELECT 명령: SQL DB에서 데이터를 조회할 때 사용하며, 특정 열 값을 기준으로 조회하거나 반환할 수 있다.
  • JOIN 구문: 다른 테이블의 데이터를 결합할 수 있다.

데이터 저장

  • INSERT 명령: 데이터를 삽입할 때 사용한다.
  • COPY 명령: 대량의 레코드를 입력할 때 사용하며, 지정한 테이블에 적절한 포맷으로 파일을 복사할 수 있다.

 

OLTP와 OLAP

OLTP (온라인 입출력 처리)

  • 빈번한 읽기, 쓰기 작업에 적합하다.
  • 신속한 쿼리 작업에 최적화되어 있다.
  • 정형화된 쿼리를 주로 사용한다.
  • 높은 메모리 용량을 지니며, 보통 단일 서버를 통해 작업을 처리한다.

OLAP (온라인 분석 처리)

  • 대규모 데이터에 대한 복잡한 쿼리 작업에 적합하다.
  • 높은 수준의 컴퓨팅 및 저장 용량이 요구된다.
  • 데이터 웨어하우스 어플리케이션에서 사용된다.
  • 여러 개의 서버를 두고 복잡한 쿼리 작업을 분산하여 처리한다.

 

Amazon RDS

MySQL

  • 블로그, 커머스 등 OLTP 어플리케이션에 적합하다.
  • RDS는 최신 MySQL Community Edition을 제공하며, 자동 백업 기능과 호환성 있는 InnoDB 스토리지 엔진을 사용한다.

MariaDB

  • MySQL의 대체품으로, RDS에서는 InnoDB 사용을 권장한다.

Oracle

  • 가장 널리 사용되는 DBMS로, 일부 애플리케이션은 Oracle 기반으로만 실행된다.
  • RDS는 Standard Edition One(SE1), Standard Edition Two(SE2), Standard Edition(SE), Enterprise Edition(EE)을 제공한다.

PostgreSQL

  • Oracle 호환 오픈소스 데이터베이스로, Oracle용으로 개발된 애플리케이션을 저렴하게 실행할 수 있다.

Amazon Aurora

  • MySQL, PostgreSQL의 대체품으로, 스토리지 쓰기 횟수를 감소시키는 가상화 스토리지 레이어를 이용해 높은 쓰기 성능을 제공한다.
  • MySQL 호환성과 PostgreSQL 호환성 에디션을 제공한다.

Microsoft SQL Server

  • RDS는 2012년부터 현재까지의 Microsoft SQL Server 버전을 지원하며, Express, Web, Standard, Enterprise 에디션 중 선택이 가능하다.

 

라이선스 계약에 대한 고려사항

RDS는 DB 엔진 소프트웨어 사용에 대해 두 가지 라이선스 모델을 제공한다.

라이선스 포함 모델

  • MariaDB와 MySQL은 GPL 2.0, PostgreSQL은 PostgreSQL 라이선스를 적용받으며, 무료 사용이 가능하다.
  • 나머지 엔진은 라이선스비가 포함되어 있다.

자체 보유 라이선스 모델

  • Oracle DB 엔진에 해당하며, Enterprise Edition(EE), Standard Edition(SE), Standard Edition One(SE1), Standard Edition Two(SE2)은 자체 보유 라이선스를 사용해야 한다.

 

데이터베이스 인스턴스 클래스

데이터베이스의 성능 요구 수준에 맞춰 다양한 인스턴스 클래스를 선택할 수 있다. 데이터 베이스 인스턴스는 변경 가능하다. RDS는 스탠다드, 메모리 최적화, 성능 가속 등 3가지 타입을 제공한다.

스탠다드 데이터베이스 인스턴스

대부분의 사용자에게 적합한 표준 인스턴스이다 아래 성능을 지닌다.

  • 384GB 메모리
  • 96vCPU
  • 25Gbps 네트워크 대역폭
  • 19,000Mbps 디스크 처리 용량

메모리 최적화 데이터베이스 인스턴스

높은 수준의 성능을 요구하는 데이터베이스에 적합하며 훨씬 더 많은 데이터 저장을 할 수 있도록 충분한 메모리를 제공해 쿼리 속도를 높여준다.

  • 3,904GB 메모리
  • 128vCPU
  • 25Gbps 네트워크 대역폭
  • 14,000Mbps 디스크 처리 용량

성능 가속 데이터베이스 인스턴스

개발, 테스트, 비상용화를 고려한 데이터베이스 인스턴스이다.

  • 32GB 메모리
  • 8vCPU
  • 5Gbps 네트워크 대역폭
  • 2,048Mbps 디스크 처리 용량

데이터베이스 인스턴스는 EBS 스토리지를 사용하며, 스탠다드와 메모리 최적화 인스턴스 클래스는 EBS 최적화 타입으로, EBS 스토리지와 고속 전용 네트워크로 연결된다.

 

스토리지

데이터베이스 인스턴스에 적합한 스토리지를 선택하는 일은 용량을 확보하는 것뿐만 아니라 애플리케이션이 원활하게 동작할 수 있도록 하는 스토리지의 처리 속도를 확보하는 것도 중요하다.

초당 입출력 작업량(IOPS) 이해

AWS는 초당 입출력 작업량(IOPS: Input/Output Operations Per Second)으로 스토리지 성능을 측정한다. IOPS 수치가 높을수록 데이터베이스가 더욱 빠르게 데이터를 읽고 쓸 수 있다. 데이터베이스의 속도는 할당받은 IOPS에 맞춰지며, 단일 I/O 작업에서 전송 가능한 양은 데이터베이스 엔진이 사용하는 페이지 크기에 따라 달라진다.

  • MySQL, MariaDB: 페이지 크기 16KB
  • Oracle, PostgreSQL, Microsoft SQL Server: 페이지 크기 8KB

예를 들어, 초당 102,400KB의 데이터를 읽어야 하는데 페이지 크기가 16KB이면 초당 6400개의 페이지를 읽어야 하므로 최소 6400 IOPS가 필요하다.

RDS는 다음과 같은 스토리지를 제공한다.

 

범용 SSD 스토리지

범용 SSD 스토리지는 대부분의 데이터베이스에서 충분한 성능과 밀리초 수준의 저지연성을 제공한다. 최대 64TB 볼륨 할당이 가능하며, 볼륨의 기가바이트 당 3 IOPS의 기본 성능을 제공하고, 볼륨당 최대 16,000 IOPS의 처리 성능을 활용할 수 있다.

  • 성능: 볼륨의 크기에 따라 달라지며, 클수록 성능이 좋아진다.
  • 가속 기능: 최대 3,000 IOPS의 순간 가속 성능을 제공한다. 처음 데이터베이스 인스턴스를 생성하면 5,400,000 IOPS의 크레딧 잔고가 채워지고, 이를 소진하면 가속 기능을 사용할 수 없다. 예를 들어, 200GB 볼륨의 경우 가속 기능 사용 가능 시간은 37분 정도이다.
  • 크레딧 충전: 크레딧 잔고는 초당 1 IOPS 비율로 다시 충전되며, 200GB 볼륨에 기본 IOPS가 600인 경우 크레딧 잔고는 초당 600 IOPS로 증가하여 최대 5,400,000까지 증가할 수 있다.

프로비저닝 IOPS SSD(io1) 스토리지

복잡한 계산을 피하고 싶다면 프로비저닝 IOPS SSD를 선택할 수 있다. 이 옵션은 인스턴스 생성 시 원하는 수준의 IOPS를 직접 할당할 수 있으며, io1 스토리지는 성능 가속 개념이 없이 필요한 만큼 IOPS를 할당하고 비용을 지불하면 된다.

 

마그네틱 스토리지(스탠다드)

RDS는 역호환성을 유지하기 위해 구형 인스턴스를 위한 마그네틱 스토리지를 제공한다. 이 스토리지는 1TB의 저장 용량에 100 IOPS의 처리 성능을 제공하지만, AWS는 더 이상 이 스토리지를 권장하지 않는다.

이와 같은 다양한 스토리지 옵션을 통해 데이터베이스의 성능 요구사항에 맞추어 적합한 스토리지를 선택할 수 있다.

 

'aws' 카테고리의 다른 글

[AWS] IAM  (0) 2024.07.20
[AWS]데이터베이스 (2)  (0) 2024.07.18
[AWS]VPC (2)  (0) 2024.07.13
[AWS]VPC (1)  (0) 2024.07.09
[AWS]스토리지 (2)  (0) 2024.07.01