NoSQL 데이터베이스란 무엇인가요?

NoSQL 데이터베이스는 특정 데이터 모델을 위해 특별히 구축되었으며 현대적 애플리케이션에 맞게 쉽게 확장할 수 있는 유연한 스키마에 데이터를 저장합니다. NoSQL 데이터베이스는 개발의 용이성, 기능성 및 확장성을 널리 인정받고 있습니다. 이 페이지에는 NoSQL 데이터베이스를 보다 잘 이해하고 효과적으로 시작할 수 있도록 지원할 리소스가 포함되어 있습니다.

NoSQL 데이터베이스의 장점은 무엇인가요?

현대적 애플리케이션은 NoSQL 데이터베이스로 해결할 수 있는 몇 가지 문제에 직면해 있습니다. 예를 들어 애플리케이션은 소셜 미디어, 스마트 센서, 서드 파티 데이터베이스와 같은 다양한 소스의 대량의 데이터를 처리합니다. 이 모든 이질적인 데이터는 관계형 모델에 잘 맞지 않습니다. 테이블 형식 구조를 적용하면 대규모 중복, 데이터 복제 및 성능 문제가 발생할 수 있습니다.

NoSQL 데이터베이스는 비관계형 데이터 모델에 대해 특정 용도로 구축되는 데이터베이스로서 현대적인 애플리케이션 구축을 위한 유연한 스키마를 갖추고 있습니다. 개발 용이성, 기능성 및 확장성으로 널리 인정받고 있습니다. NoSQL 데이터베이스의 이점은 다음과 같습니다.

유연성

NoSQL 데이터베이스는 일반적으로 유연한 스키마를 제공하여 보다 빠르고 반복적인 개발을 가능하게 해줍니다. 이같은 유연한 데이터 모델은 NoSQL 데이터베이스를 반정형 및 비정형 데이터에 이상적으로 만들어 줍니다.

확장성

NoSQL 데이터베이스는 일반적으로 고가의 강력한 서버를 추가하는 대신 분산형 하드웨어 클러스터를 이용해 확장하도록 설계되었습니다. 일부 클라우드 제공자들은 완전관리형 서비스로서 이런 운영 작업을 보이지 않게 처리합니다.

고성능

NoSQL 데이터베이스는 특정 데이터 모델 및 액세스 패턴에 최적화되었습니다. 따라서 관계형 데이터베이스로 유사한 기능을 수행할 때보다 더 높은 성능을 얻을 수 있습니다.

고기능성

NoSQL 데이터베이스는 각 데이터 모델에 맞춰 특별히 구축된 뛰어난 기능의 API와 데이터 유형을 제공합니다.

NoSQL 데이터베이스의 사용 사례는 무엇인가요?

대규모 사용자 경험을 제공하는 다양한 고성능 모바일, 사물 인터넷(IoT), 게임 및 웹 애플리케이션을 NoSQL 데이터베이스를 사용하여 구축할 수 있습니다. NoSQL 데이터베이스의 범위와 각각의 사용 사례는 광범위합니다. 대표적인 사용 사례를 제시하기는 어렵지만, 아래의 몇 가지 예시를 참고하여 각 NoSQL 데이터베이스와 각각의 사용 사례에 대해 자세히 알아보는 것이 좋습니다.

실시간 데이터 관리

NoSQL 데이터베이스를 사용하여 실시간 추천, 개인화 및 개선된 사용자 경험을 제공할 수 있습니다. 예를 들어 Disney+는 NoSQL 데이터베이스 기술을 사용하여 1억 5,000만 명 이상의 구독자에게 광범위한 디지털 콘텐츠 라이브러리를 제공합니다. 계속 시청, 시청 목록, 개인화된 추천 등 자주 사용되는 기능을 Amazon DynamoDB로 확장하고 제공할 수 있습니다.

클라우드 보안

그래프 데이터베이스를 사용하면 데이터 내의 복잡한 관계를 빠르게 발견할 수 있습니다. 예를 들어 WizAmazon Neptune을 사용하여 클라우드 보안을 그래프로 재구상했습니다. Wiz는 가장 중요한 위험을 신속하게 식별하고 수정하여 보안 태세를 개선할 수 있도록 고객을 지원합니다. Wiz는 Amazon Neptune에 저장된 그래프 모델을 사용하여 심각한 위험을 나타내는 위험 요소의 독성 조합을 찾아냅니다. Wiz 위험 엔진은 그래프를 순회하고 몇 초 만에 상호 연결된 일련의 위험 요소를 보안 그래프로 통합합니다.

