캐시된 전역 조회

캐시된 전역 조회 (Cached global lookups)

druid-lookups-cached-global 확장은 조회를 클러스터의 모든 서버에 캐시·전파하는 기능을 제공해요. 이 확장으로 조회를 구성하고 관리하는 방법을 설명할게요.

출처: 문서

본문

druid-lookups-cached-global을 사용하려면 확장용 druid-lookups-cached-global을 로드하세요. 이 확장은 조회를 Coordinator로 관리하고 관련 서버(Historical, Broker 등)에 배포·캐시하도록 해요.

조회 구성 (Configuring lookups)

캐시된 전역 조회는 Coordinator의 /druid/coordinator/v1/lookups HTTP 엔드포인트로 구성·관리돼요. 조회는 Collection(모음)으로 조직되고, 각 조회는 tier로 그룹화될 수 있어요. 조회 배포는 모든 서버가 같은 조회 뷰를 유지하도록 보장해요.

조회를 추가하거나 갱신하는 기본 절차:

  1. POST /druid/coordinator/v1/lookups로 새 조회를 등록하고,
  2. POST /druid/coordinator/v1/lookups/{tier}로 조회를 컬렉션에 연결하며,
  3. 변경 사항은 Coordinator가 주기적으로(기본적으로 몇 초마다) 조회에 참여하는 서버에 전파해요.

Lookup 구성 예시

다음은 조회를 등록하는 예시 JSON이에요:

{
  "type": "map",
  "map": {
    "key1": "value1",
    "key2": "value2"
  },
  "isOneToOne": false
}

조회의 일반적 속성들:

| 속성 | 설명 | 기본값 | | type | 조회 타입. map, uri, jdbc, poly 등. | (필수) | | isOneToOne | 조회가 일대일 매핑인지 여부. true면 일대일 최적화를 사용. | false | | injective | 일대일 매핑인지 (추천). | false | | namespace | 조회 네임스페이스. | (필수) |

조회 타입별 속성

Map lookup (map)

구성 안에 인라인으로 정의된 정적 매핑이에요:

{
  "type": "map",
  "map": { "key": "value" },
  "isOneToOne": false
}

URI lookup (uri)

외부 URI(파일 또는 HTTP(S))에서 매핑을 로드하고 주기적으로 갱신해요. 지원 형식: json, csv, tsv, properties.

주요 속성:

| 속성 | 설명 | 기본값 | | uri | 매핑이 있는 URI | (필수) | | uriPrefix | URI 접두사 (갱신용 폴링) | (필수) | | fileRegex | 폴링할 파일 정규식 | .*\.json | | namespaceParseSpec | 파싱 스펙 (csv, tsv, json, properties) | (필수) | | pollPeriod | 다시 로드 주기 | 구성에 따름 |

JDBC lookup (jdbc)

JDBC로 데이터베이스 테이블에서 매핑을 로드해요. keyColumn, valueColumn, table, jdbcUrl, jdbcUser, jdbcPassword 속성으로 데이터 소스를 지정하고, pollPeriod 주기로 갱신해요.

폴리노미얼·레인지 조회 (poly, bounded_poly)

숫자 범위를 값에 매핑하는 고급 조회예요. polynomial은 선형 보간, boundedPolynomial은 0과 1 사이 함수 동작을 제어해요.

조회 사용 (Using lookups)

조회는 쿼리에서 LookupDimensionSpec 또는 Druid SQL의 LOOKUP 함수로 사용돼요. 조회가 적용되면 쿼리 시간에 키가 매핑된 값으로 변환돼요.

Coordinator 구성

Coordinator의 조회 관련 기본 속성:

| 속성 | 설명 | 기본값 | | druid.lookup.enableLookupSyncOnStartup | 시작 시 조회 동기화 활성화 | true | | druid.lookup.lookupStartRetries | 조회 시작 재시도 횟수 | 4 | | druid.lookup.lookupUpdateRetries | 조회 갱신 재시도 횟수 | 4 | | druid.lookup.initialLookupTimeout | 초기 조회 타임아웃 (ms) | 5000 | | druid.lookup.lookupAddRetries | 조회 추가 재시도 횟수 | 4 |

CoordinatorDynamicConfig를 통해 조회 동기화를 켜고 끌 수도 있어요.

더 알아보기 (Learn more)