Scale-out Architecture

scale-out architecture

클라우드 확장성을 실현하는 ClustrixDB의 스케일아웃 아키텍처

ClustrixDB는 관계형 데이터베이스가 클라우드 규모의 워크로드를 지원하고 짧은 대기 시간과 우수한 동시성을 실현하며, 하드웨어 장애가 발생하더라도 가용성을 유지할 수 있음을 입증합니다. Clustrix는 관계형 데이터베이스로 클라우드 규모의 배포 경험을 제공하고 최신 애플리케이션에 필요한 대용량 트랜잭션 볼륨을 지원하는 방식에 대한 인식을 전환합니다. 완전히 새롭게 개발된 Clustrix의 스케일아웃 아키텍처는 어떠한 클라우드에서도 지원하며, 이전 세대 아키텍처보다 월등한 성능을 제공합니다.

ClustrixDB는 구세대 RDBMS와 다릅니다.

ClustrixDB 스케일아웃 아키텍처의 작동 방식

짧은 대기 시간으로 고부가가치 대용량 트랜잭션 워크로드를 지원하도록 설계된 ClustrixDB는 무공유 아키텍처(메모리 및 디스크), 모든 서버에 대한 자동 데이터 분배, SQL 스케일아웃을 위한 쿼리 자동 병렬화 기능을 사용한다는 점에서 일반 관계형 데이터베이스와 다릅니다. 성능에 최적화된 ClustrixDB 스케일아웃 아키텍처는 데이터를 옮기는 게 아니라 클러스터에서 데이터가 위치한 곳으로 쿼리를 이동합니다. 따라서 데이터베이스 클러스터를 확장할 때 선형에 가까운 확장성이 실현됩니다.

무공유 아키텍처

ClustrixDB는 노드 추가 시 선형에 가까운 확장성을 제공하는 것으로 확인된 유일한 아키텍처이자 무공유(shared-nothing) 아키텍처로 설계된 스케일아웃 관계형/SQL 데이터베이스입니다. Hadoop, Redis와 같은 주요 스케일아웃 데이터 저장소 역시 무공유 아키텍처를 활용하므로 스케일아웃이 가능합니다. 그러나 이러한 데이터 저장소는 데이터베이스가 아니므로 정형 데이터를 처리하는 데 한계가 있고, 고부가가치 트랜잭션에 필요한 노드 간 ACID 트랜잭션을 제대로 지원하지 못합니다. MySQL, Aurora와 같은 기존의 관계형 데이터베이스는 단일 마스터 및/또는 공유 디스크 아키텍처를 사용하므로 쓰기 확장이 불가능합니다.

무공유 아키텍처의 주요 특성은 모든 노드가 데이터의 일부를 소유하면서 데이터 읽기 및 쓰기에 대한 책임을 공평하게 나누어 경합을 줄인다는 것입니다.

또한 ClustrixDB 스케일아웃 아키텍처는 일관된 해싱을 사용하여 기본 키와 보조 키 모두에서 독립적인 인덱스 분배를 수행합니다. 따라서 각 노드는 일종의 ‘리더’ 노드에 의존하지 않고도 필요한 데이터가 저장된 노드를 정확하게 알아낼 수 있습니다. 모든 데이터는 쿼리하는 노드에서 보면 하나의 홉에 불과하므로 브로드캐스트가 크게 줄어듭니다.

게다가 모든 노드에 쿼리 컴파일러가 있어 쿼리를 받을 수 있습니다. 이 데이터베이스 엔진은 각 노드 내에서 로컬 데이터를 처리합니다. 데이터 맵이 모든 노드에 복제되며 각 기본 키와 보조 키가 어디에 있는지 알고 있습니다. 그야말로 효과적인 스케일아웃 아키텍처인 것입니다.

스케일아웃 아키텍처를 통한 지능적인 데이터 분배

ClustrixDB는 자동으로 클러스터 전체에 데이터를 분배합니다. 일관된 해싱으로 모든 테이블이 슬라이스화되고 모든 클러스터 노드에 분배됩니다. 슬라이스는 샤드와 비슷하지만, 더 세분화되었고 전적으로 ClustrixDB Rebalancer 특허 기술에 의해 관리됩니다. 각 슬라이스에는 1개 이상의 미러(‘복제본’)가 있어 고가용성을 실현할 수 있습니다. ClustrixDB Rebalancer는 백그라운드에서 작동하면서 데이터와 워크로드가 클러스터 전반에 고르게 분배되도록 하고 쿼리 성능 저하를 방지합니다.

ClustrixDB의 슬라이싱은 다른 데이터베이스의 샤딩 및 샤딩과 유사한 기타 방식보다 우수합니다. 테이블이 가로 방향과 세로 방향 모두 슬라이싱됩니다. 해시 분배된 행 범위가 모든 노드 및 각종 테이블 ‘표현’(예: 기본 키, 보조 키, 커버리지 인덱스) 전반에 분배됩니다. 이처럼 세분화된 분배로 쿼리의 병렬화가 극대화될 뿐만 아니라 스토리지 계층의 핫스팟이 최소화됩니다. 샤딩에서는 각 테이블 파티션이 저마다의 RDBMS에 위치하므로, 노드 간 트랜잭션의 경우 애플리케이션이 반드시 ACID 보장을 유지해야 합니다. ClustrixDB를 사용할 경우 데이터베이스 노드의 수와 관계없이 애플리케이션이 단일 논리 데이터베이스로 인식합니다. 노드 간 트랜잭션은 항상 ACID를 보장하며, 참조 무결성이 항상 자동으로 유지됩니다.

