NoSQL 데이터베이스란?
기존 데이터베이스보다 더 많은 유연성을 제공하는 데이터베이스 설계 유형인 NoSQL에 대해 알아봅니다.
테이블 위에 있는 파란색 스레드의 원
NoSQL 데이터베이스란?

"not only SQL", "non-SQL"으로도 불리는 NoSQL은 관계형 데이터베이스의 전통적인 구조 밖에서 데이터 저장 및 쿼리를 가능하게 하는 데이터베이스 설계 접근법입니다. NoSQL은 여전히 관계형 데이터베이스 관리 시스템(Relational Database Management System, RDBMS)에서 찾을 수 있는 데이터를 저장할 수 있지만 RDBMS와는 다른 방식으로 데이터를 저장합니다. 관계형 데이터베이스와 비관계형 데이터베이스 중 무엇을 사용할지에 대한 결정은 크게 컨텍스트의 영향을 받으며, 적용사례에 따라 달라집니다.

관계형 데이터베이스의 전형적인 테이블 구조 대신, NoSQL 데이터베이스는 JSON 문서와 같은 하나의 데이터 구조 안에 데이터를 보관합니다. 이러한 비관계형 데이터베이스 설계는 스키마가 필요하지 않으므로 일반적으로 비정형인 대규모 데이터 세트를 관리할 수 있는 신속한 확장성을 제공합니다.

NoSQL은 또한 분산 데이터베이스의 한 유형입니다. 즉, 정보가 다양한 서버에 복제 및 저장되며, 서버는 원격이거나 로컬일 수 있습니다. 그러므로 데이터의 가용성과 신뢰성이 유지됩니다. 데이터 중 일부가 오프라인 상태가 되어도 데이터베이스의 나머지 부분은 계속 실행될 수 있습니다.  

요즘, 거의 모든 산업에서 기업들은 고속으로 대량의 데이터를 관리해야 하며, 최신 웹 애플리케이션을 실행하기 위해 신속하게 확장할 수 있어야 합니다. 클라우드, 빅데이터, 모바일 및 웹 애플리케이션 내에서 확장이 중시되는 이 시대에 NoSQL 데이터베이스는 필요한 속도와 확장성을 제공하며, 성능과 사용 편의성 때문에 널리 선택되고 있습니다. 

NoSQL과 SQL

SQL(Structured Query Language)은 흔히 NoSQL과 비교하여 언급됩니다. NoSQL과 SQL의 차이점을 더 잘 이해하려면 SQL의 역사를 이해하는 것이 좋습니다. SQL은 데이터베이스에서 특정 정보를 가져오는 데 사용되는 프로그래밍 언어입니다.  

관계형 데이터베이스 이전에 기업들은 데이터 테이블을 위한 트리와 같은 구조를 가진 계층적 데이터베이스 시스템을 사용했습니다. 이 초기 데이터베이스 관리 시스템(Database Management System, DBMS) 덕분에 사용자는 대량의 데이터를 체계적으로 정리할 수 있었습니다. 그러나, 이 시스템은 복잡했고, 특정 애플리케이션에만 사용할 수 있는 경우가 많았으며, 데이터 내에서 발견하는 능력이 제한적이었습니다. 이러한 한계점 때문에 결국 테이블에 데이터를 정리하는 관계형 데이터베이스  관리 시스템이 개발되었습니다. SQL은 관계형 데이터와 상호작용하는 인터페이스를 제공했으므로 분석가는 공통 필드에서 병합하여 테이블을 연결할 수 있었습니다.

시간이 지남에 따라 전자상거래 애플리케이션과 같은 새로운 기술 때문에 대규모 데이터 세트를 더 빨리 그리고 분리된 방식으로 사용할 수 있어야 한다는 요구가 점점 더 중요해졌습니다. 프로그래머들은 SQL 데이터베이스(즉, 관계형 데이터베이스)보다 더 유연한 데이터베이스가 필요했습니다. 바로 그 대안이 NoSQL이었습니다. 