고가용성 애플리케이션

분산 NoSQL 데이터베이스는 메시징, 소셜 미디어, 파일 공유 등 지연 시간이 짧은 고가용성 애플리케이션을 구축하는 데 매우 유용합니다. 예를 들어 Snapchat에서는 2억 9,000만 명 이상의 사용자가 매일 수십억 개의 사진과 동영상 메시지를 보냅니다. Snapchat은 NoSQL 데이터베이스 시스템을 사용하여 메시지 전송의 평균 지연 시간을 20% 단축합니다.

NoSQL 데이터베이스는 어떻게 작동하나요?

NoSQL 데이터베이스에서는 데이터의 액세스 및 관리를 위해 다양한 데이터 모델을 사용합니다. 이러한 데이터베이스 유형은 유연한 데이터 모델, 큰 데이터 볼륨, 짧은 지연 시간이 필요한 애플리케이션에 최적화되었으며, 이 최적화는 관계형 데이터베이스의 데이터 일관성 제약 일부를 완화함으로써 달성됩니다. 데이터 모델에 따라 구현에 차이가 있습니다. 그러나 데이터를 이름-값 페어의 컬렉션으로 나타내는 개방형 데이터 교환 형식인 Javascript Object Notation(JSON)을 사용하는 NoSQL 데이터베이스가 많습니다.

NoSQL 데이터베이스 예제

간단한 서적 데이터베이스를 위한 스키마 모델 구축 사례를 고려해 봅시다.

  • 관계형 데이터베이스에서, 서적 레코드는 흔히 숨겨져(또는 ‘정규화되어’) 별도의 테이블에 보관되고, 관계는 기본 및 외래 키 제약 조건으로 정의됩니다. 이 예시에서 Books 테이블에는 ISBN, Book Title, Edition Number 열이 있고, Authors 테이블에는 AuthorIDAuthor Name 열이 있으며, 마지막으로 Author-ISBN 테이블에는 AuthorIDISBN 열이 있습니다. 관계형 모델은 중복성을 줄이도록 정규화되고 일반적으로 저장에 최적화된 데이터베이스에서 데이터베이스가 테이블 사이에서 참조 무결성을 실현할 수 있도록 고안되었습니다.
  • NoSQL 데이터베이스에서 서적 레코드는 보통 문서로 저장됩니다. 각각의 서적에 대해 ISBN, Book Title, Edition Number, Author Name, AuthorID 항목은 단일 문서 내에 속성으로 저장됩니다. 이 모델에서 데이터는 직관적 개발과 수평 확장성에 최적화됩니다.

SQL과 NoSQL 용어

다음 표에는 NoSQL 데이터베이스에 사용되는 용어와 SQL 데이터베이스에 사용되는 용어가 비교되어 있습니다.

SQL MongoDB DynamoDB Cassandra  Couchbase
테이블 컬렉션 테이블 테이블 데이터 버킷
문서 항목 문서
컬럼 필드 속성 컬럼 필드
기본 키 ObjectId 기본 키
기본 키 문서 ID
인덱스 인덱스 보조 인덱스 인덱스 인덱스
보기 보기 글로벌 보조 인덱스 구체화된 보기 보기
중첩된 테이블 또는 객체 포함 문서
배열 배열 목록 목록 목록

NoSQL 데이터베이스의 유형에는 어떤 것들이 있나요?

스키마 없는 데이터를 관리하고 저장하는 방식이 다양하기 때문에 NoSQL 데이터베이스 시스템에는 여러 종류가 있습니다. 아래에 몇 가지 일반적인 유형이 설명되어 있습니다.

키-값 데이터베이스

키-값 데이터베이스는 고도로 분할 가능하며 다른 유형의 NoSQL 데이터베이스로는 불가능한 수준의 수평 확장이 가능합니다. 키-값 데이터베이스는 키를 고유한 식별자로 사용하는 키-값 페어의 컬렉션으로 데이터를 저장합니다. 단순한 객체에서 복잡한 객체에 이르기까지 무엇이든 키와 값이 될 수 있습니다. 키 값 스토어 데이터 설계는 게이밍, 광고 기술 및 IoT와 같은 사용 사례에서 특별히 적합하다는 것을 보여줍니다. Amazon DynamoDB는 모든 규모의 워크로드에 대해 10밀리초 미만의 지연 시간으로 일관된 성능을 제공하도록 설계되었습니다. 

