공지 사항역대 가장 빠른 MongoDB, MongoDB 8.0을 소개합니다! 더 보기 >
공지 사항Voyage AI가 MongoDB와 협력하여 Atlas에서 더욱 정확하고 신뢰할 수 있는 AI 애플리케이션을 지원합니다. 자세히 알아보기 >

NoSQL이란?

무료로 NoSQL 클러스터 생성하기
Atlas로 NoSQL 데이터베이스 체험하기

NoSQL이란?

NoSQL 데이터베이스(즉, 'Not Only SQL')는 관계형 테이블과는 다른 방식으로 데이터를 저장합니다. NoSQL 데이터베이스는 데이터 모델에 따라 다양한 유형으로 구분됩니다. 주요 유형에는 문서형, 키-값형, 와이드 컬럼형, 그래프형이 있습니다. 이러한 유형은 유연한 스키마를 제공하며 대규모의 빅데이터와 높은 사용자 부하에서도 쉽게 확장됩니다.

이 글에서는 NoSQL 데이터베이스의 개념, 사용해야 하는 이유와 시기 그리고 시작 방법을 알아봅니다.

목차

NoSQL 데이터베이스란?

보통 'NoSQL 데이터베이스'라는 용어는 일반적으로 모든 비관계형 데이터베이스를 지칭할 때 사용됩니다. 'NoSQL'이라는 용어를 'non-SQL'의 약자로 보기도 하고 'not only SQL'의 약자로 해석하기도 합니다. 어느 쪽이든 NoSQL 데이터베이스가 데이터를 더 자연스럽고 유연한 방식으로 저장한다는 점에는 대부분 동의합니다. NoSQL은 SQL과 달리 데이터베이스 관리 방식 전체를 가리키는 반면, SQL은 NoSQL 데이터베이스에서 사용하는 쿼리 언어들과 마찬가지로 단순히 쿼리 언어일 뿐입니다.

데이터베이스 유형 - NoSQL

시간이 흐르면서 NoSQL 데이터베이스의 유형은 문서형 데이터베이스, 키-값형 데이터베이스, 와이드 컬럼형 저장소, 그래프 데이터베이스의 네 가지 주요 유형으로 자리 잡게 되었습니다. 최근에는 멀티 모델 데이터베이스도 점점 인기를 얻고 있습니다.

문서 지향 데이터베이스

문서 지향 데이터베이스는 JSON(JavaScript Object Notation) 객체와 유사한 문서 형태로 데이터를 저장합니다. 각 문서는 필드와 값의 쌍을 포함합니다. 값은 일반적으로 문자열, 숫자, 불리언, 배열 또는 기타 객체를 비롯한 다양한 유형일 수 있습니다. 문서 데이터베이스는 유연한 데이터 모델을 제공하여 반정형 데이터나 비정형 데이터 집합에 특히 적합합니다. 또한 중첩된 구조를 지원하여 복잡한 관계나 계층적 데이터를 쉽게 표현할 수 있습니다.

대표적인 문서형 데이터베이스로는 MongoDB와 Couchbase가 있습니다. 일반적인 문서는 다음과 같은 형태입니다.

 

 

키-값 데이터베이스

키-값 저장소는 각 항목이 키와 값으로 이루어진 더 단순한 유형의 데이터베이스입니다. 각 키는 고유하며 하나의 값과만 연결됩니다. 이들은 캐싱과 세션 관리에 사용되며 주로 메모리에 데이터를 저장하기 때문에 읽기 및 쓰기 성능이 우수합니다. Amazon DynamoDB와 Redis를 예로 들 수 있습니다. 키-값 데이터베이스에 저장된 데이터는 다음과 같이 단순하게 표현할 수 있습니다.

 

 

와이드 컬럼 저장소

