Vertica Architecture
- 대용량 데이터 분석위한 column기반의 RDBMS
- Linux기반
- Table은 Logical상에만 존재 Physical에는 Projection 형태로 존재
- Vertica에서 Table = Anchor Table
Vertica 특징
- Columnar Orientation
- row 단위로 저장하는 DB는 데이터가 Table에 저장 Vertica는 데이터를 Column단위로 저장/관리
- Vertica는 쿼리 수행시 필요한 칼럼만 읽어 디스크I/O 감소하여 쿼리 성능과 응답속도가 빠름
- row 단위 DB는 쿼리 수행시 전체 칼럼을 읽어 수행
- 다수의 칼럼을 조회하는 상황에는 작업비용이 커질 가능성도 존재
- Column기반으로 저장하여 Index 불필요
- 모든 Column 개별적으로 다뤄지며 Column별 연속적으로 저장
- Automatic Database Design
- DBA의 부담 최소화위해 DatabaseDesigner(DBD) 제공
- DBD 사용하려면 샘플 데이터set, 자주 사용되는 쿼리set 필요
- 제공한 데이터set, 쿼리 기반 최적의 쿼리 성능을 위한 물리적 디자인(=물리적 스키마 구조) 갖는 projection 생성 DDL문 제
- Advanced Data Encoding
- 데이터를 압축된 형식으로 저장하여 스토리지 공간 줄임
- Disk에 저장 할 데이터를 최대한 encoding 후 압축하여 전체 스토리지 공간 절약
- 디스크 I/O비용 감소
- 데이터 인코딩 방법은 데이터type(기본), 데이터cardinality, 데이터 정렬 여부에 따라 결정(변경가능)
- 데이터 처리는 필요한 컬럼만 가지고 와서 압축만 해제한 후 인코딩 된 상태로 수행
- HA(High Availability)
- Multi-node cluster 구성(최소 3node)
- 저장 데이터의 이중화 기
- 서비스 다운타임 최소화 목적
- 데이터 복제본이 인접노드에 저장되고 있어 특정 노드에 이상이 발생해도 서비스 지속 가능
- 용량 확장이나 노드 추가시나 유지보수위한 노드 제거시 서비스 중단없이 작업 가능
- K-Safety 기능과 연
- MPP(Massively Parallel Processing)
- 별도의 Master node 없음
- 모든 Node가 동일한 역할을 수행하는 Pure-MPP구조
- MPP = Master Node 존재
- Pure MPP = Master Node X
-
모든 Node 동일한 역할 수행
- 선형적으로 scale-out 따른 성능 or 많은 사용자 지원 가능
- Node가 각자의 메모리, CPU, 디스크를 가지고 병렬처리(Projection 분산하거나 복제 저장)
- Pure-MPP는 모든 Node에 Catalog가 존재하여 동기화 필요
- Vertica는 분산처리 방법으로 Hash값 사용
- Skew(데이터 불공평 현상) 발생 가능성 존재
출처 : https://x2wizard.github.io/vertica_architecture/Vertica_architecture_1010/#vertica-%ED%8A%B9%EC%A7%95
- Optimized Prejections
- Projection = 최적화된 형식과 구조로 데이터를 저장
- Projection을 사용하여 인덱스 불필요
- Write Once
- 한번 작성한 Data에 대하여 변경 불가
- Insert : 제일 아래행으로 추가
- Delete : 대상행 논리삭제, 논리 삭제된 데이터는 정기적으로 물리 삭제
- Update
- 대상 행 직접 Update 하지 않고 새로운 행 추가
- 갱신 대상 행 논리 삭제 후 정기적으로 물리 삭