도큐먼트 데이터베이스

도큐먼트 데이터베이스는 애플리케이션 코드에 사용되는 것과 동일한 문서 모델 형식을 사용합니다. 유연한 반구조화된 계층형 JSON 객체로 데이터를 저장합니다. 문서 및 도큐먼트 데이터베이스는 유연하고 반구조화된 계층적 특성을 지니고 있기 때문에 애플리케이션의 요구 사항에 따라 지속적으로 발전될 수 있습니다. 도큐먼트 데이터베이스 모델은 각 문서가 고유하고 시간이 지남에 따라 변화하는 콘텐츠 관리 시스템, 사용자 프로파일 및 카탈로그에서 사용할 수 있습니다. Amazon DocumentDB(MongoDB 호환) 및 MongoDB는 유연하고 반복된 개발을 위해 강력하고 직관적인 API를 제공하는 널리 쓰이는 도큐먼트 데이터베이스입니다.

그래프 데이터베이스

그래프 데이터베이스는 고도로 연결된 데이터 세트를 처리할 애플리케이션을 손쉽게 구축하고 운영할 수 있도록 특별히 만들어졌습니다. 그래프 데이터베이스는 노드를 사용하여 데이터 엔터티를 저장하고 엣지로는 엔터티 간의 관계를 저장합니다. 엣지에는 항상 시작 노드, 종료 노드, 유형 및 방향이 있습니다. 상위-하위 관계, 작업, 소유권 등을 설명할 수 있습니다. 하나의 노드가 가질 수 있는 관계의 수와 종류에는 제한이 없습니다. 그래프 데이터베이스를 사용하여 고도로 연결된 데이터 세트를 처리할 애플리케이션을 손쉽게 구축하고 운영할 수 있습니다. 일반적인 그래프 데이터베이스 사용 사례에는 소셜 네트워킹, 추천 엔진, 사기 탐지, 지식 그래프가 포함됩니다. Amazon Neptune은 두 가지 그래프 API(TinkerPop 및 RDF/SPARQL) 중 하나를 선택하여 속성 그래프 모델과 리소스 설명 프레임워크(RDF)를 모두 지원할 수 있는 완전관리형 그래프 데이터베이스 서비스입니다.

인 메모리 데이터베이스

다른 비관계형 데이터베이스는 데이터를 디스크나 SSD에 저장하는 반면, 인 메모리 데이터 스토어는 디스크에 액세스할 필요가 없도록 설계되었습니다. 마이크로초 단위의 응답 시간이 필요하거나 트래픽 스파이크가 큰 애플리케이션에 적합합니다. 게임 및 에듀테크 애플리케이션에서 순위표, 세션 스토어 및 실시간 분석과 같은 기능에 사용할 수 있습니다. Amazon MemoryDB for Redis는 마이크로초 읽기 지연 시간, 한 자릿수 밀리초 쓰기 지연 시간 및 다중 AZ 내구성을 제공하는 Redis와 호환 가능하고 내구성이 뛰어난 인 메모리 데이터베이스 서비스입니다. Amazon ElastiCache는 Redis 및 Memcached와 호환되는 완전관리형 인 메모리 캐싱 서비스로 지연 시간이 짧고 처리량이 많은 워크로드를 처리합니다. Amazon DynamoDB Accelerator(DAX)는 특정 용도로 구축된 데이터 스토어의 또 다른 예로, DynamoDB의 읽기 속도를 대폭 개선합니다.

검색 데이터베이스

검색 엔진 데이터베이스는 개발자가 문제를 해결하는 데 사용하는 애플리케이션 출력 로그와 같은 데이터 콘텐츠 검색 전용인 비관계형 데이터베이스의 한 유형입니다. 개발자들은 인덱스를 사용하여 데이터 간의 유사한 특성을 분류함으로써 검색 기능을 용이하게 합니다. 검색 엔진 데이터베이스는 이미지 및 비디오와 같은 비구조화된 데이터를 정렬하는 데 최적화되어 있습니다. Amazon OpenSearch Service는 로그와 지표의 색인 작성, 집계, 검색을 통해 컴퓨터에서 생성된 데이터를 가지고 실시간에 가까운 시각화와 분석을 제공하기 위해 특정 목적에 맞추어 구축됩니다.

NoSQL 데이터베이스와 SQL 데이터베이스 간의 차이점은 무엇인가요?