와이드 컬럼 저장소는 테이블, 행, 그리고 동적으로 구성되는 컬럼에 데이터를 저장합니다. 데이터는 테이블 형태로 저장되지만 기존 SQL 데이터베이스와 달리 와이드 컬럼 저장소는 서로 다른 행마다 서로 다른 컬럼 집합을 가질 수 있을 정도로 구조가 유연합니다. 이러한 데이터베이스는 컬럼 압축 기법을 활용해 저장 공간을 줄이고 성능을 개선할 수 있습니다. 넓은 행과 컬럼 구조를 통해 희소하면서도 폭이 넓은 데이터를 효율적으로 조회할 수 있습니다. 대표적인 와이드 컬럼 저장소로는 Apache Cassandra와 HBase가 있습니다. 와이드 컬럼 저장소에 데이터가 저장되는 일반적인 예시는 다음과 같습니다.

 

name id email dobcity
Foo bar12345 foo@bar.com Some city
Carn Yale34521bar@foo.com 12-05-1972

 

그래프 데이터베이스

그래프 데이터베이스는 노드와 엣지 형태로 데이터를 저장합니다. 노드는 일반적으로 사람, 장소, 사물처럼 명사에 해당하는 개체 정보를 저장하고, 엣지는 이러한 노드들 사이의 관계 정보를 저장합니다. 이러한 데이터베이스는 관계나 패턴이 처음에는 명확하지 않을 수 있는 고도로 연결된 데이터에 적합합니다. 대표적인 그래프 데이터베이스로는 Neo4J와 Amazon Neptune이 있습니다. MongoDB 역시 집계 파이프라인의 $graphLookup 단계를 사용하여 그래프 탐색 기능을 제공합니다. 아래는 데이터가 저장되는 방식의 예시입니다.

멀티 모델 데이터베이스

멀티 모델 데이터베이스는 두 가지 이상의 NoSQL 데이터 모델을 지원하여 개발자가 애플리케이션 요구 사항에 맞는 방식을 선택할 수 있도록 합니다. 이러한 데이터베이스는 단일 데이터베이스 인스턴스 안에서 여러 데이터 모델을 처리할 수 있는 통합 엔진을 제공합니다. 예로는 CosmosDB와 ArangoDB를 들 수 있습니다.

데이터베이스 유형별 빠른 비교 — NoSQL

각 NoSQL 데이터베이스는 서로 다른 기능을 제공합니다. 예를 들어 그래프 데이터베이스는 엔터티 사이의 복잡한 관계나 패턴 분석에 더 적합한 반면, 문서형 데이터베이스는 유사한 유형의 대용량 데이터를 문서 형태로 보다 유연하고 직관적으로 저장하고 조회하는 데 적합합니다. 어떤 데이터베이스를 선택할지는 개발하려는 사용 사례에 따라 달라집니다.

자세한 내용은 다양한 유형의 NoSQL 데이터베이스 이해를 참고하세요.

NoSQL 데이터베이스의 간략한 역사

NoSQL 데이터베이스는 스토리지 비용이 급격히 감소하기 시작한 2000년대 후반에 등장했습니다. 데이터 중복을 피하기 위해 복잡하고 관리하기 어려운 데이터 모델을 만들어야 했던 시대는 지나갔습니다. NoSQL 데이터베이스는 개발자 생산성을 극대화하는 방향으로 발전해 왔습니다.

스토리지 비용이 급격히 감소하면서 애플리케이션이 저장하고 조회해야 하는 데이터의 양이 급격히 증가했습니다. 이러한 데이터는 정형, 반정형, 비정형의 다양한 형태와 크기로 존재했으며 사전에 스키마를 정의하는 것은 거의 불가능에 가까웠습니다. NoSQL 데이터베이스는 개발자가 방대한 양의 비정형 데이터를 저장할 수 있도록 지원하여 뛰어난 유연성을 제공합니다.

2000년대 초, Google이 발표한 와이드 컬럼 데이터베이스인 BigTable에 관한 연구 보고서는 분산 저장 시스템의 다양한 가능성을 제시했습니다. 2009년에는 NoSQL 데이터베이스가 크게 부상했으며 이 시기에 문서 지향 데이터베이스인 MongoDB와 CouchDB라는 두 핵심 데이터베이스가 주목을 받기 시작했습니다.

2010년대에 들어서면서 다양한 유형의 NoSQL 데이터베이스가 등장했고 비즈니스가 점점 데이터 중심으로 변화함에 따라 NoSQL의 수용이 널리 확산되었습니다.

