웹쟁이의 일상

[Database] NoSQL 종류에 대해서 알아보자 본문

Database

[Database] NoSQL 종류에 대해서 알아보자

jellyChoi 2019. 8. 13. 23:09

안녕하세요~ 오늘은 NoSQL의 종류에 대해서 알아보는 시간을 가져보겠습니다.

 

NoSQL이란 "Non Relational Operation Database SQL"의 약어로 굳이 해석을 해 보자면 관계형 데이터베이스가 아닌 SQL이라고 할 수 있습니다.

 

하지만 기능상으로는 관계형 데이터베이스 뿐만 아닌 SQL 이라고 하는 것이 더 가까운 해석이라고 봅니다.

 

보통 관계형 데이터베이스에서는 데이터의 무결성을 보장하기 위해 정규화를 해야만 하는데, 이러한 정규화가 데이터베이스의 성능 저하로 이어질 수 있기 때문에 NoSQL의 필요성이 대두되었습니다.

 

[Database] - [database] 관계형 DB와 비관계형 DB의 차이점

 

[database] 관계형 DB와 비관계형 DB의 차이점

안녕하세요~ 오늘은 관계형 데이터베이스와 비관계형 데이터베이스에 대해 알아보겠습니다. 관계형 DB 일반적으로 우리가 배워왔던 Mysql, Oracle, Mssql 같은 고전적인 데이터베이스를 관계형 데이터베이스라고..

newehblog.tistory.com

위의 글을 참고하시고 관계형 DB과 NoSQL의 차이점을 알아보시는 것도 좋을 것 같습니다.

 

현재 시장에 나온 NoSQL 데이터베이스는 수십 가지가 넘습니다.

 

이러한 데이터베이스를 구분하는 4가지 유형이 있는데 지금부터 알아보겠습니다.

 

1.WIDE COLUMN DATABASE

대량의 데이터를 신속하게 수집해서 분석할 수 있는 특징이 있습니다.

 

행마다 각각 다른 값, 다른 수의 스키마를 가질 수 있는 WIDE COLUMN 데이터베이스는 쿼리 동작속도가 매우 빠르고 확장성도 뛰어납니다.

 

대표적으로 Hbase, GoogleBigTable, Vertica 등의 데이터베이스가 있습니다.

왼쪽부터 GoogleBigTable, Hbase, Vertica

2. DOCUMENT DATABASE

테이블의 스키마가 상당히 유동적으로 이루어질 수 있어서 레코드마다 각각 다른 스키마를 가질 수 있습니다.

 

XML이나 JSON같은 도큐먼트를 이용해서 레코드를 저장한다 하여 DOCUMENT DATABASE라고 불립니다.

 

트리형 구조로 데이터를 만들고 조회하기 딱 좋은 데이터베이스입니다.

 

대표적으로 다들 잘 알고 있는 MongoDB, CouchDB, Azure Cosmos DB가 있습니다.

왼쪽부터 MongoDB, CouchDB, Azure Cosmos DB

3. GRAPH DATABASE

데이터를 노드로 표현하고, 노드 사이의 관계를 화살표로 표현하는 데이터베이스입니다.

 

일반적으로 관계형 데이터베이스보다 퍼포먼스가 뛰어나며 유연한 데이터 처리와 유지보수가 용이한 것이 장점입니다.

 

SNS 구축에 사용하기 좋은 데이터베이스입니다.

 

대표적으로는 Neo4j, BlazeGraph, OrientDB를 꼽을 수 있습니다.

왼쪽부터 Neo4j, BlazeGraph, OrientDB

4. KEY-VALUE DATABASE

KEY값과 VALUE값으로 구분된 하나의 묶음으로 저장되는, 아주 익숙한(JSON) 구조의 데이터입니다.

 

단순한 구조이기에 속도가 빠르고, 분산 저장이 용이하다는 장점이 있습니다. 

 

단순한 객체에서 복잡한 집합체까지 무엇이든 KEY-VALUE값이 될 수 있고 다른 유형의 데이터베이스로는 불가능한 범위까지 수평 확장을 할 수 있게 해 줍니다.

 

상당한 유연성을 제공하며 동일 데이터에서 메모리를 훨씬 덜 사용하므로 부하관리에 큰 이점이 있을 수 있습니다.

 

대표적으로 REDIS, Oracle NoSQL Database, VoldeMorte 등이 있습니다.

왼쪽부터 Redis, Oracle NoSQL Database, VoldeMorte

 

이 밖에도 엄청나게 다양한 종류의 NoSQL이 있습니다. 각 종류별로 데이터베이스에 저장할 데이터의 용도가 천차만별이므로 원하는 작업과 용도를 가장 효과적으로 지원하는 데이터베이스를 고르는 것이 중요합니다.

 

성능이 좋다고 무조건 NoSQL이 좋은 것은 아니기 때문에 관계형 데이터베이스와 비관계형 데이터베이스를 선택할 때도 신중하게 골라야 합니다.

 

예를 들면 금융기관같은 중요한 트랜잭션 처리가 일어나는 기관에서는 NoSQL이 적합하지 않을 수 있습니다.

 

여기까지 NoSQL의 종류에 대해 알아보았습니다. 여러 가지 유형에 헷갈리는 분들이 많겠지만 사실 데이터베이스라는 것이 하나만 잘 할줄 알아도 다른 종류는 금방 써먹을 수 있기 때문에 여러가지 이것저것 찔러보는 것 보다 한 가지만 집중적으로 공략하는 것이 좋을 것 같습니다.

 

 

Comments