데이터 통합파이프라인 최적화 및 디버깅Dataset projections고급 상세정보

본 번역은 검증되지 않았습니다. AIP를 통해 영문원문으로부터 번역되었습니다.

고급 상세정보

이 페이지에서는 데이터셋 프로젝션의 작동 원리에 대한 고급 상세 정보와 데이터셋에서 최적화된 쿼리를 가능하게 하는 방법에 대해 다룹니다. 프로젝션에 대해 상위 수준에서 알아보려면 이 페이지를 참조하세요.

내부적으로 프로젝션은 데이터셋의 복사본이며, 특정 접근 패턴에 최적화되어 있습니다. Foundry는 데이터셋에 대한 프로젝션을 자식 데이터셋으로 저장합니다. 이를 "프로젝션" 데이터셋이라고 합니다. 부모 데이터셋은 "정규(canonical)" 또는 "프로젝트된(projected)" 데이터셋이라고 합니다.

  • 프로젝션에는 일부 열 집합이 포함됩니다.
    • 프로젝션은 해당 열(또는 그 부분 집합)에 대한 읽기만 처리할 수 있습니다.

Build는 프로젝션을 주 데이터셋의 최신 데이터와 동기화시킵니다. 프로젝션이 최신 상태가 아닌 경우에도 사용되지만, 큰 이점을 제공하지 않을 수 있습니다.

프로젝트된 데이터셋이 새로운 SNAPSHOT 트랜잭션을 받으면, 하위 프로젝션은 완전히 오래되었으며 프로젝트를 다시 빌드할 때까지 이점이 없습니다. 프로젝트된 데이터셋이 APPEND 트랜잭션을 받으면, 하위 프로젝션은 새 트랜잭션과 관련하여 부분적으로만 오래됩니다. Foundry 쿼리는 새 데이터를 반영하는 결과를 생성하는 동시에 프로젝션에서 이점을 얻을 수 있는 경우에 쿼리가 다시 작성됩니다.

  • 프로젝션 빌드는 브랜치별로 구성됩니다. 프로젝션은 정기적으로 압축되어 작은 파티션을 더 큰 파티션으로 결합합니다.
  • 프로젝션을 추가하면 데이터셋의 읽기 결과가 변경되지 않습니다.

저수준에서 프로젝션은 다음 중 하나입니다:

  • 대략적으로 전역적으로 정렬된 데이터셋입니다.
  • 해시 버킷화 및 로컬 정렬된 데이터셋(버킷화 및 정렬 열이 다를 수 있음)

프로젝션 데이터셋

프로젝션 데이터셋은 Foundry 데이터셋으로 저장됩니다. 이 데이터셋은 리소스로 보이지 않지만 Projections 탭의 링크를 통해 접근할 수 있습니다.

  • 프로젝션 빌드가 활성화된 각 브랜치는 프로젝션 데이터셋의 해당 브랜치를 가집니다.
  • 데이터셋을 삭제하면 데이터셋의 모든 프로젝션도 삭제됩니다.
  • Noho 서비스는 프로젝션을 관리하는 데 사용되며, 프로젝션 설정에서 데이터셋 스키마에 참조됩니다.

프로젝션 빌드

프로젝션을 최신 상태로 유지하기 위해, 프로젝션은 일반적인 Foundry 빌드 시스템을 통해 비동기식으로 빌드됩니다. 이를 통해 사용자는 빌드 직후에 프로젝트된 데이터셋을 일관되게 읽을 수 있지만, 프로젝션 데이터셋은 시간이 지남에 따라 오래되지 않게 주기적으로 빌드해야 합니다.

컴퓨팅 리소스를 할당하고 비용을 통제할 수 있는 유연성을 제공하기 위해, Foundry는 이러한 빌드를 자동으로 생성하지 않습니다. 이를 구성하려면 Projections 탭의 Scheduler 위젯을 사용하세요.