또한 애자일 선언문(Agile Manifesto)이 인기를 얻으면서 소프트웨어 엔지니어들은 개발 방식 자체를 재고하기 시작했습니다. 개발자들은 변화하는 요구 사항에 신속하게 대응하고 빠르게 반복 개발을 수행하며 데이터베이스를 포함한 소프트웨어 스택 전반에 걸쳐 지속적으로 변경해야 했습니다. NoSQL 데이터베이스는 개발자들에게 이러한 유연성을 제공했습니다.

클라우드 컴퓨팅의 인기가 높아지면서 개발자들은 애플리케이션과 데이터를 호스팅하기 위해 퍼블릭 클라우드를 활용하기 시작했습니다. 개발자들은 애플리케이션의 안정성과 확장성을 높이기 위해 데이터를 여러 서버와 지역에 분산시키고자 했습니다. 또한 수직 확장 대신 수평 확장을 구현하고 데이터를 지리적으로 적절한 위치에 지능적으로 배치할 수 있는 기능을 필요로 했습니다. MongoDB Atlas와 같은 일부 NoSQL 데이터베이스들은 이러한 기능을 제공하고 있습니다.

디지털화가 기하급수적으로 증가함에 따라 이제 기업은 가능한 한 많은 비정형 데이터를 수집하게 되었습니다. 이처럼 방대한 빅데이터로부터 실행 가능한 실시간 인사이트를 분석하고 도출하려면 기업은 단순한 저장 기능을 넘어서는 현대적인 솔루션이 필요합니다. 기업에는 데이터를 손쉽게 확장하고 변환하며 시각화할 수 있고 대시보드와 보고서 및 차트를 생성할 수 있는 플랫폼이 필요합니다. 또한 AI와 비즈니스 인텔리전스 도구와 연동해 비즈니스 생산성을 가속화할 수 있어야 합니다. MongoDB와 같은 NoSQL 데이터베이스는 유연하고 분산된 특성 덕분에 이러한 작업에서 특히 뛰어납니다.

NoSQL 데이터베이스의 특징

NoSQL 데이터베이스는 유연성과 확장성 및 분산 구조를 갖춘 데이터베이스입니다. NoSQL 데이터베이스의 유형에 따라 각각 고유한 특징이 있습니다.

전반적으로 보면 NoSQL 데이터베이스는 보통 다음과 같은 특징을 갖습니다.

BASE 원칙

NoSQL 데이터베이스는 BASE 원칙을 따릅니다. 즉 기본 가용성(Basic Availability), 소프트 상태(Soft state), 궁극적 일관성(Eventual Consistency)을 의미합니다. 기본 가용성은 시스템이 부분적인 장애(예: 노드 손실)를 허용할 수 있는 능력을 말합니다. 소프트 상태는 시스템이 시간 경과에 따라 자동으로 일관성을 회복하기 전에 일시적인 불일치를 허용함을 의미합니다. BASE 원칙을 따르면 높은 가용성, 빠른 데이터 처리, 확장성과 유연성을 보장할 수 있습니다. 반면, MongoDB는 다중 문서에 대해 ACID 규격을 충족하도록 구성할 수도 있습니다.

NoSQL 데이터베이스의 장점에 대해 자세히 알아보세요.

관계형 데이터베이스와 NoSQL 데이터베이스의 비교 예시

사용자와 사용자의 취미 정보를 저장하는 예시를 살펴보겠습니다. 사용자의 이름, 성, 휴대전화 번호, 도시, 취미 등의 정보를 저장해야 합니다.

관계형 데이터베이스 관리 시스템(RDBMS)에서는 일반적으로 사용자(Users) 테이블과 취미(Hobbies) 테이블, 두 개의 테이블을 생성합니다.

사용자와 사용자의 취미 정보를 모두 조회하려면 Users 테이블과 Hobbies 테이블을 조인해야 합니다.

설계할 NoSQL 데이터 모델은 선택한 NoSQL 데이터베이스 유형에 따라 달라집니다. 사용자와 사용자의 취미에 대한 동일한 정보를 MongoDB와 같은 문서형 데이터베이스에 저장하는 방법에 대해 알아보겠습니다.

