_DoYun
_yunilog
_DoYun
전체 방문자
오늘
어제
  • 전체 (83)
    • spring boot main 프로젝트 해결 (2)
    • 회고 (0)
      • pre-project(stackoverflow) (0)
    • 지식창고 (25)
    • 후기 (1)
    • LINUX (2)
    • HTML&CSS (2)
    • SQL (2)
    • 기술 면접 질문지 (1)
      • Chapter1 (1)
      • Chapter2 (0)
    • JAVA (25)
      • JAVA 기초 문법 (1)
      • Collection (1)
      • Enum,Annotation,Stream,람다 (3)
      • 입출력, Thread, JVM (1)
      • Spring Framework (3)
      • Spring MVC (6)
      • JPA (1)
      • Test (3)
      • API 문서 (1)
      • 인증&보안 (2)
      • AWS (2)
    • 알고리즘 (19)
      • 프로그래머스_LEVEL_3 (6)
      • 백준 (0)
      • 프로그래머스_LEVEL_2 (13)
    • Comento (2)
    • Inflearn (2)
      • HTTP (2)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
_DoYun

_yunilog

SQL

SQL(구조화 쿼리 언어) VS NoSQL(비구조화 쿼리 언어)

2022. 6. 17. 17:46

 

# SQL(관계형 DB)

  • 관계형 데이터베이스에서는 테이블의 구조와 데이터 타입 등을 사전에 정의하고, 테이블에 정의된 내용에 알맞은 형태의 데이터만 삽입할 수 있습니다.
  • 관계형 데이터베이스는 행(row)과 열(column)로 구성된 테이블에 데이터를 저장합니다.
  • 관계형 데이터베이스에서는 SQL을 활용해 원하는 정보를 쿼리할 수 있습니다.
  • 관계형 데이터베이스에서는 테이블 간의 관계를 직관적으로 파악할 수 있습니다.

대표적인 관계형 데이터베이스는 MySQL, Oracle, SQLite, PostgresSQL 등이 있습니다.

 

  • DDL (데이터 정의 언어) : 스키마 생성 및 수정에 사용되는 쿼리입니다. SQL의 일반적인 DDL 명령에는 CREATE, ALTER 및 DROP이 포함됩니다.
  • DML (데이터 조작 언어) : 이 쿼리는 데이터베이스에서 선택, 삽입, 업데이트 및 삭제 작업을 수행하는 데 사용됩니다. SQL의 일반적인 DML 명령은 SELECT, INSERT, UPDATE 및 DELETE입니다.
  • DCL (데이터 제어 언어) : 이러한 쿼리는 액세스를 제어하고 데이터베이스에 대한 권한을 제공하는 데 사용됩니다. SQL의 일반적인 DCL 명령은 GRANT 및 REVOKE입니다.
  • TCL (트랜잭션 제어 언어) : 이러한 쿼리는 데이터 무결성을 유지하기 위해 트랜잭션을 제어하고 관리하는 데 사용됩니다. SQL의 일반적인 TCL 명령에는 BEGIN, COMMIT 및 ROLLBACK이 포함됩니다.

# NOSQL(비관계형 DB)

NoSQL은 SQL 앞에 붙은 'No'에서 알 수 있듯이, 주로 데이터가 고정되어 있지 않은 데이터베이스를 가리킵니다. NoSQL이 SQL과 반대되는 개념처럼 사용된다고 해서, NoSQL에 스키마가 반드시 없는 것은 아닙니다.

 

관계형 데이터베이스에서는 데이터를 입력할 때 스키마에 맞게 입력해야 하는 반면, NoSQL에서는 데이터를 읽어올 때 스키마에 따라 데이터를 읽어 옵니다. 이런 방식을 'schema on read'라고도 합니다. 읽어올 때에만 데이터 스키마가 사용된다고 하여, 데이터를 쓸 때 정해진 방식이 없다는 의미는 아닙니다. 데이터를 입력하는 방식에 따라, 데이터를 읽어올 때 영향을 미칩니다.

 

1. NOSQL 특징

  • Key-Value 타입 : 속성을 Key-Value의 쌍으로 나타내는 데이터를 배열의 형태로 저장합니다. 여기서 Key는 속성 이름을 뜻하고, Value는 속성에 연결된 데이터 값을 의미합니다. 
  • 문서형(Document) 데이터베이스 : 데이터를 테이블이 아닌 문서처럼 저장하는 데이터베이스를 의미합니다. 많은 문서형 데이터베이스에서 JSON과 유사한 형식의 데이터를 문서화하여 저장합니다.
  • Wide-Column 데이터베이스 : 데이터베이스의 열(column)에 대한 데이터를 집중적으로 관리하는 데이터베이스입니다. 각 열에는 key-value 형식으로 데이터가 저장되고, 컬럼 패밀리(column families)라고 하는 열의 집합체 단위로 데이터를 처리할 수 있습니다. 하나의 행에 많은 열을 포함할 수 있어서 유연성을 높습니다. 데이터 처리에 필요한 열을 유연하게 선택할 수 있다는 점에서 규모가 큰 데이터 분석에 주로 사용되는 데이터베이스 형식입니다. 
  • 그래프(Graph) 데이터베이스 : 자료구조의 그래프와 비슷한 형식으로 데이터 간의 관계를 구성하는 데이터베이스입니다. 노드(nodes)에 속성별(entities)로 데이터를 저장합니다. 각 노드간 관계는 선(edge)으로 표현합니다. 

 

# 장단점

SQL 장점

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

SQL 단점

  • 덜 유연함. 데이터 스키마를 사전에 계획하고 알려야 함. (나중에 수정하기 힘듬)
  • 관계를 맺고 있어서 조인문이 많은 복잡한 쿼리가 만들어질 수 있음
  • 대체로 수직적 확장만 가능함

NoSQL 장점

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

NoSQL 단점

  • 유연성으로 인해 데이터 구조 결정을 미루게 될 수 있음
  • 데이터 중복을 계속 업데이트 해야 함
  • 데이터가 여러 컬렉션에 중복되어 있기 때문에 수정 시 모든 컬렉션에서 수행해야 함 (SQL에서는 중복 데이터가 없으므로 한번만 수행이 가능)

'SQL' 카테고리의 다른 글

데이터베이스 트랜잭션의 ACID에 대해 배워보자!  (3) 2022.06.16
    'SQL' 카테고리의 다른 글
    • 데이터베이스 트랜잭션의 ACID에 대해 배워보자!
    _DoYun
    _DoYun

    티스토리툴바