본문 바로가기
Study/Database

[Database] SQL vs NoSQL

by graygreat 2021. 1. 5.
728x90
반응형

SQL

SQL은 Sturected Query Language(구조적 질의 언어)의 줄임말로, 관계형 데이터베이스 시스템(RDBMS)에서 자료를 관리 및 처리하기 위해 설계된 언어

 

SQL DB의 종류

MySQL, PostgreSQL, SQLite ... 등

 

SQL Database Model (출처: https://velog.io/@gparkkii/DatabaseSQLNoSQL)

 

NoSQL

NoSQL은 Not Only or Not SQL의 약자로, 기존 RDBMS 형태의 관계형 데이터베이스가 아닌 다른 형태의 데이터 저장 기술을 의미하며, 관계형 데이터 베이스의 한계를 극복하기 위한 데이터 저장소의 새로운 형태로, 수평적 확장성을 가지고 있다.

 

NoSQL DB의 종류

 

 Document DB 

대표적으로 MongoDB가 있다. 데이터를 json 형태로 저장한다. SQL처럼 행과 열이 존재하는 것이 아니라, 원하는 어떤 종류의 어떤 모양의 데이터든 저장할 수 있다. 

 

 Key value DB 

 대표적으로 CassandraDB, DynamoDB가 있다. 엄청 빠르게, 많이 써야하고, 많이 읽어야 할 때 사용한다.

 

CassandraDB는 column wide database 유형이다. 읽고 쓰기가 매우 빨라 매우 많은 수의 아이템을 1초만에 쓸 수 있다.

애플, 넷플릭스, 인스타그램, 우버 등과 같이 엄청 많은 양의 데이터를 읽고 저장해야하는 기업들에서 사용한다.

 

DynamoDB는 서버리스, 분산된 key valueDB로 아마존에서 만들었다. 예를 들어 듀오링고(언어 학습 앱)가 DynamoDB를 사용하는데, 무려 매초 24,000의 읽기를 지원한다고 한다.

즉, Key value DB는 엄청 빠르게, 많이 써야하고, 많이 읽어야할 때 사용하면 된다.

 

Key value DB를 document DB와 비교해보면, 어떤 종류의 DB를 얻을 수 있는지가 좀 제한적이다. 저장하기 전에 DB에서 무엇을 얻을 것인지 미리 생각을 해놔야한다. 예를 들면, SQL에선 어떤 데이터를 얻을 것인지 고민을 하지 않고 데이터 구조에 대해 걱정을 하지 나중에 데이터를 뽑아서 어떻게 할지에 대한 고민은 없다. 하지만 DynamoDB에선 저장하기 전에 미리 어떻게 할 것인지 고민을 해야한다. 

 

 Graph DB 

대표적으로 Tao, neo4j가 있다. column이나 document가 필요 없을 때, 그러나 각 노드 사이 관계를 알야아 할 때 사용한다. 페이스북과 같은 소셜 네트워크를 만들 때 필요하다. 

페이스북은 Tao라는 그들만의 자체 DB를 만들었다. 여기선 document, column을 저장하는 것이 아니라, 각각의 entity를 저장하고 이를 관계망으로 연결한다. 

 

NoSQL Database Model (출처: https://velog.io/@gparkkii/DatabaseSQLNoSQL)

 

SQL과 NoSQL 어떤 것이 좋을까?

사실 둘 자체를 비교 하는 것이 말이 안된다. 왜냐하면 NoSQL의 종류가 훨씬 많기 때문이다.

만약 프로젝트가 화려하지 않은 평범한 프로젝트라면 거의 모든 경우 SQL을 선택할 것이다. (대부분 커버할 수 있음)

NoSQL은 위에 설명한 것과 같이 특별한 경우, 특별한 이슈에 대응하기 좋은 DB이다.

나도 SQL만 사용해봤지 NoSQL을 사용해 보지 않았다. 언제 사용해 볼 수 있을까...?

 

 


Reference

www.youtube.com/watch?v=Q_9cFgzZr8Q

 

반응형

댓글