온톨로지 인덱싱 컴퓨팅 사용량
온톨로지 인덱싱(Ontology indexing)은 데이터셋(Dataset)의 자료를 빠르게 조회하고 편집할 수 있는 객체 인덱스로 변환합니다. 이 처리의 연산 사용량은 compute-seconds로 측정합니다. 저장 용량과는 다른 사용량입니다.
배치 작업의 측정
배치 인덱싱은 병렬 Spark 백엔드에서 자료를 읽고 변환합니다. 사용량은 드라이버와 실행기에 할당한 컴퓨팅 자원 및 작업의 전체 경과 시간으로 계산합니다. 작업 크기에 따라 드라이버와 실행기 크기를 자동으로 선택합니다.
Builds에서 인덱싱 대상 객체에 연결된 실행 작업을 확인할 수 있습니다. 병렬 배치 컴퓨팅으로 분류되므로 같은 백엔드의 코드 저장소 변환이나 Contour 질의와 같은 방식으로 측정합니다.
| 작업 | 목적 |
|---|---|
| Ontology indexing jobs | 데이터셋을 온톨로지 백엔드의 인덱싱된 객체로 만듭니다. |
| Ontology export jobs | 온톨로지에서 직접 편집한 내용을 변환 계층의 데이터셋에 저장합니다. 보통 전체 객체 중 편집한 일부를 다루므로 전체 인덱싱보다 작습니다. |
사용량에 영향을 주는 요소
레코드가 많으면 인덱싱할 객체가 늘어납니다. 객체마다 속성을 분석하고 인덱스에 쓰므로 속성 수가 많아도 연산이 증가합니다. 큰 본문이나 복잡한 속성은 간단한 숫자보다 더 많은 분석과 저장 작업을 요구합니다.
업데이트 빈도도 함께 봅니다. 상위 데이터셋에 설정한 일정은 객체의 자동 재인덱싱을 유발할 수 있으므로 객체 자체와 상위 데이터셋의 갱신 주기를 같이 확인합니다.
입력과 변경 기록 최적화
업무에 필요한 입력 레코드, 객체별 속성 수와 속성 크기를 조정하면 인덱싱할 작업량을 줄일 수 있습니다.
변경 기록(Changelog) 전략을 사용하면 기존 객체와 비교하여 이번 작업에서 생성하거나 갱신할 객체 수를 줄일 수 있습니다. 추가 설정과 정해진 업데이트 전략 준수가 필요하지만 전체 자료를 다시 처리하는 방식보다 연산을 크게 줄일 수 있습니다.
compute-seconds 계산 예
다음은 드라이버 1개와 실행기 2개가 각각 10초 동안 실행되는 가상 작업입니다.
| 구성 | vCPU | 메모리 | 수량 | 시간 |
|---|---|---|---|---|
| 드라이버 | 1 | 6 GiB | 1 | 10초 |
| 실행기 | 1 | 4 GiB | 2 | 10초 |
각 구성의 사용량은 max(vCPU, 메모리 GiB / 7.5) × 수량 × 실행 초로 계산합니다.
runtime_seconds = 10
driver_compute_seconds = max(1, 6 / 7.5) * runtime_seconds
executor_compute_seconds = max(1, 4 / 7.5) * 2 * runtime_seconds
total_compute_seconds = driver_compute_seconds + executor_compute_seconds
print(total_compute_seconds)
드라이버는 10 compute-seconds, 실행기 둘은 합쳐 20 compute-seconds이므로 합계는 30 compute-seconds입니다. 전체 경과 시간 10초와 총 컴퓨팅 사용량 30 compute-seconds를 구분합니다.