NoSQL이란 무엇인가?

NoSQL의 정의

NoSQL이라는 용어는 비관계형 데이터베이스 유형을 가리키며 이 데이터베이스는 관계형 테이블과는 다른 형식으로 데이터를 저장합니다. 그러나 NoSQL 데이터베이스는 언어마다 관습화된 API, 선언적 구조의 쿼리 언어, 쿼리별 언어를 사용하여 질의할 수 있습니다. 이 데이터베이스가 not only SQL 데이터베이스라고 불리는 이유가 바로 이것이죠.

NoSQL 데이터베이스는 어디에 사용되나요?

높은 확장성과 가용성이 주요 장점인 NoSQL 데이터베이스는 실시간 웹 애플리케이션 및 빅 데이터에 널리 사용됩니다.

변화하는 요구 사항에 빠르게 적응함으로써 민첩한 개발 패러다임에 자연스럽게 활용되는 이점 때문에 개발자들 역시 NoSQL을 선호하죠. NoSQL 데이터베이스를 사용하면 데이터는 보다 직관적이고 이해하기 쉬운 방식 또는 애플리케이션이 사용하는 것에 가까운 방식으로 저장됩니다. NoSQL 스타일의 API를 사용하면 저장 또는 검색 시 데이터 변환의 필요성이 줄어듭니다. 또한 NoSQL 데이터베이스는 다운타임이 없는 클라우드의 이점을 완전히 누릴 수 있습니다.

SQL 대 NoSQL

SQL 데이터베이스는 관계형인 반면 NoSQL 데이터베이스는 비 관계형입니다. 관계형 데이터베이스 관리 시스템(RDBMS)은 구조화된 쿼리 언어(SQL)의 기반입니다. 이를 통해 사용자는 고도로 구조화된 테이블에서 데이터에 액세스하고 데이터를 조작할 수 있습니다. 이 시스템은 MS SQL Server, IBM DB2, Oracle, MySQL 등 데이터베이스 시스템의 근간이 되는 모델입니다. 하지만 NoSQL 데이터베이스에서는 데이터 액세스 구문이 데이터베이스마다 다를 수 있습니다.

관계형 데이터베이스 대 NoSQL 데이터베이스

NoSQL 데이터베이스를 이해하려면 먼저 RDBMS와 비관계형 데이터베이스의 차이를 이해해야 합니다.

RDBMS의 데이터는 테이블이라고 불리는 데이터베이스 객체에 저장되어 있습니다. 테이블은 관계형 데이터 항목 모음이고, 열과 행으로 구성되죠. 이 데이터베이스에서는 스키마를 사전에 정의해야 합니다. 다시 말해, 모든 열과 그와 관련된 데이터 유형이 사전에 파악되어야 애플리케이션이 데이터를 데이터베이스에 작성할 수 있다는 얘기죠. 이 데이터베이스는 또한 키를 사용해 여러 테이블을 연결하는 방식으로 정보를 저장합니다. 그 과정에서 여러 테이블 간의 관계가 형성되죠. 가장 간단하게 설명하면, 키는 특정 행을 검색하는 데 사용되며, 검사 또는 수정될 수 있습니다.

반대로 NoSQL 데이터베이스에서 데이터는 사전에 스키마를 정의하지 않아도 저장될 수 있습니다. 작업을 진행하는 동시에 데이터를 정의하는 방식으로 빠르게 데이터를 작성하고 반복할 수 있는 능력을 얻게된다는 얘기입니다. 이 데이터베이스는 그래프 기반, 열 지향, 문서 지향 또는 키-값 저장소 등 특정 비즈니스 요구 사항 수행에 적합합니다.

최근까지도 관계형 데이터베이스가 가장 널리 사용되는 모델이었습니다. 지금도 여전히 다양한 기업들에서 보편적으로 사용되고 있죠. 그러나 오늘날 사용되는 데이터의 다양성, 속도, 양을 감당하기 위해서는 관계형 데이터베이스를 보완할 전혀 다른 데이터베이스가 필요합니다. 이와 같은 상황 때문에 일부 영역에서 NoSQL 데이터베이스를 도입하기 시작했는데, 이 데이터베이스는 '비관계형 데이터베이스'라고도 불립니다. 신속한 수평적 확장 능력 덕분에 비관계형 데이터베이스는 높은 트래픽을 처리할 수 있고, 같은 이유로 이 데이터베이스는 고도의 적응력을 자랑합니다.

NoSQL 데이터베이스를 선택해야 하는 경우

빠른 혁신이 필요한 기업 및 조직에게 있어, 민첩성을 유지하면서 동시에 모든 규모의 운영을 지속할 수 있는 능력이 게임의 승패를 좌우합니다. NoSQL 데이터베이스는 유연한 스키마를 제공하고, 대량의 데이터 및 낮은 대기시간 또는 응답시간을 요구하는 애플리케이션 구축에 이상적인 다양한 데이터 모델을 지원합니다. 온라인 게이밍 및 전자상거래 웹 애플리케이션이 여기에 해당되죠.

