본문 바로가기

DB

[개념정리] NoSql vs Sql

취업전 mysql, 회사에서는 Sql Server를 사용하며 sql 구문에 익숙해진 나에게 등장한 flutter의 firestore!

firestore가 NoSQL 베이스라고 하기에 오랜만에 공부한 내용 정리해두려고 한다.

 

 

Sql :  Structured Query Language

 

RDBMS를 관리하기 위해 고안된 언어로,

흔히 SQL DB라고 하면 엑셀과 비슷하게 이해하면 된다. 

사실 SQL에 '행', '열'에서(혹은 where절, group절 등등의 조작으로) 얻어내는 결과값들은 엑셀에서도

얻어낼 수 있다.

엑셀로 생각해보자면, 행과 열에 정해진 타입, 종류 혹은 구분의 데이터를 기입한다.

데이터가 예쁜 모양으로 정형화 되어있음을 말한다.

 

 

하지만 데이터가 기하 급수적으로 늘어가고, 소셜 네트워크의 등장으로 비정형 데이터들에 대한 처리가 더 필요해 짐으로써 NoSQL 들이 등장한다.

 

NoSQL :  Not Only Sql

 

즉 SQL 이 아닌 DB 모두를 일컫는 말로

기존의 RDBMS가 보장하는 ACID(Atomic, Consistency, Integrity, Duarabity) 특성을 제공하지 않는,

그렇지만 확장성이나 뛰어난 성능(속도..) 등의 특성을 갖는 수많은 비관계형, 분산 데이터 베이스들을 총칭한다.

.

수많은 오픈소스 기반 NoSQL들이 등장했지만 익숙한 이름의 DB들만 간추려보자면,

 

1. Documnet DB : 문서형 데이터 처리

-MongoDB(Json형식의 문서로 처리한다)

2. Key-Value DB : 키-값 데이터 처리

읽고 쓰기가 굉장히 빠른. 애플이 10petabyte를 저장하고 있는 DB(넷플, 인스타, 우버도 사용함)
아마존에서 만든, 1초에 24K개의 데이터를 읽을 수 있는 DB

 

3. GraphDB : entity끼리의 관계를 저장하는 DB

    - 페이스북은 자체적으로 TAO라는 GrahpDB를 만들어 사용함.