NoSQL은 SQL의 대안이었지만, 그렇다고 해서 NoSQL이 SQL을 대체하지는 않았습니다. 예를 들면, 여러분이 회사에서 소매 주문을 관리한다고 가정해 보겠습니다. 관계형 모델에서는 개별 테이블이 고객 데이터, 주문 데이터, 제품 데이터를 별도로 관리합니다. 그리고 이 데이터들은 고객 ID 또는 주문 ID와 같은 고유한 공통 키를 통해 연결됩니다. 이 방법은 데이터를 빨리 저장하고 가져오는 데 유용하지만 상당한 메모리를 요구합니다. 메모리를 추가하려고 할 경우, SQL 데이터베이스는 수직적으로만 확장할 수 있고 수평적으로는 확장할 수 없기 때문에 하드웨어를 통해서만 메모리를 추가할 수 있습니다. 그 결과, 수직적 확장이 궁극적으로 회사의 데이터 저장 및 가져오기 능력을 제한하게 됩니다.

이에 비해, NoSQL 데이터베이스는 비관계형이므로 테이블을 연결할 필요가 없습니다.내장된 샤딩 및 고가용성 기능이 수평적 확장을 용이하게 합니다. 데이터베이스 서버 하나로 모든 데이터를 저장하거나 모든 쿼리를 처리할 수 없는 경우, 워크로드를 두 개 이상의 서버로 나눌 수 있으므로 데이터를 수평적으로 확장할 수 있습니다.

각 데이터베이스 유형은 그 자체로 장점이 있지만 기업들은 보통 단일 애플리케이션에서 NoSQL과 관계형 데이터베이스를 모두 사용합니다. 요즘 클라우드 제공업체들은 SQL 또는 NoSQL 데이터베이스를 지원할 수 있습니다. 어느 데이터베이스를 선택할 것인가는 목표에 따라 결정됩니다

이 두 옵션들의 차이점을 자세히 알아보려면 "SQL 및 NoSQL 데이터베이스: 차이점은 무엇인가?"를 확인해 보십시오.

NoSQL 데이터베이스의 유형

NoSQL은 여러 가지 방식으로 데이터를 구성하기 위한 다른 옵션을 제공합니다. NoSQL은 다양한 데이터 구조를 제공하므로 데이터 분석, 빅데이터 관리, 소셜 네트워크 및 모바일 웹 개발에 적용할 수 있습니다. 

NoSQL 데이터베이스는 다음과 같은 기본 데이터 모델 중 하나를 사용하여 정보를 관리합니다. 

키-값 저장소

이것은 일반적으로 NoSQL 데이터베이스 중 가장 단순한 형태로 간주됩니다. 스키마가 없는 이 데이터 모델은 키-값 쌍으로 구성된 사전으로 조직화되며, 각 항목은 키와 값을 가지고 있습니다. 키는 쇼핑 카트 ID처럼 SQL 데이터베이스에서 사용되는 유사한 어떤 것일 수 있으며, 값은 사용자의 쇼핑 카트에 있는 개별 항목과 같은 일련의 데이터입니다. 이 모델은 쇼핑 카트와 같은 사용자 세션 정보를 캐시하고 저장하는 데 흔히 사용됩니다. 그러나, 이 모델은 한 번에 여러 레코드를 가져와야 할 경우 적합하지 않습니다. Redis와 Memcached는 오픈소스 키-값 데이터베이스의 예입니다.

문서 저장소

