레이크하우스 개요
레이크하우스는 데이터 레이크와 데이터 웨어하우스의 장점을 결합한 현대적인 빅데이터 솔루션입니다. 데이터 레이크의 낮은 비용과 높은 확장성에 데이터 웨어하우스의 높은 성능과 강력한 데이터 거버넌스 기능을 결합하여, 빅데이터 시대의 다양한 데이터를 효율적이고 안전하게 저장·처리·분석하고 데이터 품질도 관리할 수 있게 합니다. 표준화된 개방형 데이터 형식과 메타데이터 관리를 통해 실시간 데이터와 과거 데이터, 배치 처리와 스트림 처리를 통합하며, 점차 기업 빅데이터 솔루션의 새로운 표준으로 자리 잡고 있습니다.
Doris 레이크하우스 솔루션
Doris는 확장 가능한 커넥터 프레임워크, 컴퓨팅-스토리지 분리 아키텍처, 고성능 데이터 처리 엔진, 데이터 생태계에 대한 개방성을 통해 사용자에게 우수한 레이크하우스 솔루션을 제공합니다.

유연한 데이터 접근
Doris는 확장 가능한 커넥터 프레임워크를 통해 주요 데이터 시스템과 데이터 형식에 대한 접근을 지원하고, SQL 기반의 통합 데이터 분석 기능을 제공합니다. 사용자는 기존 데이터를 옮기지 않고도 여러 플랫폼의 데이터를 쉽게 쿼리하고 분석할 수 있습니다. 자세한 내용은 Catalog 개요를 참고하세요.
데이터 소스 커넥터
Hive, Iceberg, Hudi, Paimon부터 JDBC 프로토콜을 지원하는 데이터베이스 시스템까지, Doris는 손쉽게 연결하고 효율적으로 데이터에 접근할 수 있습니다.
레이크하우스 시스템의 경우 Doris는 Hive Metastore, AWS Glue, Unity Catalog 등의 메타데이터 서비스에서 데이터 테이블의 구조와 분포 정보를 가져와 적절한 쿼리 계획을 수립하고, MPP 아키텍처를 활용해 분산 컴퓨팅을 수행합니다.
자세한 내용은 Iceberg Catalog와 같은 각 Catalog 문서를 참고하세요.
확장 가능한 커넥터 프레임워크
Doris는 개발자가 기업 고유의 데이터 소스를 신속하게 연결하고 데이터 상호 운용성을 빠르게 확보할 수 있도록 확장성이 뛰어난 프레임워크를 제공합니다.
Doris는 Catalog, 데이터베이스, 테이블이라는 세 가지 표준 수준을 정의하여 개발자가 필요한 데이터 소스의 계층에 쉽게 매핑할 수 있도록 합니다. 또한 메타데이터 서비스와 스토리지 서비스에 접근하기 위한 표준 인터페이스를 제공하므로, 개발자는 해당 인터페이스만 구현하면 데이터 소스 연결을 완료할 수 있습니다.
Doris는 Trino Connector 플러그인과 호환됩니다. Trino 플러그인 패키지를 Doris 클러스터에 직접 배포한 뒤 최소한의 설정만으로 해당 데이터 소스에 접근할 수 있습니다. Doris는 이미 Kudu, BigQuery, Delta Lake 등의 데이터 소스 연결을 지원합니다. 새로운 플러그인을 직접 연동할 수도 있습니다.
편리한 데이터 소스 간 데이터 처리
Doris는 런타임에 여러 데이터 Catalog를 생성하고 SQL로 이러한 데이터 소스에 대한 연합 쿼리를 수행할 수 있도록 지원합니다. 예를 들어 사용자는 Hive의 팩트 테이블 데이터와 MySQL의 차원 테이블 데이터를 조인하여 쿼리할 수 있습니다.
SELECT h.id, m.name
FROM hive.db.hive_table h JOIN mysql.db.mysql_table m
ON h.id = m.id;
Doris에 내장된 작업 스케줄링 기능을 함께 사용하면 예약 작업을 생성하여 시스템 복잡성을 더욱 줄일 수 있습니다. 예를 들어 위 쿼리를 매시간 실행하는 정기 작업으로 설정하고, 실행할 때마다 결과를 Iceberg 테이블에 쓸 수 있습니다.
CREATE JOB schedule_load
ON SCHEDULE EVERY 1 HOUR DO
INSERT INTO iceberg.db.ice_table
SELECT h.id, m.name
FROM hive.db.hive_table h JOIN mysql.db.mysql_table m
ON h.id = m.id;
고성능 데이터 처리
분석용 데이터 웨어하우스인 Doris는 레이크하우스 데이터 처리와 연산을 다방면으로 최적화했으며, 풍부한 쿼리 가속화 기능을 제공합니다.
-
실행 엔진
Doris 실행 엔진은 MPP 실행 프레임워크와 Pipeline 데이터 처리 모델을 기반으로 하며, 여러 머신과 여러 코어로 구성된 분산 환경에서 대규모 데이터를 빠르게 처리할 수 있습니다. 완전히 벡터화된 실행 연산자 덕분에 Doris는 TPC-DS와 같은 표준 벤치마크 데이터 세트에서 선도적인 연산 성능을 보여 줍니다.
-
쿼리 옵티마이저
Doris는 쿼리 옵티마이저를 통해 복잡한 SQL 요청을 자동으로 최적화하고 처리할 수 있습니다. 쿼리 옵티마이저는 다중 테이블 조인, 집계, 정렬, 페이지네이션 등 다양한 복잡한 SQL 연산자를 심층적으로 최적화합니다. 비용 모델과 관계 대수 변환을 충분히 활용하여 더 나은 논리적·물리적 실행 계획 또는 최적의 계획을 자동으로 도출하므로, SQL 작성 난이도를 크게 낮추고 사용성과 성능을 높입니다.
-
데이터 캐시 및 IO 최적화
외부 데이터 소스에는 일반적으로 네트워크를 통해 접근하므로 지연 시간이 길고 안정성이 낮을 수 있습니다. Apache Doris는 풍부한 캐싱 메커니즘을 제공하며, 캐시 유형, 최신성, 전략을 다방면으로 최적화했습니다. 메모리와 로컬 고속 디스크를 충분히 활용하여 핫 데이터의 분석 성능을 높입니다. 또한 높은 처리량, 낮은 IOPS, 긴 지연 시간 등 네트워크 IO의 특성에 맞춰 최적화하여, 외부 데이터 소스에 대해서도 로컬 데이터에 준하는 접근 성능을 제공합니다.
-
구체화된 뷰 및 투명한 가속화
Doris는 구체화된 뷰에 대한 다양한 업데이트 전략을 제공합니다. 전체 새로 고침과 파티션 단위 증분 새로 고침을 지원하여 생성 비용을 줄이고 데이터의 최신성을 높입니다. 수동 새로 고침 외에도 예약 새로 고침과 데이터 기반 새로 고침을 지원하여 유지 관리 비용을 더욱 줄이고 데이터 일관성을 높입니다. 구체화된 뷰는 투명한 가속화 기능도 제공합니다. 쿼리 옵티마이저가 적절한 구체화된 뷰로 쿼리를 자동 라우팅하여 원활하게 쿼리를 가속할 수 있습니다. 또한 Doris의 구체화된 뷰는 고성능 스토리지 형식을 사용하며, 열 기반 스토리지, 압축, 지능형 인덱싱 기술을 통해 효율적인 데이터 접근 기능을 제공합니다. 이를 통해 데이터 캐시의 대안으로 활용하면서 쿼리 효율성을 높일 수 있습니다.
아래와 같이 Iceberg 테이블 형식 기반의 1TB TPCDS 표준 테스트 세트에서 Doris의 99개 쿼리 전체 실행 시간은 Trino의 1/3에 불과합니다.