사용자와 사용자의 취미 정보를 모두 조회하기 위해 데이터베이스에서 하나의 문서만 가져오면 됩니다. 조인이 필요하지 않기 때문에 쿼리 속도가 더 빨라집니다.

이 데이터 모델링 예시에 대한 더 자세한 버전을 보려면 SQL과 MongoDB 간의 용어 및 개념 매핑을 참고하세요.

RDBMS와 NoSQL 데이터베이스의 차이점

관계형 데이터베이스 관리 시스템과 비관계형 데이터베이스 간에는 여러 가지 차이점이 있습니다. 주요 차이점 중 하나는 데이터가 데이터베이스 내에서 모델링되는 방식입니다. 각 기능별 주요 차이점은 다음과 같습니다.

데이터 모델링

NoSQL: 사용된 NoSQL 데이터베이스 유형(예: 키-값, 문서, 그래프, 와이드 컬럼)에 따라 데이터 모델이 달라지며 반정형 또는 비정형 데이터에 적합합니다.

RDBMS: RDBMS는 행과 열로 구성된 표 형식의 데이터 구조를 사용하기 때문에 구조화된 데이터에 적합합니다.

스키마

NoSQL: 각 문서 세트나 행-열, 키-값 쌍이 서로 다른 데이터 유형을 가질 수 있는 유연한 스키마를 제공합니다. 이러한 유연성 덕분에 필요 시 스키마 변경이 더 쉽습니다.

RDBMS: 모든 행이 동일한 사전 정의된 컬럼 유형을 포함해야 하는 고정 스키마입니다. 한 번 데이터가 저장되고 나면 스키마를 변경하기가 어렵습니다.

쿼리 언어

NoSQL: 사용되는 NoSQL 데이터베이스 유형에 따라 달라집니다. 예를 들어 MongoDB는 MQL을 사용하고 Neo4J는 Cypher를 사용합니다.

RDBMS: 구조화된 쿼리 언어(SQL)를 사용합니다.

확장성

NoSQL: 수직 및 수평 확장을 지원하도록 설계되었습니다.

RDBMS: 수직 확장을 지원하도록 설계되었습니다. 다만 수평 확장은 기능이 제한된 형태로만 확장할 수 있습니다.

데이터 관계

NoSQL: 관계는 중첩 구조이거나 명시적 또는 암묵적일 수 있습니다.

RDBMS: 관계는 외래 키를 통해 정의되고 조인을 사용하여 액세스됩니다.

트랜잭션 유형

NoSQL: 트랜잭션은 ACID 또는 BASE 원칙을 따릅니다.

RDBMS: 트랜잭션은 ACID 규격을 준수합니다.

성능

NoSQL: NoSQL은 실시간 처리, 빅데이터 분석 및 분산 환경에 적합합니다.

RDBMS: RDBMS는 읽기 위주의 작업과 트랜잭션 중심 워크로드에 적합합니다.

데이터 일관성

NoSQL: 대부분의 경우 궁극적 일관성을 제공합니다.

RDBMS: 높은 데이터 일관성을 제공합니다.

분산 컴퓨팅

NoSQL: NoSQL이 도입된 주요 이유 중 하나는 분산 컴퓨팅을 지원하기 위해서입니다. 또한 NoSQL 데이터베이스는 샤딩과 복제 및 클러스터링을 통해 분산 데이터 저장과 수직 및 수평 확장을 지원합니다.

RDBMS: RDBMS는 클러스터링과 복제를 통해 분산 컴퓨팅을 지원합니다. 다만 분산 아키텍처 지원을 전제로 설계된 것이 아니기 때문에 확장성과 유연성이 떨어집니다.

내결함성

NoSQL: NoSQL은 데이터 복제를 통해 내장된 내결함성과 높은 가용성을 기본적으로 제공합니다.

RDBMS: RDBMS는 복제, 백업 및 복구 메커니즘을 사용합니다. 다만 이러한 기능을 위해 설계되어 있기 때문에 애플리케이션 개발 시 재해 복구 메커니즘과 같은 추가적인 메커니즘을 구현해야 할 수도 있습니다.

