Dremio 는 오브젝트 스토리지와 관계형 데이터베이스에 흩어진 데이터를 옮기지 않고 그 자리에서 SQL 로 질의하는 레이크하우스 쿼리 엔진이다. 실행 계층은 Apache Arrow 기반의 열 지향 인메모리 포맷을 쓰고, 클라이언트에는 JDBC · ODBC · REST · Arrow Flight 를 내준다. 같은 자리를 노리는 제품으로는 Trino · Denodo · Teiid 가 있고, 저장을 자기가 떠맡는 Snowflake 계열과는 성격이 다르다.
Dremio 의 트리는 두 갈래다. 이 구분을 놓치면 데이터셋을 어디에 만들어야 하는지부터 막힌다.
| 구분 | 내용 |
|---|---|
| Source | 바깥의 실제 저장소. S3 · HDFS · Hive 메타스토어 · Oracle · PostgreSQL 같은 연결 대상이다. 여기에 보이는 것이 물리 데이터셋(PDS)이다 |
| Space | Dremio 안에서만 존재하는 논리 폴더. 사용자가 만든 가상 데이터셋(VDS)을 담는다 |
물리 데이터셋(PDS)은 소스에 실제로 있는 파일이나 테이블이고, 가상 데이터셋(VDS)은 그것을 참조하는 이름 붙은 SELECT 문이다. VDS 는 데이터를 복제하지 않으므로 뷰에 가깝다. 스페이스는 SQL 로도 만들 수 있다.
CREATE FOLDER IF NOT EXISTS "analytics"."staging";
CREATE VIEW "analytics"."staging"."order_daily" AS
SELECT order_date, SUM(amount) AS amount
FROM "s3source"."warehouse"."orders"
GROUP BY order_date;
리플렉션(Reflection)은 데이터셋을 미리 계산해 Apache Iceberg 형식으로 저장해 두는 구체화(materialization)다. 쿼리를 던질 때 사용자가 리플렉션을 직접 가리키지 않는다. 플래너가 질의를 분석해 대체할 수 있는 리플렉션이 있으면 알아서 바꿔치기한다. 그래서 애플리케이션 쿼리는 그대로 두고 성능만 올릴 수 있다.
| 종류 | 쓰임 |
|---|---|
| Raw Reflection | 원본을 그대로, 다만 필요한 컬럼만 추리고 정렬·파티션을 지정해 저장한다. 특정 컬럼 조합을 반복해서 읽을 때 |
| Aggregation Reflection | 차원과 측정값을 정해 미리 집계해 둔다. 대시보드처럼 같은 GROUP BY 가 반복될 때 |
리플렉션은 SQL 로도 만든다. UI 에서만 되는 기능이 아니므로 dbt 의 post-hook 이나 배치 스크립트에 넣을 수 있다.
ALTER TABLE "analytics"."staging"."order_daily"
CREATE RAW REFLECTION "order_daily_raw"
USING DISPLAY (order_date, amount);
ALTER TABLE "analytics"."staging"."order_daily"
CREATE AGGREGATE REFLECTION "order_daily_agg"
USING DIMENSIONS (order_date) MEASURES (amount (SUM, COUNT));
리플렉션은 공짜가 아니다. 실체가 있는 복제본이므로 저장 공간을 먹고, 새로 고칠 때마다 원본을 다시 읽는 비용이 든다. 다음을 정해 두지 않으면 야간 배치와 리플렉션 갱신이 같은 시간대에 겹쳐 소스 데이터베이스를 밀어붙인다.
| 에디션 | 성격 |
|---|---|
| Community Edition | 무료. GitHub 에 공개된 코드는 Apache 2.0 이지만 배포 바이너리에는 비오픈소스 모듈이 섞여 있으므로 전체를 Apache 2.0 으로 볼 수 없다 |
| Enterprise (Dremio Software) | 상용. LDAP · AD 연동, 세분화된 권한, 고가용성, 쿠버네티스 배포 지원 |
| Dremio Cloud | AWS · Azure 위의 관리형 서비스. 사용량 기반 과금 |
Dremio Arctic 이라는 이름으로 소개된 Iceberg 카탈로그 기능은 이후 제품 편성이 바뀌었다. 현재 어느 에디션에서 어떤 이름으로 제공되는지는 공식 가격 페이지에서 직접 확인해야 한다 (확인 필요). 가격은 견적 기반이라 공개된 숫자를 그대로 인용하지 않는다.