수십 년 동안 애플리케이션 개발의 주요 데이터 모델은 행과 열로 구성된 테이블에 데이터를 저장하는 관계형 데이터 모델이었습니다. 이러한 관계형 테이블을 만들고 편집하는 데는 구조화된 쿼리 언어(SQL)가 사용되었습니다. SQL 데이터베이스는 데이터 관계를 테이블로 모델링합니다. 테이블의 행은 한 객체 또는 엔터티와 관련된 값의 컬렉션을 나타냅니다. 테이블의 각 열은 데이터 속성을 나타내며 필드(또는 테이블 셀)에는 속성의 실제 값이 저장됩니다. 관계형 데이터베이스 관리 시스템(RDBMS)을 사용하면 데이터베이스 테이블 자체를 재구성하지 않고도 다양한 방법으로 데이터에 액세스할 수 있습니다.

2000년대 중반에서 후반이 되어서야 다른 유연한 데이터 모델들이 채택되고 사용되는 현상이 눈에 띄기 시작했습니다. 이러한 새로운 데이터베이스와 데이터 모델 등급을 차별화하고 분류하기 위해 NoSQL이란 용어가 만들어졌습니다. NoSQL은 SQL 또는 비 SQL만을 의미하는 것은 아닙니다. 흔히 NoSQL이란 용어는 비관계형이라는 용어와 같은 의미로 사용됩니다. 관계형 데이터베이스와 비관계형 데이터베이스 간의 주요 차이점은 아래 표에 나와 있습니다.

 

관계형 데이터베이스

NoSQL 데이터베이스

최적의 워크로드

 

 

관계형 데이터베이스는 일관성이 뛰어난 온라인 트랜잭션 프로세싱(OLTP) 애플리케이션을 위해 설계되었습니다. 온라인 분석 처리(OLAP)에도 적합합니다.   

NoSQL 데이터베이스는 짧은 지연 시간의 애플리케이션을 포함한 수많은 데이터 액세스 패턴에 맞도록 설계되었습니다. NoSQL 검색 데이터베이스는 반구조화된 데이터에서 분석을 위해 설계되었습니다

 

데이터 모델

관계형 모델은 데이터를 행과 열로 구성된 테이블로 정규화합니다. 스키마는 테이블, 행, 열, 인덱스, 테이블 간 관계, 기타 데이터베이스 요소를 정확하게 규정합니다. 데이터베이스는 테이블 사이의 관계에서 참조 무결성을 실현합니다.

NoSQL 데이터베이스는 키-값, 문서, 그래프, 열 등 성능과 규모 확장에 최적화된 다양한 데이터 모델을 제공합니다.

ACID 속성

관계형 데이터베이스는 원자성, 일관성, 격리성 및 지속성(ACID)의 속성을 제공합니다.

  • 원자성을 달성하려면 트랜잭션이 완전히 실행되거나 전혀 실행되지 않아야 합니다.
  • 일관성은 트랜잭션이 커밋될 때 데이터가 데이터베이스 스키마를 준수하도록 요구합니다.
  • 격리성은 동시에 일어나는 트랜잭션이 각기 별도로 실행되어야 함을 의미합니다.
  • 내구성은 예기치 못한 시스템 장애 또는 정전 시 마지막으로 알려진 상태로 복구하는 기능을 필요로 합니다.

대부분의 NoSQL 데이터베이스는 수평으로 확장할 수 있는 보다 유연한 데이터 모델을 위해 관계형 데이터베이스의 일부 ACID 속성을 완화합니다. 그렇게 때문에 NoSQL 데이터베이스는 단일 인스턴스의 한계를 넘어 수평으로 확장해야 하는 사용 사례에서 높은 처리량과 짧은 지연 시간을 위한 탁월한 선택이 됩니다.

성능

성능은 일반적으로 디스크 하위 시스템에 따라 다릅니다. 최고 성능을 달성하기 위해서는 쿼리, 인덱스 및 테이블 구조를 자주 최적화해야 합니다.

성능은 일반적으로 기본 하드웨어 클러스터 크기, 네트워크 지연 시간 및 호출 애플리케이션의 기능입니다.

규모 조정

관계형 데이터베이스는 일반적으로 하드웨어의 계산 성능을 높여 스케일 업되거나 읽기 전용 워크로드의 복제물을 추가하여 스케일 아웃됩니다.

NoSQL 데이터베이스는 일반적으로 분할이 가능합니다. 분산 아키텍처를 사용하여 처리량을 늘려 거의 무한한 규모에서 일관된 성능을 제공함으로써 액세스 패턴을 스케일 아웃할 수 있기 때문입니다.

