Post

NoSQL 기초 개념

NoSQL 기초 개념

NoSQL 기초 개념

관계형 데이터베이스의 한계를 극복한 새로운 데이터 저장 방식

NoSQL이란?

NoSQL(Not Only SQL)은 전통적인 관계형 데이터베이스보다 덜 제한적인 일관성 모델을 이용하는 데이터 저장 및 검색을 위한 매커니즘을 제공하는 데이터베이스입니다.

NoSQL 출현 배경

1. 확장성 (Scalability)

  • 작업 부하에 대한 요구사항을 효율적으로 충족시키는 능력
  • NoSQL DB는 필요에 따라 스케일 아웃을 할 수 있도록 설계
  • 클러스터에서 여러 서버를 사용할 수 있도록 구성

2. 비용 (Cost)

  • RDBMS는 서버 용량, 동시 접속자 수, DB 접근 사용자 수에 따라 비용 청구
  • 주요 NoSQL 데이터베이스는 오픈소스로 제공
  • 저렴한 비용으로 대용량 데이터 처리 가능

3. 유연성 (Flexibility)

  • RDBMS는 프로젝트 시작 시 모든 테이블과 컬럼을 미리 정의해야 함
  • NoSQL은 고정된 테이블 구조가 필요하지 않음
  • 설계 변경 없이 새로운 속성을 추가할 수 있음

4. 가용성 (Availability)

  • 저렴한 비용으로 서버를 여러 개 이용할 수 있도록 설계
  • 서버 하나가 중지되어도 다른 서버가 작업량을 대체
  • 고가용성 보장

ACID vs BASE

ACID (RDBMS)

  • Atomicity (원자성): 트랜잭션은 분할할 수 없으며, 모두 수행되거나 모두 수행되지 않아야 함
  • Consistency (일관성): 데이터는 언제나 무결한 상태로 관리됨
  • Isolation (고립성): 트랜잭션이 완료되기 전까지는 다른 사용자에게 보이지 않음
  • Durability (지속성): 작업이 완료되면 서버의 전원이 차단되어도 데이터는 온전하게 남아있음

BASE (NoSQL)

  • Basically Available (기본적 가용성): 분산 시스템이 부분적으로 고장나더라도 시스템의 나머지 부분은 계속 기능을 수행
  • Soft State (소프트 상태): 데이터는 더 최신 상태의 데이터로 덮어쓰임
  • Eventually Consistent (결과적 일관성): 데이터베이스가 일관성이 없는 상태가 될 때가 있음

NoSQL 데이터베이스 유형

1. 키-값 데이터베이스 (Key-Value)

  • 가장 간단한 형태의 NoSQL DB
  • 키와 값이라는 두 요소로 구성
  • : 값과 연관된 식별자
  • : 키와 함께 저장되는 데이터

특징:

  • 값의 길이나 데이터 타입이 달라질 수 있음
  • 테이블도 없고 제약 조건도 없음
  • 조인이 없고 외부키도 없음
  • SQL과 같은 질의 언어를 지원하지 않음

예시: Redis, DynamoDB

2. 문서 데이터베이스 (Document)

  • 데이터 저장에 키-값 방식을 사용하지만, 값을 문서로 저장
  • JSON, XML 형태의 문서 구조

특징:

  • 고정된 스키마를 정의할 필요 없음
  • 문서 하나가 값이 여러 개인 리스트를 가질 수 있음
  • 다른 문서를 중첩해서 넣을 수 있음
  • 조인의 필요성 없음

예시: MongoDB, CouchDB

3. 컬럼 패밀리 데이터베이스 (Column Family)

  • 컬럼: 이름과 값으로 구성
  • 로우: 여러 컬럼들의 모임
  • 컬럼 패밀리: 자주 쓰는 컬럼들을 묶어 놓은 것

예시: Cassandra, HBase

4. 그래프 데이터베이스 (Graph)

  • 노드(node)와 에지(edge)를 이용하여 관계를 표현
  • ERD와 유사한 구조

예시: Neo4j, ArangoDB

NoSQL의 장단점

장점

  1. 확장성: 수평적 확장이 용이
  2. 유연성: 스키마 변경이 자유로움
  3. 성능: 특정 용도에 최적화된 성능
  4. 비용: 오픈소스 기반으로 저렴
  5. 가용성: 분산 구조로 고가용성 보장

단점

  1. 일관성: ACID 속성을 완전히 보장하지 않음
  2. 표준화: SQL과 같은 표준 질의 언어 부재
  3. 복잡성: 분산 시스템의 복잡성
  4. 학습 곡선: 새로운 개념과 도구 학습 필요

NoSQL vs RDBMS 비교

구분NoSQLRDBMS
스키마유연한 스키마고정된 스키마
확장성수평적 확장수직적 확장
일관성결과적 일관성강한 일관성
트랜잭션제한적 지원완전한 ACID
조인제한적완전한 조인 지원
질의 언어다양함SQL 표준
복잡한 쿼리제한적강력함

NoSQL 사용 사례

1. 빅데이터 처리

  • 대용량 데이터의 빠른 처리
  • 실시간 분석 및 집계

2. 콘텐츠 관리

  • 블로그, 위키, CMS
  • 유연한 콘텐츠 구조

3. 소셜 네트워크

  • 사용자 관계 데이터
  • 실시간 피드 처리

4. IoT 데이터

  • 센서 데이터 수집
  • 시계열 데이터 처리

5. 캐싱

  • 세션 저장
  • 임시 데이터 저장

선택 기준

NoSQL을 선택해야 하는 경우

  • 대용량 데이터 처리 필요
  • 빠른 확장성 요구
  • 유연한 스키마 필요
  • 높은 가용성 요구
  • 특정 성능 최적화 필요

RDBMS를 선택해야 하는 경우

  • 복잡한 쿼리 필요
  • 강한 일관성 요구
  • ACID 트랜잭션 필요
  • 기존 SQL 기반 시스템
  • 복잡한 관계형 데이터

주요 학습 포인트

1. 분산 시스템 이해

  • CAP 정리 (Consistency, Availability, Partition tolerance)
  • 데이터 복제 및 샤딩
  • 장애 복구 메커니즘

2. 데이터 모델링

  • 관계형 모델링과의 차이점
  • 문서 구조 설계
  • 인덱싱 전략

3. 성능 최적화

  • 읽기/쓰기 성능 튜닝
  • 메모리 사용량 최적화
  • 네트워크 오버헤드 최소화

4. 운영 관리

  • 모니터링 및 로깅
  • 백업 및 복구
  • 보안 관리

NoSQL은 현대적인 데이터 아키텍처에서 중요한 역할을 하며, 빅데이터와 실시간 처리 요구사항을 충족하는 핵심 기술입니다.

This post is licensed under CC BY 4.0 by the author.