01 RDS, DocumentDB, DynamoDB

data_hamster·2023년 5월 18일
1

학습주제
AWS DB

학습내용
RDS 중심으로 설명한다


DB에는 RDBMS를 사용하는 SQL이 있고

RDBMS(관계형 데이터베이스 관리 시스템)에서 OLAP(온라인 분석 처리)은 데이터 분석과 의사 결정 지원을 위한 기술입니다.
RDBMS에서 OLAP은 데이터 웨어하우스(DW)나 데이터 마트(DM)와 같은 전용 데이터베이스 구조를 사용하여 데이터를 저장하고, OLAP 쿼리 및 분석 도구를 활용하여 데이터를 처리합니다.
요약하자면, RDBMS에서 OLAP은 대규모 데이터를 다차원적으로 분석하고 요약하여 의사 결정에 활용하는 기술입니다. 데이터를 조직화하고 다양한 관점에서 탐색할 수 있으며, 비즈니스 인텔리전스 분야에서 활발히 사용됩니다.

MSSQL, MySQL, Postgresql 등

서로 중복을 최대한 제거하고
정규화를 통해서 릴레이션식을 가져감.
DW 구성도하고
OLAP를 통해 조회를 할 수 있음.

비정형을 다루는 NoSQL이 있다
MongoDB, DocumentDB, GraphDB 등
스키마 구조가 명확히 정해져 있는게 아님.
그래도 대용량으로 쌓을 수 있음.
key-value, graph, document, column store

AWS 에서 RDBMS를 지원하기위해 RDS가 있다.

DB에서 릴레이션은 관계형 데이터베이스에서 데이터를 구성하는 단위입니다.
릴레이션은 테이블(Table)이라고도 불리며, 열(Column)과 행(Row)으로 구성됩니다. 열은 특정 유형의 데이터를 나타내는 속성이고, 행은 해당 속성의 값들을 포함한 데이터 레코드를 나타냅니다. 각 행은 고유한 식별자인 키(Key)로 식별됩니다.
예를 들어, 학생 정보를 저장하기 위한 릴레이션은 "학생"이라는 테이블로 표현될 수 있습니다. 이 테이블은 여러 열(이름, 학번, 학과 등)과 여러 행(각 학생의 정보)으로 구성됩니다. 각 행은 학생을 고유하게 식별하는 학번과 같은 키로 식별됩니다.
릴레이션은 데이터베이스에서 데이터를 구조화하고 조직화하는 중요한 개념입니다. 관계형 데이터베이스 시스템에서는 여러 개의 릴레이션을 사용하여 데이터를 효율적으로 저장하고 관리합니다. 릴레이션은 테이블 간의 관계를 표현하고, 데이터의 무결성을 유지하며, 데이터 조작과 질의를 위한 기반을 제공합니다.

RDS는

  • 별도의 DB 설치가 필요 없음
  • 직접 시스템 로그인 불가능
  • RDS는 serverless가 아님

쿼리 이용하는건 자연스럽게 커넥트 가능

내부적으로
메인이 되는 RDS Primary가 있고
Stanby로 구성

안에는 인스턴스, 데이터를 저장하는 EBS 구성

주소창에 RDS라고 검색한다


인스턴스로 들어가면
생성된 DB가 없음.
데이터베이스 생성을 눌러본다

엔진 옵션을 선택할 수 있다
오라클, MSSQL을 라이센스 비용을 내야함
나머지는 오픈소스

버전은 가장 최신인 8.0.32를 선택

탬플릿은 프리티어
RDS 비용도 만만치 않음.

실제 서비스 런칭하려면 나머지 선택
식별자는 내가 원하는 DB로
citron-db

비밀번호1로 생성해봄


앞서 프리티어를 선택하였기 때문에 자동 활성화됨


슬랙에서 앞서 말한 과금 예방으로 최소 용량으로 설정한다 무료는 20GB


ec2 컴퓨팅 리소스에 연결안함. 설정

VPC(Virtual Private Cloud)는 Amazon Web Services(AWS)에서 제공하는 가상 사설 클라우드입니다.
VPC는 사용자가 독립적인 가상 네트워크 환경을 생성하고 구성할 수 있게 해줍니다. 이 가상 네트워크 환경은 AWS 클라우드 내에서 격리되어 있으며, 사용자는 이를 사용하여 가상 서버(EC2 인스턴스), 데이터베이스, 로드 밸런서 등의 AWS 리소스를 실행하고 관리할 수 있습니다.