스케일아웃 아키텍처를 위한 분산 쿼리 처리

ClustrixDB는 데이터를 옮기는 게 아니라 쿼리를 데이터로 가져오는 방식이며, 이를 분산 쿼리 처리라고 합니다. 분산 쿼리 처리를 사용하면 클러스터 전반에서 데이터 이동이 최소화됩니다.

SQL 언어는 멀티스레딩을 지원하도록 설계되지 않았습니다. 단일 쓰기 마스터를 사용하는 관계형 데이터베이스에서는 이것이 문제되지 않습니다. ClustrixDB의 경우 클러스터의 각 노드가 쓰기와 읽기를 모두 받을 수 있으므로, 쿼리를 컴포넌트 함수로 나눠 컴파일하고 클러스터 전반에 분배하는 식의 SQL 병렬화가 필요했습니다. 이런 이유로 분산 쿼리 처리라고 합니다.

ClustrixDB는 이 컴파일된 쿼리 조각을 데이터가 있는 서버에 분배하고 데이터가 이미 있는 곳에서 작업을 수행한 다음 그 결과를 사용자에게 반환합니다. 예를 들어, 사용자가 요청하면 ‘서버 A’가 받지만, 서버 A에 데이터가 없으면 서버 B 또는 서버 C에 요청을 전달합니다. 서버 C에 데이터가 있다면 필요한 데이터만 ‘서버 A’에 반환합니다. 따라서 여러 시스템을 포괄하면서 병렬화를 수행하고 진정한 데이터베이스 스케일아웃을 실현할 수 있습니다.

ClustrixDB 분산 쿼리 처리에서는 쿼리의 수가 늘면 클러스터 전반의 데이터 이동을 적극적으로 최소화하고 자동으로 데이터베이스 작업을 고르게 분배하므로 ClustrixDB의 선형 확장이 가능해집니다. 그리고 이 전략에서는 임의의 데이터에 대해 반드시 하나의 노드만 쓰기를 시도하므로 경합이 줄어듭니다. 또한 Clustrix가 강력한 동시성을 지원함과 동시에 모든 트랜잭션에서 참조 무결성 및 ACID 보장을 유지할 수 있습니다.

ClustrixDB 8.0 소개

ClustrixDB 8.0은 드롭인(drop-in) 방식으로 MySQL을 대체하면서 진정한 스케일아웃 성능을 실현하는 유일한 데이터베이스의 최신 릴리스입니다. 고객이 급격히 증가하는 트랜잭션 워크로드를 효과적으로 수용하도록 지원하는 이 최신 버전은 인메모리 프로세싱, 컨테이너화, 암호화 기술이 통합되어 있어 더 우수한 성능, 사용 편의성, 보안성을 제공합니다.

8.0 thumbnail

ClustrixDB RDBMS에서 쓰기 및 읽기를 확장하는 방법

실시간으로 ACID를 보장하면서 SQL RDBMS를 확장하는 것은 매우 큰 과제입니다. 대부분의 확장형 DBMS 솔루션의 경우, 실시간 트랜잭션 요구 사항 중 하나 이상을 포기해야 합니다. ClustrixDB는 ‘데이터노드로 쿼리를 보내는’ 기능과 클러스터의 모든 노드에 자동으로 데이터를 분배하는 기능을 연계하여, ACID를 완벽하게 보장하면서 쓰기 및 읽기 쿼리를 선형에 가깝게 확장합니다. ClustrixDB에서 Cascades Planner, MVCC, 2 Phase Locking, Paxos 합의 프로토콜을 활용하는 방법 등의 자세한 내용은 이 백서에서 확인하세요.

how clustrix scales thumbnail

스케일아웃 RDBMS에 대한 새로운 접근

ClustrixDB는 코어 및 서버를 추가하는 수평 확장을 지원하도록 설계된 스케일아웃 SQL 데이터베이스입니다. 무공유(shared-nothing) 아키텍처는 쿼리에 데이터를 가져오는 게 아니라 데이터노드로 쿼리를 보내는 완전히 새로운 쿼리 처리 방식을 제시합니다. 이 혁신적인 기술로 노드 전체에서 단일 데이터베이스를 확장하고 대규모 동시 실행을 계속 지원하면서 우수한 성능, 모든 관계형 기능, 트랜잭션 일관성(ACID)을 유지하고 원활하게 배치하는 방법이 무엇인지 알아보세요.

a new approach thumbnail

기존 SQL 데이터베이스가 쓰기 및 읽기 기능을 효과적으로 확장하지 못하는 이유

DBA(데이터베이스 관리자)와 애플리케이션 개발자 모두 기존 OLTP 데이터베이스를 확장하면서 심각한 양극화 문제를 겪고 있습니다. 많은 이들이 SQL 데이터베이스를 관계형 데이터베이스라고 부르면서 SQL 데이터베이스는 근본적으로 확장이 불가능하다고 말합니다. SQL 데이터베이스가 특히 쓰기 작업에서 제대로 된 확장성을 고려하지 않고 설계되어, 클라우드 규모의 확장이 절대 불가능한게 그 이유입니다. 한편, SQL 데이터베이스 확장 불가를 주장하는 사람들은 실제로 SQL 데이터베이스를 확장하는 데 필요한 지식, 경험, 전문성이 부족하다고 보는 시각도 있습니다. 일부 DBA는 그렇기 때문에 NoSQL 데이터베이스가 등장했다고 말합니다.

why traditional sql thumbnail

Clustrix를 사용해 보시겠어요?