NoSQL데이터베이스를 선택해서는 안 되는 경우

NoSQL 데이터베이스는 일반적으로 비정규화된 데이터에 의존하며, 상대적으로 적은 수의 데이터(또는 컨테이너)를 사용하는 애플리케이션 유형을 지원합니다. 또한 참조를 사용해 데이터 관계를 모델링하지 않고, 포함된 기록(또는 문서)으로 모델링하는 애플리케이션을 지원하죠. 대다수의 금융, 회계, 기업 리소스 계획을 위한 고전적인 백오피스 비즈니스 애플리케이션은 데이터 변형 및 데이터 중복을 방지하기 위해 고도로 정규화된 데이터에 의존합니다. 이와 같은 애플리케이션은 NoSQL 데이터베이스에 어울리지 않는 유형이라고 할 수 있죠.

NoSQL 데이터베이스의 또 다른 특징은 쿼리 복잡성입니다. NoSQL 데이터베이스는 단일 테이블에 대한 쿼리 작업에 아주 잘 작동합니다. 그러나 쿼리의 복잡성이 높아지는 경우, 관계형 데이터베이스가 더 나은 선택입니다. NoSQL 데이터베이스는 보통 복잡한 조인, 하위 쿼리 및 WHERE 절에서의 중첩 질의를 제공하지 않습니다.

하지만 꼭 관계형 및 비관계형 데이터베이스 중 선택해야 하는 건 아닙니다. 많은 경우 기업들은 관계형 및 비관계형 데이터 모델을 결합해 적용할 수 있는 컨버지드 모델을 제공하는 데이터베이스를 선택합니다. 이 하이브리드 접근 방식은 다양한 데이터 유형을 처리할 수 있는 유연성을 제공하는 동시에 성능 저하 없이 일관적인 읽기 및 쓰기를 보장합니다.

다른 데이터베이스에는 없는 NoSQL만의 특징은?

NoSQL 데이터베이스와 다른 유형의 데이터베이스 간의 주요 차이는 NoSQL 데이터베이스의 경우 보통 구조화되지 않은 스토리지를 사용한다는 점입니다. 지난 20년 동안 개발된 NoSQL 데이터베이스는 빠르고 단순한 쿼리, 방대한 데이터, 잦은 애플리케이션 변화를 지원하기 위해 설계되었습니다. 또한 이 데이터베이스는 개발자들의 프로그래밍을 크게 단순화해 주었죠.

또 한 가지 중요한 차이점은 NoSQL 데이터베이스가 '샤딩'이라는 프로세스를 거쳐 수평 확장을 한다는 점입니다. 여러 서버에 걸친 데이터 처리를 위해 더 많은 머신을 추가할 수 있다는 뜻이죠. 다른 SQL 데이터베이스에서 찾을 수 있는 수직 확장성을 지원하기 위해서는 기존 머신에 더 많은 파워와 메모리를 추가해야 합니다. 계속해서 더 많은 스토리지가 필요하기 때문에 지속불가능하다는 특징이 있죠.

수평 확장성 덕분에 NoSQL 데이터베이스는 엄청나게 많은 양의 데이터를, 심지어 데이터가 계속해서 증가하는 동안에도 더욱 효율적으로 처리할 수 있습니다. 수직 확장은 집 안에 새로운 계단을 추가하는 것으로, 수평 확장은 기존 건물 옆에 새로운 건물을 추가로 세우는 것으로 생각하면 이 개념을 쉽게 이해할 수 있습니다.

NoSQL 데이터베이스의 이점

