NoSQL이란 무엇인가?
NoSQL 데이터베이스(일명 'Not Only SQL')는 관계형 테이블과는 다르게 데이터를 저장합니다. NoSQL 데이터베이스는 데이터 모델에 따라 다양한 유형으로 제공됩니다. 주요 유형은 문서, 키-값, 와이드 컬럼 및 그래프 데이터베이스가 있습니다. 이러한 유형은 유연한 스키마를 제공하며 대량의 빅데이터와 높은 사용자 부하에서도 쉽게 확장할 수 있습니다.
이 글에서는 NoSQL 데이터베이스가 무엇인지, 왜(그리고 언제!) 사용해야 하는지, 그리고 어떻게 시작할 수 있는지에 대해 알아보도록 하겠습니다.
목차
- NoSQL 데이터베이스란 무엇인가?
- NoSQL 데이터베이스 유형
- NoSQL 데이터베이스의 간략한 역사
- NoSQL 데이터베이스의 특징
- 관계형 데이터베이스 vs NoSQL 데이터베이스 예시
- RDBMS와 NoSQL 데이터베이스의 차이점
- NoSQL 사용 사례
- NoSQL, 언제 사용할 것인가?
- NoSQL 데이터베이스에 대한 오해
- NoSQL 쿼리 튜토리얼
- 요약
- FAQ
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 | dob | city | |
---|---|---|---|---|
Foo bar | 12345 | foo@bar.com | Some city | |
Carn Yale | 34521 | bar@foo.com | 12-05-1972 |
그래프 데이터베이스
그래프 데이터베이스는 데이터를 노드와 엣지의 형태로 저장합니다. 노드는 주로 사람, 장소, 사물(명사와 같은)에 대한 정보를 저장하며, 엣지는 노드 간의 관계에 대한 정보를 저장합니다. 이러한 데이터베이스는 관계나 패턴이 처음에는 명확하지 않을 수 있는 고도로 연결된 데이터에 적합합니다. 그래프 데이터베이스의 예로는 Neo4J와 Amazon Neptune이 있습니다. MongoDB도 집계 파이프라인의 $graphLookup 단계를 사용하여 그래프 탐색 기능을 제공합니다. 데이터가 저장되는 방식의 예는 다음과 같습니다.