VPC(Virtual Private Cloud) 보안 그룹은 AWS에서 제공하는 가상 방화벽입니다. 보안 그룹은 VPC 내에서 EC2 인스턴스에 대한 인바운드(Inbound) 및 아웃바운드(Outbound) 트래픽을 제어하는 규칙을 정의하는 데 사용됩니다.
보안 그룹은 EC2 인스턴스의 네트워크 트래픽을 관리하기 위해 사용됩니다. 각 보안 그룹은 규칙 세트로 구성되며, 이 규칙은 특정 프로토콜, 포트 및 출발지/목적지 IP 주소 범위에 대한 허용 또는 거부 동작을 정의합니다.
인바운드 규칙은 외부에서 EC2 인스턴스로 들어오는 트래픽을 제어하며, 아웃바운드 규칙은 EC2 인스턴스에서 외부로 나가는 트래픽을 제어합니다. 이를 통해 사용자는 필요한 서비스 및 포트에 대한 액세스를 제한하거나, 안전한 통신을 위해 암호화된 연결을 설정할 수 있습니다.
보안 그룹은 유연하게 구성될 수 있습니다. 한 EC2 인스턴스에 여러 개의 보안 그룹을 할당할 수 있으며, 각 보안 그룹은 다른 규칙을 가질 수 있습니다. 또한, 보안 그룹 규칙은 필요에 따라 동적으로 추가, 수정 또는 제거할 수 있습니다.

DB 서브넷 그룹

파라미터 그룹
DB 설치된 거에 대한 파라미터, 세팅 값을 어떤걸 사용할 것인지

퍼블렉 엑세스
외부에서 접속할 수 있음


암호 인증 선택

데이터 베이스 생성을 누른다.


뭔가 새로운 창이 떴는데 일단 닫는다.


생성중임을 알 수 있다.
약 5분정도 소요

RDB, redshift 차이점

RDS(Relational Database Service)와 Redshift는 모두 AWS에서 제공하는 관리형 데이터베이스 서비스입니다. 그러나 RDS와 Redshift는 서로 다른 목적과 특징을 가지고 있습니다.
RDS는 관계형 데이터베이스를 위한 서비스로, MySQL, PostgreSQL, Oracle, SQL Server 등 다양한 관계형 데이터베이스 엔진을 지원합니다. RDS는 표준적인 트랜잭션 처리와 응용 프로그램의 OLTP(온라인 트랜잭션 처리) 작업에 적합합니다. RDS는 데이터의 일관성과 정확성을 중시하며, 스케일링과 고가용성을 제공합니다.
반면, Redshift는 데이터 웨어하우스를 위한 클라우드 기반 서비스입니다. Redshift는 대량의 데이터를 처리하고 분석하기 위한 최적화된 구조를 가지고 있습니다. Redshift는 컬럼 기반 저장 방식을 사용하며, 병렬 처리 및 압축 기술을 통해 데이터 웨어하우스 작업에 특화되어 있습니다. Redshift는 대규모 데이터 집합의 분석, BI(비즈니스 인텔리전스), 대시보드 작성 등에 적합합니다.
RDS는 OLTP 작업에 특화되어 있으며, 표준적인 관계형 데이터베이스 작업을 처리합니다. Redshift는 대규모 데이터 웨어하우스 작업을 위해 최적화되어 있으며, 분석 및 BI 작업에 사용됩니다. 또한, RDS는 일반적인 트랜잭션 처리를 위해 사용되는 반면, Redshift는 대량의 데이터 집합을 집계, 분석하고 복잡한 쿼리를 실행하는 데에 사용됩니다.
요약하자면, RDS는 관계형 데이터베이스를 위한 관리형 서비스로 OLTP 작업에 적합하며, Redshift는 데이터 웨어하우스를 위한 서비스로 대규모 데이터 분석에 특화되어 있습니다. RDS는 표준적인 관계형 데이터베이스 엔진을 지원하고, Redshift는 대량의 데이터를 처리하고 분석하는 데에 최적화된 구조를 가지고 있습니다.

OLTP vs OLAP의 개념인거 같다

RDS를 이용하게 되면 백업을 하게됨(자동 스냅샷)
수동 스냅샷도 할 수 있음.

별도로 실행 시킬 수 있음.
DB 안의 작업을 잘못했거나, 복구가 어려울 정도면 스냅샷을 사용하여 이전 환경으로 돌아갈 수 있다.


파라미터 그룹. DB에서 기본적인 세팅을 할 수 있는 그룹이다.

강사님은 뭐가 많이 설정되어 있다.
파라미터에 세팅을 하면 DBMS에 적용할 수 있도록 제공됨.

DB 접속해볼 수 있는 클라이언트 툴도 하나 준비해보는 것이 좋겠다.