실제 사용자 환경에서 Doris는 Presto 대비 절반의 리소스만 사용하면서도 평균 쿼리 지연 시간을 20%, 95백분위 지연 시간을 50% 줄여, 리소스 비용을 크게 낮추고 사용자 경험을 개선합니다.

편리한 서비스 마이그레이션
여러 데이터 소스를 통합하고 레이크하우스로 전환하는 과정에서는 시스템마다 SQL 방언의 구문과 함수 지원이 다르기 때문에 SQL 쿼리를 Doris로 마이그레이션하기가 쉽지 않습니다. 적절한 마이그레이션 계획이 없다면 새 시스템의 SQL 구문에 맞추기 위해 업무 시스템을 대폭 수정해야 할 수 있습니다.
현대적인 배포 아키텍처
Doris는 3.0 버전부터 클라우드 네이티브 컴퓨팅-스토리지 분리 아키텍처를 지원합니다. 이 아키텍처는 낮은 비용과 높은 탄력성을 바탕으로 리소스 활용률을 효과적으로 높이고, 컴퓨팅과 스토리지를 독립적으로 확장할 수 있게 합니다.

위 그림은 컴퓨팅과 스토리지를 분리한 Doris의 컴퓨팅-스토리지 분리 시스템 아키텍처를 보여 줍니다. 컴퓨팅 노드는 더 이상 기본 데이터를 저장하지 않으며, 하위 공유 스토리지 계층(HDFS 및 객체 스토리지)이 통합된 기본 데이터 저장 공간 역할을 합니다. 이를 통해 컴퓨팅 리소스와 스토리지 리소스를 독립적으로 확장할 수 있습니다. 컴퓨팅-스토리지 분리 아키텍처는 레이크하우스 솔루션에 다음과 같은 주요 이점을 제공합니다.
-
저비용 스토리지: 스토리지와 컴퓨팅 리소스를 독립적으로 확장할 수 있으므로, 기업은 컴퓨팅 리소스를 늘리지 않고도 스토리지 용량을 늘릴 수 있습니다. 또한 클라우드 객체 스토리지를 사용하면 더 낮은 스토리지 비용과 더 높은 가용성을 확보할 수 있으며, 전체 데이터 중 비중이 상대적으로 낮은 핫 데이터는 로컬 고속 디스크에 캐시할 수 있습니다.
-
단일 진실 공급원: 모든 데이터를 통합된 스토리지 계층에 저장하므로, 서로 다른 컴퓨팅 클러스터에서 동일한 데이터에 접근하고 처리할 수 있습니다. 이를 통해 데이터 일관성과 무결성을 보장하고, 데이터 동기화와 중복 저장의 복잡성을 줄일 수 있습니다.
-
다양한 워크로드: 사용자는 워크로드별 요구에 따라 컴퓨팅 리소스를 동적으로 할당하여 배치 처리, 실시간 분석, 머신 러닝 등 다양한 활용 시나리오를 지원할 수 있습니다. 스토리지와 컴퓨팅을 분리하면 기업은 리소스 사용을 더욱 유연하게 최적화하여 다양한 부하에서도 효율적인 운영을 보장할 수 있습니다.
또한 스토리지-컴퓨팅 결합 아키텍처에서도 탄력적 컴퓨팅 노드를 사용하여 레이크하우스 데이터 쿼리 시나리오에 탄력적인 컴퓨팅 기능을 제공할 수 있습니다.
개방성
Doris는 개방형 레이크 테이블 형식에 대한 접근을 지원할 뿐 아니라, 자체적으로 저장한 데이터에 대해서도 뛰어난 개방성을 제공합니다. Doris는 개방형 스토리지 API를 제공하고 Arrow Flight SQL 프로토콜을 기반으로 고속 데이터 링크를 구현하여, Arrow Flight의 속도 이점과 JDBC/ODBC의 사용 편의성을 함께 제공합니다. 사용자는 이 인터페이스를 기반으로 Python/Java/Spark/Flink의 ABDC 클라이언트를 사용하여 Doris에 저장된 데이터에 접근할 수 있습니다.
개방형 파일 형식과 비교하면, 개방형 스토리지 API는 하위 파일 형식의 구체적인 구현을 추상화하므로 Doris가 풍부한 인덱싱 메커니즘 등 자체 스토리지 형식의 고급 기능을 통해 데이터 접근을 가속할 수 있습니다. 또한 상위 컴퓨팅 엔진은 하위 스토리지 형식의 변경이나 새로운 기능에 별도로 대응할 필요가 없으므로, 지원되는 모든 컴퓨팅 엔진이 새로운 기능의 이점을 동시에 누릴 수 있습니다.
레이크하우스 모범 사례
레이크하우스 솔루션에서 Doris는 주로 레이크하우스 쿼리 가속화, 다중 소스 연합 분석, 레이크하우스 데이터 처리에 사용됩니다.
레이크하우스 쿼리 가속화
이 시나리오에서 Doris는 컴퓨팅 엔진 역할을 하여 레이크하우스 데이터에 대한 쿼리와 분석을 가속합니다.

