Flexible transactional scale for the connected world.
Introduction & Overview
Clustrix History
Who Do We Serve?
NEW WORLD “INTERNET SCALE” APPLICATIONS
ClustrixDB란 무엇인가?
What does ClustrixDB do?
PROPRIETARY AND CONFIDENTIAL
Applications
MySQL (또는 SQL) 애플리케이션을MySQL이 더 이상 지원 못할때
그리고 애플리케이션까지 수정하면서 샤딩또는 복제 하기 싫을때
ClustrixDB는 여러 서버를 결합하여.강력한 단일 데이터베이스 서버로 만든다
애플리케이션에서는계속 단일 MySQL로 보입니다.
샤딩 또는 복제 필요 없음
TPS가 많다커넥션들이 많다CPU 사용이 크다
Load Balancer
Applications
MySQL 확장에 대한 일반적인 접근법
PROPRIETARY AND CONFIDENTIAL7
더큰 서버
설치 용이성 App 변경 없음
X 제한된 데이터이전X HA 불가
읽기 슬래이브
Writes
Reads
Reads
읽기 확장성 설치 용이성
X 쓰기 확장성 제약X 슬래이브 지연
app needs to be aware
X App 변경필요
(읽기/쓰기 Node 분할주의)
X No HADR을 추가하지만페일 오버가 필요함
X 데이터 깨지기 쉬움
(높은 유지보수 부담)
동기방식 복제 클러스터Galera | Percona XtraDB Cluster | MariaDB Galera Cluster
HA 추가 읽기 확장성
X 쓰기 확장성 없음(Writes are multiplied)
X 쓰기속도 느림X 노드 확장 제약
(전체 데이터 각 node에 복제)
데이터베이스 샤딩
읽기확장성 쓰기확장성 저장 확장성
X App 재설계 필요또는 많은 부분 변경
X HA 구성 불가multiplies the failure points
X DB 관리 오버헤드i.e. 지속적 데이터 백업
ClustrixDB의 확장
PROPRIETARY AND CONFIDENTIAL
MySQL를복제(Replication) 또는샤딩(Sharding) 없이확장
읽기 확장성쓰기 확장성저장 확장성
App 변경 없음자동 HA
쉬운설치 (Easy to deploy)
Load Balancer
Applications
ClustrixDB: 트랜잭션 처리에 최적화 됨(OLTP)
PROPRIETARY AND CONFIDENTIAL9
데이터웨어하우스:Netezza, Vertica, Teradata,
Greenplum, Redshift
다목적:Oracle, Microsoft SQL Server
MySQL, PostgreSQL
분석Analytical
트랜잭션Transaction
ClustrixDB: Scale-Out, Fault-tolerant, MySQL-Compatible
ClustrixDB Overview
10
ClustrixDB
ACID Compliant
Transactions & Joins
Optimized for OLTP
Built-In Fault Tolerance
Flex-Up and Flex-Down
Minimal DB Admin
또한 데이터센터에서도잘 동작함
클라우드에서실행하도록 설계
Flex Licensing 로 비즈니스 민첩성 확보
• ClustrixDB has:
온라인상태에서 클러스터 노드 추가/제거
임시 추가 노드가 필요한 계절 비지니스나 임시 작업 부하에 필요한라이센스 제공
• Flex 라이센스
– 기본 클러스터를 위한 연간 라이센스• 예: 3-노드 연간
– 월간 Flex 라이센스는 계절적 수요를 충족합니다• 예: 11월 & 12월에 사용할 2개의 노드 추가
그리고 1 월에는 1 여분의 노드로 내림
PROPRIETARY AND CONFIDENTIAL11
ClustrixDB
A M J J A S O N D J F M
ClustrixDB Core Components
ClustrixDB 개요
완전히 분산된 일관적 클러스터
• 완벽한 일관성과 ACID 호환성 제공
– Transactions 지원
– Joins 지원
– OLTP 최적화
– Reporting SQL 도 지원
• 모든 노드들이 동일함(no “special” node)
• 모든 서버들이 읽고 쓴다
• 모든 서버에서 클라이언트 연결을 제공한다.
• 모든 노드에 테이블/인덱스 분산됨– 완벽한 자동분산, 재분배(재조정), 재보호 제공
ClustrixDB Overview13
개별
네트
워크
Priv
ate
Ne
two
rk
ClustrixDB on commodity/cloud servers
HW or SW Load
Balancer
SQL-based
Applications
High Concurrency
높은 동시성
Custom:
PHP, Java, Ruby, etc
Packaged:
Magento, etc
ClustrixDB 디자인
ClustrixDB Overview14
Shared Nothing Architecture
각 노드에는:
• Query Planner & Compiler: receives SQL, and
parses, plans & compiles the query for execution
• Database Engine: executes the query. All
nodes can perform all database operations (no
leader or storage-only nodes)
• 데이터 맵(Data Map: 모든 노드는 현재 순서복제와 위치에 대해 계산 할 수 있다.
• 데이터: 테이블 슬라이스(Data: Table Slices):
모든 테이블은 (default: replicas=2) 재조정프로그램에 의해 각 노드에 균등하게 자동재분배된다.
ClustrixDB
Compiler Map
Engine Data
Compiler Map
Engine Data
Compiler Map
Engine Data
Data Distribution
PROPRIETARY & CONFIDENTIAL
S1 S2S2
S3S3
S4S4
S5S5
지능적데이터분배
• 테이블 자동 분할
• 모든 조각데이터는 다른노드에 복제가 있음
– 조각데이터는 자동 분배, 자동 보호됨
ClustrixDB Overview16
S1
ClustrixDB
Billi
on
s o
f R
ow
s
Database
Tables
S1
S2
S3
S3
S4
S4
S5
노드 추가 – Flex 업
• 쉽고 간단한 Flex 업 & Flex 다운
– 서비스 중단 최소화
• 데이터는 자동으로 클러스터에 걸쳐재조정
– 테이블은 읽고/쓸수 있게 온라인 상태
• 모든 서버에서 읽고 쓰기 처리
– Flex 업후에 작업량은 모든서버에동일하게 분산
ClustrixDB Overview17
S1
ClustrixDB
S2
S5
S2
S5
S1
S2
S3
S3
S4
S4
S5
노드 손실시 – 자동 결함 복구
• ClustrixDB 는 손실된 노드를 검출
– 시스템 자동 재보호
– 데이타 자동 재분배
• 손상된 노드상의 데이터 신속 재 보호
– 데이터 재 보호 중에도 테이블의 읽고쓰기가 가능함
• 자동화된 자가 수정
– 클러스터가 자동 재 방지기능후에완벽하게 보호되어 작동함
ClustrixDB Overview18
S1
ClustrixDB
S2
S5
S2
S5
ClustrixDB 리밸란서(Rebalancer): 복잡함을 단순하게
Q: 클러스터 환경에서 데이터가 잘 분산되도록하려면 어떻게해야합니까?
A: Clustrix 리밸란서가 처리 하도록 한다
리밸란서는 자동으로:
• 초기 데이터: 노드들에 일률적으로 조각데이터들을 분배
• 데이터 증가: 큰조각 데이터를 작은 조각으로 분할
• Flex-업/Flex-다운: 노드 추가/삭제에 따리 조각 데이터 재분배
• 노드 손상시: 손상 노드의 조각데이터 복제를 통한 손실노드 데이터 재보호
• 데이터 몰림 현상 (Skewed Data): 데이터 노드에 걸처 균일하게 재배포
• 자주 사용되는 데이터조각 재분배: 빈번한 요청이 있는 조각데이터를 찾아 노드간재분배
…while the DB stays open for reads & writesPatent 8,543,538 Patent 9,477,741Patent 8,554,726 Patent 9,626,422Patent 9,348,883
• ClustrixDB는 기본적으로 데이터 2중화를 제공– 모든 데이타행은 2개의 복사본을 가짐
– 최상의 성능에서 우수한 보호 기능을 제공
• 고객은 추가보호를 위해 중복을 늘릴 수 있습니다.
– 쓰기 집약적인 작업부하에 대해 중간 정도의 성능 영향
– 읽기 집약적인 작업부하에 대해 최소/무시할 수 있는 성능 영향
• Example:
– 9 노드 클러스터에서 4노드 동시 장애를 허용• With ClustrixDB set to max_failures = 4
• 데이터 손실 없음(전체 일관성 유지)
• 실패 후 데이타베이스는 읽기/쓰기 가능
nResiliency – Configurable Redundancy
PROPRIETARY & CONFIDENTIAL
• 최상의 nResliency 에 구축
– 데이터 센터 오류로부터 완벽한 보호
• ClustrixDB 9 노드는 여러 영역에확장 될 수 있습니다.
– A Metro Region
– Or an AWS Region (i.e. US East)
• 복잡한 복제설정 또는 유지관리가없음
• 모든 노드는 100% ACID를 준수
– 하나의 영역 오류가 발생한 경우에도클러스터가 완전히 일관성을유지합니다.
Metro Clusters – Multi-Zone Availability
PROPRIETARY & CONFIDENTIAL
< 2 ms
< 2 ms
< 2 ms
New in ClustrixDB 9!
Query Execution Concept
쿼리 처리 모델
ClustrixDB Overview23
Parse Plan Compile
Session
SQL-based
Applications
UPDATE users
SET online = 1
WHERE id = 8797;
HW or SW Load
Balancer
ID: 8797 | … | ONLINE:0
Fragment
• 로드 밸런서는 모든 노드로 DB 연결.
• 모든 노드에 세션이 설정.
• 세션 제어 쿼리 실행
– SQL파싱
– 실행계획 생성
– 바이너리 조각으로 컴파일
– 레코드조각 위치탐색
– 바이너리조각 전송
– 트랜잭션 완료
쿼리 처리 모델
ClustrixDB Overview24
ID: 8797 | … | ONLINE:0
Session
SQL-based
Applications
UPDATE users
SET online = 1
WHERE id = 8797;
HW or SW Load
Balancer
ID: 8797 | … | ONLINE:1
Ack
Ack
• 로드 밸런서를 통해 모든 노드의 DB
연결.
• 모든 노드에 세션 설정.
• 세션 제어 쿼리 실행
– SQL파싱
– 실행계획 생성
– 바이너리 조각으로 컴파일
– 레코드조각 위치탐색
– 바이너리조각 전송
– 트랜잭션 완료
Online Schema Change
PROPRIETARY & CONFIDENTIAL
Table
온라인 스키마 변경
• ALTER TABLE 조작중에 읽고 쓰기 가능
– 컬럼(Column)을 더하거나 뺄수 있음
– 컬럼(Column)이름 변경
– 데이터타입 변경
– 인텍스 생성
• Process:
– 대기열이 만들어져 변경 사항을 추적함
– 테이블 복제가 만들어짐
– 동기화까지 대기열안의 변경 사항을새로운 테이블에 적용함
– 트렌젝션 테이블 변경 (Atomic Flip)
PROPRIETARY AND CONFIDENTIAL26
Table
QueueQueueQueue
MYTABLE __building_MYTABLE
Atomic Flip
Reads & Writes
ALTER TABLE mytable ADD (foo int);
Table
온라인 스키마 변경
• ALTER TABLE 조작중에 읽고 쓰기 가능
– 컬럼(Column)을 더하거나 뺄수 있음
– 컬럼(Column)이름 변경
– 데이터타입 변경
– 인텍스 생성
• Process:
– 대기열이 만들어져 변경 사항을 추적함
– 테이블 복제가 만들어짐
– 동기화까지 대기열안의 변경 사항을새로운 테이블에 적용함
– 트렌젝션 테이블 변경 (Atomic Flip)
PROPRIETARY AND CONFIDENTIAL27
Table
MYTABLE__building_MYTABLE
Atomic Flip
Reads & Writes
ALTER TABLE mytable ADD (foo int);
Performance Benchmarks
PROPRIETARY & CONFIDENTIAL 29
AWS Cloud Benchmarks
ClustrixDB scalability on EC2 instances
AWS: Sysbench OLTP 90:10 Mix
PROPRIETARY AND CONFIDENTIAL30
• 90% Reads + 10% Writes
– Very typical workload mix
• 1 TPS = 10 SQL/sec
– 9 SELECT + 1 UPDATE
• Shows scaling TPS and connections byadding servers:
– From 3 nodes to 64 nodes
– From 8 connections to 4,096 connections
• No application changes
• No downtime to dynamically scale
1,250,000 SQL/sec@ 20ms
ClustrixDB 3 = 3-nodes ClustrixDB 64 = 64-nodes
AWS: ClustrixDB vs. Aurora vs. RDS MySQL
PROPRIETARY AND CONFIDENTIAL31
• 90% Reads + 10% Writes– Very typical workload mix
• 1 TPS = 10 SQL/sec– 9 SELECT + 1 UPDATE
• ClustrixDB produces equivalent performance for less:
– Slightly lower TPS with fewer resources
• 32 vs 24 cores• 32% cheaper
• Built-in High Availability– Aurora is >30% more expensive with hot
backup server
• Higher performance at same price– 32 cores each
– ~$71K annual
MySQL RDS(32-cores)
largest
Aurora(32-cores)
largest
20ms
ClustrixDB(24-cores)3-nodes
ClustrixDB(32-cores)4-nodes
AWS: ClustrixDB (up to 64-nodes) vs. Aurora/MySQL
PROPRIETARY AND CONFIDENTIAL32
MySQL RDS & Aurora stop at 32-cores
– ClustrixDB continues to scale TPS by
adding servers
MySQL(largest)
Aurora(largest)
ClustrixDB
Scaling is transparent to the application
– Elastic scaling, no app changes, no downtime, no Sharding or Replication
– All instances for READ and WRITE
AWS Benchmark Details
PROPRIETARY AND CONFIDENTIAL33
• Dataset 40M records
• sysbench 0.4.12
– 90:10 = 10 operations (1 update, 9 selects)
– PointSelect = 100% reads
• ClustrixDB
– Version 8.0.2 (GA Spring 2017)
– AWS i2.2xlarge instances & i3.2xlarge instances• 8 cores, 61GB RAM
• 2x800GB SSD (i2), 1x1.9TB NVMe SSD (i3)
• Aurora
– Latest instances db.r3.8xlarge• 32 cores, 244GB
PROPRIETARY & CONFIDENTIAL 34
Datacenter Benchmarks
ClustrixDB scalability on physical servers
Datacenter: Sysbench OLTP 90:10 Mix
PROPRIETARY AND CONFIDENTIAL35
Scaling TPS and connections
by adding servers:
• 90% Reads + 10% Writes
– Very typical workload mix
• 1 TPS = 10 SQL/sec
– 9 SELECT + 1 UPDATE
32 nodes delivers
3,500,000+ SQL/sec
3,500,000+ SQL/sec32-nodes (640 cores)
Datacenter Benchmark Details
PROPRIETARY AND CONFIDENTIAL36
• Dataset 40M records
• sysbench 0.4.12
– Test 1: 90:10 = 10 operations (1 update, 9 selects)
– Test 2: PointSelect = 100% reads
• ClustrixDB
– Version 9.0
• Bare metal servers
– Linux CentOS 7
– 20 cores (with Hyperthreading)
– 128GB memory
– 1x 1.2 TB NVMe SSD
– 10Gbit Ethernet
PROPRIETARY & CONFIDENTIAL 37
NoSQL Benchmarks
ClustrixDB scalability of Key-Value Store (KVS) workloads
YCSB: 100% Reads (workloadc)
PROPRIETARY AND CONFIDENTIAL38
Scaling OPS and connections by adding servers:
o More hardware (servers or memory) delivers goal
o Clusters Types:
– ClustrixDB 4
• 4 servers
• 80 cores
– ClustrixDB 16
• 16 servers
• 320 cores
– Etc …
Able to meet read throughput goals regardless of record size
8-nodes900,000+ OPS
@ 1ms
8-nodes850,000+ OPS
@ 1ms
8-nodes400,000+ OPS
@ 1ms
YCSB: 95% Reads, 5% Write (workloadb)
PROPRIETARY AND CONFIDENTIAL39
Scaling OPS and connections by adding servers:
o More hardware (servers or memory) delivers goal
o Clusters Types:
– ClustrixDB 4
• 4 servers
• 80 cores
– ClustrixDB 16
• 16 servers
• 320 cores
– Etc …
Able to meet read throughput goals regardless of record size
8-nodes800,000+ OPS
@ 1ms
8-nodes700,000+
OPS @ 1ms
8-nodes400,000+
OPS @ 1ms
YCSB: 50% Reads, 50% Write (workloada)
PROPRIETARY AND CONFIDENTIAL40
Scaling OPS and connections by adding servers:
o More hardware (servers or memory) delivers goal
o Clusters Types:
– ClustrixDB 4
• 4 servers
• 80 cores
– ClustrixDB 16
• 16 servers
• 320 cores
– Etc …
Able to meet read throughput goals regardless of record size
16-nodes500,000+
OPS @ 1ms
16-nodes575,000+
OPS @ 1ms
16-nodes375,000+
OPS @ 1ms
NoSQL Benchmark Details
PROPRIETARY AND CONFIDENTIAL41
• YCSB 0.12.0– Record sizes: 1KB, 4KB, 10KB
– Workload a: 50% reads, 50% writes
– Workload b: 95% reads, 5% writes
– Workload c: 100% reads
– https://github.com/brianfrankcooper/YCSB/wiki
• ClustrixDB– Version 9.0
• Bare metal servers– Linux CentOS 7.4
– 20 cores• 20 physical, 20 hyper-threaded• Intel® Xeon® E5-2630 v4 @ 2.20GHz
– 128GB memory
– 1x 1.2 TB NVMe/PCIe Intel DC P3520 SSD
– 10Gbit Ethernet
Note: In the NoSQL world, an operations is usually a simple PUT or GET of data from a key-value store.
Because ClustrixDB is a SQL database, we will use the corresponding SQL SELECT and UPDATE syntax.
백업, 복제 및 관리
백업, 복제및재해복구
ClustrixDB Overview43
비동기식멀티포인트복제
ClustrixDB
병렬 백업(최대 10 배빠른)
모든 클라우드, 모든 데이터 센터, 어디서나 복제
ClustrixGUI: 성능 모니터링, 진단 및 Flex
PROPRIETARY AND CONFIDENTIAL44
Cluster Health Dashboard
Visually Compare Workloads
ClustrixDB Additional New Features
ClustrixDB 8.0 – 인메모리 테이블(In-Memory Tables)
• 높은 동시성 쓰기를 위해 설계된 특수 테이블 컨테이너– 일반 테이블과 동일한 데이터 형식 지원
– 일반 테이블과의 조인(Joins) 지원
– 일관성 읽기(즉 MVCC)
– 데이터 손실없이 노드 장애를 해결합니다.
• 다음과 같은 시나리오에 이상적입니다.
– 높은 동시성, 쓰기 집약적 인 트랜잭션
– 필터링되거나 집계해야 하는…
– …그리고 마침내 일반 테이블에 지속
– 예: • 센서 데이터 수집• 로그 수집• 쓰기 집약적 배치 처리
PROPRIETARY AND CONFIDENTIAL46
• High Availability– Multi-Zone Support
• Single cluster stretched across multiple zones
• Modern Data– JSON support
• Native JSON data type• Common JSON functions• Attribute indexing
– Generated (virtual) columns• Calculated (aka derived)
table columns
– Microseconds precision for DATETIME and TIMESTAMP
• Facilitates IoT and Event-based data
Clustrix 9 – New Features
PROPRIETARY & CONFIDENTIAL
o Cloud Platform– CentOS 7.4+
– Qualification on AWS I3 instances
o Supportability– Invisible Indexes
• Hide index from planner to see side-effects beforedropping the index
Q/A Time
PROPRIETARY AND CONFIDENTIAL48
Top Related