이름에서 알 수 있듯이, 문서 데이터베이스는 데이터를 문서로 저장합니다. 이 저장소는 준정형 데이터를 관리하는 데 유용하며, 데이터는 일반적으로 JSON, XML 또는 BSON 형식으로 저장됩니다. 이 저장소는 데이터가 애플리케이션에서 사용될 때 데이터를 함께 모아두어 데이터를 사용할 때 변환 작업을 줄여줍니다. 또한 문서 간 데이터 스키마(예: name과 first_name)가 일치하지 않아도 되므로 개발자는 더 큰 유연성을 누릴 수 있습니다. 그러나, 이러한 특징은 복잡한 트랜잭션의 경우 문제가 될 수 있으며 데이터 손상을 유발할 수 있습니다. 문서 데이터베이스의 흔한 사용 사례로는 컨텐츠 관리 시스템 및 사용자 프로필이 있습니다. 문서 지향적 데이터베이스의 예로는 MongoDB가 있습니다. MongoDB는 MEAN 스택의 데이터베이스 구성 요소입니다.

MongoBD에 대해 더 알아보고 싶으세요? IBM 자습서를 통해 IBM Cloud Databases for MongoDB을 시작하는 방법을 알아보세요. 

와이드-컬럼 저장소

이 데이터베이스는 정보를 컬럼에 저장하므로 사용자는 관련 없는 데이터에 추가 메모리를 할당하지 않고 특정 컬럼에만 액세스할 수 있습니다. 이 데이터베이스는 키-값 저장소와 문서 저장소의 단점을 해결하려고 합니다. 하지만, 이 데이터베이스는 관리하기가 더 어려운 시스템일 수 있으므로 새로운 팀과 프로젝트에는 권장되지 않습니다. Apache HBase와 Apache Cassandra는 오픈소스 와이드-컬럼 데이터베이스의 예입니다. Apache HBase는 희소 데이터 세트를 저장하는 한 방법을 제공하는 Hadoop Distributed Files System(많은 빅데이터 애플리케이션에서 흔히 사용됨)을 기반으로 구축됩니다. 한편, Apache Cassandra는 여러 서버, 그리고 여러 데이터 센터를 포괄하는 클러스터링에 걸쳐 대량의 데이터를 관리하도록 설계되었습니다. 이 데이터베이스는 소셜 네트워킹 웹사이트 및 실시간 데이터 분석 등 다양한 사용 사례에 사용되어 왔습니다.

그래프 저장소

이 데이터베이스 유형은 일반적으로 지식 그래프의 데이터를 보관합니다. 데이터 요소는 노드, 엣지, 속성으로 저장됩니다. 어느 객체, 장소 또는 사람이든 노드가 될 수 있습니다. 엣지는 노드 간의 관계를 정의합니다. 예를 들면, 노드는 IBM과 같은 클라이언트, 그리고 Ogilvy와 같은 에이전시가 될 수 있습니다. 엣지는 관계를 IBM과 Ogilvy 간의 고객 관계로 분류할 것입니다.

그래프 데이터베이스는 그래프 내 요소들 간의 연결 네트워크를 저장하고 관리하는 데 사용됩니다. Neo4j(IBM 외부 링크)는 오픈소스 커뮤니티 에디션을 사용하는 Java 기반의 그래프 기반 데이터베이스 서비스입니다. 이 에디션의 경우 사용자는 온라인 백업 및 고가용성 확장 기능의 라이센스를 구입하거나 백업 및 확장 기능이 포함된 라이센스가 적용된 패키지형 버전을 구입할 수 있습니다. 

인메모리 저장소

이 데이터베이스 유형(예: IBM solidDB)은 데이터가 디스크가 아니라 메인 메모리에 보관되므로 통상적인 디스크 기반 데이터베이스보다 더 빠르게 데이터에 액세스할 수 있습니다. 

NoSQL 데이터베이스의 예

많은 기업들이 NoSQL 환경으로 이동했습니다. 위에서 언급한 데이터베이스 외에도 널리 사용되는 NoSQL 데이터베이스의 예 몇 가지를 소개합니다. 

  • Apache CouchDB는 JavaScript를 쿼리 언어로 사용하는 JSON 문서 기반 오픈소스 데이터베이스입니다. 
  • Elasticsearch는 풀 텍스트 검색 엔진을 포함하는 문서 기반 데이터베이스입니다. 
  • Couchbase는 키-값 및 문서 데이터베이스로, 개발자가 클라우드, 모바일 및 엣지 컴퓨팅을 위한 응답성과 유연성이 뛰어난 애플리케이션을 구축하도록 지원합니다. 