데이터 분할

NoSQL: 샤딩과 복제를 통해 데이터 분할이 수행됩니다.

RDBMS: 테이블 기반 분할과 파티션 프루닝을 지원합니다.

데이터 분할은 여기에서 자세히 확인할 수 있습니다.

데이터와 객체 간 매핑

NoSQL: NoSQL은 데이터를 JSON 문서, 와이드 컬럼 저장소, 키-값 쌍 등 다양한 방식으로 저장합니다. ODM(Object-Data Mapping) 프레임워크를 통해 NoSQL 데이터를 객체 지향 방식으로 다룰 수 있도록 추상화를 제공합니다.

RDBMS: RDBMS는 데이터베이스의 열과 객체 지향 애플리케이션 코드 사이를 매끄럽게 통합하기 위해, 데이터와 객체 간 매핑에 더 많이 의존합니다.

관계형 데이터베이스와 NoSQL 데이터베이스의 차이에 대해 자세히 알아보려면 NoSQL 및 SQL 데이터베이스 비교를 참고하세요.

NoSQL 사용 사례

NoSQL 데이터베이스 시스템은 거의 모든 산업 분야에서 실시간 분석, 콘텐츠 관리, IoT 애플리케이션, 추천 시스템, 사기 탐지, 제품 카탈로그 관리 등 다양한 용도로 활용됩니다. 사용 사례는 금융 데이터의료 기록 저장과 같은 매우 중요한 용도부터 스마트 고양이 화장실의 IoT 센서 값 저장처럼 가벼운 용도까지 다양합니다.

NoSQL, 언제 사용할 것인가?

어떤 데이터베이스를 사용할지 결정할 때 의사 결정자들은 보통 다음과 같은 한 가지 이상 요인을 이유로 NoSQL 데이터베이스를 선택합니다.

  • 빠른 속도의 Agile 개발 환경
  • 정형 및 반정형 데이터의 저장
  • 방대한 데이터 양 처리
  • 수평 확장 아키텍처에 대한 요구 사항
  • 마이크로서비스나 실시간 스트리밍과 같은 최신 애플리케이션 패러다임 지원

위에 언급된 요인에 대한 자세한 내용은 NoSQL 데이터베이스 사용 시점NoSQL 데이터베이스 사례 살펴보기를 참고하세요.

NoSQL 데이터베이스에 대한 오해

오랜 기간 동안 NoSQL 데이터베이스에 대한 여러 가지 오해가 개발자 커뮤니티 전반에 퍼져왔습니다. 이 섹션에서는 가장 흔한 두 가지 오해를 살펴보겠습니다.

오해: 관계형 데이터는 관계형 데이터베이스에 가장 적합하다

흔히 하는 오해 중 하나는 NoSQL 데이터베이스, 즉 비관계형 데이터베이스는 관계형 데이터를 제대로 저장하지 못한다는 것입니다. 그러나 NoSQL 데이터베이스도 관계형 데이터를 저장할 수 있으며 단지 관계형 데이터베이스와는 다른 방식으로 저장할 뿐입니다.

실제로 관계형 데이터베이스와 비교했을 때 많은 사람들이 NoSQL 데이터베이스에서 관계형 데이터를 모델링하는 것이 더 쉽다고 느낍니다. 그 이유는 서로 관련된 데이터를 여러 테이블로 분리할 필요가 없기 때문입니다. NoSQL 데이터 모델은 관련 데이터를 하나의 데이터 구조 내에 중첩시킬 수 있습니다.

오해: NoSQL 데이터베이스는 ACID 트랜잭션을 지원하지 않는다

또 다른 일반적인 오해는 NoSQL 데이터베이스가 ACID 트랜잭션을 지원하지 않는다는 것입니다. 그러나 MongoDB와 같은 일부 NoSQL 데이터베이스는 실제로 ACID 트랜잭션을 지원합니다.