캐시 가속화
Hive와 Iceberg 같은 레이크하우스 시스템에서는 로컬 디스크 캐시를 설정할 수 있습니다. 로컬 디스크 캐시는 쿼리 대상 데이터 파일을 로컬 캐시 디렉터리에 자동으로 저장하고, LRU 전략으로 캐시 제거를 관리합니다. 자세한 내용은 데이터 캐시 문서를 참고하세요.
구체화된 뷰 및 투명한 재작성
Doris는 외부 데이터 소스에 대한 구체화된 뷰 생성을 지원합니다. 구체화된 뷰는 SQL 정의문에 따라 사전 계산한 결과를 Doris 내부 테이블 형식으로 저장합니다. 또한 Doris의 쿼리 옵티마이저는 SPJG (SELECT-PROJECT-JOIN-GROUP-BY) 패턴을 기반으로 한 투명한 재작성 알고리즘을 지원합니다. 이 알고리즘은 SQL의 구조 정보를 분석하고, 투명한 재작성에 적합한 구체화된 뷰를 자동으로 찾은 다음, 쿼리 SQL에 응답할 최적의 구체화된 뷰를 선택할 수 있습니다.
이 기능은 런타임 연산을 줄여 쿼리 성능을 크게 높일 수 있습니다. 또한 업무 시스템에서 별도로 처리하지 않아도 투명한 재작성을 통해 구체화된 뷰의 데이터에 접근할 수 있습니다. 자세한 내용은 구체화된 뷰 문서를 참고하세요.
다중 소스 연합 분석
Doris는 통합 SQL 쿼리 엔진 역할을 하여 서로 다른 데이터 소스를 연결하고 연합 분석을 수행함으로써 데이터 사일로 문제를 해결할 수 있습니다.

