SQL vs NoSQL

.·2022년 7월 17일
0

Computer Science

목록 보기
35/81

SQL

  • Structed Query Language 구조화된 질의 언어
  • RDBMS에서 데이터를 저장, 조작, 검색하는데 사용되는 쿼리 언어

대표 RDBMS (RDB Management System) 관계형 데이터베이스 관리 시스템

  • MySQL
  • Oracle
  • SQLite
  • MariaDB
  • PostgresSQL

Relational Database (RDB) 관계형 데이터베이스

  • 데이터베이스의 한 유형
  • RDB를 SQL이라고도 부른다.
    • RDB는 모두 RDBMS를 위해 만들어진 SQL이라는 언어를 사용하기 때문
  • RDBMS 솔루션까지 묶여서 RDB라고도 한다.
    • MySQL은 관계형 데이터베이스이다.

특징

  1. 데이터는 엄격한 데이터 스키마(structure)를 따라 테이블에 저장된다.
    • 구조화된 데이터의 모음 → 구조화된 쿼리 언어 사용
  2. 데이터는 관계를 통해서 연결된 여러 개의 테이블에 분산된다.

1. 엄격한 스키마

  • 각 테이블(table)에는 명확하게 정의된 구조(structure)가 있고, 데이터는 테이블에 레코드(record)로 저장된다.
    • 구조: 필드 이름 + 데이터 유형
  • 스키마에 맞지 않은 형태의 레코드는 추가할 수 없다.

2. 관계

  • 데이터를 여러 테이블에 나누어서 중복을 피할 수 있다.
  • 한 테이블에서 하나의 데이터만을 관리하기 때문에 다른 테이블에서 부정확한 데이터를 다룰 위험이 없다.

사용성

  • 관계를 맺고 있는 데이터가 자주 변경되는 어플리케이션
  • 변경될 여지가 없고 명확한 스키마가 사용자와 데이터에게 중요한 경우

NoSQL

비관계형 데이터베이스

  • 관계형 데이터베이스 이외의 형식으로 데이터를 저장하는 데이터베이스
    • 한국어 vs 외국어
  • 비관계형 데이터베이스를 NoSQL 혹은 NoSQL 데이터베이스라고 한다.

용어

  • 문서(document) ↔ 레코드(record)
    • json 형태
  • 컬렉션(collection) ↔ 테이블(table)

특징

  • 복잡하고 느린 조인을 사용할 필요 없다.
  • 자주 변경되지 않는 데이터일 때
  • 대량의 데이터와 높은 사용자 부하에서도 손쉽게 확장이 가능하다.
  • schema on read
    • 데이터를 입력하는 방식에 따라 읽어올 때만 데이터 스키마가 사용된다.
  1. 유연한 스키마
  2. 관계 없음

1. 유연한 스키마

  • 다른 구조의 데이터를 같은 컬렉션에 추가할 수 있다.
  • 일반적으로 관련 데이터를 넣음
  • 필요한 모든 데이터가 하나의 컬렉션 안에 저장되어 있다.

2. 관계 없음

  • RDB처럼 여러 테이블에 나누어 담지 않는다.
    • Products 정보 또한 Orders에 포함
    • 여러 테이블/콜렉션 조인할 필요 없다.
  • 조인 개념 X
  • 데이터를 복제하여 데이터 일부부을 산출한다.
    • 데이터 중복 → 불안정
    • 특정 데이터를 같이 사용하는 모든 컬렉션에서 똑같은 업데이트를 수행하도록 해야 한다.

사용성

  • 정확한 데이터 구조를 알 수 없거나 변경/확장될 수 있는 경우
  • 읽기 처리는 자주 하지만, 변경은 자주 하지 않는 경우
  • 데이터베이스를 수평으로 확장해야 하는 경우
    • 막대한 양의 데이터를 다루는 경우
  • 확장성이나 속도면에서 더 뛰어나다.

확장성 Scalability

  • 데이터베이스가 구축된 하드웨어의 성능을 많이 이용하기 때문에 비용이 많이 든다.
  • 여러 서버에 걸쳐서 데이터베이스의 관계를 정의할 수 있지만, 매우 복잡하고 시간이 많이 소모된다.

수직적 확장 Vertical Scaling

  • 단순히 데이터베이스 서버의 성능 향상
  • 메모리, CPU 업그레이드
  • SQL 데이터베이스는 수직적 확장만을 지원한다.

수평적 확장 Horizontal Scaling

  • 더 많은 서버가 추가되고 데이터베이스가 전체적으로 분산됨
  • 하나의 데이터베이스에서 작동하지만 여러 호스트에서 작동한다.
  • 저렴한 서버 증설 혹은 클라우드 서비스 이용
    • 수직적 확장보다 상대적으로 비용이 저렴하다.
  • NoSQL 데이터베이스는 수평적 확장을 지원한다.
    • 많은 트래픽을 보다 편리하게 처리할 수 있다.

출처

0개의 댓글