결론적으로,

SQL : 엄격한 스키마가 있는 관계형 데이터베이스.
NoSQL : schimaless한, RDBMS를 제외한 나머지 데이터베이스

전자는 잦은 수정을 하거나, 중복 제거로 인한 이상현상을 줄이는데 유리하고,
후자는 더 유연하며, 수정이 없이 조회만을 주로 하고, 수평적 확장을 대비하는데 유리하다.

 

 

 

오픈소스 RDBMS인, MySQL / NoSQL DBMS인 mongoDB.

 

 

우선, SQL과 NoSQL이 무엇인지 알고, 두 가지를 비교해보자.


 

 

SQL (Structured Query Language) : 구조화된 쿼리(데이터 질의) 언어.

 

 

 원래 SQL은, DB에 데이터를 삽, 삭, 갱 할수 있는, 말 그대로 "쿼리 언어" 이다.

하지만 처음에는 이 언어를 RDBMS에서 사용하기 위해 만든 까닭에, 데이터베이스 까지 통용하는 말이 된 것 같다.

 

 

RDBMS는 크게 두 가지 특징이 있으며,

 1. 관계를 사용하 데이터 중복 제거.

 2. 엄격한 스키마를 통해, 데이터 무결성 보장.

 

 

RDBMS의 예시로는,

ID ARTIST NAME UPLOAD ...
001 QWER ANIMA POWER 2024-07-12  
002 버즈 거짓말 2015-06-11  
003 DK(디셈버) 영원 2024-03-19  

 


 

 

NoSQL (Not Only SQL) : SQL이 아닌 것.

 

 

나무위키에서, NoSQL/등장 배경 :

더보기

지난 20년간, 데이터를 저장하는 데에는 관계형 데이터베이스가 사용되었다. 트랜잭션을 통한 안정적인 데이터 관리가 가장 중요한 이슈였기 때문이다. 하지만 웹 2.0 환경과 빅데이터가 등장하면서 RDBMS는 난관에 부딪히게 되었는데, 바로 ‘데이터를 처리하는 데 필요한 비용의 증가’ 때문이다. 데이터와 트래픽의 양이 기하급수적으로 증가함에 따라 한 대에서 실행되도록 설계된 관계형 데이터베이스를 사용하는 것은 하드웨어적으로 큰 비용이 들게 되었다. 장비의 성능이 좋을수록, 성능을 향상시키는 데(Scale-up: 수직적 확장) 비용이 기하급수적으로 증가하기 때문이다.

NoSQL은 데이터의 일관성을 약간 포기한 대신 여러 대의 컴퓨터에 데이터를 분산하여 저장하는 것(Scale-out: 수평적 확장)을 목표로 등장하였다. NoSQL의 등장으로 작고 값싼 장비 여러 대로 대량의 데이터와 컴퓨팅 부하를 처리하는 것이 가능하게 되었다.

 

 

크게는 네 가지 종류가 있으며,

1. Key-Value : Memcached, Riak, Redis, Amazon Dynamo DB, LevelDB

2. Document :  MongoDB, CouchDB, MarkLogic

3. Column-family : HBase, Cassandra, Hypertable

4. Graph 모델 : ...

 

 

NoSQL의 예시를 먼저 보고가면 좋을 것 같다.

아래는 MongoDB의 도큐먼트 구조 예시,

 

 

ID ARTIST NAME ...
001 QWER ANIMA POWER, 고민중독, DISCORD  
대충 데뷔일, 인기도, 등등...  
002 버즈 거짓말, 겁쟁이, Monologue  
   
003 DK(디셈버) 발걸음, 영원, ...  
   

 

 

딱 봐도 RDBMS보다 자유롭고, 제약이 없어보인다.

실제로도 유연함과, 이로 인해 따라오는 조회 속도가 장점이다.

데이터를 프로그램측에서 유리하게 저장할 수 있기 때문이다.

 

도큐먼트에서도 여러 방법이 있는데,

관심있으면 아래 페이지를 한 번 더 읽어봤으면 한다.

NHN meetup : mongoDB Story 3

 

 

 

뭐가 다른가?

 

SQL NoSQL
대체적으로 수직적 확장만을 지원함. 관계의 제약이 없기 때문에,
수평적 확장 또한 가능함.
명확하게 정의된 스키마 : 데이터 무결성 보장 스키마 없음 : 더 유연한 데이터 조정
또한, 데이터를 프로그램이 읽기 편한 방식으로 저장하여,
읽어오는 속도가 더 빠름.
데이터를 중복 없이 한번만 저장하기 때문에,
데이터 이상현상 발생 및 용량 증가를 최소화함.

때문에 수정(update)은 한번만 실행하면 됨.
데이터를 중복할 수 있기 때문에, 용량이 더 큼.

수정(update)할 경우, 모든 컬렉션에서 수행해야 함.

 

 

결론.

 

다시 맨 위로 올라가보자.

오늘도 수분 보충 완료 !

 

 

https://siyoon210.tistory.com/130

https://velog.io/@octo__/SQL-vs-NoSQL

'ㄱ. 걱정과 공부 > 오늘의 한웅큼' 카테고리의 다른 글

온 프레미스와 오프 프레미스.  (0) 2024.08.21
JSON 과 XML.  (0) 2024.06.20
WBS(Work Breakdown Structure)  (0) 2024.06.15
상수와 리터럴.  (1) 2024.06.15

+ Recent posts