엔드포인트
포트
가 모두 나와서 mysql workbench에 접속을 시도해봤는데 다음과 같은 에러가 뜸


보안그룹으로가서 VPC 선택 후, 인바운드 규칙을 가본다

강사님은 MYSQL 포트가 연결되어 있다.
나의 경우 없다


ip 대역을 입력해야될꺼 같은데. 일단 뭘 입력해야될 모르겠다

인스턴스에 도달할 수 있는 트래픽을 판별합니다. 단일 IP 주소 또는 CIDR 표기법으로 된 IP 주소 범위(예: 203.0.113.5/32)를 지정합니다. 방화벽 뒤에서 접속하는 경우, 클라이언트 컴퓨터가 사용하는 IP 주소 범위가 필요합니다. 동일 리전 내 다른 보안 그룹의 이름이나 ID를 지정할 수 있습니다. 다른 AWS 계정에서 보안 그룹을 지정하려면(EC2-Classic에만 해당) 보안 그룹 이름 앞에 계정 ID와 슬래시를 붙입니다

일단 외부에서 접속 가능한 ip 주소 범위인거 같은데, 모든 곳에서 접속 가능하게 해보겠다.

추가했는데 아직도 같은 오류가 뜸 수업 마치고 좀 시도 예정.

RDS로 돌아가서
인스턴스
엔드포인트 주소를 통해 연결이 가능하다.

해결함.
아까 데이터베이스 비밀번호 '비밀번호1'인걸 까먹고 다른걸 계속 시도함.
그리고 내부에 별도 스키마를 생성하지 않았기 때문에 비워놔야함.

아무 스키마도 생성되지 않음.
그래도 뭔가 해결되어 연결되니 뿌듯함.

현재는 public이라 바로 접속이 가능함.

Private이라면 배셔노스? SSL을 말씀하시는거 같다

RDS 데이터베이스를 "private"으로 설정하면, 인터넷에서 직접 접근할 수 없도록 하여 추가적인 보안을 제공할 수 있습니다. 이렇게 설정된 RDS 데이터베이스는 VPC(Virtual Private Cloud) 내에서만 접근할 수 있게 됩니다.
별도의 SSL(보안 소켓 계층) 인증서를 사용하면, 데이터베이스와 클라이언트 간의 통신이 암호화되어 보안 수준이 향상됩니다. SSL 인증서는 클라이언트와 RDS 데이터베이스 간의 통신을 암호화하여 데이터를 안전하게 전송하는 데 사용됩니다.
RDS 데이터베이스를 "private"으로 설정하고 SSL을 구성하면, VPC 내에서 액세스 가능한 클라이언트만 RDS에 접속할 수 있으며, 데이터베이스와 클라이언트 간의 통신은 안전한 SSL 연결을 통해 이루어집니다. 이를 통해 데이터베이스의 보안을 강화할 수 있으며, 인터넷을 통한 외부 공격으로부터 데이터베이스를 보호할 수 있습니다.
이러한 보안 요소를 설정하려면 RDS 콘솔 또는 AWS CLI(Command Line Interface)를 사용하여 RDS 인스턴스의 보안 그룹 및 VPC 구성을 관리하고, SSL 인증서를 적용해야 합니다. 또한, 클라이언트 애플리케이션에서도 SSL을 지원하도록 구성해야 합니다.

중계 연결할 수 있도록 별도의 세팅이 필요하다

RDS를 안쓴다고 하면 별도를 DB를 설치해서 ec2에 작업을 해야한다. 그럼 복잡해짐.
mySQL을 설치했다면 직접 서버에 들어갈 수 있지만 앞서 얘기했다 시피
자체로 이 서비스 내에서 안에 들어가 DB 엔진 설정은 불가능함.

만일 워크벤치 접속이 안될때 확인
1. 퍼블릭 엑세스 가능을 예로 했는지
2. 포트 3306이 ec2 보안그룹에서 열려있는지 (나도 이게 없어서 새로 생성함)

현재 강사님도 mysql을 특정 ip 대역으로만 들어갈 수 있게 했기 때문에 실패함.
모든 아이피인 0.0.0.0으로 함
성공

워크벤치에서 스키마 만들고, 테이블 만들면 된다. -> 스냅샷 한번 써보고 싶음.
내 IP, 내 사무실에서만 접속하게 하고 싶으면 IP 대역을 설정하면 된다.

수동으로 스냅샷 1개 생성함

시스템도 자체적으로 스냅샷을 생성함

데이터베이스 - 작업 - 특정 시점으로 복원을 하면

