Computer >> 컴퓨터 >  >> 프로그래밍 >> SQL

NoSQL이란 무엇일까? 차세대 데이터베이스 트렌드 완벽 가이드


NoSQL이란 무엇인가?

위키백과의 공식 정의에 따르면, NoSQL(원래 'non SQL' 또는 'non relational'을 의미) 데이터베이스는 관계형 데이터베이스 관리 시스템(RDBMS)에서 사용하는 테이블 기반 관계 모델이 아닌 방식으로 데이터를 저장하고 조회하는 메커니즘을 제공합니다. NoSQL은 사용자, 객체, 제품에 관한 데이터의 양이 급증하고, 데이터 접근 빈도가 높아지며, 성능과 처리 능력에 대한 요구가 커지는 상황에 대응하기 위해 개발된 다양한 데이터베이스 기술을 포괄하는 개념입니다. 일반적으로 NoSQL 데이터베이스는 키-값(key-value) 쌍, 그래프(graph), 문서 지향(document-oriented), 컬럼 지향(column-oriented) 구조로 구성됩니다.

수십 년간 소프트웨어 개발 현장에서는 SQL(Structured Query Language)을 사용해 관계형 테이블 형태로 데이터를 저장해 왔습니다. 그러나 최근 인터넷과 웹 2.0 애플리케이션의 폭발적인 성장으로 데이터베이스 규모가 수천 테라바이트에 달하게 되었습니다. 페이스북, 구글, 아마존, 왓츠앱 같은 서비스들은 단순한 설계, 빠른 속도, 전통적인 데이터베이스보다 뛰어난 확장성이라는 새로운 접근 방식을 기반으로 하는 데이터베이스 관리의 새로운 시대를 열었습니다. 이러한 데이터베이스는 빅데이터, 대규모 실시간 애플리케이션, 데이터 분석 분야에서 폭넓게 활용되고 있습니다.

예를 들어, 사용자 블로그를 저장하는 블로깅 애플리케이션이 있다고 가정해 보겠습니다. 여기에 블로그 게시물 좋아요, 댓글 작성, 댓글 좋아요 같은 새로운 기능을 추가해야 한다면 어떻게 될까요? 일반적인 RDBMS 구현에서는 기존 데이터베이스 설계를 대폭 수정해야 합니다. 반면 NoSQL을 사용하면 사전에 정의된 새로운 컬럼이나 구조를 만들 필요 없이 기존 구조에 새로운 데이터를 바로 삽입할 수 있어, 민첩하게 변화하는 요구 사항에 손쉽게 대응할 수 있습니다.

RDBMS의 한계

  • RDBMS는 잘 정의된 데이터 구조와 대체로 균일한 데이터를 전제로 합니다.

  • 애플리케이션 개발 전에 스키마와 속성(컬럼, 데이터 타입 등)을 미리 정의해야 하므로, 빠르게 변화하는 애플리케이션의 애자일 개발 방식과 잘 맞지 않습니다.

  • 데이터가 방대해질수록 데이터베이스를 수직적으로 확장(scale-up), 즉 기존 서버에 더 많은 용량을 추가해야 하는 부담이 있습니다.

NoSQL이 RDBMS보다 나은 점

스키마리스(Schema-less)
NoSQL 데이터베이스는 스키마가 없기 때문에 엄격한 데이터 구조를 강제하지 않습니다.

동적이고 유연함(Dynamic & Agile)
NoSQL 데이터베이스는 변화하는 요구 사항에 따라 동적으로 성장하는 데 유리합니다. 구조화된 데이터, 반구조화된 데이터, 비구조화된 데이터를 모두 처리할 수 있습니다.

수평적 확장(Horizontal Scaling)
수직적으로 확장하는 SQL 데이터베이스와 달리, NoSQL은 샤딩(sharding)과 복제(replication) 개념을 활용해 서버를 추가하는 방식으로 수평적으로 확장합니다. 이러한 특성은 온디맨드로 가상 서버를 수평 확장할 수 있는 AWS(Amazon Web Services) 같은 클라우드 컴퓨팅 환경과 특히 잘 어울립니다.

더 나은 성능(Better Performance)
대부분의 NoSQL 데이터베이스는 전통적인 RDBMS 구현보다 더 빠르고 우수한 성능을 제공한다고 알려져 있습니다.