데이터베이스 현황에 대해 자세히 알아보려면 "데이터베이스 현황에 대한 간략한 개요"를 확인하세요.

NoSQL의 장점

각 NoSQL 데이터베이스 유형은 강점이 있으므로 특정 사용 사례에 더 적합합니다. 그러나 모든 NoSQL 데이터베이스 유형은 개발자에게 공통적으로 다음과 같은 장점을 제공하며, 고객에게 더 나은 서비스를 제공할 수 있도록 프레임워크를 제공합니다. 

  • 비용 효율성: 상용 하이엔드 RDBMS를 유지 관리하려면 비용이 많이 듭니다. RDBMS를 사용하려면 라이센스를 구입해야 하고 훈련받은 데이터베이스 관리자가 필요하며 수직으로 확장되는 강력한 하드웨어가 필요합니다. NoSQL 데이터베이스를 사용하면 신속하게 수평으로 확장하여 리소스를 더 효과적으로 배정하고 비용을 최소화할 수 있습니다. 
  • 유연성: 수평적 확장이 가능하고 유연한 데이터 모델을 따르므로 NoSQL 데이터베이스는 급속도로 변화하는 대량의 데이터를 처리할 수 있습니다. 따라서 NoSQL은 애자일 개발, 빠른 반복, 빈번한 코드 푸시에 적합합니다. 
  • 복제: NoSQL 복제 기능은 여러 서버에 걸쳐 데이터를 복제하고 저장합니다. 이러한 복제 기능은 데이터 신뢰성을 제공하므로 다운타임 동안에도 액세스를 지원하고 서버가 오프라인 상태가 될 경우 데이터 손실로부터 보호할 수 있습니다. 
  • 속도: NoSQL은 개발자부터 영업 팀 그리고 고객에 이르기까지 모든 사용자를 위해 더 빠르고 민첩한 저장과 처리를 지원합니다. 또한, 빠른 속도 때문에 NoSQL 데이터베이스는 일반적으로 복잡한 최신 웹 애플리케이션, 전자상거래 사이트 또는 모바일 애플리케이션에 더 적합한 것으로 간주됩니다.  

요약하자면, NoSQL 데이터베이스는 고성능, 가용성, 확장성을 제공합니다. 

NoSQL 적용사례

선택해야 할 NoSQL 데이터베이스의 구조와 유형은 조직이 데이터베이스를 어떤 방식으로 사용하려고 하는지에 따라 결정됩니다. 다양한 NoSQL 데이터베이스 유형의 구체적인 사용 사례 몇 가지를 소개합니다. 

  • 데이터 관계 관리: 복잡하게 집계된 데이터와 데이터 포인트 간의 관계를 관리하려면 보통 그래프 기반 NoSQL 데이터베이스를 사용합니다. 예를 들면, 다양한 데이터 유형을 사용하는 사람들 간의 연결이 이루어지는 추천 엔진, 지식 그래프, 사기 탐지 애플리케이션, 소셜 네트워크 등이 있습니다. 
  • 레이턴시가 낮은 성능: 게이밍, 홈 피트니스 애플리케이션, 광고 기술은 모두 실시간 데이터 관리를 위해 높은 처리량을 요구합니다. 이 인프라는 시장 입찰 업데이트 또는 가장 관련성 높은 광고 제시 등을 통해 고객에게 가장 큰 가치를 제공합니다. 웹 애플리케이션은 디스크 스토리지에 수반되는 지연 없이 응답 시간이 빠르고 사용량 급증을 관리할 수 있는 인메모리 NoSQL 데이터베이스가 필요합니다. 
  • 확장 및 대량의 데이터: 전자상거래의 경우 일일 세일 또는 휴가 쇼핑 시즌을 위해 사용량 급증을 관리할 수 있는 능력이 필요합니다. 키-값 데이터베이스는 구조가 단순하여 트래픽 양이 많을 때 쉽게 확장할 수 있으므로 전자상거래 애플리케이션에 자주 사용됩니다. 이러한 민첩성은 게이밍, 애드테크 및 IoT(Internet of Things)에 유용합니다. 