적절한 빌드 주기에 대한 보편적인 규칙은 없습니다. 주요 결정 요인은 쿼리가 데이터셋의 프로젝트되지 않은 부분에서 성능 목표 내에서 실행할 수 있는지 여부입니다. 예를 들어, 파이프라인이 시간당 10GB를 작성하고 필터링된 읽기가 성능 목표를 충족시키기 위해 최대 100GB를 스캔해야 한다고 결정한 경우, 프로젝션 빌드가 최소 10시간마다 이루어지도록 해야 합니다.

스파크 프로필

프로젝션은 프로젝션을 빌드하기 위한 적절한 실행기 수를 찾는 자동 스케일링 메커니즘을 사용합니다. 프로젝션 빌드가 실패하거나 시간이 너무 오래 걸리지 않는 한 스파크 프로필을 수동으로 조정할 필요가 없습니다.

비용

Foundry는 프로젝션과 관련된 모든 비용(예: 저장 및 컴퓨팅)을 주 데이터셋의 프로젝트에 청구합니다.

프로젝션 압축

압축은 프로젝션에 수행되는 주요 유지 관리 작업입니다. 압축은 큰 정렬된 파일 모음을 더 큰 정렬된 파일로 결합하는 과정을 의미합니다. 압축은 프로젝션 빌드 프로세스의 일부로 프로젝션에서 자동으로 발생합니다.

압축은 주 데이터셋의 입력 트랜잭션 수에 관계없이 읽기 성능을 독립적으로 만듭니다. 이를 통해 프로젝션은 자주 점진적으로 작성되거나 스트리밍 데이터셋의 읽기를 가속화할 수 있습니다. 프로젝션 빌드는 가끔 평균보다 오래 실행될 수 있습니다. 이는 대개 압축 때문입니다.

프로젝션 쿼리 계획

프로젝션이 쿼리를 만족시키는 데 사용할 수 있는 경우, 항상 주 데이터셋보다 우선 선택됩니다. 주 데이터셋이 주어진 쿼리를 지원하는 데 더 최적화되어 있더라도 그렇습니다. 이는 쿼리 계획에 관한 의미를 크게 단순화합니다.

프로젝션 선택

다음 쿼리에 대해 쿼리 계획 중 프로젝션에 할당된 우선 순위는 다음과 같습니다:

  • 열에 대한 필터: 정렬된 대부분의 열이 포함된 프로젝션이 선호되며, 전역적으로 정렬된 프로젝션이 로컬 정렬된 프로젝션보다 선호됩니다. 예를 들어 필터가 x = 1 AND y = 2인 경우, 프로젝션은 다음 우선 순위로 선택됩니다:
    • xy에 대해 전역적으로 정렬됩니다.
    • xy에 대해 로컬 정렬되고(그리고 열 집합에 따라 버킷화)됩니다.
    • x에 대해 전역적으로 정렬됩니다.
    • x에 대해 로컬 정렬되고(그리고 열 집합에 따라 버킷화)됩니다.
  • 열에 대한 조인: 조인 열 집합에서 정확히 버킷화된 프로젝션이 선호됩니다.
  • 조인 및 필터: 예를 들어, 쿼리가 열 F에 대한 필터를 사용하고 열 J에 대한 조인을 사용하는 경우, 프로젝션은 다음 우선 순위에 따라 선호됩니다:
    • J에 대해 버킷화되고 열 F에 대해 로컬 정렬된 프로젝션
    • F에 대해 전역적으로 정렬된 프로젝션
    • F에 대해 로컬 정렬된 프로젝션(그리고 열 J 이외의 어떤 열에도 버킷화)
    • J에 대해 버킷화된 프로젝션(그리고 열 F 이외의 어떤 것에도 로컬 정렬)

이러한 우선 순위는 필터가 일반적으로 충분히 선택적이어서 조인보다 필터를 최적화하는 것이 낫다는 관점을 반영합니다. 그러나 이는 항상 그런 것은 아닙니다.