SQL vs. NoSQL

nikevapormax·2022년 6월 15일
0

TIL

목록 보기
50/116

SQL

정의

  • Structured Query Language의 약자로, 관계형 데이터베이스 관리 시스템(RDBMS)의 데이터를 관리하기 위해 설계된 특수 목적의 프로그래밍 언어
  • SQL을 사용해 데이터의 저장, 검색, 수정, 삭제를 할 수 있다.

관계형 DB

  • 핵심 특징
    • 데이터는 정해진 데이터 스키마에 따라 테이블에 저장된다.
    • 데이터는 관계에 따라 여러 테이블에 분산된다.
  • 데이터는 테이블에 레코드로 저장되며, 각 테이블마다 정의된 구조(필드명, 데이터 구조)에 따라 저장된다.
  • 관계형 DB에서 중복을 피하기 위해 관계(Relation)를 사용한다.
    • 이는 하나의 테이블에서 하나의 데이터만을 관리할 수 있도록 해주어 정확도를 높여준다.
    • Django 프로젝트를 진행하면서 ManyToManyField를 생성했을 때를 생각하면 될 것 같다. 다대다 관계일 때 Django는 자동으로 관계 테이블을 형성해주고, 해당 관계 테이블이 아닌 각각의 테이블에서는 데이터를 확인할 수 없었다.

NoSQL

정의

  • 원래 의미는 non SQL로 전통적인 관계형 데이터베이스보다 덜 제한적인 일관성 모델을 이용하는 데이터의 저장 및 검색을 위한 매커니즘을 제공한다.
  • 접근에 대한 동기에는 디자인의 단순화, 수평적 확장성, 세세한 통제를 포함한다.
  • NoSQL 데이터베이스는 단순 검색 및 추가 작업을 위한 매우 최적화된 키 값 저장 공간으로, 빅데이터실시간 웹 애플리케이션의 상업적 이용에 널리 쓰인다.
  • SQL 계열 쿼리 언어를 사용할 수 있다는 사실을 강조한다는 면에서 Not only SQL로도 불린다.

비관계형 DB

  • 관계형 DB의 반대 개념으로 생각해도 되며, 스키마관계가 없다.
  • 관계형 DB에서 데이터를 레코드로 저장하는데, 비관계형 DB에서는 이를 문서(Document)로 부르며 JSON(JavaScript Object Notation) 형식으로 저장한다.
    • MongoDB의 경우 JSON 형식으로 데이터를 저장하지만, 내부에서는 속도, 효율성, 유연성의 장점이 있는 BSON(Binary JavaScript Object Notation)으로 데이터를 저장, 사용한다.
  • 다른 구조의 데이터를 같은 컬렉션에 추가할 수 있다.
  • 그래서 NoSQL에는 JOIN이 존재하지 않는다.
    • 만약 JOIN이 필요하다면, Collection을 통해 데이터를 복제하여 각 Collection의 일부분에 속하는 데이터를 산출한다.

SQL vs. NoSQL

구조

장단점

사용 시기

profile
https://github.com/nikevapormax

0개의 댓글