마이크로서비스와 NoSQL 데이터베이스

대규모 기업들은 레이턴시 없이 서비스를 제공하고 더 빨리 확장하도록 요구받고 있기 때문에 마이크로서비스의 성장이 촉발되었습니다. 그 결과 기업들은 다양한 애플리케이션에 어떤 유형의 데이터베이스를 사용해야 하는지 살펴보게 되었습니다. 

기업들은 애플리케이션의 모든 구성 요소에 단일 관계형 데이터베이스를 사용할 경우 한계가 있다는 것을 알게 되었습니다. 특히, 특정 구성 요소에는 더 나은 대안이 존재했습니다. 마이크로서비스는 매력적인 옵션입니다. 그 이유 중 하나는 마이크로서비스를 사용하면 전체 애플리케이션을 위해 하나의 공유된 데이터 저장소를 사용할 필요가 없기 때문입니다. 대신 애플리케이션에는 느슨하게 연결되고 독립적으로 배포 가능한 여러 서비스가 있습니다. 각 서비스는 자체 데이터 모델과 데이터베이스가 있고 API 게이트웨이 또는 iPaaS를 통해 통합되어 있습니다. 

단일 애플리케이션 내에서 여러 데이터베이스를 사용하는 패턴(다중 저장소 지속성(polyglot persistence)이라고 알려짐)은 NoSQL 데이터베이스가 시장에서 번창할 수 있는 공간을 마련하는 데 도움을 주었습니다. 요즘에 개발자는 하나의 관계형 데이터베이스에서 모든 것이 작동하도록 노력할 필요 없이 최적의 마이크로서비스에 최적의 데이터베이스를 활용할 수 있습니다. 

IBM 솔루션
데이터베이스 유형 알아보기

마이크로서비스 접근법으로 리팩터링할 때 최적의 데이터베이스 옵션을 결정하기 위해 고려해야 할 다양한 요인들을 살펴봅니다.

마이크로서비스용 데이터베이스 자세히 보기
IBM® Microservices

마이크로서비스에 대해 알아보세요. 마이크로서비스(또는 마이크로서비스 아키텍처)는 단일 애플리케이션이 다수의 느슨하게 결합되고 독립적으로 배포 가능한 더 작은 구성 요소 또는 서비스로 구성되는 클라우드 네이티브 아키텍처 접근 방식입니다.

마이크로서비스의 가치 자세히 보기
리소스 SQL과 NoSQL 데이터베이스: 차이점은 무엇인가?

SQL 및 NoSQL 데이터베이스의 주요 차이점을 살펴보고 다양한 사용 사례에 어느 데이터베이스 유형이 최적인지 알아봅니다.

최신 소매 환경에서 정보 관리를 위해 NoSQL 데이터베이스 사용

온라인 쇼핑으로의 이동을 가속화하는 방법을 알아봅니다.

다음 단계

현재 많은 애플리케이션이 서비스형으로 제공되고 있으며, 이러한 서비스는 연중무휴 24시간 이용할 수 있어야 하고, 다양한 디바이스에서 액세스 가능해야 하며, 수백만 명이 될 수 있는 사용자로 확장할 수 있어야 합니다. IBM Cloudant는 웹, 모바일, IoT 및 서버리스 애플리케이션에 최적화된 확장 가능한 JSON 문서 데이터베이스입니다. 이 서비스는 가장 널리 사용되는 웹 및 모바일 개발 스택에 사용되는 Apache CouchDB, PouchDB 및 라이브러리가 포함된 오픈소스 에코시스템과 호환됩니다.

지금 IBM Cloudant 사용해 보기