SQL과 NoSQL

2024. 11. 24. 11:22·Computer Science/Database
반응형

SQL

정의

SQL은 Structured Query Language의 약자이다.

SQL 데이터베이스는 구조화된 데이터를 관계형 모델로 관리하는 데이터베이스 시스템으로, SQL을 사용해 데이터를 정의하고 조작한다.

 

 

특징

  • 스키마 기반. 정해진 스키마에 따라 데이터 저장
  • 관계형 데이터 모델로, 테이블 간 관계를 통해 데이터 분산
  • ACID 준수 : 트랜잭션은 원자성(Atomicity), 일관성(Consistency), 고립성(Isolation), 지속성(Durability)을 보장
  • SQL이라는 표준화된 쿼리 언어를 사용. 복잡한 쿼리를 지원
  • 주로 수직적 확장 가능.
    수평적 확장이 어려워 데이터 양이 크게 증가하면 성능 저하 발생할 수 있음

 

DBMS 예시

Mysql : 오픈 소스 RDBMS.

Oracle : 상용 RDBMS. 대규모 엔터프라이즈 환경에서 많이 사용.

PostgreSQL : 고급 오픈 소스 RDBMS. ACID 특성을 잘 지원함.

 

 

 

NoSQL

정의

NoSQL은 Not Only SQL을 말한다.

NoSQL 데이터베이스는 비관계형 데이터 모델을 사용하는 데이터베이스 시스템이다. 다양한 데이터 모델(문서, Key-Value, graph, Column-Family 등)을 지원하며, 스키마가 없거나 유연한 스키마를 갖고 있다. 



 

특징

  • 유연한 스키마로 필요에 따라 동적으로 스키마를 변경 가능
  • 데이터를 여러 서버로 분산시켜 저장함으로써 대규모 데이터 처리와 확장이 용이
  • 다양한 데이터 모델을 지원
  • CAP 이론: 일관성(Consistency), 가용성(Availability), 파티션 내구성(Partition Tolerance) 중 두 가지 특성을 보장할 수 있음
  • 일관성 유지가 어려울 수 있음. 데이터가 여러 컬렉션에 중복되어 있기 때문에 수정 시 모든 컬렉션에서 작업을 수행해야함
    ㄴ 이러한 단점을 BASE 원칙을 통해 최소화.
    ㄴ BASE원칙 : 일관성 대신 고가용성과 성능을 우선. 일시적인 데이터 불일치를 허용하되 최종적으로는 일관성을 보장함.
  • 수평적 확장이 가능.
  • SQL에 비해 쿼리 기능이 제한적. JOIN 연산 지원 안하는 경우가 많음.

 

DBMS 예시

  • MongoDB: 문서 지향. JSON과 유사한 BSON 형식의 문서 저장.
  • Redis: key-value 저장소. 매우 빠른 성능을 제공하며 캐시, 세션 저장 등에 사용.
  • Cassandra: 컬럼 패밀리 저장소. 높은 확장성과 가용성 제공.

 

 

 

SQL vs NoSQL

비교

특성 SQL NoSQL
데이터모델 관계향 비관계형
스키마 고정 유연
확장성 주로 수직적 수평적
쿼리 언어 SQL 데이터베이별로 다양함
일관성 강한 일관성 최종 일관성

 

선택 가이드

SQL 데이터베이스를 선택해야 하는 경우

  • 데이터 무결성과 일관성이 중요한 경우
    ex) 금융, 거래 시스템, 회계 시스템 등.
  • 복잡한 관계형 데이터를 다루는 경우
    ex)ERP 시스템, 공급망 관리 시스템 등.
  • 고도로 구조화된 데이터와 고정된 스키마가 필요한 경우
    ex) 기업 내부 데이터베이스, 정부 데이터베이스 등.

NoSQL 데이터베이스를 선택해야 하는 경우

  • 데이터 구조가 유연하고 자주 변경되는 경우
    ex) 소셜 미디어 플랫폼, 콘텐츠 관리 시스템 등.
  • 대규모 데이터를 수평적으로 확장하여 처리해야 하는 경우
    ex) 빅 데이터 애플리케이션, 클라우드 기반 애플리케이션 등.
  • 실시간 데이터 처리 및 빠른 응답 시간이 중요한 경우
    ex) 실시간 분석 시스템, 캐시 시스템, IoT 애플리케이션 등.

 

 

 

728x90
반응형

'Computer Science > Database' 카테고리의 다른 글

이상현상(Anomaly)  (0) 2024.11.26
정규화  (0) 2024.11.25
SQL injection 종류와 방지  (0) 2024.11.23
조인(JOIN) - ANSI SQL, MySQL, Oracle 예  (0) 2024.11.22
트랜잭션(Transaction) & 트랜잭션 격리성  (0) 2024.11.18
'Computer Science/Database' 카테고리의 다른 글
  • 이상현상(Anomaly)
  • 정규화
  • SQL injection 종류와 방지
  • 조인(JOIN) - ANSI SQL, MySQL, Oracle 예
settong
settong
    250x250
  • settong
    개 발 자 국
    settong
  • 전체
    오늘
    어제
    • 전체보기 (202)
      • Computer Science (50)
        • Network (7)
        • Operating System (18)
        • Data Structure (9)
        • Database (11)
        • Algorithm (5)
      • Language (17)
        • Java (17)
        • Javascript (0)
        • Python (0)
      • Devops (20)
        • AWS (0)
        • Naver Cloud (16)
        • CICD (3)
        • 웹 서버 관리 (1)
      • Front (0)
        • React (0)
      • Backend (5)
        • Spring (5)
      • 코딩 테스트 정복기 (110)
        • 백준 (51)
        • 프로그래머스 (53)
        • 기타 (6)
      • etc (0)
      • 경제 상식 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    해시
    github actions
    ncp200
    Network
    DFS
    다이나믹프로그래밍
    lcs
    CI/CD
    집합
    BFS
    Spring Boot
    분할정복
    ncp202
    완전탐색
    백준
    프로그래머스
    다익스트라
    ncp
    백트래킹
    벨만포드
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.2
settong
SQL과 NoSQL
상단으로

티스토리툴바