NoSQL이란?
업데이트:
- 연구주제 : NoSQL이란?
- 연구목적 : 몽고DB 학습 전, SQL과 NoSQL 비교 연구
- 연구일시 : 2020년 1월 21일 09:00~17:00
- 연구자 : 이재환 ljh951103@naver.com
- 연구장비 : HP EliteDesk 800 G4 TWR
- 관련연구 : SQL, RDBMS, DBMS, DB, NOSQL, MongoDB
서론
웹 프로그래밍 특강 첫 날, 몽고 디비라는 키워드와 NoSQL이라는 키워드를 들은 적이 있다.
지금까지 다뤄왔던 데이터베이스는 MySQL뿐이고 데이터베이스에 대해 배운 것도 RDBMS 이기 때문에 몽고 디비와 NoSQL은 굉장히 생소했다.
몽고 디비가 NoSQL의 종류라는 것은 알겠는데 그럼 NoSQL은 SQL이 아니라는 말인가? 지금 까지 학습한 RDBMS와는 전혀 다른 데이터베이스인가?
이런저런 개인적인 의문의 해답을 찾기 위하여 본 연구를 진행하게 되었다.
본론
NoSQL ?
빅 데이터 시대를 맞이하며 이전의 데이터 저장 시스템은 해결할 수 없는 한계점에 도달하게 되었고, 이 한계를 극복할 수 있는 새로운 데이터 저장 기술이 요구되었다. 이러한 환경 속에서 NoSQL
이 등장하였다.
NoSQL이란 “Not Only SQL”을 의미한다. 즉, 우리가 익숙하게 사용하고 있는 RDBMS 형태의 관계형 데이터베이스가 아닌 다른 형태의 데이터 저장 기술을 의미한다.
이러한 NoSQL은 일반적인 DBMS로 처리하기에 비용이 많이 들거나 효과적이지 못한 부분을 해결할 목적으로 개발되엇고 대용량의 로그 처리나 쓰는 행위가 많은 경우에 사용된다.
즉, NoSQL은 많은 양의 데이터의 처리 속도를 향상시키기 위해 데이터를 저장, 응답하는 방법과 단순 저장작업에 있어서 매우 최적화된 키 저장 기법을 사용한다.
아래 사진은 NoSQL로 대표되는 데이터베이스들이다.
RDBMS에서 NoSQL까지..
NoSQL을 접근하기 이전에 이전에 배워왔던 RDBMS의 정의과 SQL을 잠시 알아보자.
RDBMS
RDBMS는 관계형 데이터베이스 관리 시스템을 의미한다. 관계형 데이터베이스는 Key와 Value들의 관계를 테이블화 시킨 간단한 원칙의 데이터베이스이다.
즉, 우리가 지금껏 다루어온 데이터베이스들이 이러한 테이블 구조를 가지고 있다면 그것들은 모두 RDBMS라고 볼 수 있다.
SQL
SQL은 RDBMS의 데이터를 관리하기 위해 설계된 특수 목적의 프로그래밍 언어를 지칭한다.
현재 많은 데이터베이스 관련 프로그램들이 SQL을 채택하고 있다.
이 중 가장 유명한 오픈 소스 소프트웨어가 바로 MySQL이다.
NoSQL
NoSQL은 기존 관계형 DBMS가 갖고 있는 특성뿐만 아니라, 다른 특성들도 부가적으로 지원하는 데이터베이스 관리 시스템이다.
위에서 설명했듯이, 다른 데이터 모델을 사용하고 데이터 저장 및 검색을 위한 특화된 메커니즘
을 제공, 최적화된 키-값 저장 기법
을 사용하며 응답속도나 효율 부문에서 매우 뛰어난 성능
을 발휘한다.
최근 클라우드에서 제공하는 NoSQL이 각광받고 있는데, RDBMS와 비교했을 때, 가장 큰 장점이 스키마가 필요 없고 데이터 분산이 용이
하다는 장점 때문이다.
이러한 NoSQL은 SNS가 등장하고 유행하면서 더욱 각광받게 되엇다. SNS에서는 무수히 많은 양의 비정형 데이터를 보다 쉽고 저장하고 처리해야하는 필요성이 대두되었기 때문에 NoSQL의 사용은 비약적으로증가하게 되었다.
기존의 데이터베이스 솔루션으로는 처리할 수 없는 다음과 같은 네 종류의 DB가 등장하였다.
- Columnar DB(컬럼 지향형)
- Document DB(문서 지향형)
- Graph DB(그래프형)
- Key-Value DB(키-밸류형)
각각의 DB는 각각의 특징을 지닌다. 간단하게 특징만을 설명하면 다음과 같다.
- Columnar DB
대량의 데이터의 압축, 분산처리, 집계 쿼리 (SUM, COUNT, AVG 등)및 쿼리 동작 속도 그리고 확장성이 뛰어남.
- Document DB
트리형 구조로 레코드를 저장하거나 검색하는 데 효과적임.
- Graph DB
Performance가 좋고 유연하며 유지보수에 용이함.
- Key-Value DB
단순한 구조이기에 속도가 빠르며 분산 저장시 용이함, 액세스 속도는 빠르지만 SCAN에는 용이하지 않음.
결론
RDBMS를 주로 다루다가 처음으로 NoSQL에 대해 알아보았다.
이번 포스팅에서는 간단하게 다루었지만, NoSQL이 체계적인 RDBMS에 비하여 부족한 부분이 많은 것이라 생각했지만 NoSQL도 굉장히 체계적이고 다루기 쉽지 않음을 배웠다.
향후과제
다음 포스팅에서는 NoSQL의 종류중 하나인 MongoDB를 알아보고 SQL과 NoSQL의 차이를 알아보자.
참고자료
http://www.incodom.kr/NoSQL_DB_%EC%9D%98_%EC%A2%85%EB%A5%98
https://siyoon210.tistory.com/130
https://toma0912.tistory.com/83
https://brunch.co.kr/@kooslab/181
Writer: Jae-Hwan Lee
댓글남기기