PostgreSQL 인터페이스

Spanner용 PostgreSQL 인터페이스를 사용하면 익숙한 PostgreSQL 도구와 구문을 사용하여 Spanner의 확장 가능하고 가용성이 높은 완전 관리형 인프라를 활용할 수 있습니다. 이 페이지는 PostgreSQL 인터페이스의 기능과 제한사항을 이해하는 데 도움이 됩니다.

PostgreSQL 인터페이스의 이점

  • 이식성: PostgreSQL 인터페이스는 오픈소스 PostgreSQL과 호환되는 스키마, 쿼리, 클라이언트를 사용하여 다양한 Spanner 기능에 대한 액세스 권한을 제공합니다. 이를 통해 Spanner에서 빌드된 애플리케이션을 다른 PostgreSQL 환경으로 이전하는 과정이 간소화됩니다. 이러한 이식성은 배포 유연성을 제공하고 비상시 출구 전략과 같은 재해 복구 시나리오를 지원합니다.
  • 기본 지식: 이미 PostgreSQL을 사용하고 있는 경우 동일한 PostgreSQL 문과 도구를 많이 사용하여 Spanner를 빠르게 시작할 수 있습니다. 데이터베이스 포트폴리오 전반에서 PostgreSQL을 사용하면 특정 제품과 공통 권장사항 간에 차이가 줄어듭니다.
  • 타협하지 않는 Spanner: PostgreSQL 인터페이스는 Spanner의 기존 기반을 기반으로 하므로 보완적인 GoogleSQL 생태계에서 제공되는 기능을 저하시키지 않고도 Spanner의 기존 가용성, 일관성, 가격 대비 성능 이점을 모두 제공합니다.

Spanner에서 지원되지 않는 PostgreSQL 기능

PostgreSQL 인터페이스는 PostgreSQL과 호환되는 스키마, 유형, 쿼리, 클라이언트를 통해 Spanner의 기능을 제공한다는 점을 이해하는 것이 중요합니다. PostgreSQL의 일부 기능은 지원되지 않습니다. 기존 PostgreSQL 애플리케이션을 Spanner로 마이그레이션하려면 Spanner용 PostgreSQL 인터페이스를 사용하더라도 지원되지 않는 PostgreSQL 기능이나 동작의 차이(예: 쿼리 최적화 또는 기본 키 설계)를 수용하기 위해 약간의 재작업이 필요할 수 있습니다. 하지만 일단 마이그레이션되면 워크로드에서 Spanner의 안정성과 고유한 다중 모델 기능을 활용할 수 있습니다.

다음 목록에는 지원되는 PostgreSQL 기능과 지원되지 않는 PostgreSQL 기능에 관한 자세한 내용이 나와 있습니다.

  • 지원되는 PostgreSQL 기능: PostgreSQL 인터페이스는 가장 흔히 사용되는 많은 PostgreSQL 기능을 지원합니다. 여기에는 스키마 및 유형 시스템의 핵심 부분, 여러 일반적인 쿼리 형태, 다양한 함수 및 연산자, PostgreSQL 시스템 카탈로그의 주요 측면이 포함됩니다. 애플리케이션은 Spanner의 PostgreSQL 유선 프로토콜 구현을 통해 연결하여 많은 PostgreSQL 클라이언트를 사용할 수 있습니다.
  • 지원되지 않는 PostgreSQL 언어 기능: 확장 프로그램, 사용자 정의 데이터 유형, 사용자 정의 저장 프로시저, 기타 기능이 지원되지 않습니다. 전체 목록은 Spanner의 PostgreSQL 언어를 참조하세요. PostgreSQL에는 오픈소스 PostgreSQL과 다르게 작동하는 몇 가지 기능도 있습니다. 자세한 내용은 Spanner용 PostgreSQL 인터페이스의 알려진 문제를 참조하세요.
  • Spanner 및 Spanner 컨트롤 플레인: PostgreSQL 인터페이스가 있는 데이터베이스는 Spanner 및 Google Cloud 도구를 사용하여 인스턴스를 프로비저닝, 보호, 모니터링, 최적화합니다. Spanner는 관리 활동을 위한 pgAdmin과 같은 도구를 지원하지 않습니다.
  • 클라이언트 및 유선 프로토콜 지원: Spanner는 애플리케이션과 함께 실행되는 간단한 프록시인 PGAdapter를 사용하여 PostgreSQL 유선 프로토콜의 핵심 쿼리 기능을 지원합니다. 이를 통해 많은 Spanner 클라이언트가 Spanner PostgreSQL 인터페이스 데이터베이스를 있는 그대로 사용하면서 Spanner의 전역 엔드포인트 및 연결 관리와 IAM 인증을 활용할 수 있습니다. Google의 내부 벤치마킹에 따르면 PGAdapter는 Spanner의 기본 제공 엔드포인트에 직접 연결하는 것과 비교하여 눈에 띄는 지연 시간을 추가하지 않는 것으로 나타났습니다.

