복잡한 파이프라인을 빌드하지 않고 운영 데이터와 함께 분석 데이터의 실시간 쿼리를 실행하려면 PostgreSQL용 AlloyDB에서 레이크하우스 제휴를 사용하면 됩니다. bigquery_fdw 확장 프로그램으로 구동되는 AlloyDB는 BigLake 외부 테이블을 통해 실시간 데이터 및 Apache Iceberg와 같은 개방형 형식에 액세스하기 위해 쿼리를 BigQuery로 라우팅하므로 복잡한 ETL (추출, 변환, 로드) 마이그레이션이 필요하지 않습니다.
레이크하우스 제휴의 이점
레이크하우스 제휴 접근 방식은 다음과 같은 이점을 제공합니다.
- Zero ETL: 복잡한 파이프라인을 빌드하거나 유지보수하지 않고 분석 데이터를 직접 쿼리합니다.
- 익숙한 문법: 표준 PostgreSQL 문법을 사용하여 BigQuery 데이터를 쿼리합니다.
- 실시간 통계: 운영 테이블과 함께 최신 데이터에 액세스합니다.
- 컴퓨팅 오프로드: 푸시다운 최적화를 통해 BigQuery 분산 엔진을 사용하여 대규모 작업을 수행합니다.
- 승인된 액세스: 승인된 서비스 계정만 외부 데이터를 쿼리할 수 있도록 Identity and Access Management (IAM)를 사용하여 중앙 집중식 액세스 제어를 수행합니다.
사용 사례
레이크하우스 제휴는 다음과 같은 비즈니스 및 기술 사용 사례를 지원합니다.
- 하이브리드 트랜잭션 및 분석 처리 (HTAP) 워크로드: 트랜잭션 성능에 영향을 주지 않고 AlloyDB의 실시간 운영 데이터와 BigQuery 또는 Cloud Storage의 이전 또는 분석 데이터를 동시에 쿼리할 수 있습니다.
- 취약한 파이프라인 없는 실시간 통계: 기존 ETL 프로세스의 지연 시간 및 실패 모드를 방지할 수 있습니다. 최신 정보를 기반으로 비즈니스 결정을 내릴 수 있도록 최신 분석 데이터에 즉시 액세스합니다.
- 에이전트 워크플로를 위한 데이터 구체화: AlloyDB 열 기반 엔진 및 AlloyDB AI 기능을 사용하기 위해 외부 분석 데이터를 AlloyDB로 구체화할 수 있습니다. 이를 통해 제휴 데이터에서 고성능 벡터 검색, 머신러닝 임베딩, 고급 AI 기반 에이전트 워크플로를 사용할 수 있습니다.
아키텍처 및 데이터 흐름
다음 다이어그램은 레이크하우스 제휴를 사용할 때 데이터 흐름과 구성요소 상호작용을 보여줍니다.
다음은 AlloyDB의 레이크하우스 제휴를 위한 데이터 흐름 프로세스를 설명합니다.
- 쿼리 제출: AlloyDB 인스턴스에 표준 PostgreSQL 쿼리를 제출합니다.
- 쿼리 계획 및 최적화: AlloyDB 쿼리 플래너는 BigQuery 외부 데이터 래퍼 (FDW)를 사용하여 외부 BigQuery 데이터 세트에 매핑된 테이블을 식별합니다.
- 푸시다운 최적화: AlloyDB는 특정 필터와 집계를 BigQuery로 직접 푸시다운하여 쿼리를 최적화합니다. 이렇게 하면 네트워크에서 관련 필터링된 행 또는 사전 집계된 요약만 전송됩니다.
- 실행 및 검색: BigQuery는 쿼리의 일부를 실행합니다. 즉, BigQuery 기본 제공 스토리지를 직접 스캔하거나 Cloud Storage에 저장된 Apache Iceberg 테이블을 읽고 결과 데이터 세트를 AlloyDB로 다시 스트리밍합니다.
- 최종 처리 및 응답: AlloyDB는 외부 데이터를 로컬 운영 테이블과 결합하고, 나머지 쿼리 처리를 완료하고, 최종 결과를 애플리케이션에 반환합니다.
통합 쿼리의 데이터 유형 고려사항
레이크하우스 제휴를 사용하여 AlloyDB에서 외부 BigQuery 테이블을 쿼리하면 AlloyDB 쿼리 플래너는 BigQuery 데이터 유형을 상응하는 PostgreSQL 데이터 유형으로 해석합니다. 이러한 매핑을 이해하는 것은 올바른 쿼리를 작성하고 bigquery_fdw 확장 프로그램에서 사용하는 외부 테이블 정의를 이해하는 데 매우 중요합니다.
BigQuery 데이터 유형에 직접 매핑이 없거나 특별한 처리가 필요한 경우 쿼리 내에서 명시적 CAST 함수를 사용하거나 호환되는 유형으로 데이터를 표시하는 BigQuery에서 뷰를 만들어야 할 수 있습니다.
지원되는 데이터 유형 및 상응하는 PostgreSQL 유형 목록은 데이터 유형 매핑을 참조하세요.
보안 및 액세스 제어
AlloyDB에서 BigQuery 데이터에 대한 액세스는 IAM을 통해 관리됩니다. 쿼리할 수 있는 데이터 세트와 테이블을 정의하려면 AlloyDB 클러스터 서비스 계정에 특정 IAM 역할을 부여해야 합니다. 이렇게 하면 보안을 손상시키지 않고 통합 쿼리가 조직의 중앙 집중식 데이터 거버넌스 정책을 준수할 수 있습니다. 자세한 내용은 필수 역할을 참조하세요.
푸시다운
AlloyDB에서 데이터를 이동하거나 처리하기 전에 BigQuery에서 데이터를 필터링하거나 요약하여 쿼리 속도를 높이고 비용을 절감하는 필터 및 집계 푸시다운 기법을 사용할 수 있습니다. 이 접근 방식은 네트워크 트래픽과 메모리 사용량을 최소화하여 리소스 한도를 초과하지 않고도 대규모 데이터 세트를 빠르고 효율적으로 분석할 수 있도록 합니다.
필터 푸시다운
필터 푸시다운(술어 푸시다운이라고도 함)은 AlloyDB에서 BigQuery로 쿼리 필터(WHERE 절 사용)를 이동하여 데이터 필터링을 스토리지 레이어에 최대한 가깝게 이동하는 최적화
기법입니다.
필터 푸시다운을 사용하면 WHERE 절이 있는 SQL 쿼리를 사용하여 원격 테이블의 데이터 하위 집합에 액세스할 수 있습니다. 이 데이터는 로컬 테이블에 구체화되거나 PostgreSQL 테이블에 로컬 파티션으로 연결될 수도 있습니다.
필터 푸시다운에 지원되는 작업은 다음과 같습니다.
- 표준 비교 연산자:
=,<,>,<=,>=,<> - 논리 연산자:
AND,OR,NOT - 패턴 일치:
LIKE및NOT LIKE - Null 검사:
IS NULL,IS NOT NULL - 목록 내 평가:
IN,NOT IN
집계 푸시다운
집계 푸시다운 은 스토리지 레이어에 최대한 가깝게 계산(예: SUM, COUNT, AVG 또는 GROUP BY)을 수행하는 고급 데이터베이스 최적화입니다. 이 푸시다운은 BigQuery에서 요약 함수를 직접 평가하므로 AlloyDB로 반환되는 행 수를 크게 줄일 수 있습니다.
집계 푸시다운에 지원되는 작업은 다음과 같습니다.
SUMCOUNTAVGMINMAX
한도 푸시다운
한도 푸시다운 (OFFSET 푸시다운 포함)은 쿼리의 LIMIT 및 OFFSET 절을 AlloyDB에서 BigQuery로 이동하는 최적화 기법입니다.
이를 통해 BigQuery는 요청된 특정 행 하위 집합만 반환할 수 있으므로 네트워크 트래픽과 쿼리 지연 시간이 크게 줄어듭니다.
한도 푸시다운은 가능한 경우 자동으로 적용됩니다. 다음 조건을 충족하는지 확인하세요.
- 쿼리가
FETCH FIRST절에서WITH TIES옵션을 사용하지 않습니다. LIMIT및OFFSET표현식은 원격으로 평가할 수 있는 기본 상수 또는 표현식입니다.
BigQuery 비용 및 결제
BigQuery 외부 데이터 래퍼는 다음 항목에 따라 달라집니다.
- BigQuery 컴퓨팅 가격 책정
- BigQuery Storage API 가격 책정
자세한 내용은 BigQuery 가격 책정을 참조하세요.
런타임 프로젝트
BigQuery에서는 한 프로젝트에 데이터를 저장하고 다른 프로젝트에서 쿼리를 실행할 수 있습니다. 쿼리를 실행하고 컴퓨팅 비용이 발생하는 프로젝트를 런타임 프로젝트 (또는 결제 프로젝트)라고 합니다.
런타임 프로젝트를 데이터 스토리지 프로젝트와 분리하면 기본 데이터를 이동하지 않고도 컴퓨팅 비용을 특정 비용 센터로 격리하고, 할당량을 독립적으로 관리하고, 여러 워크로드에서 지출을 제어할 수 있습니다.
BigQuery 데이터에 액세스하도록 AlloyDB를 구성할 때 서버 수준 (연결된 모든 외부 테이블에 적용) 또는 개별 테이블 수준에서 런타임 프로젝트를 지정할 수 있습니다. 런타임 프로젝트를 지정하지 않으면 AlloyDB는 기본적으로 데이터를 소유한 프로젝트를 사용합니다.
제한사항
AlloyDB와 BigQuery는 서로 다른 기본 콜레이션을 사용할 수 있으므로 두 시스템 간에 데이터 정렬 또는 문자열 비교 결과가 다를 수 있습니다. 예를 들어 버전 15, 16, 17의 기본 PostgreSQL 콜레이션은 유니코드 코드 포인트를 기반으로 문자열을 엄격하게 평가하는 BigQuery의 기본 콜레이션과 달리 정렬 중에 대소문자 구분 여부를 다르게 처리할 수 있습니다.
BigQuery에서 원격으로 실행되는 쿼리의 모든 부분에서 콜레이션은 BigQuery의 설정을 따릅니다. 콜레이션 충돌을 줄이려면 AlloyDB에서 ICU가 없는
C.UTF-8콜레이션과 BigQuery에서 기본 (비어 있음) 콜레이션을 사용하는 것이 좋습니다.푸시다운 후 BigQuery에서 많은 양의 데이터를 반환하는 쿼리는 최적화되지 않습니다.
외부 테이블을 만들 때 AlloyDB는 원격 BigQuery 테이블의 존재 또는 스키마를 적극적으로 검증하지 않습니다.
페더레이션 쿼리에 많은 양의 데이터를 읽어야 하는 경우(예: 필터 푸시다운을 적용할 수 없는 경우) BigQuery API 응답 크기 한도로 인해 쿼리가 실패할 수 있습니다. BigQuery 최대 응답 크기 한도는 계속 적용됩니다. 이러한 한도에 대한 자세한 내용은 할당량 및 한도를 참조하세요.
PostgreSQL은 중간 계산에 더 높은 정밀도를 지원하는 반면 BigQuery는 10진수 정밀도를 엄격하게 제어합니다. 이러한 차이로 인해 복잡한 계산 중에 정밀도 손실 또는 오버플로 오류가 발생할 수 있습니다. 자세한 내용은 10진수 유형을 참조하세요.
Database Migration Service는
bigquery_fdw확장 프로그램을 사용하여 만든 외부 테이블의 마이그레이션을 지원하지 않습니다. 해결 방법으로 마이그레이션 작업에서 외부 테이블을 제외하거나 마이그레이션을 시작하기 전에 삭제한 후 마이그레이션이 완료된 후 대상 AlloyDB 클러스터에서 다시 만들 수 있습니다.bigquery_fdw확장 프로그램을 사용하여 외부 테이블을 쿼리하면 BigQuery는 AlloyDB 클러스터 서비스 계정을 기반으로 데이터 액세스 권한을 평가합니다. 데이터베이스 사용자가 IAM 데이터베이스 인증을 사용하여 로그인하더라도 개별 IAM 사용자 권한은 원격 BigQuery 테이블에 대해 확인되지 않습니다. 자세한 내용은 BigQuery 데이터 세트에 AlloyDB 액세스 권한 부여를 참조하세요.