728x90

이번 포스팅에서는 SQL과 NoSQL에 대해 말해보려 한다.

학부 과목으로 DB와 SQL을 배웠지만(이번 학기에도 심화 강의 들어야 함) 해당 수업때는 MySQL 워크벤치나 쿼리문을 중심으로 배웠고

NoSQL에 대해선 제대로 배우지 못했다.

 

따라서 NoSQL의 여러 종류(MongoDB, CassandraDB ... )에 대해 이름은 알고 있었으나 그들의 차이점에 대해 정확히 알고 있지 않았다.

이번에 그 종류와 구분에 대해 개념이 잡힌 것 같아 풀어써보려 한다.

 

그전에 SQL이 무엇인지부터 시작해보려 한다.

 


SQL과 DB

SQL은 DB에 쿼리(질의)를 날리기 위해 어떤 구조를 갖고 있는 언어이다.

즉 데이터베이스를 다루는 언어인 것이다.

 

SQL로 쿼리를 받은 데이터베이스는 데이터를 보관하는 창고의 역할을 한다.

데이터베이스 자체는 데이터를 직접 처리하는 능력을 갖고 있지 않다. 

데이터를 처리하는 시스템은 DBMS(DB Management System)이 담당한다.

SQL로 데이터베이스와 상호작용을 하려면 이러한 DBMS를 거쳐야 한다.

 

이러한 DBMS의 여러 종류 중 하나가 우리가 흔히 알고 있는 MySQL, Oracle이다.

각 DBMS에는 각자가 쓰는 SQL이 있다.

 

 


NoSQL

NoSQL은 앞서 살펴본 SQL과 성격이 다르다.

NoSQL은 각자의 성격에 따라 다시 Document DB, Key-Value DB, Graph DB로 나뉜다. 

 

Document DB

도큐먼트 데이터베이스로 대표적인 것은 Mongo DB가 있다.

몽고 디비는 데이터를 JASON 형태로 저장한다.

대괄호와 중괄호를 이용해 데이터를 구분해서 저장하는 것이다.

 

기존 SQL로 다루는 데이터베이스는 표의 형태를 띄고 있어 매우 정적(Static)이다.

만약 기존 데이터베이스에서 하나의 열을 늘리고 싶다면 다른 행에는 반드시 추가할 열에 들어갈 값이 명시되어 있어야 한다.

 

반면 몽고 디비와 같은 도큐먼트 데이터베이스는 데이터마다 구성 요소가 같을 필요가 없다.

덕분에 개발자가 원하는 모양의 데이터를 자유롭게 저장할 수 있다는 장점이 있다.

 

Key-Value DB

키값 데이터베이스로 대표적인 것은 Cassandra, Dynamo DB가 있다.

 

카산드라는 열이 넓다는 특징이 있다.

매우 넓은 열을 갖고 있는 데이터베이스인 것이다.

덕분에 많은 데이터를 매우 빠른 시간에 처리할 수 있다는 장점이 있다.

이러한 특징으로 애플, 넷플릭스, 우버 등의 회사가 이를 이용하고 있다.

 

Graph DB

페이스북이 개발한 그래프 데이터베이스는 노드로 관계를 표현하는 데이터베이스이다.

페이스북을 예시로 들면 사용자1이 사용자2에 좋아요나 댓글을 남길 수 있다.

이때 사용자2는 사용자1과 팔로우하 중인 사용자3도 존재한다.

이처럼 사용자 한 명 한 명을 하나의 노드로 보았을 때의 여러 측면의 관계를 그래프로 표현할 수 있다.

728x90

+ Recent posts