NoSQL이라는 용어는 비관계형 데이터베이스 유형을 가리키며 이 데이터베이스는 관계형 테이블과는 다른 형식으로 데이터를 저장합니다. 그러나 NoSQL 데이터베이스는 언어마다 관습화된 API, 선언적 구조의 쿼리 언어, 쿼리별 언어를 사용하여 질의할 수 있습니다. 이 데이터베이스가 not only SQL 데이터베이스라고 불리는 이유가 바로 이것이죠.
높은 확장성과 가용성이 주요 장점인 NoSQL 데이터베이스는 실시간 웹 애플리케이션 및 빅 데이터에 널리 사용됩니다.
변화하는 요구 사항에 빠르게 적응함으로써 민첩한 개발 패러다임에 자연스럽게 활용되는 이점 때문에 개발자들 역시 NoSQL을 선호하죠. NoSQL 데이터베이스를 사용하면 데이터는 보다 직관적이고 이해하기 쉬운 방식 또는 애플리케이션이 사용하는 것에 가까운 방식으로 저장됩니다. NoSQL 스타일의 API를 사용하면 저장 또는 검색 시 데이터 변환의 필요성이 줄어듭니다. 또한 NoSQL 데이터베이스는 다운타임이 없는 클라우드의 이점을 완전히 누릴 수 있습니다.
SQL 데이터베이스는 관계형인 반면 NoSQL 데이터베이스는 비 관계형입니다. 관계형 데이터베이스 관리 시스템(RDBMS)은 구조화된 쿼리 언어(SQL)의 기반입니다. 이를 통해 사용자는 고도로 구조화된 테이블에서 데이터에 액세스하고 데이터를 조작할 수 있습니다. 이 시스템은 MS SQL Server, IBM DB2, Oracle, MySQL 등 데이터베이스 시스템의 근간이 되는 모델입니다. 하지만 NoSQL 데이터베이스에서는 데이터 액세스 구문이 데이터베이스마다 다를 수 있습니다.
NoSQL 데이터베이스를 이해하려면 먼저 RDBMS와 비관계형 데이터베이스의 차이를 이해해야 합니다.
RDBMS의 데이터는 테이블이라고 불리는 데이터베이스 객체에 저장되어 있습니다. 테이블은 관계형 데이터 항목 모음이고, 열과 행으로 구성되죠. 이 데이터베이스에서는 스키마를 사전에 정의해야 합니다. 다시 말해, 모든 열과 그와 관련된 데이터 유형이 사전에 파악되어야 애플리케이션이 데이터를 데이터베이스에 작성할 수 있다는 얘기죠. 이 데이터베이스는 또한 키를 사용해 여러 테이블을 연결하는 방식으로 정보를 저장합니다. 그 과정에서 여러 테이블 간의 관계가 형성되죠. 가장 간단하게 설명하면, 키는 특정 행을 검색하는 데 사용되며, 검사 또는 수정될 수 있습니다.
반대로 NoSQL 데이터베이스에서 데이터는 사전에 스키마를 정의하지 않아도 저장될 수 있습니다. 작업을 진행하는 동시에 데이터를 정의하는 방식으로 빠르게 데이터를 작성하고 반복할 수 있는 능력을 얻게된다는 얘기입니다. 이 데이터베이스는 그래프 기반, 열 지향, 문서 지향 또는 키-값 저장소 등 특정 비즈니스 요구 사항 수행에 적합합니다.
최근까지도 관계형 데이터베이스가 가장 널리 사용되는 모델이었습니다. 지금도 여전히 다양한 기업들에서 보편적으로 사용되고 있죠. 그러나 오늘날 사용되는 데이터의 다양성, 속도, 양을 감당하기 위해서는 관계형 데이터베이스를 보완할 전혀 다른 데이터베이스가 필요합니다. 이와 같은 상황 때문에 일부 영역에서 NoSQL 데이터베이스를 도입하기 시작했는데, 이 데이터베이스는 '비관계형 데이터베이스'라고도 불립니다. 신속한 수평적 확장 능력 덕분에 비관계형 데이터베이스는 높은 트래픽을 처리할 수 있고, 같은 이유로 이 데이터베이스는 고도의 적응력을 자랑합니다.
빠른 혁신이 필요한 기업 및 조직에게 있어, 민첩성을 유지하면서 동시에 모든 규모의 운영을 지속할 수 있는 능력이 게임의 승패를 좌우합니다. NoSQL 데이터베이스는 유연한 스키마를 제공하고, 대량의 데이터 및 낮은 대기시간 또는 응답시간을 요구하는 애플리케이션 구축에 이상적인 다양한 데이터 모델을 지원합니다. 온라인 게이밍 및 전자상거래 웹 애플리케이션이 여기에 해당되죠.
NoSQL 데이터베이스는 일반적으로 비정규화된 데이터에 의존하며, 상대적으로 적은 수의 데이터(또는 컨테이너)를 사용하는 애플리케이션 유형을 지원합니다. 또한 참조를 사용해 데이터 관계를 모델링하지 않고, 포함된 기록(또는 문서)으로 모델링하는 애플리케이션을 지원하죠. 대다수의 금융, 회계, 기업 리소스 계획을 위한 고전적인 백오피스 비즈니스 애플리케이션은 데이터 변형 및 데이터 중복을 방지하기 위해 고도로 정규화된 데이터에 의존합니다. 이와 같은 애플리케이션은 NoSQL 데이터베이스에 어울리지 않는 유형이라고 할 수 있죠.
NoSQL 데이터베이스의 또 다른 특징은 쿼리 복잡성입니다. NoSQL 데이터베이스는 단일 테이블에 대한 쿼리 작업에 아주 잘 작동합니다. 그러나 쿼리의 복잡성이 높아지는 경우, 관계형 데이터베이스가 더 나은 선택입니다. NoSQL 데이터베이스는 보통 복잡한 조인, 하위 쿼리 및 WHERE 절에서의 중첩 질의를 제공하지 않습니다.
하지만 꼭 관계형 및 비관계형 데이터베이스 중 선택해야 하는 건 아닙니다. 많은 경우 기업들은 관계형 및 비관계형 데이터 모델을 결합해 적용할 수 있는 컨버지드 모델을 제공하는 데이터베이스를 선택합니다. 이 하이브리드 접근 방식은 다양한 데이터 유형을 처리할 수 있는 유연성을 제공하는 동시에 성능 저하 없이 일관적인 읽기 및 쓰기를 보장합니다.
NoSQL 데이터베이스와 다른 유형의 데이터베이스 간의 주요 차이는 NoSQL 데이터베이스의 경우 보통 구조화되지 않은 스토리지를 사용한다는 점입니다. 지난 20년 동안 개발된 NoSQL 데이터베이스는 빠르고 단순한 쿼리, 방대한 데이터, 잦은 애플리케이션 변화를 지원하기 위해 설계되었습니다. 또한 이 데이터베이스는 개발자들의 프로그래밍을 크게 단순화해 주었죠.
또 한 가지 중요한 차이점은 NoSQL 데이터베이스가 '샤딩'이라는 프로세스를 거쳐 수평 확장을 한다는 점입니다. 여러 서버에 걸친 데이터 처리를 위해 더 많은 머신을 추가할 수 있다는 뜻이죠. 다른 SQL 데이터베이스에서 찾을 수 있는 수직 확장성을 지원하기 위해서는 기존 머신에 더 많은 파워와 메모리를 추가해야 합니다. 계속해서 더 많은 스토리지가 필요하기 때문에 지속불가능하다는 특징이 있죠.
수평 확장성 덕분에 NoSQL 데이터베이스는 엄청나게 많은 양의 데이터를, 심지어 데이터가 계속해서 증가하는 동안에도 더욱 효율적으로 처리할 수 있습니다. 수직 확장은 집 안에 새로운 계단을 추가하는 것으로, 수평 확장은 기존 건물 옆에 새로운 건물을 추가로 세우는 것으로 생각하면 이 개념을 쉽게 이해할 수 있습니다.
지난 20년간 전례없는 속도로 증가한 디지털 상호작용 및 데이터 소비로 인해 기업들은 데이터 저장 및 액세스에 관한 보다 현대적이며 유연한 접근 방식을 도입해야 했습니다. 전 세계의 사용자들이 콘텐츠 및 기능의 방해없는 흐름을 요구하는 동안, 데이터베이스 역시 이와 같은 변화에 빠르게 적응해야 했습니다. 이 점을 염두에 두고, 개발자들이 NoSQL/비관계형 데이터베이스를 선택하는 핵심적인 이유에 대해 살펴봅시다:
NoSQL 데이터베이스에는 4가지 주요 유형이 있습니다:
Oracle NoSQL Database Cloud 서비스는 개발자들이 고가용성을 위한 데이터 복제를 통해 예측 가능한 10밀리초 미만의 응답 시간을 제공하는 문서, 열, 키 값 데이터베이스 모델을 사용해 애플리케이션을 손쉽게 구축할 수 있게 지원합니다. 이 서비스는 ACID 트랜잭션, 서버리스 확장, 포괄적인 보안, PPU(pay-per-use) 요금제를 제공합니다.
Oracle NoSQL Database Cloud 서비스가 이제 Oracle Cloud Free Tier에 포함됩니다. Oracle Cloud Free Tier는 한정된 기간 동안 무료로 이용할 수 있는 다양한 클라우드 서비스 체험판 및 기간 제한 없이 사용할 수 있는 상시 무료 서비스를 제공합니다.