RDB( Relational Data Base) (SQLDB)
- key와 value들의 간단한 관계를 테이블화 시킨 전산정보 데이터베이스
- 장점
- 정형화된 데이터를 저장하기 때문에 데이터의 형태와 크기를 미리 정하고 2차원의 테이블 단위로 구분하여 데이터 저장 가능
- 트랜잭션을 통해 ACID (원자성, 일관성, 격리성, 지속성, Atomicity, Consistency, Isolation, Durability )를 보증하여 안정적인 데이터 관리 가능
- 조인(Join)을 포함해 복잡한 조건을 포함하는 데이터 검색이 가능하다. (복잡한 질의 처리 가능)
- 데이터베이스 정규화, 데이터 중복성을 줄이고 무결성을 개선하는 설계 기법 사용
- 무결성: 데이터가 전송, 저장되고 처리되는 모든 과정에서 변경되거나 손상되지 않고 완전성, 정확성, 일관성을 유지함을 보장하는 특성
- 테이블의 서로 연관성으로 인해, 일반 DBMS보다 효율적인 데이터 저장, 구성, 관리가 가능하다.
- 단점
- 테이블 간 관계를 맺고 있어 시스템이 커질 경우 JOIN문이 많은 복잡한 쿼리 발생 가능
- Scale-up만 지원
- 기존 서버의 사양 업그레이드 (수직적 스케일링)
- Scale out 불가능, 처리 비용 부담 증가 위험성
- 장비의 추가와 확장
- 서버 추가 확장으로 수평 스케일링이라고도 한다.
- 기존 서버 부함 분담
- 스키마로 인한 데이터 유연성 부족
- 스키마가 변경될 경우 번거로움
- 활용 범위
- 데이터 구조가 명확하며 데이터의 변경 가능성이 낮은 경우
- 데이터 변경이 자주 이루어지는 시스템 ( 중복된 데이터가 없어 변경이 용이)
- 장점
NoSQL ( Not Only SQL ) ++
- 데이터베이스 관리 시스템으로 대용량 데이터베이스를 위해 설계되어, 롤백,커밋,이중 암호 지원 보안등의 기능 제공으로 많은 서비스에서 사용됨
- RDBMS의 성능 및 한계 극복 목적으로 등장
- ACID 특성 제공 X, 확장성과 성능높음
- 테이블 간 관계 정의 X
- 테이블간 Join 필요 X
NoSQL 모델 종류
- Key-Value DB
- Key-Value 방식으로 데이터를 저장
- Key값은 모든 데이터 타입을 수용할 수 있고, 중복되지 않는 유니크한 값
- 메모리 기반으로 빠르게 데이터를 읽어올 수 있음
Ex. Redis, AWS DynamoDB, Riak 등
- Document DB
- 비정형 대량 데이터를 저장하기 위한 방식
- Key-Value에서 확장된 방식으로, Key-Document 형태로 저장
- Document는 계층적인 데이터 타입(JSON, XML)으로 저장됨
- JSON 타입을 사용하므로 HTTP 기반의 웹서버의 경우 데이터를 편리하게 주고받을 수 있음
Ex. MongoDB, Couch DB 등
- Wide Column DB
- Row가 아닌 Column 위주로 데이터를 저장하는 방식
- Key, Value와 유사한 형태의 Column-family Model
- 데이터가 내부에서 Key를 기준으로 오름차순 저장됨
- 이전의 모델들이 key-value 값을 이용해 필드를 결정했다면, 이 모델은 키에서 필드를 결정
Ex. HBase, Hypertable
- Gragph DB
- 객체와 관계를 그래프 형식의 데이터로 저장하기 위한 방식
- 데이터를 Node와 Edge, Property와 함께 그래프 구조를 사용하여 데이터를 저장
- SNS, Network Diagrams 등과 SNS에서 함께 아는 친구 찾기, 추천 등 연관된 데이터를 추천해주는 엔진이나 패턴 기능에 사용
Ex. Neo4j
- 장점
- 스키마가 없어 유연하고 자유로운 데이터 구조
- 언제든 저장된 데이터 조정과 새로운 필드 추가 가능
- 성능 향상을 위해 Scale-up / Scale-out 모두 가능
- 데이터 분산 용이, RDBMS에 비해 대용량 데이터 저장 가능
- 스키마가 없어 유연하고 자유로운 데이터 구조
- 단점
- 스키마 존재 X 데이터의 일관성 X
- 데이터 구조 결정 어려움
- 데이터의 중복 발생
- 데이터 변경 시 모든 컬렉션 update 필요
- 스키마 존재 X 데이터의 일관성 X
Ex. A, B 고객이 모두 C 상품을 주문을 한다고 할 때,
A, B 고객의 주문 정보에는 모두 C라는 상품 정보가 중복되어 들어가 있을 것이다.
⠀
RDBMS의 경우 C 상품 정보 테이블을 따로 빼서 관리하면 되는데,
NoSQL의 경우 이 값들이 중복되기 때문에 관리가 필요하다
활용범위 ( NoSQL )
1. 정확한 데이터 구조를 알 수 없고 데이터가 변경/확장 될 수 있는 경우
2. 데이터의 수정이 많이 이루어지는 시스템
3. 데이터베이스를 Scale-Out 하여 많은 데이터를 저장해야할 경우
'ComputerScience > 데이터베이스' 카테고리의 다른 글
인덱스란 무엇이고 왜 쓰는 걸까? (0) | 2025.01.30 |
---|---|
WHERE, WHEN, HAVING에 대하여 (0) | 2024.10.13 |