관계형 데이터베이스
RDB란?
- 구조화된 데이터를 저장하고 질의할 수 있도록 해주는 스토리지
- RDB를 조작하는 언어가 SQL
- 테이블의 정의를 위한 Data Definition Language
- 조작, 질의를 위한 Data Manipulation Language
- 대표적인 RDB
- 프로덕션 DB : 웹서비스나 모바일 같은 빠른 속도에 집중한 DB, OnLine Transaction Processing (OLTP)
- 데이터 웨어하우스 : 프로덕션 DB를 복사해서 웨어하우스에 저장하는 방식이 많이 쓰임, OnLine Analytical Processing (OLAP)
- RDB의 구조
- 2가지 단계로 구성 → 테이블과 스키마
- 스키마(DB)를 기반으로 테이블들이 내부에 존재
- 테이블의 구조 → 테이블 스키마
- 테이블은 레코드들로 구성된다.
- 레코드는 하나 이상의 필드(컬럼)로 구성
- 필드는 이름과 타입, 속성으로 구성된다.
- SQL의 단점
- 구조화된 데이터를 다루는 것에 최적화됨.
- 비구조화된 데이터를 다루는 것이 가능은 하나, 제약이 심하다.
- 많은 RDB들이 플랫 구조만 지원
- SQL 문법이 상이한 경우가 많음
- 비구조화된 데이터를 다루는 Spark, Hadoop과 같은 분산 컴퓨팅 환경이 필요해짐.
- Star schema
- RDB에서 보통 스타 스키마를 사용하여 데이터를 저장한다.
- 논리적 단위로 저장하여 필요시에 조인한다.
- 저장공간의 낭비가 덜하고 업데이트가 쉽다.
데이터 웨어하우스
- 데이터 웨어하우스 : 회사에 필요한 데이터를 저장한다.
- SQL기반의 별도 DB가 필요하다.
- AWS - Redshift, Big Query, Snowflake 등이 대표적이다.
- 고정비용 옵션(redshift) vs 가변비용 옵션(big query, snowflake)
- DW는 내부의 직원을 위한 DB이다.
- ETL 혹은 데이터 파이프라인
- 데이터 인프라
- 데이터 엔지니어가 관리, 대용량 분산처리 시스템이 추가
클라우드와 AWS
- 클라우드의 정의
- 컴퓨팅 자원을 네트워크를 통해 서비스 형태로 사용하는 것
- “No Provisioning”, “Pay As You Go”
- 자원을 실시간으로 필요한 만큼 사용, 지불
- 장점
- 초기 투자비용이 크게 줄어든다.
- 리소스 관리를 통해 비용을 절약
- 소프트웨어 개발 시간이 단축된다.
- EC2 - Elastic Compute Cloud
- AWS의 서버 호스팅 서비스
- 다양한 서버 타입 제공
- S3 - Simple Storage Service
- 스토리지 서비스
- 버킷을 활용하여 디렉토리를 관리
Redshift
- Redshift : Scalable SQL 엔진
- Still OLAP
- Columnar storage
- 컬럼별 압축이 가능하다.
- 컬럼의 추가, 삭제가 매우 빠름
- 벌크 업데이트 지원
- S3로 파일 복사 후 Redshift로 일괄 복사.
- PK uniqueness를 보장하지 않는다. → 개발자가 다른 방법을 통해 보장해주어야 한다.
- PostgreSQL과 SQL이 호환된다.
- Schema 구성
- 폴더의 구성처럼 사용된다. SQL커맨드 사용 → CREATE SCHEMA table_name;
공부 한 내용
- 클라우드 환경에 대한 간단한 소개
- RDB 짚고 넘어가기
새롭게 배운 내용
- AWS의 S3, EC2에 대해 무슨 역할을 수행하는지 배움.
- Redshift에 대한 개요
느낀점&참고
: 앞으로 사용할 클라우드 기능들에 대한 개요를 통해 사용 목적을 조금이나마 이해 할 수 있었다. 강의를 들으며 PostgreSQL에 대한 언급이 종종 있었는데 이에 대한 궁금증이 생겨 쉽게 설명해준 블로그를 참고 링크로 기재한다.
참고)