빅데이터 및 NoSQL 시스템
빅데이터 및 NoSQL 시스템은 관계형 데이터베이스가 처리하기 어려웠던 대량(volume), 고속(velocity), 다양성(variety)을 위한 데이터 관리 기술로, 엄격한 관계형 보장을 수평적 확장성, 유연한 스키마 및 고가용성과 교환합니다.
Definition
빅데이터 시스템은 기존의 단일 노드 데이터베이스로는 너무 크거나, 빠르거나, 다양하여 처리하기 어려운 데이터 세트를 위해 설계된 데이터 관리 플랫폼입니다. NoSQL 시스템은 유연한 데이터 모델과 완화된 일관성을 채택하여 수평적 확장성과 가용성을 달성하는 비관계형 저장소입니다.
Scope
이 영역은 대규모로 설계된 데이터 시스템을 다룹니다: NoSQL 저장소(키-값, 문서, 와이드-컬럼, 그래프) 및 이들의 유연한 데이터 모델; MapReduce에서 파생된 데이터 병렬 처리 프레임워크; CAP 정리(CAP theorem)에 의해 포착되는 일관성-가용성 절충(consistency-availability trade-offs) 및 일관성 모델의 스펙트럼; 그리고 대규모 분석을 위한 데이터 웨어하우징 및 OLAP. 이러한 시스템이 확장을 위해 관계형 가정을 완화하거나 재구성하는 방법을 다룹니다. 분산 트랜잭션 커밋(distributed commit) 및 병렬 쿼리 실행(parallel query execution)의 내부 작동 방식은 제외하며, 이는 분산 및 병렬 데이터베이스 영역에서 다룹니다.
Sub-topics
Core questions
- 관계형 데이터베이스를 넘어선 움직임을 이끈 확장성 및 유연성 요구사항은 무엇이었습니까?
- 주요 NoSQL 범주가 제공하는 데이터 모델은 무엇입니까?
- 데이터 병렬 프레임워크는 클러스터 전반에 걸쳐 방대한 데이터 세트를 어떻게 처리합니까?
- CAP 정리는 어떤 일관성-가용성 절충을 설명합니까?
- 데이터 웨어하우스와 OLAP는 대규모 분석 쿼리를 어떻게 지원합니까?
Key concepts
- 키-값, 문서, 와이드-컬럼, 그래프 저장소
- 수평적 확장성
- 스키마 유연성
- MapReduce 및 데이터 병렬 처리
- CAP 정리
- 결과적 일관성
- BASE 대 ACID
- 데이터 웨어하우징 및 OLAP
Key theories
- 수평적으로 확장 가능한 NoSQL 저장소
- NoSQL 시스템은 단일 노드 관계형 모델을 포기하고 키-값, 문서, 와이드-컬럼 또는 그래프 모델을 선호하며, 이는 상용 클러스터 전반에 걸쳐 데이터를 샤딩하고 복제하여 풍부한 쿼리 및 강력한 일관성보다 확장성과 가용성을 우선시합니다.
- 데이터 병렬 처리
- MapReduce 모델을 따르는 프레임워크는 대규모 계산을 분할된 데이터에 대한 병렬 맵(map) 및 리듀스(reduce) 단계로 표현하여, 프로그래머로부터 분산, 스케줄링 및 내결함성의 복잡성을 숨깁니다.
- CAP 절충
- CAP 정리는 분산 데이터 저장소가 일관성, 가용성, 분할 허용성(partition tolerance)을 동시에 보장할 수 없으며, 네트워크 분할 시 일관성과 가용성 중 하나를 선택해야 한다고 명시합니다.
Clinical relevance
빅데이터 및 NoSQL 시스템은 현대 웹의 데이터 인프라를 구동합니다: 키-값 및 와이드-컬럼 저장소는 고트래픽 서비스를 지원하고, 데이터 병렬 프레임워크는 로그 및 클릭스트림을 대규모로 처리하며, 데이터 웨어하우스는 비즈니스 분석을 제공하여 이러한 시스템을 데이터 엔지니어링 및 대규모 애플리케이션의 핵심으로 만듭니다.
History
2000년대 인터넷 규모의 워크로드는 단일 노드 관계형 데이터베이스가 처리할 수 있는 수준을 넘어섰습니다. Google의 MapReduce(2004/2008)와 오픈 소스 Hadoop 생태계는 클러스터 규모의 데이터 처리를 가능하게 했고; Amazon의 Dynamo(2007)와 Google의 Bigtable은 NoSQL 저장소의 물결을 촉발했으며; Brewer의 CAP 정리는 이러한 시스템이 구현하는 일관성-가용성 절충을 체계화했습니다.
Debates
- 강력한 일관성 대 결과적 일관성
- NoSQL 시스템은 종종 분할 상황에서 응답성을 유지하기 위해 가용성과 결과적 일관성을 선택하지만, 이는 충돌 처리(conflict handling)를 애플리케이션으로 미룹니다. 이 분야에서는 결과적 일관성이 허용되는 시점과 새로운 시스템이 더 강력한 보장을 복원해야 하는 시점에 대해 논쟁이 있습니다.
Key figures
- Jeffrey Dean
- Sanjay Ghemawat
- Eric Brewer
- Werner Vogels
Related topics
Seminal works
- dean2008
- decandia2007
- brewer2012
Frequently asked questions
- NoSQL은 SQL이 전혀 없다는 의미입니까?
- 아닙니다. NoSQL은 일반적으로 'SQL만은 아니다(not only SQL)'로 해석됩니다. 이는 관계형 모델을 기반으로 하지 않고 SQL을 중심으로 하지 않는 데이터 저장소를 의미하지만, 많은 NoSQL 시스템은 SQL과 유사한 쿼리 인터페이스를 제공하며, 이 용어는 단일 기술이라기보다는 키-값, 문서, 와이드-컬럼, 그래프 데이터베이스와 같은 광범위한 패밀리를 포괄합니다.
- 관계형 데이터베이스 대신 NoSQL 시스템을 언제 선택해야 합니까?
- NoSQL 시스템은 여러 머신에 걸쳐 수평적으로 확장해야 하거나, 유연하거나 빠르게 진화하는 데이터를 저장해야 하거나, 간단한 접근 패턴에 대해 가용성을 극대화해야 할 때 매력적입니다. 관계형 데이터베이스는 구조화된 데이터에 대해 풍부한 쿼리, 복잡한 조인 및 강력한 트랜잭션 일관성이 필요할 때 여전히 선호됩니다.