본문 바로가기
카테고리 없음

개발_TIL | 2022-05-10(16)

by Hee94 2022. 5. 10.

SQL

   SQL은 구조화 된 쿼리 언어(Structured Query Language)의 약자.

   Database 자체를 나타내는 것이 아닌 특정 유형의 database와 상호 작용하는 데 사용하는 쿼리 언어

   

   SQL을 사용하면 관계형 데이터베이스 관리 시스템(RDBMS)에서 데이터를 저장, 수정, 삭제 및 검색 할 수 있다.

   관계형 데이터베이스의 주요 특징

   1) 데이터는 정해진 데이터 스키마를 따라 데이터베이스 테이블에 저장됨

   2) 데이터는 관계를 통해서 연결된 여러개의 테이블에 분산됨

   [정해진 스키마를 따르지 않는다면 데이터를 추가 할 수 없음.]

 

   <SQL 의 장점>

   - 명확하게 정의 된 스키마, 데이터 무결성 보장

   - 관계는 각 데이터를 중복없이 한번만 저장

NOSQL

   NOSQL은 기본적으로 SQL(관계형 데이터베이스)와 반대되는 접근 방식을 따름

   NOSQL의 특징

   1) 스키마 없음

   2) 관계 없음

   [다른 구조의 데이터를 같은 컬렉션(=SQL의 테이블)에 추가 할 수 있음.]

 

   NOSQL에서는 레코드를 문서라고 부르며, 문서는 JSON 데이터와 비슷한 형태를 가지고 있다.

 

   <NOSQL의 장점>

   - 스키마가 없기 때문에 유연함(언제든지 저장된 데이터를 조정,새로운 필드를 추가 가능)

   - 데이터를 애플리케이션이 필요로 하는 형식으로 저장(데이터를 읽어오는 속도가 빨라짐)

   - 수직 및 수평 확장이 가능(데이터베이스가 애플리케이션에서 발생시키는 모든 읽기/쓰기 요청을 처리 가능)

SQL 과 NOSQL 차이

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

      수직적 확장 : 단순히 데이터베이스 서버의 성능을 향상시키는 것 (SQL은 일반적으로 수직적 확장만 지원)

      수평적 확장 : 더 많은 서버가 추가되고 데이터베이스가 전체적으로 분산되는 것(NOSQL에서만 가능)

   2) 쉐딩(sharding)

      SQL : sharding 의 개념을 알고 있지만 특정 제한이 있으며 구현하기가 대체로 어려움

      NOSQL : 기본적으로 지원하므로 여러 서버에서 데이터베이스를 쉽게 분리 할 수 있음