반응형
NoSQL 이란?
NoSQL은 Not Only SQL의 약자입니다. 이미 여러분들이 평소에 Facebook, Twitter, Netflix, Instagram 등의 서비스에서 이미 NoSQL 을 사용하고 있습니다. NoSQL은 기존 RDBMS의 한계를 극복하기 위해 만들어진 형태의 데이터 베이스입니다. Relation 즉 관계형이 아니어서 고정된 스키마가 없으며, Join이 힘들지요. 빅데이터를 다룰때, RDBMS로만으로는 트래픽을 감당하기 어려워졌고, 여러분들이 올린 사진이나, 메시지를 저장할 때, 동시 다발적으로 상품을 추천해 줄 때, 데이터를 더 빠르게 처리하기 위해서 개발된 것이 NoSQL 입니다. 핵심 요소는 Horizontal Scalability(수평확장)과 High Availability(고가용성) 이지요.
이 용어가 처음으로 등장한 시기는 1998년 카를로 스트로찌(Carlo Strozzi)라는 엔지니어가 공개한 표준 SQL 인터페이스를 사용하지 않은 자신의 경량 Open Source 관계형 데이터베이스를 NoSQL이라고 명명한데서 유래했다고 합니다. 2009년에 요한 오스칼손(Johan Oskarsson)이라는 엔지니어가 Open Source 기반의 분산 데이터베이스 관련 행사를 준비하면서 NoSQL이라는 용어를 사용했다고 하네요.
기존 RDBMS의 한계
데이터양과 데이터 처리량이 지속해서 증가하면 아래와 같은 문제점을 만납니다
- 스키마 문제 : 빅데이터를 RDB의 스키마에 맞춰 변경해서 넣으려면 매우 긴 시간의 PayLoad가 발생
- 스케일업의 한계 : RDBMS는 스케일 아웃을 염두에 두고 설계되지 않았기 때문에, 관계 모델에서 트랜잭션의 연산, 일관성, 속성을 유지하면서 스케일 아웃 환경에서 조작하는것이 어렵습니다.
NoSQL의 특징과 장점
- Map 형태의 Key-Value 형식을 지원
- RDBMS가 데이터의 관계를 Foreign Key(FK) 등으로 정의하고 Join 등 관계형 연산을 하지만 NoSQL은 관계를 정의하지 않음
- 대용량의 데이터를 저장, 처리하기 쉬움
- Schema-less
- 읽기 작업보다 쓰기 작업이 더 빠르며, 일반적으로 RDBMS에 비하여 읽기, 쓰기 성능이 좋음
NoSQL의 종류
Key/Value Database : Redis(인메모리), Oracle Coherence 등
- 단순한 저장구조, 복잡한 조회 연산 X
- 고속 읽기와 쓰기에 최적화
- Key에 대한 단위 연산이 빠름, 여러 Key에 대해서는 느릴 수 있음
- 메모리를 저장소로 쓰기 때문에, 아주 빠른 Get, Put을 지원
- Value는 문자열, 정수와 같은 원시 타입 및 Column Family 형태 (Column, Value) 를 지원한다
Big Table Database (= Ordered Key/value) : BigTable, Cassandra, HBase 등
- Key/Value Store 와 데이터 저장 방식 동일
- 내부적으로 Key에 대한 정렬 지원 (보통 NoSQL은 지원안함)
- 순차적인 날짜 데이터를 정렬해서 보여줄 때 용이
Document Database : MongoDB, CouchDB 등
- Key/Value Store의 확장된 형태
- Value에 Document라는 타입을 저장 (XML, JSON, YAML 등)
- 복잡한 데이터 구조 표현가능
- Document id 또는 특정 속성값 기준으로 인덱스 생성
- Sorting, Join, Grouping 등이 가능
- 데이터를 파싱해서 연산 → Key/Value 모델보다 오버헤드가 큼
- 큰 크기의 Document를 다룰 때 성능 저하
Graph Database : Sone, AllegroGraph, Neo4j
- Node들과 RelationShip으로 구성된 개념
- Key/Value Store이며 모든 노드는 끊기지 않고 연결됨
- RelationShip은 Direaction, Type, Start Node, End Node 등 속성을 가짐
- 보통 Weight 속성을 가짐
728x90
'Database' 카테고리의 다른 글
MySQL Workbench - UPDATE Query Error ( Code 1175 ) (0) | 2018.12.09 |
---|