Skip to content

Latest commit

 

History

History
131 lines (80 loc) · 4.14 KB

101.Understanding_of_BigData_NoSQL.md

File metadata and controls

131 lines (80 loc) · 4.14 KB

Understanding of BigData and NoSQL

MongoDB 는 Document DB - JSON 기반의 Document 기반 데이터 관리

빅데이터 초리 속도 향상을 위해 JOIN을 지원하지 않음

Format

  • Long, Object, String, 32bit Integer, 64bit Integer, Object Id, javascript, Array, Boolean, Date, Timestamp, Symbol, ...
  • JSON { 'id' : '01', 'language' : 'java', ... , key : value}

Data Structure

Database > Collections > Extents > Data Records > Documents

RDBMS

확실한 규격 - 포맷이 있어서 데이터 간의 관계를 표현함

고객 고객거주아파트 아파트
고객번호 pk 고객번호 fk 아파트 동번호 pk
이름 아파트번호 fk 세대수
주소 관리주체
전화번호

NoSQL

Document - column의 개념이 없음 - document 하나가 하나의 Row(Recode)

고객번호 이름 주소
홍길동 서울시 구로
아파트 동번호 세대 수
302동 1123세대

Pros and Cons

Pros

  • Schema-less
    • 다양한 형태의 데이터 저장 가능 > 데이터 모델의 유연한 변화 가능
  • R / W 성능 우수
  • Scaled Out 구조
    • 대용량 데이터 저장 가능
    • 장비 확장이 간단함
  • 사용 방법이 쉽고, 개발이 편리함
  • 데이터를 신속하게 처리 가능
  • 시스템 확장 및 장애 대응 가능

Cons

  • 데이터 업데이트 중 장애 발생 시, 데이터 손실 가능
  • 많은 인덱스 사용 시, 충분한 메모리 확보가 필요
  • 데이터 공간 소모가 RDBMS에 비해 많음 - 비효율적인 key 중복 입력이 존재
  • 복잡한 JOIN 사용 시 성능 제약이 존재
  • Transactions 지원이 RDBMS 대비 미약
  • 제공되는 MapReduce 작업이 Hadoop에 비해 성능이 떨어짐
  • 분산 시스템이기 때문에 데이터 유실 가능성 존재

주요기능

Query

  1. Create
  2. Read
  3. Update
  4. Delete

Index

  • 다수 인덱스 설정 가능
  • 복합 인덱스 지원
  • 빠른 검색 지원
  • 도큐먼트 저장 데이터와 중복 저장 문제
  • 메모리가 부족한 시스템에서는 검색 속도 저하 문제

복제

  • Master - Slave 구조 구성
  • 데이터 복사본을 Slave에 배치
  • Master 장애에 따른 데이터 손실 없이 Slave 데이터 사용 가능
  • Master 장애 발생 시, Slave에서 Master 선출 가능 - 중단 없는 서비스 가능
    • 복제 시스템 사이에 마스터 장애 발생을 능동적으로 발생하고 스스로 처리함 - 운영자, 개발자의 개입 없이 가능
  • 데이터 손실을 최소화하기 위한 저널링 지원 - MongoDB의 데이터 변화에 다른 모든 연산에 대한 로그 적재

샤딩

  • 대용량 데이터 저장 방법
    • 소프트웨어 적으로 데이터베이스를 분산시켜 처리
  • 방식
    • 디비 저장 테이블을 테이블 단위로 분리
    • 디비 저장 테이블 자체를 분할
  • 전통적 분할 3계층 구조 지원
    • 응용 계층 - 중개자를 통해 모든 데이터 입출력 처리의 제약사항 존재
    • 중개자 계층, 데이터 계층 (실 저장 공간 - Shards)
    • 응용 계층은 추상화된 한 개의 데이터베이스가 존재하는 것처럼 운용
    • 전체적으로 데이터가 얼마나 많은 서버에 분산되어있는지 알 필요가 없음

MapReduce

  • 대용량 데이터를 안전하고 빠르게 처리하는 방법

    • 데이터 분산하여 연산하고 다시 합치는 기술
    • 맵과 리듀스 단계로 나누어 처리하며, 사용자 임의 코딩이 가능
  • 한대 이상의 하드웨어를 활용한 분산 프로그래밍 모델

    • 분산을 통해 분할된 조각으로 처리한 다음, 다시 모아서 훨씬 짧은 시간에 계산을 완료
  • 대용량 파일에 대한 로그 분석, 색인 구축 검색 등에 활용

  • 일괄 처리 방식으로 전체 데이터셋을 분석할 필요가 있는 문제에 적