[팀스터디] NoSQL과 NoSQL 종류 / 데이터 무결성

Haizel·2024년 1월 3일
1
post-thumbnail

01. NoSQL


NoSQL은 비관계형 데이터베이스를 지칭한다.

기존 RDBMS형태의 관계형 데이터베이스의 한계를 극복하기 위한 데이터 저장소의 새로운 형태이다.

대량 분산된 데이터를 저장하고 조회하는데 특화되었으며 스키마없이 사용하거나, 느슨한 스키마를 제공하는 저장소를 뜻한다.

스키마
데이터베이스에서 자료의 구조, 자료의 표현 방법, 자료 간의 관계를 형식 언어로 정의한 구조를 의미한다.
외부 스키마, 내부 스키마, 개념 스키마로 나뉜다.


02. NoSQL의 종류


① Document Store

집합적 데이터 모델로, Database에 값을 문서(Document )로 저장하는 것이 가장 큰 특징이다.

✓ 특징

  • 계층적 트리 데이터 방식으로 저장한다. (XML, JSON, BSON 등)
  • 데이터를 저장하기 전에 스키마를 별도로 정의하지 않으며, document가 스키마가 된다.
  • 데이터를 여러 서버에 분산 저장할 수 있어 장애가 발생하더라도 대응에 유리

✓ When?

  1. 대용량 데이터를 읽고 쓰는 웹 사이트용 백엔드 지원
  2. 제품처럼 다양한 속성이 있는 데이터 관리
  3. 다양한 유형의 메타데이터 추적
  4. JSON 데이터 구조를 사용하는 애플리케이션

✓ 종류

MongoDBCouchDBCouchbase


② Key-Value Store

Key를 이용해 value에 접근하는 구조로, 저장과 조회에 충실한 데이터베이스

✓ 특징

  • Key를 이용해 value에 접근하는 가장 기본적인 구조로, List, Set 등 모든 데이터 타입이든 저장 가능하다.
    • 개발 시 데이터 입력 단계에서 검증 로직을 제대로 구현하는 것이 중요
  • 데이블간 조인(JOIN)을 고려하지 않으므로, RDB(Relational Database)에서 관리하는 외부키나, 컬럼별 constraints등이 필요 없다.

✓ When?

  1. 성능 향상을 위해 관계형 데이터베이스에서 데이터 캐싱
  2. 장바구니 같은 웹 애플리케이션에서 일시적인 속성 추적
  3. 모바일 애플리케이션용 사용자 데이터 정보와 구성 정보 저장
  4. 이미지나 오디오 파일 같은 대용량 객체 저장

✓ 종류

RedisOracle NoSQL DatabaseRiakAWS DynamoDB


③ Wide-Column Store

COLUMN FAMILIES를 사용하는 컬럼 중심 데이터 베이스

✓ 특징

  • Column Family Database라고도 하며, 대용량 데이터, 읽기와 쓰기 성능, 고가용성을 위해 설계
  • Column과 Row를 사용해서 스키마를 정의하며, 여러 개의 Column 묶음을 뜻하는 Column Family 형태로 이루어져 있다.
  • Document Database와 같이 미리 정의된 스키마를 사용하지 않으므로 원하는 시점에 Column을 추가할 수 있다.

✓ When?

  1. 데이터베이스에 쓰기(Write) 작업이 많은 애플리케이션
  2. 지리적으로 여러 데이터 센터에 분산되어 있는 애플리케이션
  3. 대용량 데이터를 다루는 애플리케이션

✓ 종류

HbaseCassandraGoogle BigTable


④ Graph Store

노드(Node)사이의 관계를 엣지(Edge)로 표현하는 그래프 구조를 사용해 데이터를 표현하고 저장한느 데이터베이스

✓ 특징

  • 노드는 key-value 값을 가지고 있고, 노드는 하나 이상의 레이블을 구성할 수 있다.
    • 레이블 : 노드를 세트로 그룹화할 수 있는 그래프의 구성 요소로, 동일한 라벨이 붙은 모든 모드는 동일한 그룹에 속한다.
  • 그룹화된 노드를 통해(레이블) 쿼리를 쉽게 작성하고 효율적으로 실행할 수 있다.

✓ When?

  1. 지식 그래프나 소셜 그래프
  2. 사기 탐지 및 추천 엔진

✓ 종류

Neo4jTitan


03. 비교


Document StoreKey-Value StoreWide-Column StoreGraph 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)

  • 각 튜플의 속성값은 중복되지 않는 고유한 값이여야 한다.
    • ex) 대표적으로 유저 아이디나 유저 이메일

❓ Key란?
검색, 정렬 시 튜플(레코드, 행)을 구분할 수 있는 기준이 되는 속성을 말한다.

  • 기본키(Primary Key) : table당 1개만 지정하며, 하나의 테이블에서 특정 튜플을 구별할 수 있는 속성(Attribute)을 의미한다.
  • 후보키(Candidate Key) : 기본키로 사용할 수 있는 속성(유일성, 최소성)을 의미한다.
  • 외래키(Foreign Key) : 참조되는 테이블의 기본키와 대응되어 테이블 간에 참조 관계를 표시하는 키로, 테이블 간의 잘못된 매핑을 방지하는 역할을 한다.


📁 참고자료

profile
한입 크기로 베어먹는 개발지식 🍰

0개의 댓글