곰돌이 놀이터

[NoSQL] NoSQL이란? 본문

DataBase/NoSQL

[NoSQL] NoSQL이란?

달나라 곰돌이 2018. 6. 27. 10:51

IT 시장은 빠르게 변하고 있다. 2018년 현재의 기술 트랜드는 인공지능, 머신러닝, 블록체인 등이라고 개인적으로 생각을 하지만 5년 전만해도 사물 인터넷, 빅데이터, 클라우드 컴퓨팅 등이 떠오르는 기술 트랜드였다. ( 개발 공부를 시작하던때였다. )


이때 빅데이터와 함께 떠올랐던 기술이 바로 NoSQL 이다.


NoSQL의 등장배경 


이전까지의 컴퓨팅 시스템은 기업 업무를 자동화하고 효율화 하는데 그 목적이 있었고 복잡한 데이터를 저장하거나 그 데이터간의 관계를 정의하고 분석하는데 최적화되어 있었다. 물론 그 과정에서 생성되는 데이터의 양은 한계를 가지고 있었다.

그러나 인터넷의 발전과 함께 특정 고객이 아닌 전세계의 사람들을 대상으로 하는 형태의 서비스가 발전이 되었고 이는 기존의 기업 시스템에서 볼 수 없었던 대규모의 데이터를 생산해냈다. 또한 이 데이터들은 기존에 복잡했던 데이터 형태에 비해 매우 단순한 형태를 띠었고 이것은 기존의 Oracle, MySQL 등으로 대변되는 RDBMS 중심의 데이터 저장 기술 시장에서 새로운 데이터 저장 기술인 NoSQL이 등장하는 계기가 되었다.


NoSQL이란 


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

RDBMS 가 클라이언트/서버 환경에 맞는 데이터 저장기술이라면 NoSQL은 클라우드 환경에 맞는 저장기술 이다.


NoSQL의 특징 


■ NoSQL은 RDBMS와는 달리 데이터간의 관계를 정의하지 않는다.

→ 가장 큰 특징중 하나는 관계형 데이터 베이스인 RDBMS가 데이터의 관계를 Foreign Key 등으로 정의하고 이를 이용해 Join 등의 관계형 연산을 한다고 하면, NoSQL은 데이터간의 관계를 정의하지 않는다. 데이터 테이블은 그냥 하나의 테이블이며 각 테이블간의 관계를 정의하지 않고 일반적으로 테이블간의 Join도 불가능하다. 

■ RDBMS에 비해 훨씬 더 대용량의 데이터를 저장할 수 있다.

→ RDBMS의 복잡도와 용량의 한계를 극복하기 위한 목적으로 등장한 만큼 페타바이트급의 대용량 데이터를 저장할 수 있다.

■ 분산형 구조이다.

→ NoSQL은 기존의 RDBMS와는 다르게 하나의 고성능 머신에 데이터를 저장하는것이 아니라 일반적인 서버 수십대를 연결해 데이터를 저장 및 처리하는 구조를 갖는다. 즉, 분산형 구조를 통해 데이터를 여러대의 서버에 분산해 저장하고 분산시에 데이터를 상호 복제해 특정 서버에 장애가 발생했을 때에도 데이터 유실이나 서비스 중지가 없는 구조의 형태를 가진다.

■ 고정되지 않은 테이블 스키마를 갖는다.

→ RDBMS와는 다르게 테이블의 스키마가 유동적이다. 데이터를 저장하는 컬럼은 각기 다른 이름과 다른 데이터 타입을 갖는것이 허용된다.

NoSQL의 종류 

■ Key-Value DB

→ Key와 Value의 쌍으로 데이터가 저장되는 유형으로써 Amazon의 Dynamo Paper에서 유래되었다. Riak, Vodemort, Tokyo등의 제품이 알려져 있다.

■ Wide Columnar DB

→ Big Table  DB라고도 하며, Google의 BigTable Paper에서 유래되었다. Column Family 데이터 모델을 사용하고 있고, HBase, Cassandra, Hypertable이 이에 해당된다.

■ KDocument  DB

→ Lotus Notes에서 유래되었으며, JSON, XML과 같은 Collection 데이터 모델 구조를 채택하고 있다. Mongo DB, Cough DB가 이 종류에 해당된다.

■ Graph DB

→ Euler & Graph Theory에서 유래한 DB이다. Nodes, Relationship, Key-Value 데이터 모델을 채용하고 있다. Neo4J 등의 제품이 있다.


끝으로 


NoSQL은 생각보다 많이 접하게 될것이고 그만큼 중요하다.

떄문에 다른 관계형 데이터 베이스를 공부하는것과 마찬가지로 뒤에서 자세히 알아보기로 하자.


Comments