API

데이터 저장 및 검색 요청은 구조화된 쿼리 언어(SQL)를 준수하는 쿼리를 사용하여 전달됩니다. 쿼리는 관계형 데이터베이스에 의해 구문 분석되고 실행됩니다.

앱 개발자는 객체 기반 API를 통해 데이터 구조를 쉽게 저장 및 검색할 수 있습니다. 파티션 키를 사용하면 앱에서 키-값 페어, 열 세트 또는 일련의 앱 객체 및 속성을 포함하는 반구조화된 문서를 검색할 수 있습니다.

SQL 데이터베이스 대신 NoSQL 데이터베이스를 선택해야 하는 경우는 언제인가요?

NoSQL 데이터베이스는 뚜렷하지 않거나 관련이 없거나 빠르게 변화하는 데이터를 처리하는 데 가장 적합합니다. 데이터베이스 스키마를 지시하는 애플리케이션에서 직관적으로 사용할 수 있습니다. 다음과 같은 애플리케이션에 사용할 수 있습니다.

  • 더 빠르고 반복적인 개발을 가능하게 하는 유연한 스키마가 필요합니다.
  • 강력한 데이터 일관성과 데이터 테이블 간의 관계 유지(참조 무결성)보다 성능을 우선시합니다.
  • 서버 간 샤딩을 통한 수평 확장이 필요합니다.
  • 반구조화된 데이터와 구조화되지 않은 데이터를 지원합니다.

항상 비관계형 데이터베이스 스키마와 관계형 데이터베이스 스키마 중에서 선택할 필요는 없습니다. 애플리케이션에서 SQL 데이터베이스와 NoSQL 데이터베이스를 조합하여 사용할 수 있습니다. 이러한 하이브리드 접근 방식은 매우 일반적이며 각 워크로드를 적합한 데이터베이스에 매핑하여 최적의 가격 대비 성능을 제공합니다.

AWS는 NoSQL 데이터베이스 요구 사항을 어떻게 지원하나요?

AWS는 모든 NoSQL 요구 사항을 충족하는 다양한 NoSQL 데이터베이스 서비스를 제공합니다. 예를 들면 다음과 같습니다.

  • Amazon DynamoDB는 서버리스 방식의 완전관리형 키-값 데이터베이스 서비스로, 10밀리초 미만의 일관된 성능과 무제한 확장성을 제공합니다.
  • Amazon DocumentDB(MongoDB 호환)는 완전관리형 기본 JSON 도큐먼트 데이터베이스로서 인프라를 관리하지 않고도 규모와 관계없이 중요한 문서 워크로드를 쉽고 비용 효율적으로 운영할 수 있게 해 줍니다.
  • Amazon Neptune은 뛰어난 확장성과 가용성을 제공하도록 설계된 서버리스 방식의 완전관리형 그래프 데이터베이스 서비스로, 수십억 개의 관계를 몇 초 만에 쿼리할 수 있습니다.
  • Amazon MemoryDB for Redis는 내구성이 뛰어난 인 메모리 데이터베이스 서비스로, 마이크로초의 읽기 및 쓰기 응답 시간을 통해 초고속 성능을 달성합니다.
  • Amazon ElastiCache는 Redis 및 MemCached와 호환되는 완전관리형 인 메모리 데이터 스토어 및 캐시 서비스로, 비용에 최적화된 실시간 성능을 제공합니다.
  • Amazon Keyspaces(Apache Cassandra용)는 다중 리전 복제를 통해 최대 99.999%의 가용성을 제공하도록 설계된 서버리스 방식의 완전관리형 와이드 컬럼 데이터베이스입니다. 고가용성의 확장 가능한 관리형 Apache Cassandra 호환 데이터베이스 서비스.
  • Amazon Timestream은 서버리스 형식의 완전관리형 시계열 데이터베이스로, 관계형 데이터베이스보다 1,000배 더 빠른 속도로 하루 수조 건의 이벤트를 손쉽게 저장하고 분석할 수 있습니다. 
  • Amazon OpenSearch Service는 비즈니스 및 운영 데이터의 실시간 검색, 모니터링 및 분석을 지원하는 완전관리형 분산 검색 및 분석 제품군입니다.

지금 바로 무료 계정을 만들어 AWS에서 NoSQL을 시작해 보세요.

어떤 NoSQL 데이터베이스가 적합할까요?
목적별 데이터베이스로 애플리케이션을 현대화