Post
KO

Nosql 정의 2

Nosql 정의 2

NoSQL을 경험한 사용자들의 단편적인 시각을 나열하면 다음과 같다.

NoSQL은 조인이 지원되지 않는 분산 데이터베이스이다.

- NoSQL은 데이터를 여러 서버에 분산하여 저장하며 스키마를 가질 수 없는 데이터 베이스이다.

- 관계형 데이터베이스 특징을 제거하고 만들어진 다른 모든 데이터베이스다.

- 기존 방식의 관계형 데이터베이스의 한계를 극복한 새로운 형태의 확장성을 특징으로 하는 데이터 저장소이다.

그런데 어떤 NoSQL은 조인이 가능하며, 어떤 NoSQL은 스키마를 가진다. RDBMS의 트랜잭션 특징 중 하나인 ACID를 지원하는 NoSQL도 있다. 심지어 관계형 데이터베이스와 유사한 관계를 저장하는 NoSQL도 있다.

만약 NoSQL을 제대로 이해하지 못한 상태에서 NoSQL을 사용한다면, 출근 시간에 강남대로에서 포르쉐를 타고서 “이 차는 너무 느려서 바꿔야 겠어”라고 말하는 격이 될 수 있다.

NoSQL은 ‘빅데이터를 처리하기 위한 솔루션’ 혹은 ‘Not only SQL의 약자’ 또는 ‘NoSQL’이라고 알려져 있다. NoSQL이 공식적으로 정의된 것은 없으며 NoSQL이라는 단어는 영국 소프트웨어 개발자 조핸 오스카슨(Johan Oskarsson)이 오픈소스 분산데이터베이스의 토론을 위해 주관한 모임의 이름에서 유래됐다. 마틴파울러의 ‘NoSQL: 빅데이터 세상으로 떠나는 간결한 안내서’(인사이트. 2013)에는 NoSQL이 아래 조건을 만족하는 데이터 저장소라고 기술되어 있다.

- 대용량 웹서비스를 위하여 만들어진 데이터 저장소

- 관계형 데이터 모델을 지양하며 대량의 분산된 데이터를 저장하고 조회하는데 특화된 저장소

- 스키마 없이 사용가능하거나 느슨한 스키마를 제공하는 저장소

편의상 ‘NoSQL이란 빅데이터를 처리하기 위한 분산 데이터 저장소의 통칭’ 정도로 약속하자.

NoSQL은 분산 환경에서 대량의 데이터를 빠르게 처리하기 위해서 한두 가지 단점을 가진 채로 개발되었다.

NoSQL은 관계형 데이터베이스가 제공하는 쿼리와 트랜잭션 같은 편의 기능을 제공하지 않으며, 제공하는 데이터의 일관성 레벨도 NoSQL별로 다르다. 솔루션을 도입하기 위해서 해당 NoSQL의 설계 사상과 내부구조를 파악해야 하며 종류가 다양하기 때문에 각각의 NoSQL에 대한 도입 사례가 많지 않다. 그럼에도 불구하고 NoSQL을 선택하는 이유는 하드웨어 추가에 따른 성능의 선형 증가를 얻을 수 있다는 장점 때문이다.

NoSQL은 대량의 데이터를 빠르게 처리하기 위해서 메모리에 임시 저장하고 응답하는 등의 방법을 사용한다. 동적인 스케일 아웃을 지원하기도 하며, 가용성을 위해서 데이터 복제 등의 방법으로 관계형 데이터베이스가 제공하지 못하는 성능와 특징을 제공한다.

NoSQL의 문서 모델이 의미하는 구조화된 문서란 JSON, BSON, XML과 같이 문서가 이미 구조를 정의하고 있는 것을 말한다.

문서 모델 NoSQL의 키는 문서에 대한 ID로 표현한다. 또한 저장된 문서를 컬렉션으로 관리하며, 문서 저장과 동시에 문서 ID에 대한 인덱스를 생성한다. 문서 ID에 대한 인덱스를 사용하여 O(1)의 시간 안에 문서를 조회할 수 있다. 저장된 문서의 형태에 따라 키 외에 2차 인덱스를 지원하기 때문에 값을 비교한 조회가 가능하다.

대부분의 문서 모델 NoSQL은 B-Tree 인덱스를 사용하여 2차 인덱스를 생성한다. B-Tree는 크기가 커지면 커질 수록 새로운 데이터를 입력하거나 삭제할 때 성능이 떨어지게 된다. 이런 이유로 B-tree를 사용하는 문서 모델 NoSQL은 일기와 쓰기 비율이 7:3 이상일 때 가장 좋은 성능을 보인다. 문서 모델 NoSQL에는 MongoDB, 카우치베이스, 테라스토어, 레이븐 DB 등이 있다.

출처 http://book.naver.com/bookdb/book_detail.nhn?bid=7334741

이것이 레디스다 : 네이버 도서

네이버 도서 상세정보를 제공합니다.

This article is licensed under CC BY 4.0 by the author.