운영 및 관리

PostgreSQL 인터페이스는 다음과 같은 기능으로 Spanner 데이터베이스의 관리를 지원합니다.

  • 통합 환경: Spanner의 기존 콘솔, API, 도구(예: Google Cloud CLI)를 사용하여 PostgreSQL 인터페이스 지원 데이터베이스를 프로비저닝, 관리, 모니터링합니다.
  • 유연한 구성: 생성 시 데이터베이스별로 PostgreSQL 인터페이스를 구성합니다. 단일 Spanner 인스턴스에서 GoogleSQL 및 PostgreSQL 인터페이스 데이터베이스를 모두 수용할 수 있습니다.
  • 공유 이점: 두 데이터베이스 언어 모두 동일한 기본 분산형 데이터베이스 엔진을 공유하므로 일관된 확장성, 일관성, 성능, 보안을 보장할 수 있습니다.

기능

Spanner의 PostgreSQL 인터페이스는 PostgreSQL 생태계와의 통합을 지원하는 두 가지 기본 기능을 제공합니다.

  • PostgreSQL 언어 지원

    Spanner는 데이터 쿼리 언어(DQL), 데이터 조작 언어(DML), 데이터 정의 언어(DDL)를 비롯한 PostgreSQL SQL 언어의 하위 집합을 제공합니다. 또한 인터리브 처리된 테이블, TTL(수명), 쿼리 힌트와 같은 Spanner 관련 기능을 지원하는 확장 프로그램도 포함되어 있습니다.

    지원되는 PostgreSQL 언어 요소에 대한 자세한 내용은 Spanner의 PostgreSQL 언어를 참조하세요. PostgreSQL 언어로 Spanner 기능을 사용하는 방법을 알아보려면 특정 기능에 관한 문서를 참조하세요.

  • PostgreSQL 클라이언트 지원

    Spanner를 사용하면 다양한 클라이언트에서 데이터베이스에 연결할 수 있습니다.

    • PostgreSQL 생태계 도구: PostgreSQL JDBC 드라이버PostgreSQL pgx 드라이버와 같은 익숙한 도구를 사용하여 애플리케이션을 PostgreSQL 인터페이스 데이터베이스에 연결할 수 있습니다. 지원되는 드라이버, ORM, 도구 목록은 PostgreSQL 드라이버 및 ORM을 참조하세요.

    • psql 명령줄 도구: 널리 사용되는 psql 대화형 환경이 지원되므로 터미널에서 직접 쿼리를 실행하고, 메타데이터를 탐색하고, 데이터를 로드할 수 있습니다.

    • PGAdapter: 이 간단한 프록시는 연결 관리 및 인증을 간소화합니다. 자세한 내용은 PGAdapter 개요를 참조하세요.

    • Spanner 클라이언트: Spanner는 Spanner JDBC 드라이버Go의 SQL 패키지용 드라이버와 함께 다양한 프로그래밍 언어(Java, Go, Python, Node.js, Ruby, PHP, C#, C++)용 오픈소스 Spanner 클라이언트를 제공합니다. Spanner 클라이언트는 프록시 없이 Spanner의 전역 엔드포인트에 직접 연결됩니다. 그러나 Spanner 클라이언트는 기존 PostgreSQL 클라이언트, ORM, 도구와의 호환성을 제공하지 않습니다.

PostgreSQL 인터페이스 사용 권장사항

PostgreSQL 인터페이스를 사용할 때는 다음 권장사항을 따르세요.

  1. 애플리케이션 연결: 지원되는 PostgreSQL 도구를 사용하여 효율적으로 연결합니다.
  2. 데이터베이스와 상호작용: 대화형 작업의 경우 다음 중에서 선택합니다.

다음 단계