본문 바로가기

study

NoSQL 이란 ? NoSQL 장점 단점 / 데이터 모델링 기법 정리

반응형

 NoSQL (Not Only SQL) 이란? 

- 기존 RDBMS 형태의 관계형 데이터베이스가 아닌 다른 형태의 데이터 저장 기술을 의미함 

- NoSQL(원래 의미: non SQL 또는 non relational) 데이터베이스는 전통적인 관계형 데이터베이스 보다 덜 제한적인 일관성 모델을 이용하는 데이터의 저장 및 검색을 위한 매커니즘을 제공한다. 

 

 

 

NoSQL 등장 배경 

2000년대 인터넷 발전과 함께 SNS 서비스 활성화

-> SNS 서비스 시스템은 전세계 사용자 대상의 서비스로 발전

-> 기존 기업 시스템에서 볼 수 없었던 대규모 데이터 생산

-> 이러한 대규모 데이터들은 기존 기업 데이터에 비해 매우 단순한 형태를 가짐 

 

데이터의 패러다임이 한정된 규모의 복잡성 높은 데이터에서 단순한 대량의 데이터로 넘어가기 시작 

기존 데이터 저장 시스템으로는 커버할 수 없는 여러가지 한계 야기 -> 새로운 형태의 데이터 저장 기술이 필요하게 됨

-> 오라클 등의 RDBMS 중심의 데이터 저장 기술 시장에 새로운 저장 기술인 NoSQL이 등장하게 됨 

 

 

 

 

NoSQL 특징

- 관계형 데이터 베이스인 RDBMS가 데이터의 관계를 Foreign Key 등으로 정의하고 이를 이용해 JOIN 등의 관계형 연산을 하지만, NoSQL은 데이터 간의 관계를 정의하지 않는다.  

- RDBMS의 복잡도와 용량 한계를 극복하기 위한 목적으로 등장한 만큼, 페타바이트급의 대용량 데이터를 저장할 수 있다. 

- NoSQL : 일반적인 서버 수십 대를 연결해 데이터 저장 vs  RDBMS : 하나의 고성능 머신에 데이터 저장 

- 분산형 구조여서 데이터를 여러 대의 서버에 분산해 저장 -> 분산 시 데이터 상호 복제 -> 특정 서버에 장애 발생 시 데이터 유실이나 서비스 중지가 없는 형태 

- NoSQL은 RDBMS와 다르게 스키마가 유동적

- ID 로 사용하는 키 부분에만 타입이 동일 / Mandatory 필드로 지정한 경우 값에 해당하는 컬럼은 어떤 타입, 이름도 허용됨 

 

 

 

 

 

NoSQL 종류 

1) Key/ Value Store 

key / value로 계속 저장... 

대표적인 예 : Oracle Coherence, Redis, Kyoto Cabinet ..

 

 

2) Ordered Key/Value Store (BigTable-style Databases)

단순 key/value Store 에서 좀 더 발전된 형태 대표적인 예 : Apache HBase, Apache Cassandra ..

Cassandra - 읽고 쓰기가 매우 빠름

 

 

3) Document KEY/value Store

Document DB 가장 진보한 NoSQL Solution -> Sorting, Grouping, Join 가능 

여러 확장성 있는 DATA 저장 가능 - 주로 JSON 사용  

대표적인 예 : MongoDB, CouchDB

 

 

4) Full Text Search Engines

대표적인 예 : Apache Lucene, Apache Solr ..

 

 

5) Graph Databases

Column or Document 필요 없지만 각 노드 사이의 관계를 알아야 할 때 데이터들의 관계를 통해 특정 데이터를 가장 빠르게 추적해 내는, 소셜 네트워크 시 유용한 DB Solution 대표적인 예 : neo4j, FlockDB , TaoDB (facebook) 

 

 

 

 

No SQL 인기 순위 1위 - MongoDB2위 - Cassandra3위 - HBase4위 - Redis

 

 

 

 


 

 

RDBMS vs NoSQL 장점/ 단점 

 

RDBMS 

Relations modeling - 전형적으로 가용한 데이터 구조에 기반 - "What answers do I have?" 내가 가지고 있는 답이 무엇인가?- 데이터 모델 정의 후, 어플리케이션 맞는 쿼리 개발- RDBMS 모델링 기법 1) 저장하고자 하는 도메인 모델 분석2) 개체 간의 관계(Relationship) 식별3) 테이블 추출4) 테이블을 이용한 쿼리 구현 

 

RDBMS 장점 

