1. 비정형, 초고용량 데이터 처리를 위한 NoSQL이란 무엇인가
NoSQL(Not Only SQL)이란 기존의 관계형 데이터베이스의 한계를 벗어나 비정형, 초고용량 데이터 처리를 위해 쓰기 속도에 중점을 둔 다수 서버에 복제 및 분산 저장하는 등 수평적 확장이 가능한 비관계형 분산 데이터 저장소 및 언어를 말합니다.
이 문서는 NoSQL의 특징은 어떠한 것이 있는지 알아보고 어떠한 종류로 구분되고, 어떠한 기술이 쓰일 수 있는지 기술되어 있습니다.
2. NoSQL의 특징
NoSQL은 대용량 데이트를 처리하기 위해 페타바이트 수준의 데이터가 수용이 가능한 느슨한 데이터 구조를 제공합니다. 기존 관계형 데이터베이스에서 표현하지 못했던 비정형데이터 구조를 NoSQL에서는 구현할 수 있습니다. 또한 기 정의된 스키마 없이 데이터를 상대적으로 자유롭게 저장 가능하며 Key-value 및 Graph, Document 구조의 단순한 형태로 데이터가 저장되는 유연한 저장구조를 가지게 됩니다. NoSQL 데이터를 저장하는 하드웨어를 구성할 때는 대용량의 단일 서버 구조가 아닌 저렴한 클러스터 구조를 병렬로 만들어 구성합니다, PC급의 하드웨어를 여러 개 붙여 병렬로 구성하여 수평정 확장 및 데이터 복제, 분산 저장 가능한 구조로 구성됩니다.
질의 언어로는 기존의 관계형 데이터베이스의 SQL과 같은 질의언어를 제공하지 않고 간단한 API Call 또는 HTTP를 통한 단순한 접근 인터페이스를 제공합니다. 관계형 DBMS가 논리적 구조 및 ACID의 보장에 초점을 맞추는 것이라면, NoSQL의 사상은 필요한 만큼만 무결성을 제공하고 대용량 데이터와 비정형 데이터를 빠르고 효과적으로 처리할 수 있수 있게 하는데 초점을 맞추고 있습니다.
3. NoSQL의 CAP 이론 및 종류
NoSQL의 CAP이론이란 분산컴퓨팅 시스템이 보장해야 할 3가지 특징(일관성, 가용성, 부분 결함 허용)을 정의하고, 분산 시스템은 3가지 중 2가지만 보장할 수 있고, 3가지 모두를 보장한다는 것은 불가능하다는 이론을 말합니다.
Consistency (일관성)은 모든 사용자는 동시에 항상 같은 데이터를 조회할 수 있어야 한다는 의미입니다. 두번 째 Availability (가용성)이란 모든 사용자는 항상 읽기, 쓰기 작업을 할 수 있고 몇몇 노드 장애시에도 다른 노드들은 정상 작동해야 한다는 이론이고, Partition Tolerance (부분 결함허용)은 물리적 네트워크 결함에도 시스템은 정상적으로 작동해야 한다는 이론입니다.
4. NoSQL의 종류
4-1. Key Value 기반 NoSQL
Key Value기반 NoSQL은 Key-value 기반으로 하는 단순하고 속도가 빠른 가장 기초적인 NoSQL DB입니다. Get, Put, Delete 기능을 제공하며 Dynamo, Redis, MemcacheDB 등이 있습니다.
4-2. Column Family 기반 NoSQL
관계형 데이터베이스의 테이블에 대응되는 컬럼 패밀리에 행으로 데이터를 저장하는 NoSQL DB를 말합니다. Column Family 기반 DB로는 Cassandra, Hbase, SimpleDB 등이 있습니다.
4-3. Document 기반 NoSQL
XML, JSON, BSON 등 문서를 Key-Value 데이터베이스의 Value 부분에 저장하는 NoSQL DB를 말합니다. Document 기반 NoSQL에는 MongoDB, CouchDB 등이 있습니다.
4-4. Graph 기반 NoSQL
관계형 데이터베이스에서 엔트리 속성을 노드로, 관계를 노드간 엣지로 표현하는 NoSQL DB를 말합니다. Graph 기반 NoSQL에는 NoSQL DB, Neo4j, 블록 DB 등이 있습니다.