2025-08-30 01:03

Tags: SQL

NoSQL (Not Only SQL)

  • 기존 관계형 데이터베이스 의 한계를 극복하기 위해 등장.

    • 전통적인 테이블은 계속 수직적으로 쌓아야해서 확장하는게 비싸고 큰 데이터는 다루기 어려움
    • 스키마가 경직되어 구조 한번 만들면 바꾸기 매우 어렵고 위험함
    • 비정형 데이터 다루기 어려움
  • 유연한 데이터 모델링과 수평적 확장 가능

  • 생각보다 명확한 기준이 있다고 보긴 어렵고 그냥 대충 관계형 데이터베이스 아니면 일단 NoSQL 로 분류하는 느낌

  • ACID 원칙 같이 일관성을 중시하기 보단 가용성과 확장성 우선 빅데이터, 실시간 웹 앱 등 적합

  • CAP 이론에 따르면 분산 데이터 시스템은

    • 세 가지 핵심 가치인 일관성(Consistency), 가용성(Availability), 분할 용인성(Partition Tolerance) 중 최대 두 가지만 동시에 보장할 수 있다는 원칙 존재함
    • 이때 NoSQL은 일관성을 약간 포기하고, 가용성+분할 용인성인 (AP)가 더 중요한 경우를 위한 경우가 대부분
데이터 모델핵심 개념비유대표적인 사용 사례대표 제품
문서 (Document)JSON/XML과 유사한 문서 단위로 데이터를 저장. 각 문서는 고유 키를 가짐.개별 파일이 담긴 서류 캐비닛콘텐츠 관리, 사용자 프로필, 이커머스MongoDB, Couchbase
키-값 (Key-Value)고유한 키(Key)에 하나의 값(Value)을 매핑하여 저장하는 가장 단순한 형태.거대한 사전(Dictionary)캐싱, 세션 관리, 실시간 순위표Redis, Amazon DynamoDB
컬럼 패밀리 (Column Family)행(Row)마다 다른 스키마를 가질 수 있으며, 행과 열, 타임스탬프로 데이터를 식별.행마다 열을 자유롭게 추가하는 스프레드시트로그 데이터, IoT 센서 데이터, 시계열 데이터Apache Cassandra, HBase
그래프 (Graph)노드(Node), 엣지(Edge), 속성(Property)을 사용하여 데이터 간의 관계를 표현.소셜 네트워크 연결망, 지하철 노선도소셜 네트워크 분석, 추천 엔진, 사기 탐지Neo4j, Amazon Neptune
구분RDBMS (예: MySQL, PostgreSQL)NoSQL (예: MongoDB, Cassandra)
데이터 구조엄격한 스키마, 정형 데이터유연한 스키마, 비정형/반정형 데이터
확장성주로 수직적 확장 (Scale-up)주로 수평적 확장 (Scale-out)
일관성강한 일관성 (ACID)주로 최종적 일관성 (BASE)
쿼리SQL을 통한 복잡하고 강력한 쿼리단순한 API, 제한적인 쿼리 (JOIN 미지원 등)
핵심 가치데이터의 무결성, 정합성서비스의 가용성, 확장성, 유연성
최적 사용 사례금융 거래, ERP, 예약 시스템빅데이터, 실시간 웹 앱, IoT, 콘텐츠 관리

https://namu.wiki/w/NoSQL