- 이미 성숙한 범용적 , 고성능 기술 - 대부분의 경우 RDBMS사용하는 것이 가장 안정적 - 데이터의 일관성 보증 (트랜잭션) - 한번에 이뤄져야 하는 작업의 경우 데이터불일치 상황을 방지- 정규화를 전제로 하고 있기 때문에 업데이트 시 비용이 적다. (동일 컬럼은 동일 장소에 존재) - 데이터베이스 설계 시 이미 불필요한 중복이 삭제됨- 복잡한 형태의 쿼리도 가능 (Join 등) 

 

RDBMS 단점 

- 대량의 데이터 입력(신속하게 저장하고) 처리 시 한계 있다. 

- 데이블의 인덱스 생성이나 스키마 변경 시 (많은 오버헤드를 갖고 있는 경우 큰 리스크가 있다.) 

- 개발/운영 시 컬럼을 확정 짓기 어려운 경우 (스키마를 고정하기 쉽지 않은 경우에도 스키마 변경으로 인한 리스크 존재) 

* 스키마 : 데이터 구조와 데이터 타입, 관계 등을 정의한 세부 명세 

* 인덱스 : 데이터 검색을 빠르게 하기 위해 테이블마다 키값 기반 색인 작업 

 

 

 

 

NoSQL

NoSQL data modeling 

- 어플리케이션 특징적인 데이터 접근 패턴에 따라 모델링

- "What questions do I have?" 내가 가지고 있는 질문은 무엇인가?

- 어플리케이션의 필요한 쿼리와 성능을 정의한 이후, 요구 사항에 부합하도록 데이터 모델을 구성

- NoSQL 데이터 모델링 기법

1) 도메인 모델 분석

2) 쿼리 결과 도출

3) 테이블(데이터 저장 모델) 설계 

 

NoSQL modeling 특징

1) RDBMS modeling 보다 더 깊은 데이터 구조 및 접근 알고리즘에 대한 이해가 필요함2) NoSQL 쿼리가 실제 몇개의 물리 노드에 걸쳐서 수행되는지에 대한 이해가 있어야 제대로된 쿼리 디자인 가능3) NoSQL 디자인은 DB와 어플리케이션 뿐만 아니라 인프라(네트워크, 디스크)에 대한 디자인을 함께 해야 함 4) 대부분의 NoSQL DB는 인증이나 인가 체계가 없어서 보안에 매우 취약하기 때문에 별도의 보안 체계를 마련해야 함     ex. 방화벽, Reverse Proxy 등 

 

NoSQL 장점 

- 특정 용도로 특화되어 있다.  -> 각 NoSQL solution의 특징을 잘 알 필요가 있음- 데이터 분산에 용이 - 기본적으로 NoSQL 의 join 연산은 대부분 불가능 - 데이터 모델 자체가 독립적으로 설계되어 있어 데이터를 여러서버에 분산시키는 것이 용이함 - 데이터에 대한 캐시가 필요한 경우- 배열 형식의 데이터를 고속으로 처리할 필요가 있는 경우- 어쨌든 모든 데이터를 저장하고 싶은 경우 

 

NoSQL 단점 

- 각 solution 특징을 이해할 필요가 있음

- 아직 새로운 기술인 편이라 운영 노하우가 비교적 적은편

- 버그가 상대적으로 많이 있는편

- 업체마다 고유의 특색을 살린 NoSQL을 개발해 공개하는 경우가 많아 새로운 솔루션이 계속 출시됨 

 

 

 


 

 

 

  NoSQL 데이터 모델링 기법 정리  

 

Denormalization, 비정규화

"비정규화" = 데이터 중복 허용 

- 쿼리 프로레싱을 간단하게 하거나 최적화하기 위해서는 또는, 사용자의 데이터를 특정한 데이터 모델에 맞추기 위해서 같은 데이터를 여러 도큐먼트나 테이블에 복제하여 중복하는 것을 허용 

 

비정규화로 인한 Trade-off

- Query data volume or IO per query VS total data volume 

(쿼리당 I/O 또는 쿼리 데이터 사이즈↓↓  vs 전체 데이터 사이즈↑↑) - Processing complexity VS total data volume(쿼리 수행의 복잡도 VS 전체 데이터 사이즈

 

수평적 확장이 어려운 RDBMS와 다르게, 빅데이터 solutions 들은 데이터의 크기를 크게 받을 수 있는 데이터 시스템의 확장성이 매우 좋기 때문에 가능하다. 

 

 

 

 

 

 

 

[update중......] 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

References : https://www.youtube.com/watch?v=Dvi_TsBMFJo

 

반응형

'study' 카테고리의 다른 글

macOS 개발 환경 구축  (0) 2021.10.06
[Git Flow] git flow 사용법 (feat. 생활코딩)  (0) 2021.10.04
HTTP/0.9 HTTP/1.0 HTTP/1.1 HTTP/2 차이  (0) 2021.09.10
CPU vs GPU  (0) 2021.09.08
[블록체인] P2P란? Peer-to-Peer Network  (0) 2021.09.03