결론적으로,
SQL : 엄격한 스키마가 있는 관계형 데이터베이스.
NoSQL : schimaless한, RDBMS를 제외한 나머지 데이터베이스
전자는 잦은 수정을 하거나, 중복 제거로 인한 이상현상을 줄이는데 유리하고,
후자는 더 유연하며, 수정이 없이 조회만을 주로 하고, 수평적 확장을 대비하는데 유리하다.
우선, 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보다 자유롭고, 제약이 없어보인다.
실제로도 유연함과, 이로 인해 따라오는 조회 속도가 장점이다.
데이터를 프로그램측에서 유리하게 저장할 수 있기 때문이다.
도큐먼트에서도 여러 방법이 있는데,
관심있으면 아래 페이지를 한 번 더 읽어봤으면 한다.
뭐가 다른가?
SQL | NoSQL |
대체적으로 수직적 확장만을 지원함. | 관계의 제약이 없기 때문에, 수평적 확장 또한 가능함. |
명확하게 정의된 스키마 : 데이터 무결성 보장 | 스키마 없음 : 더 유연한 데이터 조정 또한, 데이터를 프로그램이 읽기 편한 방식으로 저장하여, 읽어오는 속도가 더 빠름. |
데이터를 중복 없이 한번만 저장하기 때문에, 데이터 이상현상 발생 및 용량 증가를 최소화함. 때문에 수정(update)은 한번만 실행하면 됨. |
데이터를 중복할 수 있기 때문에, 용량이 더 큼. 수정(update)할 경우, 모든 컬렉션에서 수행해야 함. |
결론.
다시 맨 위로 올라가보자.
오늘도 수분 보충 완료 !
'ㄱ. 걱정과 공부 > 오늘의 한웅큼' 카테고리의 다른 글
온 프레미스와 오프 프레미스. (0) | 2024.08.21 |
---|---|
JSON 과 XML. (0) | 2024.06.20 |
WBS(Work Breakdown Structure) (0) | 2024.06.15 |
상수와 리터럴. (1) | 2024.06.15 |