한편 한계점도 존재합니다. NoSQL은 하나의 데이터베이스가 아니라 여러 데이터베이스의 집합체이기 때문에 한계는 제품마다 다릅니다. 일부 데이터베이스는 ACID 트랜잭션을 지원하지 않으며, 일부는 신뢰성 측면에서 부족할 수 있습니다. 하지만 각 제품은 고유한 강점을 지니고 있어 특정 요구 사항에 최적화된 선택이 가능합니다.

NoSQL 데이터베이스의 유형

문서 지향 데이터베이스(Document Oriented Databases)
문서 지향 데이터베이스는 문서를 하나의 전체로 취급하며, 문서를 이름/값 쌍으로 분해하지 않습니다. 컬렉션 수준에서 서로 다른 문서들을 하나의 컬렉션에 함께 담을 수 있습니다. 또한 기본 식별자뿐만 아니라 문서의 속성을 기준으로도 인덱싱이 가능합니다. 현재 다양한 오픈소스 문서 데이터베이스가 존재하지만, 그중 가장 널리 쓰이는 것은 MongoDB와 CouchDB입니다. 실제로 MongoDB는 가장 인기 있는 NoSQL 데이터베이스 중 하나로 자리 잡았습니다.

그래프 기반 데이터베이스(Graph Based Databases)
그래프 데이터베이스는 노드(node), 엣지(edge), 속성(property)으로 구성된 그래프 구조를 사용해 데이터를 표현하고 저장합니다. 정의상 그래프 데이터베이스는 '인덱스 없는 인접성(index-free adjacency)'을 제공하는 스토리지 시스템으로, 모든 요소가 인접 요소에 대한 직접 포인터를 포함하여 인덱스 조회 없이 연결된 데이터를 탐색할 수 있습니다. 임의의 그래프를 저장할 수 있는 범용 그래프 데이터베이스는 트리플 스토어(triple-store), 네트워크 데이터베이스 같은 특수 목적 그래프 데이터베이스와 구별됩니다.

컬럼 기반 데이터베이스(Column Based Databases)
컬럼 지향 스토리지는 데이터를 매우 효율적으로 저장할 수 있게 해줍니다. 해당 컬럼에 값이 존재하지 않으면 컬럼 자체를 저장하지 않음으로써 null 값으로 인한 공간 낭비를 피합니다. 각 데이터 단위는 키/값 쌍의 집합으로 볼 수 있으며, 단위 자체는 기본 키(primary key)로 식별됩니다. Bigtable과 그 클론들은 이 기본 키를 로우 키(row-key)라고 부릅니다.

키-값 데이터베이스(Key Value Databases)
키/값 쌍의 키는 집합 내에서 고유한 값이며, 이 키를 통해 데이터에 빠르게 접근할 수 있습니다. 키/값 저장소는 다양한 형태로 구현됩니다. 일부는 데이터를 메모리에 유지해 초고속 응답을 제공하고, 일부는 디스크에 데이터를 영속화하는 기능을 지원합니다. 간단하지만 강력한 키/값 스토어의 대표적인 예로 오라클의 Berkeley DB가 있습니다.

주요 NoSQL 데이터베이스

위에서 소개한 유형별로 대표적인 NoSQL 데이터베이스를 정리하면 다음과 같습니다.

  • 문서 지향 데이터베이스 — MongoDB, CouchDB, Amazon SimpleDB 등
  • 그래프 기반 데이터베이스 — Neo4j, OrientDB, FlockDB 등
  • 컬럼 기반 데이터베이스 — HBase, Cassandra, Hypertable 등
  • 키-값 데이터베이스 — Redis, Memcached, Membase 등

NoSQL이란 무엇일까? 차세대 데이터베이스 트렌드 완벽 가이드

NoSQL 데이터베이스 종류. 이미지 출처: getfilecloud.com

결론

이 글에서는 NoSQL 데이터베이스 기술이 무엇인지, 그리고 RDBMS 구현과 어떤 점에서 다른지 살펴보았습니다. 이어서 문서 지향, 그래프 기반, 컬럼 기반, 키-값 방식 등 다양한 유형의 NoSQL 데이터베이스와 각각의 특징, 그리고 유형별 대표적인 제품들도 함께 확인했습니다.

오늘날 많은 기업과 조직이 방대한 데이터셋과 대규모 애플리케이션을 처리하기 위해 NoSQL 데이터베이스를 도입하고 있습니다. 이는 NoSQL이 웹 및 데이터베이스 기술 분야의 차세대 주류로 자리 잡으며, 수십 년간 이어져 온 RDBMS의 전통을 깰 잠재력을 충분히 가지고 있음을 보여줍니다.