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 : 데이터 쓰기 시간, 값의 버전
- Customer와 Sales 두 개의 컬럼 패밀리
- Customer 컬럼 패밀리 : Name, City 2개의 컬럼
- Sales 컬럼 패밀리 : Product, Amount 2개의 컬럼
- Row : Row Key, Customer CF, Sales CF로 구성된다.
HBase 구조
- HMaster: RS 모니터링, 배정, Failover, 메타데이터를 관리한다..
- Zookeeper: RS 상태 추적
- RegionServer (RS): Region 별 데이터 제공 및 관리한다.
HBase 확장성
- Region
- HBase에서 수평확장(Scale-in/out)의 기본단위이다.
- 함께 저장되는 테이블 데이터의 부분집합이다.
- Region 분할
- 최초 테이블은 오직 한개의 Region에 저장한다,.
- Region에 많은 row들이 추가되어 크기가 커지면 Region을 반으로 나눠서 저장한다.
'4학년 공부 과정 > 분산 데이터베이스' 카테고리의 다른 글
하둡(Hadoop) - 주키퍼(Zookeeper) (0) | 2023.05.31 |
---|---|
하둡(Hadoop) - HBase - 2 (1) | 2023.05.24 |
하둡(Hadoop) - 네임노드, 세컨더리 네임노드, 데이터노드 및 장애대응 (0) | 2023.04.28 |
하둡(Hadoop) - 하둡 분산 파일시스템(HDFS) (0) | 2023.03.12 |
하둡(Hadoop) - 맵 리듀스 (0) | 2023.03.11 |