ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • SQL / NoSQL
    💻 computer science/📦 database 2022. 10. 5. 18:11

    관계형 데이터베이스


    고정된 행과 열로 구성된 테이블 에 데이터가 저장된다.

    테이블의 구조와 데이터 타입등을 사전에 정의하고 정의된 내용에 알맞는 데이터만 삽입할 수 있다.

    엄격한 스키마

    • 데이터는 테이블에 레코드로 저장되며, 각 테이블에는 명확하게 정의된 구조가 있다.

    관계

    • 데이터들을 여러개의 테이블으로 나누어, 데이터들의 중복을 피할 수 있다.

    테이블 간의 관계를 직관적으로 파악할 수 있다.

    SQL

    • 구조화된 쿼리 언어
    • 특정 유형의 데이터베이스와 상호 작용하는데 사용하는 쿼리 언어

    비 관계형 데이터베이스


    데이터가 고정되어 있지 않은 데이터 베이스

    • 데이터의 모델에 따라 유형이 다양하다.

    스키마가 없는 것이 아니다!

    특징

    1. 데이터 간의 관계를 정의하지 않는다.
    2. 대용량의 데이터를 저장할 수 있다.
    3. 분산형 구조이다.
      • 여러 곳의 서버에 데이터를 분산 저장해 특정 서버에 장애가 생겨도 데이터 유실 혹은 서비스 중지가 발생하지 않도록 한다.
    4. 고정되지 않은 테이블 스키마를 갖는다
      • 스키마가 유동적

    데이터 유형

    1. key-value
      • key-value 쌍으로 나타내는 데이터를 배열의 형태로 저장한다.
      • 단순한 구조 → 속도가 빠르고 분산 저장시 용이
      • Redis, DynamoDB
    2. document
      • 데이터를 테이블이 아닌 문서처럼 저장한다.
      • 스키마가 유동적, 레코드 마다 각각 다른 스키마를 가질 수 있다.
      • JSON 과 유사한 형식의 데이터를 문서화 하여 저장
      • 트리형 구조로 레코드를 저장하거나 검색하는데 효과적이다.
      • MongoDB
    3. wide-column
      • 행 마다 키와 해당 값을 저장할 때마다 각각 다른 값의 다른 수의 스키마를 가질 수 있다.
      • key에 해당하는 값에 스키마들이 각각 다르다.
      • 압축, 분산처리, 집계 쿼리(SUM, COUNT, AVG 등) 및 쿼리 동작 속도, 확장성이 뛰어남
      • Hbase, Cassandra
    4. graph
      • 데이터를 노드로 표현하며 노드 사이의 관계를 엣지로 표현
      • 일반적으로 RDBMS보다 성능이 좋고 유연하며 유지보수에 용이하다.
      • Social networks, network diagrams 등에 사용할 수 있다.
      • Neo4j, BlazeGraph

    장 / 단점

    장점 단점
    RDBMS에 비해 저렴한 비용으로 분산처리와 병렬 처리 가능 데이터 업데이트 중 장애 발생시 데이터 손실 발생 가능
    비정형 데이터 구조 설계로 설계 비용 감소 많은 인덱스를 사용하려면 충분한 메모리가 필요하다.
    - 인덱스 구조가 메모리에 저장됨.
    Big Data 처리에 효과적 데이터 일관성이 항상 보장되지 않는다.
    가변적인 구조로 데이터 저장이 가능  
    데이터 모델의 유연한 변화가 가능  

     

    확장 (Scaling)


    두 종류의 데이터베이스를 비교할 때 확장(Scaling)이라는 개념이 매우 중요하다.

    (데이터베이스 서버의 확장성)

    수직적 (vertical) 확장

    단순히 데이터베이스 서버의 성능을 향상

    • CPU 업그레이드

    수평적 (horizontal) 확장

    더 많은 서버가 추가되고 데이터베이스가 전체적으로 분산

    • 하나의 데이터베이스에서 작동하지만 여러 호스트에서 작동

    SQL 데이터베이스는 데이터가 저장되는 방식 때문에 일반적으로 수직적 확장만 지원한다.

    NoSQL 데이터베이스에서만 수평적 확장이 가능하다.

    SQL / NoSQL


    SQL

    장점

    • 명확하게 정의된 스키마, 데이터 무결성 보장
    • 관계는 각 데이터를 중복없이 한번만 저장

    단점

    • 데이터 스키마를 사전에 정의하고 알려줘야 한다.
    • 조인문이 많은 복잡한 쿼리가 만들어질 수 있다.
    • 수직적 확장만 가능

    언제 사용 ❓

    관계를 맺고 있는 데이터가 자주 변경되는 애플리케이션

    변경될 여지가 없고, 명확한 스키마가 사용자와 데이터에게 중요한 경우 사용

    NoSQL

    장점

    • 스키마가 없어 유연하다
    • → 언제든지 저장된 데이터를 조정하고 새로운 필드 추가 가능
    • 애플리케이션이 필요로 하는 형태로 데이터가 저장된다.
    • → 데이터를 읽어오는 속도가 빨라진다.
    • 수직, 수평 확장이 가능하다.
    • → 애플리케이션이 발생시키는 모든 읽기/쓰기 요청 처리 가능하다.

    단점

    • 데이터 구조 결정을 미룬다.
    • 데이터 중복을 계속 업데이트 해야 한다.
    • 데이터가 여러 컬렉션에 중복되어 있기 때문에 수정 시 모든 컬렉션에서 수행해야 한다.

    언제 사용 ❓

    정확한 데이터 구조를 알 수 없거나, 변경/확장이 될 수 있는 경우

    읽기를 자주 하지만, 데이터 변경은 자주 없는 경우

    데이터베이스를 수평으로 확장해야 하는 이유

    참고 자료

    http://www.yes24.com/Product/Goods/108887922

     

    면접을 위한 CS 전공지식 노트 - YES24

    디자인 패턴, 네트워크, 운영체제, 데이터베이스, 자료 구조, 개발자 면접과 포트폴리오까지!CS 전공지식 습득과 면접 대비, 이 책 한 권이면 충분하다!개발자 면접에서 큰 비중을 차지하는 CS(Comp

    www.yes24.com

    https://gyoogle.dev/blog/computer-science/data-base/SQL%20&%20NOSQL.html

     

    SQL과 NOSQL의 차이 | 👨🏻‍💻 Tech Interview

    SQL과 NOSQL의 차이 웹 앱을 개발할 때, 데이터베이스를 선택할 때 고민하게 된다. 보통 Spring에서 개발할 때는 MySQL을, Node.js에서는 MongoDB를 주로 사용했을 것이다. 하지만 그냥 단순히 프레임워크

    gyoogle.dev

     

    '💻 computer science > 📦 database' 카테고리의 다른 글

    📂 MySQL - 트랜잭션 격리 수준  (0) 2024.05.11
    인덱스  (0) 2022.10.05
    트랜잭션  (1) 2022.10.05
    정규화  (0) 2022.10.05
    데이터베이스 기본  (1) 2022.10.05

    댓글

Designed by Tistory.