다양한 종류의 NoSQL에 대해 알아봅니다.

 

이 글은 다음 글을 발췌 및 번역한 글입니다: do.co/3lFbfMU

 

A Comparison of NoSQL Database Management Systems and Models | DigitalOcean

This article will introduce you to a few of the more commonly used NoSQL database models. It weighs some of their strengths and disadvantages, and provides a few examples of database management systems and potential use cases for each.

www.digitalocean.com

 

 

 

1. 소개

 

대부분의 사람들은 데이터베이스를 생각할 때 행(row)과 열(column)로 구성된 테이블을 포함하는 전통적인 관계형 데이터베이스 모델을 생각합니다. RDBMS는 여전히 인터넷에서 가장 많은 데이터를 처리하지만 개발자들은 관계형 모델의 한계에 대한 해결방법을 찾으려 노력함에 따라 최근 몇 년간 관계형 모델을 대체할 수 있는 데이터 모델이 좀 더 보편화되었습니다. 이러한 비 관계형 데이터 베이스 모델은 NoSQL이라 불리며 각각의 고유한 장점, 단점, 사용 사례를 확인해 보도록 하겠습니다.

 

이 글에서는 좀 더 일반적으로 사용되는 몇 가지 NoSQL 데이터베이스 모델을 소개합니다. 장점과 단점 중 일부를 평가하고 데이터베이스 관리 시스템의 몇 가지 예시와 각각에 대한 잠재적 사용 사례를 제공합니다.

 

 

 

2. Key-Value 데이터베이스.

 

Key-Value 저장소라고도 불리는 Key-Value 데이터베이스는 연관 배열(Associative Array)을 관리하고 저장함으로써 동작합니다. Dictionary 또는 해시 테이블이라고도 하는 연관 배열은 키가 키에 연관된 값을 검색하기 위한 고유 식별자 역할을 하며 이 키와 값을 한쌍으로 이 쌍들의 모음으로 구성됩니다. 값은 정수 또는 문자열과 같은 간단한 개체부터 JSON구조와 같은 복잡한 개체 이르기까지 다양합니다.

 

사전 정의된 데이터 타입이 있는 행과 열의 테이블로 구성된 데이터 구조를 정의하는 관계형 데이터베이스와 달리 Key-Value 데이터베이스는 구조나 관계(Relation) 없이 데이터를 단일 컬렉션으로 저장합니다. 애플리케이션은 데이터베이스 서버에 연결한 후 키(예를 들면 the_meaning_of_life)를 정의하고 나중에 키로 검색할 수 있는 값(예를 들어 42)을 제공할 수 있습니다. Key-Value 데이터베이스는 내부에 보관된 모든 데이터를 불투명한 Blob로 처리합니다. 그 구조를 어떻게 이해하는지는 애플리케이션에 달려있습니다.

 

Key-Value 데이터베이스는 주로 성능이 뛰어나고 효율적이며 확장 가능하다고 설명됩니다. Key-Value 데이터베이스의 일반적인 사용 사례는 캐싱, 메시지 대기열(Queuing), 세션 관리 등입니다.

 

인기 있는 오픈소스 Key-Value 데이터 저장소는 다음과 같습니다:

  • Redis: 데이터베이스, 캐시, 메시지 브로커로 사용되는 인메모리 저장소. 문자열, 비트맵, 스트림, 공간 인덱스까지 다양한 데이터 구조를 지원합니다.
  • Memcached: 메모리에 데이터와 개체를 캐싱하여 데이터 기반의 웹사이트와 애플리케이션의 속도를 높이는데 자주 사용되는 범용 메모리 개체 캐싱 시스템.
  • Riak: 고급 로컬 및 다중 클러스터 복제 기능이 있는 분산 Key-Value 데이터 베이스.

 

 

 

3. Columnar 데이터베이스.

 

Colimn orianted 데이터 베이스라고도 불리는 Colimnar(열 기반) 데이터베이스는 열(Column)에 데이터를 저장하는 데이터베이스 시스템입니다. 이는 기존의 관계형 데이터베이스와 비슷해 보일 수 있지만 열을 테이블로 그룹화하는 대신 각각의 열은 시스템 저장소의 별도의 파일 또는 영역에 저장됩니다.

 

열 기반 데이터베이스에 저장된 데이터는 레코드 순서로 나타납니다. 즉 한 열의 첫 번째 항목이 다른 열의 첫 번째 항목과 관련됩니다. 이 디자인을 사용하면 쿼리가 테이블의 모든 행을 읽고 메모리에 저장된 후 불필요한 데이터를 삭제할 필요 없이 필요한 열만 읽도록 할 수 있습니다.

 

각 열의 데이터는 동일한 유형이므로 다양한 저장 및 읽기 최적화 전략을 사용할 수 있습니다. 특히 많은 열 기반 데이터베이스 관리자는 하나의 열이 차지하는 공간을 최소화하기 위해 연속 길이 부호화(run-length encoding)와 같은 압축 전략을 구현합니다. 이는 쿼리가 더 적은 행(rows)을 이동하게 하므로 읽기 속도를 높일 수 있습니다. 그러나 열 기반 데이터베이스의 한 가지 단점은 각 열을 개별적으로 작성해야 하고 데이터가 종종 압축된 상태로 유지되기 때문에 성능이 좋지 않은 경향이 있다는 것입니다. 특히 증분(Incremental) 로드와 개별 레코드 읽기는 성능 측면에서 많은 비용이 들 수 있습니다.

 

열 기반 데이터베이스는 1960년대부터 사용되었습니다. 그러나 2000년대 중반 이후 열 기반 데이터 모델이 빠른 쿼리 처리에 적합하기 때문에 열 기반 데이터베이스가 데이터 분석에 널리 사용되기 시작했습니다. 또한 애플리케이션이 열에서 데이터 평균 또는 합계를 찾는 것과 같은 집계 기능을 자주 수행해야 하는 경우에도 열 기반 데이터베이스가 유리합니다. 일부 열 기반 데이터베이스 관리 시스템은 SQL 쿼리를 사용할 수도 있습니다.

 

인기 있는 오픈소스 열 기반 데이터베이스는 다음과 같습니다.

  • Apache Cassandra: 확장성, 가용성, 성능을 극대화하도록 설계된 열 기반 저장소입니다.
  • Apache HBase: 대용량 데이터에 대해 구조화된 스토리지를 지원하고 Hadoop과 함께 동작하도록 설계된 분산 데이터베이스입니다.
  • ClickHouse: 분석 데이터 및 SQL 쿼리의 실시간 생성을 지원하는 내결함성(Fault tolerant) DBMS입니다.

 

 

 

4. 마침.

 

NoSQL 데이터베이스 중 Key-Value 데이터베이스와 열 기반 데이터베이스에 대해 알아보고 그중 일부의 예시를 들어보았습니다. 다음 글에선 문서 기반(Document oriented) 데이터베이스와 그래프 데이터베이스에 대해 알아보도록 하겠습니다.

 

 

 

 

 

반응형

+ Recent posts