1. RDBMS(Relational DataBase Management System)
데이터베이스?
- 관계를 맺고 있는 테이블들로 구성된 데이터들의 집합
- 행은 하나의 데이터를, 열은 데이터의 속성(특성)을 나타냄
- 서로 다른 테이블을 공통 속성을 이용해 join하여 새로운 테이블을 생성 가능
데이터베이스와 스프레드시트의 차이
| RDBMS | SpreadSheet |
| 용량 |
대용량 데이터를 위해 저장, 조회, 처리 등이 최적화 |
한정된 용량 |
| 고유성 |
테이블의 각 행은 고유한 값을 가짐 |
행과 열값이 고유하지 않음 |
| 관계 |
관계 설정 가능 |
관계 설정 불가능 |
| 데이터 타입 |
각 필드는 특정 데이터 타입이나 값을 제한할 수 있음 |
- |
| SQL |
매우 빠르게 조회 가능 |
느린 조회 속도 |
| 보안 |
각 테이블이나 행, 열에 따른 권한 부여가 가능 |
파일 단위로 권한 부여가 가능 |
관계형 데이터베이스
- IBM DB2
- Microsoft SQL Server
- MySQL
- Oracle Database
- PostgreSQL
클라우드 기반 데이터베이스
- Amazon RDS
- Google SQL
- IBM DB2 on Cloud
- Oracle Cloud
- Azure SQL
관계형 데이터베이스의 장점
- 테이블을 조인하여 유용한 데이터를 만들 수 있음
- 데이터베이스를 사용하는 동안 사용가능한 유연성
- 테이블 관계 설정을 통한 데이터 중복의 최소화
- 쉬운 백업과 복구를 위한 유용한 옵션
- 데이터베이스의 트랜잭션의 정확성과 신뢰성을 보장하는 ACID
- 원자성(Atomicity) - 트랜잭션은 전부 성공하거나, 전부 실패
- 일관성(Consistency) - 트랜잭션 이전과 이후, 데이터베이스는 무결성을 유지
- 독립성(Isolation) - 모든 트랜잭션은 다른 트랜잭션과 독립적
- 지속성(Durability) - 하나의 트랜잭션이 성공적으로 수행되면, 기록이 영구적으로 유지
관계형 데이터베이스의 한계
- structured data에 대해서만 사용 가능
- 두 테이블의 스키마와 데이터 타입이 같을 때만 데이터의 마이그레이션이 가능
- 필드에 정의된 길이보다 큰 데이터가 들어오면 데이터의 소실이 있을 수 있음
2. NoSQL(Not only SQL)
NoSQL?
Non-relational database는 데이터의 저장과 조회를 위해 유연한 스키마를 제공
- 클라우드 컴퓨팅, 빅데이터, 웹사이트와 모바일 애플리케이션의 대용량 데이터의 등장으로 인기
- 특정 데이터 모델을 대상으로 사용됨
- 최신 애플리케이션의 생성과 관리를 위한 유연한 스키마를 가짐
- 행과 열로 이루어진 테이블 형식의 스키마를 사용하지 않음
- SQL을 사용하지 않음
- 유연성과 반대로, 일관성 및 ACID 트랜잭션을 잃을 수 있다
- 스키마리스 구조를 이용해 데이터를 저장
- 개발자가 입력 단계에서 데이터의 무결성 검증을 제대로 해야 한다
NoSQL 데이터베이스의 종류
- Key-value Database
- key는 고유한 값으로 유지
- 테이블 간 조인을 고려하지 않으므로 외부키나 컬럼별 constraint 등이 필요 없음
- Column Family Database도 포함하여 얘기하는 경우도 많음
- 값에 모든 데이터 타입을 허용하기 때문에 개발자들이 입력 단계에서 검증 로직을 구현해 데이터 무결성을 보장하는 것이 중요
- 간단한 데이터 모델을 대상으로 데이터를 자주 읽고 쓰는 애플리케이션에 적합
- boolean이나 int값처럼 단순한 값이 일반적이지만, JSON 같은 구조화된 데이터도 저장 가능
- ex)
- Redis
- Riak
- Oracle Berkely
- AWS DynamoDB
- Key-value Database의 사용
- 성능 향상을 위해 관계형 데이터베이스에서 데이터 캐싱
- 장바구니 같은 웹 애플리케이션에서 일시적인 속성 추적
- 모바일 애플리케이션용 사용자 데이터 정보와 구성 정보 저장
- 이미지나 오디오 파일 같은 대용량 객체 저장
- Document Database
-
Key-value Database와 같이 데이터 저장에 Key-value Type을 사용
-
Document Database에서는 값을 문서로 저장
- 문서는 Semi-structured data로 보통 JSON이나 XML을 사용
-
값을 저장하기 전 스키마를 지정하지 않고, 문서를 추가하면 해당 문서가 스키마가 된다
-
각 문서별로 다른 필드를 가질 수 있기 때문에 입력 단계에서 데이터 무결성을 보장해야 한다
- Column Family Database
-
대용량 데이터, 읽기와 쓰기 성능, 높은 가용성을 위해 설계
-
Column과 Row 등 관계형 데이터베이스에서 사용하는 용어를 사용해 스키마 정의
-
미리 정의된 스키마를 사용하지 않기 때문에 입력 단계에서 데이터 무결성을 보장해야 한다
-
테이블 간 조인을 지원하지 않음
-
Column Family Database는 일반적으로 비정규화되어 있음
-
한 객체에 대한 모든 정보를 가능한 매우 넓은 단일 Row에 넣어 저장
- 한 Row에 수백만 개의 컬럼을 보관하는 것도 비정상적인 것이 아님
-
보통 여러 대로 구성된 클러스터에서 운영되며, 단일 서버에서 운영될만큼 데이터가 적다면 Document Database나 Key-value Database를 고려하는 것이 좋다
-
컬럼 수가 많다면 이들을 컬렉션으로 묶어 사용 가능 → Column Family
- 성 + 이름 = 이름 컬렉션
- 사무실 전화 + 핸드폰 전화 = 전화번호
-
ex)
- HBase
- Cassandra
- GCP BigTable
- Microsoft Azure Cosmos DB
-
Column Family Database의 사용
- 데이터베이스에 쓰기 작업이 많은 애플리케이션
- 지리적으로 여러 데이터 센터에 분산되어 있는 애플리케이션
- 복제본 데이터가 단기적으로 불일치하더라도 큰 문제가 없는 애플리케이션
- 동적 필드를 처리하는 애플리케이션
- 수백만 테라바이트 정도의 대용량 데이터를 처리할 수 있는 애플리케이션
- Graph Database
NoSQL의 장점
- 대용량의 Structured, Semi-structured, Unstructured Data를 다룰 수 있음
- 분산된 시스템으로 사용될 수 있음
- 효율적이고 비용 효율적으로 확장 가능한 아키텍처
- 새로운 노드를 추가하여 용량이나 성능을 높일 수 있음
- 간단한 디자인과 더 나은 제어를 통한 가용성과 확장성을 향상
3. Data Warehouse, Data Marts, Data Lakes
데이터 마이닝 저장소는 OLAP로 reporting, 분석, 인사이트 도출 등에 사용됨
Data Warehouse
- 다양한 소스로부터 통합한 데이터의 중심 저장소
- 단일 소스로 사용됨
- 전처리된 데이터를 저장
- 데이터 웨어하우스에 저장된 데이터는 이미 전처리가 완료되어 분석 준비 상태임
- 데이터 웨어하우스는 원래 트랜잭션 시스템의 관계형 데이터를 저장
- NoSQL의 등장 이후 NoSQL 데이터베이스도 데이터 웨어하우스로 사용됨
- 데이터 웨어하우스는 3개의 계층으로 구성
- Database Server - 서로 다른 소스로부터 데이터를 추출
- OLAP Server - 데이터베이스 서버로부터 받은 정보를 처리하고 분석
- Client Front-End Layer - 데이터를 쿼링, reporting, 분석
- 최근에는 클라우드 위에서 사용됨
- 더 적은 비용
- 한계가 없는 용량과 컴퓨팅 용량
- 사용한만큼의 비용 청구
- 빠른 복구 지원
- ex)
- teradata
- Oracle EXADATA
- IBM DB2
- NETEZZA
- Amazon Redshift
- Google Bigquery
- Cloudera
- Snowflake Cloud Data
Data Marts
- 데이터 웨어하우스의 하위 영역
- 특정 비즈니스 목적 또는 사용자를 위해 설계
- 필요한 데이터를 더 빠르고 효율적으로 제공하기 위해 사용됨
- 데이터 마트의 3가지 유형
-
Dependent
- 데이터 웨어하우스의 하위 영역
- 데이터 웨어하우스의 일부분에 대한 분석을 제공
- 독립적인 보안과 독립적인 퍼포먼스를 제공
- 이미 전처리가 된 데이터를 데이터 웨어하우스에서 가져옴
-
Independent
- 독립 데이터 마트는 데이터 웨어하우스가 아닌 운영체제나 외부 소스에서 생성
- 운영 체제 및 외부 소스에서 직접 제공되기 때문에 소스 데이터에 대한 변환 프로세스가 필요
-
Hybrid
- 하이브리드 데이터 마트는 데이터 웨어하우스와 운영체제, 외부 데이터를 모두 결합
Data Lake
- 대용량의 Structured, Semi-structured, Unstructured data를 별도의 가공 없이 저장
- 데이터 구조나 스키마 없이 데이터를 저장
- 소스에서 얻은 데이터를 그대로 저장하여 필요할 때 필요에 맞게 가공
- 데이터 레이크도 데이터 거버넌스를 가지며, 데이터는 분류되고 보호되고 관리됨
- AWS S3이나 Hadoop, NoSQL 데이터베이스 등을 이용해 배포 가능
- 장점
- 모든 종류의 데이터를 저장
- 저장 용량에 따른 빠른 확장
- 데이터 구조, 스키마, 변환에 필요한 시간 절약
- 필요에 따라 데이터를 가공할 수 있음
- ex)
- amazon
- cloudera
- google
- IBM
- Informatica
- Microsoft
- Oracle EXADATA
- SAS
- Snowflake
- teradata
- zaloni