본문 바로가기

DB

SQL vs NoSQL

SQL(관계형 DB)

  • 행(레코드)과 열(속성)로 구성되는 테이블 간의 관계를 사용하여 데이터를 저장하고 관리
  • 스키마를 사용하여 데이터 구조를 정의
  • MySQL, PostgreSQL 등

장점

  • 스키마를 사용해 데이터 무결성 보장(정확성, 일관성, 유효성 유지)
  • 복잡한 조인과 쿼리 처리 가능

단점

  • 스키마의 변경, 유연한 데이터 모델링이 어려움
  • 대체로 수직적 확장(단일 서버 성능 향상)만 가능, 수평적 확장(데이터 분산)은 힘듦

NoSQL

  1. 키-값 스토어(Key-Value Store):
    • <key, value> 쌍으로 데이터를 저장
    • 데이터 캐싱, 일시적인 속성 추적(장바구니 등), 대용량 객체(이미지, 오디오 등) 저장에 사용
    • 예시: Redis, Amazon DynamoDB
  2. 문서형(Document Store):
    • 문서(json, xml 등) 형태로 데이터를 저장
    • 별도의 스키마 없이 데이터 관리
    • 유연성과 확장성이 높음
    • 예시: MongoDB
  3. 컬럼 패밀리(Column Family):
    • RDB와 같이 행(Column)과 열(Row)을 사용해서 스키마를 정의
    • 여러개의 Column을 Column Family 묶어 관리 가능(미리 정의되지 않아 원하는 시점에 가능)
    • 대용량 데이터, 읽기와 쓰기 성능, 고가용성을 위해 설계
    • 주요 예시: Apache Cassandra, HBase, ScyllaDB
  4. 그래프(Graph):
    • 노드(Node)와 엣지(Edge)로 데이터 저장
    • 복잡한 관계를 표현하고 분석하는 데 적합, 네트워크 분석이나 소셜 네트워크에서 많이 사용
    • 주요 예시: Neo4j

'DB' 카테고리의 다른 글

SQL injection  (1) 2024.02.26
트랜잭션(Transaction)  (2) 2024.02.24
인덱스(Index)  (2) 2024.02.24
정규화(Normalization)  (2) 2024.02.24
DB Key, JOIN  (0) 2024.02.15