StarRocks 데이터 소스 구성
StarRocks는 고성능 분석형 데이터 웨어하우스로, 벡터화, MPP 아키텍처, CBO, 스마트 구체화 뷰, 실시간 업데이트가 가능한 열 기반 스토리지 엔진 등의 기술을 사용하여 다차원, 실시간, 높은 동시성의 데이터 분석을 구현합니다.
지원 버전
StarRocks 3.3+
사용 제한
현재는 다음 구성 방식만 지원합니다.
- AE 사전 설정 스토리지 공간 테이블에서 StarRocks로 쓰기 지원(오프라인 쓰기)
참고:
- StarRocks 데이터 소스 읽기는 아직 지원하지 않습니다(오프라인 읽기)
지원 필드 타입
StarRocks는 엔진이 소스 필드를 목적지 필드에 올바르게 쓸 수 있는지 판단하며, 실패하면 Null이 됩니다.
AE 데이터 개발 플랫폼의 통합 계획은 데이터 타입을 강제로 변환하지 않으며, 엔진이 처리합니다.
| StarRocks 타입 | 오프라인 쓰기(Writer) | 비고 |
|---|---|---|
| 숫자 타입 | ||
| TINYINT | 지원 | 1바이트 부호 있는 정수, 범위 [-128, 127] |
| SMALLINT | 지원 | 2바이트 부호 있는 정수, 범위 [-32768, 32767] |
| INT | 지원 | 4바이트 부호 있는 정수, 범위 [-2147483648, 2147483647] |
| BIGINT | 지원 | 8바이트 부호 있는 정수, 범위 [-9223372036854775808, 9223372036854775807] |
DECIMAL | 지원 | DECIMAL(P [, S]) 고정밀 고정 소수점 수입니다. P는 전체 유효 자릿수(precision), S는 소수점 이하 최대 자릿수(scale)를 나타냅니다.1.19.0 이상 버전에서는 decimal 타입의 (P, S)에 기본값이 설정되며, 기본값은 decimal(10, 0)입니다 |
| DOUBLE | 지원 | 8바이트 부동 소수점 수 |
| BOOLEAN | 지원 | BOOL, BOOLEAN TINYINT와 마찬가지로 0은 false, 1은 true를 나타냅니다 |
| LARGEINT | 지원 | 16바이트 부호 있는 정수, 범위 [-2^127 + 1 ~ 2^127 - 1] |
| FLOAT | 지원 | 4바이트 부동 소수점 수. |
| 문자열 타입 | ||
| CHAR | 지원 | CHAR(M) 고정 길이 문자열이며, M은 고정 길이 문자열의 길이를 나타냅니다. M의 범위는 1~255입니다. |
VARCHAR | 지원 | VARCHAR(M) 가변 길이 문자열입니다. M은 가변 길이 문자열의 길이를 나타내며, 단위는 바이트이고 기본값은 1입니다. |
| STRING | 지원 | 문자열, 최대 길이 65533바이트 |
BINARY/VARBINARY | 아직 지원하지 않음 | StarRocks는 3.0 버전부터 이진 데이터를 저장하는 BINARY(M) / VARBINARY(M) 데이터 타입을 지원하며, 단위는 바이트입니다. 지원하는 최대 길이는 VARCHAR 타입과 같으며, BINARY는 VARBINARY의 별칭이며 사용법은 VARBINARY와 같습니다. |
| 시간 타입 | ||
| DATE | 지원 | 날짜 타입이며, 현재 값 범위는 ['0000-01-01', '9999-12-31']입니다. 기본 출력 형식은 'YYYY-MM-DD'입니다. |
| DATETIME | 지원 | 날짜 시간 타입이며, 값 범위는 ['0000-01-01 00:00:00', '9999-12-31 23:59:59']입니다. 출력 형식은 'YYYY-MM-DD HH: MM: SS'입니다 |
| 반정형 타입 | ||
| JSON | 지원 | |
| ARRAY | 지원 | |
| MAP | 지원 | |
| STRUCT | 지원 | |
| 집계 타입 | ||
| HLL | 아직 지원하지 않음 | 근사 중복 제거에 사용하는 HyperLogLog 타입입니다. |
| BITMAP | 아직 지원하지 않음 | BITMAP은 HLL(HyperLogLog)과 비슷하며, 주로 count distinct 중복 제거 집계를 가속하는 데 사용합니다. |
테이블 타입 설명
- 상세 테이블(Duplicate key table)은 간단하고 사용하기 쉬우며, 테이블의 데이터에 아무런 제약이 없어 동일한 데이터 행이 중복으로 존재할 수 있습니다. 로그 등 제약과 사전 집계가 필요 없는 원본 데이터를 저장하는 데 적합합니다.
- 기본 키 테이블(Primary Key table)은 강력한 기능을 갖추고 있으며, 고유성 및 NOT NULL 제약이 있습니다. 실시간 업데이트, 부분 열 업데이트 등의 시나리오를 지원하면서 쿼리 성능을 보장하므로 실시간 쿼리에 적합합니다.
- 집계 테이블(Aggregate table)은 사전 집계된 데이터를 저장하는 데 적합하며, 집계 쿼리 시 스캔하고 계산해야 하는 데이터양을 줄여 집계 쿼리의 효율을 크게 높일 수 있습니다.
- 업데이트 테이블(Unique Key table)은 실시간 업데이트가 필요한 비즈니스 시나리오에 적합하며, 현재는 점차 기본 키 테이블로 대체되고 있습니다.
| 기본 키 테이블 (Primary Key table) | 상세 테이블 (Duplicate Key table) | 집계 테이블 (Aggregate table) | 업데이트 테이블 (Unique Key table) | |
| 고유 제약 | 기본 키 PRIMARY KEY는 고유 제약과 NOT NULL 제약이 있습니다. | DUPLICATE KEY는 고유 제약이 없습니다. | 집계 키 AGGREGATE KEY는 고유 제약이 있습니다. | 고유 키 UNIQUE KEY는 고유 제약이 있습니다. |
| Key 열 논리 관계 | 새 데이터의 기본 키 값이 테이블의 기존 데이터의 기본 키 값과 같으면 고유 제약 충돌이 발생하며, 이때 새 데이터가 기존 데이터를 대체합니다. 업데이트 테이블과 비교해 기본 키 테이블은 하위 스토리지 엔진이 강화되어 업데이트 테이블을 대체할 수 있습니다. | Duplicate Key는 고유 제약이 없으므로, 새 데이터의 Duplicate Key가 테이블의 기존 데이터와 같으면 새 데이터와 기존 데이터가 모두 테이블에 존재합니다. | 새 데이터와 테이블의 기존 데이터 사이에 고유 제약 충돌이 있으면 집계 키와 Value 열의 집계 함수에 따라 새 데이터와 기존 데이터를 집계합니다. | 새 데이터와 테이블의 기존 데이터 사이에 고유 제약 충돌이 있으면 새 데이터가 기존 데이터를 대체합니다. 업데이트 테이블은 사실상 집계 함수가 replace인 집계 테이블로 볼 수 있습니다. |
정렬 키가 지원하는 데이터 타입 | 숫자(정수형, 불리언 포함), 문자열, 날짜 시간. | 숫자(정수형, 불리언, Decimal 포함), 문자열, 날짜 시간. | ||
| 파티션/버킷 열 | 파티션 열과 버킷 열은 기본 키에 포함되어야 합니다. | 없음 | 파티션 열과 버킷 열은 집계 키에 포함되어야 합니다. | 파티션 열과 버킷 열은 고유 키에 포함되어야 합니다. |
집계 타입 설명
| 집계 타입 | 역할 | 적용 열 타입 | 대표적인 활용 시나리오 |
|---|---|---|---|
| SUM | 같은 차원 열의 값을 합산 | 숫자 타입(INT/BIGINT/DECIMAL) | 매출액, 방문 수 등 누적 지표 |
| MIN | 같은 차원 열의 최솟값을 취함 | 숫자 타입/날짜 타입 | 최저값, 최초 로그인 시간 |
| MAX | 같은 차원 열의 최댓값을 취함 | 숫자 타입/날짜 타입 | 최고값, 최근 로그인 시간 |
| REPLACE | 나중에 쓴 데이터가 이전 값을 완전히 덮어씀(NULL 여부와 관계없음) | 모든 타입 | 유저의 최신 주소, 주문의 최종 상태 |
REPLACE_IF_NOT_NULL | NULL이 아닌 값만 이전 값을 덮어씀(NULL 값은 기존 값 유지) 필드 기본값은 | 모든 타입 | 유저 정보 점진적 업데이트(기존 필드 유지) |
쓰기 모드
AE 통합 계획에서는 StarRocks에 데이터를 쓸 때 Insert +Files 쓰기 모드를 사용합니다
| 지원하는 소스 데이터 소스 타입 |
|
지원하는 파일 타입 |
|
| 구문 예시 | |
StarRocks 데이터 소스 생성
데이터 개발 플랫폼 - 통합 모듈에서 StarRocks 데이터 소스 추가를 선택할 수 있습니다.
데이터 소스 설정 파라미터 정보
데이터 소스에 필요한 설정 정보를 입력하고 연결 테스트를 완료하면 StarRocks 데이터 소스가 생성됩니다.
| 필드 이름 | 설명 |
|---|---|
| 기본 정보 | |
| *데이터 소스 이름 | 데이터 개발 플랫폼 공간 내에서 고유해야 하며, 영문자, 숫자, 밑줄로 구성하고 숫자나 밑줄로 시작할 수 없습니다 |
| 비고 | 선택 사항 |
| 데이터 소스 설정 | |
| 환경 구분 없음 / 독립 환경 설정 | 둘 중 하나 선택: 환경 구분 없음은 운영 환경과 개발 환경이 하나의 설정을 공유하고, 독립 환경 설정은 두 환경을 각각 독립적으로 설정합니다 |
| *서비스 주소/IP | StarRocks 데이터베이스가 있는 서비스 주소. 여러 주소는 쉼표로 구분합니다 |
| *포트 | StarRocks에 접근하는 데 사용하는 포트 |
| *데이터베이스명 | StarRocks에 이미 생성된 데이터베이스 이름 |
| *사용자 이름 | 데이터베이스에 접근할 권한이 있는 사용자 이름 |
| *비밀번호 | 사용자 이름에 대응하는 비밀번호 |
| 고급 설정 | 데이터베이스 연결에 필요한 기타 고급 파라미터. 직접 입력할 수 있습니다 |
| 참고: 기본값은 클러스터 배포 모드입니다 | |
파라미터 이름 앞에 *가 있는 항목은 필수 파라미터이고, *가 없는 항목은 선택 파라미터입니다.
오프라인 동기화 작업 생성
위 단계에 따라 StarRocks 데이터 소스 생성을 완료하고 연결 테스트에 성공했다면, 실제 시나리오에 맞게 StarRocks 오프라인 쓰기 작업을 구성할 수 있습니다.
StarRocks를 데이터 목적지로 사용
데이터 목적지에서 StarRocks를 선택하고 다음 관련 파라미터를 설정합니다.
| 필드 이름 | 설명 |
|---|---|
| *데이터 소스(타입) | 데이터 목적지의 대상 타입으로 StarRocks를 선택합니다. 이 드롭다운에는 현재 공간에 이미 있는 데이터 소스의 타입만 표시되므로, StarRocks 데이터 소스를 아직 만들지 않았다면 StarRocks가 나타나지 않습니다. 먼저 드롭다운 하단의 + 데이터 소스 또는 데이터 소스 관리에서 데이터 소스를 생성해야 합니다 |
| *데이터 소스(데이터 소스) | 데이터 소스 관리 화면에 등록된 StarRocks 데이터 소스이며, 드롭다운에서 선택할 수 있습니다. 해당 데이터 소스를 아직 만들지 않았다면 데이터 소스 관리 버튼을 클릭하여 StarRocks 데이터 소스를 생성할 수 있습니다. |
| *전체 한정 이름(catalog) | default_catalog(StarRocks의 internal catalog). external catalog는 아직 지원하지 않습니다 |
| *전체 한정 이름(데이터베이스) | 쓰기 대상 데이터베이스 이름 |
| *쓰기 대상 테이블 | 쓰기 대상 데이터 테이블이며, 드롭다운에서 선택할 수 있습니다. 드롭다운 옆에 빠른 테이블 생성 입구가 있습니다 |
| *파티션 필드 값 | 입력 방식으로 파티션 필드 값을 정의할 수 있습니다. 파티션 필드 = days라고 가정합니다
|
| *쓰기 모드 |
|
보충 설명:
| 쓰기 모드 | 기본 키 테이블 (Primary Key table) | 상세 테이블 (Duplicate Key table) | 집계 테이블 (Aggregate table) | 업데이트 테이블 (Unique Key table) |
|---|---|---|---|---|
| Insert into |
실제 동작은 Upsert입니다 |
Update는 지원하지 않습니다 |
|
|
필드 매핑 설명
데이터 소스와 타겟 설정을 완료한 후에는 필드 매핑 관계를 설정해야 합니다. 시스템은 매핑 관계에 따라 소스 필드의 데이터를 타겟 필드로 자동 동기화합니다. 필드 매핑 관계는 다음 세 가지 방식으로 설정할 수 있습니다.
- 방법 1: 직접 선택. 소스 테이블 필드를 선택한 후 타겟 테이블의 타겟 필드를 선택합니다
- 방법 2: 동일 이름으로 매핑. 시스템이 소스 테이블과 타겟 테이블에서 이름이 같은 필드 사이에 매핑 관계를 자동으로 설정합니다
- 방법 3: 동일 행으로 매핑. 시스템이 같은 행에 있는 필드 사이에 매핑 관계를 자동으로 설정합니다
하나의 타겟 필드는 하나의 소스 필드에만 대응할 수 있다는 점에 유의하십시오.
기본 정보 설정
마지막으로 통합 계획의 기본 정보를 설정해야 합니다. 계획 이름, 담당자, 통합 동기화 속도, 비고 등이 포함됩니다.
설정을 완료한 후 저장 버튼을 클릭하면 통합 계획 생성이 완료됩니다.
참고: 계획 이름은 저장 후 수정할 수 없습니다
오프라인 동기화 계획을 작업 플로우에 연결
작업 플로우에 연결
1. 연결 시작
- 통합 계획 상세 페이지에서 오른쪽 상단의 작업 플로우에 연결 버튼을 클릭합니다
2. 작업 플로우 선택
-
드롭다운 메뉴에서 대상 작업 플로우를 선택합니다
-
새 작업 플로우를 만들려면:
- 드롭다운 메뉴 아래의 새 작업 플로우 바로가기 버튼을 클릭합니다
- 또는 개발 모듈로 이동하여 생성합니다
-
팁: 대상 작업 플로우가 표시되지 않으면 오른쪽의 ↻ 새로고침 버튼을 클릭합니다
3. 동기화 노드 생성
- 작업 플로우에서 오프라인 동기화 계획 타입의 노드를 새로 만듭니다
- 이 노드는 현재 통합 계획과 연관되며, 노드가 실행되면 해당 통합 계획의 실행이 트리거됩니다
4. 연결 완료
- 노드 생성 및 연결을 클릭하여 설정을 완료합니다
- 연결에 성공하면 작업 플로우로 이동을 클릭하여 연결 결과를 바로 확인할 수 있습니다
참고: 작업 플로우에 연결하여 생성된 작업 노드는 아직 배포되지 않은 상태입니다. 작업 플로우로 이동하여 확인한 후 해당 노드를 배포하여 라이브 상태로 전환하는 것을 권장합니다.
작업 플로우 연결 해제
오프라인 동기화 계획의 작업 플로우 연결을 해제하려면 다음과 같이 진행합니다.
- 작업 플로우가 아직 배포되지 않았다면, 해당 계획이 연결된 작업 플로우로 이동하여 개발 모드에서 해당 오프라인 동기화 계획 작업 노드를 삭제하면 됩니다.
- 작업 플로우가 이미 배포되어 라이브 상태라면, 개발 모드에서 해당 오프라인 동기화 계획 작업 노드를 삭제한 후 작업 플로우를 다시 배포해야 합니다. 이렇게 하면 운영 환경에서도 해당 노드의 연결이 함께 해제됩니다.

