본문 바로가기
2021-1/RDA

NoSQL | 이해하기

by 이망고_ 2021. 10. 5.
참고문헌 : 빅 데이터 시대를 위한 NoSQL 핵심 가이드 (Tatsuya Sasaki 저, 로드북)

 

프로젝트에서 사용하는 데이터베이스가 MongDB 로 변환되면서 NoSQL 형식의 MongoDB 뿐 아니라 NoSQL 데이터베이스 종류를 공부하고자 합니다. 포스팅은 위 책을 참고하여 진행하였습니다.

데이터베이스의 분류

  •  계층형 데이터베이스 : 단순한 트리모형, 상위-하위 개념, 중복 현상이 문제가 됨
  •  네트워크형 데이터베이스 : 데이터 중복 현상 제거, 관계 복잡하다는 문제를 가짐
  •  관계형 데이터베이스 : 모든 데이터를 행과 열의 이차원 표 형식으로 만들어 이해하기가 쉬움

 

관계형 데이터베이스의 장점

  •  범용적이며 고성능
  •  데이터의 알관성 보장( 트랜잭션 )
  •  정규화를 전제로 하고 있어 갱신 시 비용 감소
  •  JOIN 이나 복잡한 검색 조건으로 검색 가능
  •  참고자료나 노하우가 많이 있음

 

* 정규화 : 데이터베이스 설계 시 불필요한 중복 줄이는  것

* JOIN : 서로 다른 테이블에서 데이터를 가져와서 쿼리를 수행, 결과를 출력하는 것

 

관계형 데이터베이스의 약점

  •  대량의 데이터 입력 처리
  •  갱신이 발생한 테이블의 ㅇ니덱스 생성이나 스키마 변경
  •  컬럼을 확정하기 어려운 경우의 이용
  •  단순히 빨리 결과를 내놓아야 할 때

* 인덱스 : 데이터 검색을 빠르게 하기 위해 테이블마다 키값을 기반으로 만들어지는 색인

* 스키마 : 데이터베이스 구조와 데이터 타입, 관계 등을 정의한 명세로 데이터 딕셔너리에 저장되며 메타 데이터라고도 불림

 


NoSQL 데이터베이스

  •  데이터 분산이 용이
  •  스케일 업과 스케일 아웃
  •  데이터를 가볍게 캐시Cashe하고 싶을 때
  •  배열 형식의 데이터를 고속으로 처리하고 싶을 때
  •  전부 보존하고 싶을 때

 

NoSQL 데이터베이스의 종류

휘발성 key-value형 스토어 영속성 key-value형 스토어 문서형 데이터베이스 컬럼형 데이터베이스
memcached Tokyo Tyrant MongoDB Cassandra
(Redis) Flare CouchDB HBase
  ROMA   Hyper Table
  (Redis)    

key-value형 스토어

데이터 유지 방식

- 휘발성 : memcached , 데이터가 사라질 가능성이 있다

  • 메모리에 데이터 보존
  • 굉장히 빠른 데이터의 입출력이 가능
  • 데이터가 사라질 가능성이 있음

- 영속성 : Tokyo Tyrant, Flare, ROMA : 데이터가 보존된다 (메모리에 데이터를 보관하는 것이 아니라, 디스크에 데이터 보관)

  • 메모리, 디스크 양쪽에 데이터 보관
  • 고속으로 데이터 입출력 가능
  • 데이터 중 디스크에 입력된 부분은 사라지지 않음 ( 복구 가능)
  • 배열 형식의 데이터 처리에 강함

문서형 데이터베이스 : MongoDB, CouchDB

  • 스키마를 정의할 필요가 없음(Schemaless)
  • 복잡한 검색 조건 이용 가능

컬럼형 데이터베이스 : Cassandra, HBase, HyperTable

ROW형 데이터베이스와 컬럼형 데이터베이스

  •  일반적으로 관계형 데이터 베이스는 행 단위로 데이터 관리 : 데이터 검색과 같은 행 단위 데이터 읽기에 강함
  •  관계형 데이터를 Row형 데이터베이스라고 부르기도 함
  •  컬럼형 데이터 베이스 : 컬럼 단위로 데이터 관리, 컬럼 단위로 데이터를 읽고 쓰는 처리에 강함
데이터형 데이터의 수납 강점 특징
Row형 데이터베이스 행 단위 적은 수의 행의 출력, 갱신  
컬럼형 데이터베이스 열 단위 대량의 행에 해당되는 적은 수의 열의 출력, 모든 행에 대한 특정 열의 일괄 갱신 강력한 확장성( 특히 쓰기)
사용이 많이 어려움