NoSQL 데이터베이스의 데이터 모델링 방식에 따라 많은 사용 사례의 경우 다중 레코드 트랜잭션이 필요하지 않을 수 있습니다. 앞서 예로 들었던 사용자와 그 사용자의 취미 정보를 각각 관계형 모델과 문서 저장소에 저장한 사례를 떠올려 봅시다. 관계형 데이터베이스에서 사용자와 사용자의 취미 정보를 함께 업데이트하려면 두 개의 테이블에 있는 기록을 하나의 트랜잭션으로 묶어 업데이트해야 합니다. 문서 저장소에서 동일한 작업을 수행하려면 단일 문서만 업데이트하면 되므로 여러 기록을 포함하는 트랜잭션이 필요하지 않습니다.

일반적인 오해에 대해 자세히 알아보려면 MongoDB에 대한 오해와 진실을 참조하세요.

NoSQL 쿼리 튜토리얼

DB-Engines에 따르면 MongoDB는 전 세계에서 가장 널리 사용되는 NoSQL 데이터베이스입니다. MongoDB로 시작해 보세요. MongoDB를 시작하는 가장 쉬운 방법은 MongoDB Atlas를 사용하는 것입니다. Atlas는 MongoDB에서 제공하는 완전관리형 데이터베이스 서비스입니다. Atlas는 언제든지 이용할 수 있는 프리 티어를 제공하므로 마음껏 사용해 볼 수 있습니다. 시작하려면 MongoDB Atlas 튜토리얼을 참고해 주세요.

Atlas 데이터 탐색기를 사용하면 새 문서를 삽입하고 기존 문서를 수정하거나 삭제하는 등의 작업을 통해 데이터를 계속 관리할 수 있습니다.

데이터를 집계하는 더 고급 쿼리를 시도할 준비가 되었다면 집계 파이프라인을 생성해 보세요. 집계 프레임워크는 데이터를 분석할 수 있는 매우 강력한 도구입니다. 자세히 알아보려면 MongoDB University의 무료 교육 과정인 M121 MongoDB 집계 프레임워크를 수강해 보세요.

데이터를 시각화하고 싶다면 MongoDB Charts를 참고해 주세요. Charts를 사용하면 데이터를 시각적으로 표현하는 대시보드를 생성할 수 있습니다.

요약

NoSQL 데이터베이스는 유연한 데이터 모델, 수평적 확장성, 빠른 쿼리 성능, 그리고 개발자 친화적 사용성을 포함한 다양한 이점을 제공합니다. NoSQL 데이터베이스에는 문서 저장소, 키-값 데이터베이스, 와이드 컬럼 저장소, 그래프 데이터베이스, 멀티모델 데이터베이스 등 다양한 유형이 있습니다.

MongoDB는 전 세계에서 가장 널리 사용되는 NoSQL 데이터베이스입니다. MongoDB Atlas에 대해 자세히 알아보고 프리 티어를 사용해 보세요.

Atlas 계정을 만들었으니 이제 더 배우고 싶지 않으신가요? MongoDB University에서 MongoDB 엔지니어가 제공하는 무료 온라인 교육 과정을 수강하고 MongoDB 자격증도 취득해 보세요. 빠른 시작 가이드는 시작 단계에서 참고하기 좋은 자료입니다. 선호하는 프로그래밍 언어로 빠르게 시작할 수 있도록 지원합니다.

자주 묻는 질문

이 글은 MongoDB에서 개발자들의 대변자 역할을 하는 디벨로퍼 애드보킷인 Lauren Schaefer가 작성했습니다.

NoSQL과 SQL 데이터베이스 간의 주요 차이점에 대해 더 알아보기

NoSQL 관련 자료

자세히 알아보기

지금 Atlas 시작하기

몇 초 만에 시작할 수 있습니다. 무료 클러스터에는 512MB의 스토리지가 포함되어 샘플 데이터를 자유롭게 테스트해 보고 플랫폼에 익숙해질 수 있습니다.
무료로 사용해 보기영업 팀에 문의하기
다음으로 시작해 보세요.
  • 전 세계 125개 이상의 지역
  • 샘플 데이터 세트
  • 상시 활성화된 인증
  • 종단 간 암호화
  • 명령줄 도구