ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • SQL & NoSQL
    웹 프로그래밍/BE(Back-End) 2021. 7. 2. 19:06

    오늘은 SQL과 NoSQL에 대해 알아보고 둘의 차이점을 정리해보려고 한다.

     

     

    먼저, SQL은 무엇일까?

    SQLStructured Query Language의 약어로 관계형 데이터베이스 관리 시스템(RDBMS)의 데이터를 관리하기 위해 설계된 특수 목적의 프로그래밍 언어이다.

    관계형 데이터베이스 관리 시스템에서 데이터 검색과 관리, 데이터베이스 생성과 수정 등과 같은 작업을 수행할 때 SQL을 쓴다.

    SQL 문법의 종류는 데이터 정의 언어 (DDL : Data Definition Language), 데이터 조작 언어 (DML : Data Manipulation Language), 데이터 제어 언어 (DCL : Data Control Language) 3가지가 있다.

     

    SQL을 사용하는 관계형 데이터베이스는 행과 열로 이루어진 2차원으로 데이터를 저장하여 관리하는데 데이터가 정형화되어 관리되고 있는 만큼 데이터가 일관적이고 분석에 용이하다.

    관계형 데이터베이스의 특징으로는 데이터가 정해진 데이터 스키마에 따라 테이블에 저장되고 관계(relation)를 통해 여러 테이블에 분산된다는 것이 있다.

    또 다른 중요한 특징으로는 스키마를 준수하지 않은 레코드는 테이블에 추가할 수 없다는 것이다.

    관계형 데이터베이스는 데이터가 테이블에 레코드로 저장고 각 테이블마다 정의된 구조가 있다.

    이렇게 각 테이블마다 정의된 구조를 스키마라고 하는데 스키마를 수정하지 않고서는 정해진 구조(스키마)에 맞는 레코드만 추가가 가능하다는 것이다.

    대표적인 관계형 데이터베이스는 MS-SQL, MySQL이 있다.

    출처: https://thebook.io/006977/ch01/01/04/01/

     

     

    NoSQL은 무엇일까?

    NoSQL은 많은 사람들이 No SQL, Not Only SQL, Non-Relational Operational Database SQL 등 다양한 관점으로 해석하여 엇갈리는 의견들이 있다.

    의미를 해석해보면 기존 RDBMS(SQL)가 갖고 있는 특성뿐만 아니라 다른 특성들을 부가적으로 지원한다는 것을 의미한다.

    RDBMS의 주요 특성, ACID(Atomic, Consistency, Integrity, Duarabity)을 제공하지 않지만 뛰어난 확장성이나 성능 등을 갖는 비관계형, 분산 데이터 베이스들이 등장했고 NoSQL이라는 용어가 보편적으로 사용되었다.

     

    NoSQL의 특징으로는 관계형 데이터베이스보다 덜 제약적인 데이터 저장 구조를 사용하고 데이터의 저장 및 검색을 위한 특화된 매커니즘을 제공한다는 것이다.SQL에서 레코드라고 하는 데이터를 의미하는 말이 NoSQL에서는 documents라고 하고 SQL에서 테이블은 NoSQL에서 Collection이라고 한다.

    documents는 JSON과 비슷한 형태로 가지고 있고 관련 데이터를 동일한 collection에 넣는다.

    SQL은 정해진 스키마를 따르지 않으면 데이터 추가가 불가능했지만 NoSQL에서는 다른 구조의 데이터를 같은 컬렉션에 추가가 가능하다.



    NoSQL을 사용하는 데이터베이스를 보면 아래의 표와 같다.

    출처: https://www.samsungsds.com/kr/insights/1232564_4627.html

     

     

     

    <참고자료>

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

    https://www.samsungsds.com/kr/insights/1232564_4627.html

     

    '웹 프로그래밍 > BE(Back-End)' 카테고리의 다른 글

    MongoDB 알아보기  (0) 2021.07.06
    GET과 POST  (0) 2021.07.03
    AWS EC2 이용해보기  (0) 2021.06.30
    Web Crowling & Web Scraping  (0) 2021.06.28
    Database 사용자 생성과 권한 주기  (0) 2021.06.10

    댓글

Designed by Tistory.