4학년 공부 과정/분산 데이터베이스

하둡(Hadoop) - NoSQL Database, HBase - 1

환성 2023. 5. 24. 14:09
728x90

NOSQL

💡 정의 
"Not only SQL"로, SQL만을 사용하지 않는 데이터베이스 관리 시스템(DBMS)을 지칭하는 단어
(비관계형 데이터베이스)
  • 기존의 관계형 DBMS의 ACID(Atomic, Consistency, Integrity, Duarabity) 특성을 제공하지 않지만 뛰어난 확장성, 성능 등의 특성을 보유한 비관계형, 분산 데이터 베이스들을 NoSQL로 표현한다
  • 2000년대 후반 부터 SNS 등의 비정형 데이터를 처리하는 용도로 크게 성장중이다,
  • 초고용량 데이터 처리 등 성능에 특화된 비관계형 데이터 저장소에 비정형 데이터를 저장하기 위한 분산 저장 시스템이다.
  • 응용분야로는 소셜미디어, 웹 링크, 유저 프로필, 마케팅, 트위터, 이메일, 지도에도 사용된다.

 

종류

  • Redis, Cassandra, HBase, MongoDB

 

분류

  • Key-value 모델
    • DynamoDB : Amazon
    • Redis : 메인 메모리에 모든 데이터를 캐싱한다. Master-Slave replication 기반의 고가용성 제공, 캐시를 디스크에 백업하는 방식으로 데이터 영속성을 제공한다. 

 

  • Graph 모델
    • Neo4J, GraphBase

 

  • Document 모델
    • MongoDB, CouchDB

 

  • Column 모델
    • BigTable : Google의 빅데이터를 위한 분산 저장 시스템(Gmail의 저장소로 활용)
    • Cassandra : Facebook의 분산 저장 시스템
    • Apache Hbase : BigTable과 유사한 오픈 소스 NoSQL, HDFS를 데이터 저장소로 활용

 

  • Multi 모델
    • OrientDB : Graph, Relational model, key-value model

장점

1. 탄력적인 확장성

  • RDBMS 확장을 위해서 대용량 저장소, 대용량 서버가 필요하다.
  • NoSQL은 여러 호스트에 데이터를 원활히 분산한다.

 

2. 빅데이터

  • RDBMS의 경우 데이터 볼륨의 용량 및 제약이 있다.
  • NoSQL은 빅데이터에 적합하다

 

3. 유연성 있는 모델

  • RDBMS의 경우 스키마에 대한 변경은 신중히 해야하고 관리가 어렵다.
  • NoSQL의 경우  데이터베이스 스키마 변경을 하나로 관리할 필요가 없고 비정형 스키마를 해결하기 위해 작성된 애플리케이션을 사용한다.

 

4. 경제성

  • RDMS의 경우 비싼 서버에 의존하여 데이터를 관리한다.
  • 하지만 NoSQL의 경우 데이터 및 트랜잭션 볼륨을 관리하기 이해 값싼 상용 서버 클러스터를 사용한다
  • 기가바이트 당 비용이나 전송 비용은 NoSQL이 RDBMS보다 훨씬 싸다.

 

단점

1. 지원

  • RDBMS는 고객에게 높은 수준의 지원을 제공한다(평판이 높음)
  • NoSQL은 대중적으로 사용되지는 않고 평판이 확립되지 않았다.

 

2. 완전성

  • RDMS은 안정적이고 최신 버전이 많이 나온다. 
  • NoSQL의 경우 여전히 기본 기능 세트를 구현한다(많은 버전이 나오지 않았다)

 

3. 관리

  • RDBMS 관리자 역할이 잘 정의되어 있다.
  • NoSQL은 관리자가 필요하지 않지만 유지 관리에 노력이 필요하다.

 

4. 전문성 부족

  • RDBMS는 전문적 인력이 많고 개발자들 또한 수준이 높다.
  • NoSQL은 전문적 인력이 부족하다

 

HBase

  • 구글의 BigTable을 기반으로 발전한 NoSQL 오픈 소스다
  • HDFS 위에서 동작하는 칼럼 기반 NoSQL 데이터 베이스로 실시간 읽기/쓰기 기능을 제공한다.
  • Table : Row들의 집합
  • Row Key : 사전순으로 내림차순 정렬되기 떄문에 Row Key의 설계는 상당히 중요하다
  • Column Family(CF) : 컬럼들의 그룹
  • Cell : Row Key, Column, Version이 명시된 튜플
  • Timestamp : 데이터 쓰기 시간, 값의 버전

HBase 구조

 

HBase 테이블의 예시

  • Customer와 Sales 두 개의 컬럼 패밀리
  • Customer 컬럼 패밀리 : Name, City 2개의 컬럼
  • Sales 컬럼 패밀리 : Product, Amount 2개의 컬럼
  • Row : Row Key, Customer CF, Sales CF로 구성된다.

 

 

HBase 구조

HBase 전체적인 구조

 

  • HMaster: RS 모니터링, 배정, Failover, 메타데이터를 관리한다..
  • Zookeeper: RS 상태 추적
  • RegionServer (RS): Region 별 데이터 제공 및 관리한다.

 

HBase 확장성

HBase의 확장성을 설명

  • Region
    • HBase에서 수평확장(Scale-in/out)의 기본단위이다.
    • 함께 저장되는 테이블 데이터의 부분집합이다.

 

  • Region 분할
    • 최초 테이블은 오직 한개의 Region에 저장한다,.
    • Region에 많은 row들이 추가되어 크기가 커지면 Region을 반으로 나눠서 저장한다.