01. NoSQL
NoSQL은 비관계형 데이터베이스를 지칭한다.
기존 RDBMS형태의 관계형 데이터베이스의 한계를 극복하기 위한 데이터 저장소의 새로운 형태이다.
대량 분산된 데이터를 저장하고 조회하는데 특화되었으며 스키마없이 사용하거나, 느슨한 스키마를 제공하는 저장소를 뜻한다.
❓ 스키마
데이터베이스에서 자료의 구조, 자료의 표현 방법, 자료 간의 관계를 형식 언어로 정의한 구조를 의미한다.
외부 스키마, 내부 스키마, 개념 스키마로 나뉜다.
02. NoSQL의 종류
① Document Store
집합적 데이터 모델로, Database에 값을 문서(Document )로 저장하는 것이 가장 큰 특징이다.
✓ 특징
- 계층적 트리 데이터 방식으로 저장한다. (XML, JSON, BSON 등)
- 데이터를 저장하기 전에 스키마를 별도로 정의하지 않으며, document가 스키마가 된다.
- 데이터를 여러 서버에 분산 저장할 수 있어 장애가 발생하더라도 대응에 유리
✓ When?
- 대용량 데이터를 읽고 쓰는 웹 사이트용 백엔드 지원
- 제품처럼 다양한 속성이 있는 데이터 관리
- 다양한 유형의 메타데이터 추적
- JSON 데이터 구조를 사용하는 애플리케이션
✓ 종류
② Key-Value Store
Key를 이용해 value에 접근하는 구조로, 저장과 조회에 충실한 데이터베이스
✓ 특징
- Key를 이용해 value에 접근하는 가장 기본적인 구조로, List, Set 등 모든 데이터 타입이든 저장 가능하다.
- 개발 시 데이터 입력 단계에서 검증 로직을 제대로 구현하는 것이 중요
- 데이블간 조인(JOIN)을 고려하지 않으므로, RDB(Relational Database)에서 관리하는 외부키나, 컬럼별 constraints등이 필요 없다.
✓ When?
- 성능 향상을 위해 관계형 데이터베이스에서 데이터 캐싱
- 장바구니 같은 웹 애플리케이션에서 일시적인 속성 추적
- 모바일 애플리케이션용 사용자 데이터 정보와 구성 정보 저장
- 이미지나 오디오 파일 같은 대용량 객체 저장
✓ 종류
Redis | Oracle NoSQL Database | Riak | AWS DynamoDB |
---|
| | | |
③ Wide-Column Store
COLUMN FAMILIES를 사용하는 컬럼 중심 데이터 베이스
✓ 특징
Column Family Database
라고도 하며, 대용량 데이터, 읽기와 쓰기 성능, 고가용성을 위해 설계
- Column과 Row를 사용해서 스키마를 정의하며, 여러 개의 Column 묶음을 뜻하는 Column Family 형태로 이루어져 있다.
- Document Database와 같이 미리 정의된 스키마를 사용하지 않으므로 원하는 시점에 Column을 추가할 수 있다.
✓ When?
- 데이터베이스에 쓰기(Write) 작업이 많은 애플리케이션
- 지리적으로 여러 데이터 센터에 분산되어 있는 애플리케이션
- 대용량 데이터를 다루는 애플리케이션
✓ 종류
Hbase | Cassandra | Google BigTable |
---|
| | |
④ Graph Store
노드(Node)사이의 관계를 엣지(Edge)로 표현하는 그래프 구조를 사용해 데이터를 표현하고 저장한느 데이터베이스
✓ 특징
- 노드는 key-value 값을 가지고 있고, 노드는 하나 이상의 레이블을 구성할 수 있다.
- 레이블 : 노드를 세트로 그룹화할 수 있는 그래프의 구성 요소로, 동일한 라벨이 붙은 모든 모드는 동일한 그룹에 속한다.
- 그룹화된 노드를 통해(레이블) 쿼리를 쉽게 작성하고 효율적으로 실행할 수 있다.
✓ When?
- 지식 그래프나 소셜 그래프
- 사기 탐지 및 추천 엔진
✓ 종류
Neo4j | Titan |
---|
| |
03. 비교
| Document Store | Key-Value Store | Wide-Column Store | Graph Store |
---|
성능 | 높음 | 높음 | 높음 | 가변적 |
확장성 | 가변적(높음) | 높음 | 높음 | 가변적 |
유연성 | 높음 | 높음 | 준수 | 높음 |
복잡성 | 낮음 | 없음 | 낮음 | 높음 |
기능 | 가변적(낮음) | 가변적(없음) | 최소 | 그래프 이론 |
💡그래프 이론(graph theory)
객체 간에 짝을 이루는 관계를 모델링하기 위해 사용되는 수학 구조인 그래프에 대한 이론을 말한다.
※ 꼭짓점(vertex), 교점(node), 점(point)으로 구성되며 이것들은 간선(edge)으로 연결된다
04. 데이터 무결성과 제약조건
① 데이터 무결성이란
-
말 그대로 데이터에 결함이 없는 상태를 뜻하며, 데이터를 정확하고 유효하게 유지하는 것을 말한다.
-
데이터의 정확성과 일관성을 유지/보증하기 위해 데이터베이스의 삽입, 삭제, 연산으로 상태가 변하더라도 무결성 제약조건을 반드시 지켜져야 한다.
② 무결정 제약 조건
❶ 개체 무결성(Entity Integrity)
- 모든 테이블은 기본 키(primary key)를 가져야 하며, 기본키로 선택된 열은 고유하여야 하고, Null값은 허용되지 않는다.
❷ 참조 무결성(Referential Integrity)
- 모든 외래 키 값은 Null이거나 참조 릴레이션의 기본키 값과 동일해야 한다.
- 릴레이션은 참조할 수 없는 외래키 값을 가질 수 없다.
※ 릴레이션 :계형 데이터베이스에서 정보를 구분하여 저장하는 기본 단위로, DB테이블을 뜻한다.
❸ 범위(도메인) 무결성(Domain Integrity)
- 정의된 범위에서 관계형 데이터베이스의 모든 열이 선언되어야 한다.
❹ 키 무결성(Key Integrity)
- 릴레이션에는 최소한 하나의 키가 존재해야 한다.
❺ null 무결성(Null Integrity)
- 특정 속성은 null 값을 가질 수 없다.
- ex) 유저 아이디와 같은 필수 정보는 스키마를 정의할 때 null값을 가질 수 없도록 미리 정의한다.
❻ 고유 무결성(Unique Integrity)
- 각 튜플의 속성값은 중복되지 않는 고유한 값이여야 한다.
❓ Key란?
검색, 정렬 시 튜플(레코드, 행)을 구분할 수 있는 기준이 되는 속성을 말한다.
- 기본키(Primary Key) : table당 1개만 지정하며, 하나의 테이블에서 특정 튜플을 구별할 수 있는 속성(Attribute)을 의미한다.
- 후보키(Candidate Key) : 기본키로 사용할 수 있는 속성(유일성, 최소성)을 의미한다.
- 외래키(Foreign Key) : 참조되는 테이블의 기본키와 대응되어 테이블 간에 참조 관계를 표시하는 키로, 테이블 간의 잘못된 매핑을 방지하는 역할을 한다.
📁 참고자료
- NoSQL 의 종류별 특징
- NoSQL의 역사와 특징
- What are labels in graph database
- [데이터베이스] 무결성 제약조건
- [Database] 데이터베이스 용어 - 릴레이션, 어트리뷰트, 튜플, 도메인, 차수, 카디널리티, 스키마
- [SQL] 키(슈퍼키,대체키,후보키,기본키,외래키)