그 시점으로 돌아가 DB 서버를 다시 만들어준다.

이렇게 하면 그 시점의 별도의 DB가 1개 더 생성된다. 기존 DB는 남아있음.

사실상 citron-db의 과거 시점을 담고있는 새로운 데이터베이스를 만든다고 보면 된다.
현재 스냅샷을 기준으로 새로운 DB를 만들어냈다.

NoSQL

Document DB

MongoDB와 DocumentDB는 모두 NoSQL 데이터베이스로서 비슷한 개념을 가지고 있지만, 다른 제품이며 관계성이 다릅니다.
MongoDB는 오픈 소스 NoSQL 데이터베이스이며, 유연한 문서 지향 데이터 모델을 사용합니다. MongoDB는 JSON과 유사한 BSON(Binary JSON) 형식의 문서를 저장하고, 이를 사용하여 데이터를 구조화합니다. MongoDB는 동적인 스키마를 지원하며, 필요에 따라 문서의 구조를 자유롭게 변경할 수 있습니다. 이는 개발자에게 유연성을 제공하며, 다양한 데이터 형식과 구조를 처리할 수 있습니다.
DocumentDB는 AWS에서 제공하는 완전 관리형 NoSQL 데이터베이스 서비스입니다. DocumentDB는 MongoDB와의 호환성을 제공하여 MongoDB와 비슷한 방식으로 문서 데이터를 저장하고 쿼리할 수 있습니다. DocumentDB는 MongoDB의 API 호환성을 유지하면서, 데이터의 확장성, 내구성, 보안 및 관리 기능을 AWS의 인프라에 통합하여 제공합니다.
MongoDB와 DocumentDB의 관계성은 DocumentDB가 MongoDB와 호환성을 가지고 있기 때문에 기존에 MongoDB를 사용하던 애플리케이션을 DocumentDB로 이전하는 데 용이합니다. DocumentDB는 MongoDB와 유사한 개념과 쿼리 언어를 사용하여 문서 데이터를 처리할 수 있기 때문에, MongoDB로 개발된 애플리케이션을 DocumentDB로 쉽게 이관할 수 있습니다. 이를 통해 AWS 환경에서 MongoDB 호환성을 유지하면서 완전 관리형 NoSQL 데이터베이스를 활용할 수 있습니다

가용성

데이터베이스에서 가용성은 시스템이 지속적으로 정상적으로 작동하고 서비스를 제공할 수 있는 능력을 나타냅니다. 가용성은 사용자가 데이터베이스에 접근하고 데이터를 읽고 쓸 수 있는 상태를 유지하는 것을 의미합니다

MongoDB API 하고 연계가 됨.
MongoDB 관련 작업을 하고 싶다면 DocumentDB를 선택
특이점으로 복사본을 3군데의 가용영역에 나누어 저장.

  • JSON 데이터 사용
  • 유연한 인덱싱

MongoDB

Table -> Collection
Row -> Document
Column -> Field

용어가 다르다.

DocumentDB 클러스터를 생성해본다

생성과정은 간단함

MongoDB에서도 클라우드를 제공하는 유료 서비스가 있음



접속하는 방법에 대해 안내하고 있다

ec2에 직접 MongoDB를 설치해도 된다.

DynamoDB

  • Auto Scaling 알아서 용량이 증대됨. 처음에 용량 설정 X
  • 암호화 제공
  • 트래픽 처리 테이블
  • 테이블 생성시 별도의 스키마 불필요



RDBMS와 비교를 해보면
row -> item
partition key를 통해 찾음
sort key를 통해 정렬함

DynamoDB

  • DynamoDB는 모든 리전 사용 가능
  • IAM 통해 액세스 제어

  • key value 중심
  • 하이퍼 스케일 (용량에 상관없이 서비스 가능함)
  • 아이템 크기가 400kb로 상대적으로 작음


테이블을 간단하게 만들 수 있다.

최초 파티션 키, 소트 키로 속성 생성함.

작업 - 항목 생성에 들어가면 됨



새로운 데이터를 이렇게 넣을 수 있다.

조회는 두개지 방법이 있다. 스캔, 쿼리


스캔은 파티션 키를 이용해 조회하고


쿼리는 다양한 정보를 입력해서 정교한 조회가 가능하다.

실무에선 이렇게 하나씩 넣지는 않음. 프로그래밍 방식으로 넣게됨. lamda를 통해 원천 소스의 row 데이터를 한꺼번에 넣게 됨.

NoSQL을 사용하는 이유는 대용량 데이터 처리를 위함.

profile
반갑습니다 햄스터 좋아합니다

0개의 댓글