다섯 살도 알 수 있게 · DB/데이터

NoSQL 유형·모델링이 뭐예요?

NoSQL의 네 가지 유형을, 상자 모양에 맞춰 선반을 자유롭게 바꾸는 창고 이야기로 풀어봤어요.

선반 칸들은 모양이 다 똑같아요그런데 들어올 상자는 모양이 다 달라요긴 상자, 둥근 상자, 묶음 상자...

들어올 상자는 모양이 다 달라요.긴 상자, 둥근 상자, 묶음 상자...

상자를 고정 칸에 억지로 끼웠더니 한 칸은 비고, 한 칸은 넘쳐요고정된 칸 모양 때문에 새 모양 상자를 못 담아요

상자를 고정 칸에 억지로 끼웠더니 한 칸은 비고, 한 칸은 넘쳐요.고정된 칸 모양 때문에 새 모양 상자를 못 담아요.

xyNoSQL = 상자 모양에 맞춰 선반을 자유롭게 바꾸는 창고고정 칸 하나가 아니라, 상자를 담는 방식이 여러 가지예요

NoSQL = 상자 모양에 맞춰 선반을 자유롭게 바꾸는 창고예요.고정 칸 하나가 아니라, 상자를 담는 방식이 여러 가지예요.

Key-Value번호표로 바로 꺼내요
Document상자 안이 자유 형식이에요
Column-family행 키 아래 열을 묶어 넓게 저장해요
Graph상자끼리 끈으로 연결해요
NoSQL 네 가지 유형Key-Value — 번호표로 바로 꺼내기예: 캐시Document — 상자 안에 자유 형식예: 상품 정보Column-family — 행 키 아래 열을 묶어 저장예: 로그Graph — 상자끼리 끈으로 연결예: 친구 관계NoSQL은 관계형 창고(정규화)와 상자를 담는 방식부터 달라요

NoSQL은 네 가지 유형으로 나뉘어요.NoSQL은 관계형 창고(정규화)와 상자를 담는 방식부터 달라요.

상자 모양을 미리 안 정해도 담을 수 있어요여러 상자를 묶는 전표(트랜잭션) 지원이 약한 제품이 많아요ACID를 다 지켜야 하면 보통 관계형 창고를 써요

NoSQL은 모양이 자유로운 대신, 여러 상자를 한 번에 묶는 트랜잭션 지원이 약한 제품이 많아요.ACID를 다 지켜야 하면 보통 관계형 창고를 써요.

한 줄로

NoSQL = 고정된 테이블 칸 대신, Key-Value·Document·Column-family·Graph 등 상자 모양에 맞는 방식으로 담는 창고.

NoSQL(Not Only SQL)은 고정 스키마 없이 대용량·비정형 데이터를 유연하게 다루는 데이터 모델의 통칭으로, 수평 확장(샤딩)에 유리하지만 보통 ACID 트랜잭션은 관계형 DB보다 제한적으로 지원해요. 모델링은 조회 패턴을 먼저 정하고 그에 맞춰 데이터를 반정규화해 담는 식으로 이뤄져요.

어른들은 이렇게 불러요

Key-Value
Key-Value
번호표 하나로 상자 하나. 구조가 가장 단순하고, 키로 찾을 때 빨라요.
Document
Document
상자 안에 자유 형식으로 담기. JSON처럼 중첩 구조를 담아요.
Column-family
Column-family
행 키 아래 열 묶음을 담는 넓은 선반. 행마다 열 구성이 달라도 돼요. 열마다 따로 모아 저장하는 분석용 컬럼형 DB와는 달라요.
Graph
Graph
상자끼리 끈으로 연결. 관계 추적에 강해요.
정규화
Normalization
고정 선반에 중복 없이 담는 규칙. NoSQL은 이 규칙을 느슨하게 써요. → 한 칸에 한 번만 적는 규칙
샤딩/파티셔닝
Sharding/Partitioning
창고를 구역으로 쪼개는 것. NoSQL은 보통 샤딩을 쉽게 지원해요. → 구역으로 쪼갠 창고
ACID
ACID
전표가 지키는 네 가지 약속. NoSQL은 ACID를 관계형 창고만큼 엄격히 지키지 않을 수 있어요. → 전표가 지키는 네 약속
인메모리 DB
In-Memory DB
디스크 대신 바로 꺼내는 출고대. Redis처럼 Key-Value형 NoSQL이면서 인메모리인 제품도 있어요. → 특급 출고대
다음 이야기
너무 커진 창고를 구역으로 쪼개기 →
다른 용어도 그림책으로 보고 싶다면 요청하기 →