사용자는 Doris에서 여러 Catalog를 동적으로 생성하여 서로 다른 데이터 소스를 연결할 수 있습니다. SQL 문을 사용하여 서로 다른 데이터 소스의 데이터에 대해 원하는 조인 쿼리를 수행할 수 있습니다. 자세한 내용은 Catalog 개요를 참고하세요.
레이크하우스 데이터 처리
이 시나리오에서 Doris는 데이터 처리 엔진 역할을 하여 레이크하우스 데이터를 처리합니다.

작업 스케줄링
Doris는 Job Scheduler 기능을 도입하여 효율적이고 유연한 작업 스케줄링을 지원하고 외부 시스템에 대한 의존도를 줄입니다. 데이터 소스 커넥터와 함께 사용하면 외부 데이터를 주기적으로 처리하고 저장할 수 있습니다. 자세한 내용은 Job Scheduler를 참고하세요.
데이터 모델링
사용자는 일반적으로 데이터 레이크에 원시 데이터를 저장한 뒤, 이를 기반으로 데이터를 계층별로 처리하여 각 계층의 데이터가 서로 다른 비즈니스 요구를 충족하도록 합니다. Doris의 구체화된 뷰 기능은 외부 데이터 소스에 대한 구체화된 뷰 생성을 지원하고, 구체화된 뷰를 기반으로 한 후속 처리도 지원하여 시스템 복잡성을 줄이고 데이터 처리 효율성을 높입니다.
데이터 다시 쓰기
데이터 다시 쓰기 기능은 Doris의 레이크하우스 데이터 처리 흐름을 완결합니다. 사용자는 Doris를 통해 외부 데이터 소스에 데이터베이스와 테이블을 직접 생성하고 데이터를 쓸 수 있습니다. 현재 JDBC, Hive, Iceberg 데이터 소스를 지원하며, 앞으로 더 많은 데이터 소스가 추가될 예정입니다. 자세한 내용은 해당 데이터 소스의 문서를 참고하세요.