지난 20년간 전례없는 속도로 증가한 디지털 상호작용 및 데이터 소비로 인해 기업들은 데이터 저장 및 액세스에 관한 보다 현대적이며 유연한 접근 방식을 도입해야 했습니다. 전 세계의 사용자들이 콘텐츠 및 기능의 방해없는 흐름을 요구하는 동안, 데이터베이스 역시 이와 같은 변화에 빠르게 적응해야 했습니다. 이 점을 염두에 두고, 개발자들이 NoSQL/비관계형 데이터베이스를 선택하는 핵심적인 이유에 대해 살펴봅시다:

  • 유연성

    SQL 데이터베이스를 사용하면 데이터는 훨씬 더 엄격한 사전 정의된 구조 안에 저장됩니다. 하지만 NoSQL을 사용하면 데이터는 엄격한 스키마 없이도 훨씬 더 자유로운 형식으로 저장될 수 있습니다. 이와 같은 설계 덕분에 혁신과 빠른 애플리케이션 개발이 가능해집니다. 개발자들 역시 스키마 걱정 없이 고객들에게 더 나은 서비스를 제공하기 위한 시스템 개발에만 몰두할 수 있죠. NoSQL 데이터베이스는 하나의 데이터 저장소에서 구조적, 반구조적, 비구조적 데이터 등 모든 형식의 데이터를 손쉽게 처리할 수 있습니다.
  • 확장성

    NoSQL 데이터베이스는 서버를 증설해 확장하는 대신 상업용 하드웨어를 사용해 확장할 수 있습니다. 덕분에 증가한 트래픽을 지원하고 다운타임 없이 수요를 충족시킬 수 있죠. NoSQL 데이터베이스는 확장을 통해 더 큰 용량과 성능을 갖출 수 있습니다. 이와 같은 이유로 데이터 세트 확장을 위한 옵션으로서 NoSQL 데이터베이스에 대한 선호도가 높죠.
  • 고성능

    NoSQL 데이터베이스의 확장 아키텍처는 데이터 양이나 트래픽이 증가할 때 그 진가를 발휘합니다. 아래 그래픽에서 볼 수 있듯이 이 아키텍처는 빠르고 예측 가능한 10밀리초 미만의 응답 시간을 보장합니다. 또한 NoSQL 데이터베이스는 데이터를 수집하여 이를 빠르고 안정적으로 제공합니다. NoSQL 데이터베이스가 매일 테라바이트 규모의 데이터를 수집하는 동시에 고도의 대화식 사용자 경험을 제공하는 애플리케이션에 활용되는 이유가 바로 이것이죠. 아래 그래픽은 3-4ms 범위 내 95번째 대기시간을 제공하는 초당 300회의 읽기 송신율(파란색 선)과 4-5ms 범위 내 95번째 대기시간을 제공하는 초당 140회의 쓰기 송신률(초록색 선)을 보여줍니다.

    nosql 데이터베이스

  • 가용성

    NoSQL 데이터베이스는 여러 서버, 데이터 센터, 클라우드 리소스 전반의 데이터를 자동으로 복제합니다. 그 결과 사용자의 위치와 상관없이 사용자 대기시간이 최소화됩니다. 이 기능은 데이터베이스 관리 부담을 줄이는 데에도 효과적입니다. 덕분에 더 많은 시간을 우선 순위에 할애할 수 있죠.
  • 고도의 기능성

    NoSQL 데이터베이스는 데이터 저장 수요가 엄청나게 큰 분산형 데이터 저장소를 위해 설계되었습니다. 이와 같은 특성 덕분에 NoSQL은 빅 데이터, 실시간 웹 앱, 360도 고객 정보, 온라인 쇼핑, 온라인 게이밍, 사물인터넷, 소셜 네트워크, 온라인 광고 애플리케이션 등을 처리하기에 이상적인 데이터베이스 옵션이죠.

NoSQL 데이터베이스 유형

NoSQL 데이터베이스에는 4가지 주요 유형이 있습니다:

  • 키 값

    키 값은 가장 유연한 NoSQL 데이터베이스 유형입니다. 애플리케이션이 값 필드에 저장된 모든 데이터를 제약 없이 완벽하게 제어할 수 있기 때문이죠.
  • 문서

    문서 저장소 또는 문서 지향적 데이터베이스라고도 불리는 이 데이터베이스 유형은 반구조적 데이터의 저장, 검색, 관리에 사용됩니다. 문서에 포함할 필드를 특정할 필요가 없습니다.
  • 그래프

    이 데이터베이스는 데이터를 노드 및 노드 간 연결을 보여주는 관계로 구성합니다. 이 데이터베이스는 더욱 풍부하고 완전한 데이터 표현을 지원합니다. 그래프 데이터베이스는 소셜 네트워크, 예약 시스템, 사기 감지 등에 적용됩니다.
  • 넓은 열

    이 데이터베이스는 테이블, 행, 열 형식으로 데이터를 저장 및 관리합니다. 이 데이터베이스는 열 형식을 사용하는 애플리케이션에 광범위하게 배포되어 스키마 없는 데이터를 수집합니다.

Oracle NoSQL Database 체험하기

Oracle NoSQL Database Cloud 서비스는 개발자들이 고가용성을 위한 데이터 복제를 통해 예측 가능한 10밀리초 미만의 응답 시간을 제공하는 문서, 열, 키 값 데이터베이스 모델을 사용해 애플리케이션을 손쉽게 구축할 수 있게 지원합니다. 이 서비스는 ACID 트랜잭션, 서버리스 확장, 포괄적인 보안, PPU(pay-per-use) 요금제를 제공합니다.

Oracle NoSQL Database Cloud 서비스가 이제 Oracle Cloud Free Tier에 포함됩니다. Oracle Cloud Free Tier는 한정된 기간 동안 무료로 이용할 수 있는 다양한 클라우드 서비스 체험판 및 기간 제한 없이 사용할 수 있는 상시 무료 서비스를 제공합니다.