반응형
/*
-- Title : SQL(관계형DB) vs. NoSQL(비관계형DB)
-- Tag : sql nosql relational database rdb document db graph db key-value column store 그래프 DB 키-벨류
*/
■ Database Stack 참조
■ SQL(관계형 DB, Relational Database)
ㅁ 정의
- RDB는 고정된 행(Row)과 열(Column)으로 구성된 테이블(Table)로 구성
- 각 열은 하나의 속성에 대한 정보를 저장하고 속성에 따른 데이터 타입을 가짐
- 스키마(Schema)라는 타입/길이/구조에 대해 사전 정의된 후 구축
- 데이터간의 연결(Relation)은 외래키에 의해 정의됨
- 여러 데이터 유형을 스키마 변경 없이 추가할 수 없음
- 수직적 확장(Scale Up) 가능(NewSQL에서는 Scale Out도 지원)
- OLTP 환경 및 데이터 무결성 보장시 적절
ㅁ 종류
- PostgreSQL
- MariaDB
- MySQL
- Oracle
- SQL Server
- Amazon Aurora
■ NoSQL(비관계형 DB, Not only SQL)
ㅁ 정의
- 정해진 스키마가 없으며 언제든 다른 구조의 데이터를 같은 컬렉션(ex. Table)에 추가 가능
- 문서(Document)를 Json 형식으로 저장
- 조인(Join)이라는 개념이 존재하지 않음
- 데이터 읽기/쓰기에 최적화 됨(빅데이터 환경에 유리하고 Update에 불리)
- 수직적 확장(Scale Up) 및 수평적 확장(Scale Out) 지원
ㅁ 종류
- Document DB
- 데이터를 Document 기반으로 XML, JSON과 유사한 형식으로 저장
- 스키마가 유동적으로 레코드마다 각각 다른 스키마를 저장
- 문서 형식을 저장하거나 검색에 유리
- ex. MongoDB, Elastic Search, Apache Cosmos, CouchDB - Column Stroe(Wide Column) DB
- 단일 열(Column) 내부에 중첩 Key-Value 세트로 저장
- 각 열에 Key-Value 형식으로 저장되고 컬럼 패밀리(column Families)라는 열 집합체 단위로 데이터 처리
- 압축 및 집계처리(Sum, Avg, Count 등)에 유리하고 쿼리 조회/적재 성능 이 좋음
- ex. Apachee Cassandra, Hbase, Google Bigtable, Azure Table Storage - Graph DB
- 데이터를 노드(Node)와 엣지(Edge), 속성(Attribure)로 저장
- 노드간의 링크(Link)를 통해 상관관계를 표시하여 탐색
- 조인(Join) 없이 빠른 관계 탐색 가능
- Neo4j, AgensGraph, Amazon Neptune - Key-Value Store
- 속성을 Key(속성) : Value(값)의 쌍으로 정의하여 데이터를 배열 형태로 저장
- Key안에 (Column, Value) 형태의 여러 필드(Column Familes) 가능
- 단순한 구조로 속도가 빠르며 분산 저장에 유리
- ex. Redis, Memcached, Amazon Dynamo
■ CAP 정리
※ Resources
• gyoogle.dev
• code-lab1.tistory.com/53
• ko.wikipedia.org/wiki/NoSQL
• docs.microsoft.com
반응형