빠른 시작: Azure HorizonDB용 Visual Studio Code용 PostgreSQL 확장(미리 보기)

Visual Studio Code PostgreSQL 확장은 PostgreSQL 데이터베이스의 개발 및 관리를 간소화합니다. 이 가이드에서는 PostgreSQL 데이터베이스에 연결하고 Visual Studio Code 내에서 쿼리를 실행하는 방법을 안내합니다.

연결 여부에 관계없이 동일한 워크플로가 적용됩니다.

  • 로컬 PostgreSQL 설치,
  • Azure HorizonDB 클러스터입니다.

사전 요구 사항

시작하기 전에 적절한 도구와 리소스를 다운로드하여 설치했는지 확인합니다.

PostgreSQL 확장 설치

PostgreSQL 확장을 설치하려면 다음을 수행합니다.

  1. Visual Studio Code 열고 작업 표시줄에서 Extensions 아이콘을 선택하거나 View: Extensions 명령을 사용하여 확장 보기로 이동합니다.
  2. 확장 마켓플레이스에서 PostgreSQL 을 검색합니다.
  3. Microsoft에서 작성한 PostgreSQL 확장을 선택하고 설치를 선택합니다.

설치 후 Visual Studio Code 사이드바에 PostgreSQL 확장 아이콘이 나타납니다.

PostgreSQL에 연결 추가

로컬 또는 원격 서버에서 호스트되는지에 관계없이 PostgreSQL 데이터베이스에 연결하는 것은 데이터를 관리하고 상호 작용하는 기본적인 단계입니다. 이 프로세스에는 클라이언트 애플리케이션과 데이터베이스 간에 보안 링크를 설정하기 위해 서버 주소, 포트 및 인증 자격 증명과 같은 필요한 연결 세부 정보를 제공하는 작업이 포함됩니다.

  1. 사이드바에서 코끼리 아이콘을 선택하여 PostgreSQL 확장 페이지를 엽니다.
  2. 연결 추가 단추를 선택합니다.
  3. 연결 세부 정보를 수동으로 입력하거나 연결 문자열 붙여넣습니다.
  4. Azure를 사용하는 경우 Azure 계정에 로그인하고 데이터베이스 인스턴스를 찾습니다. 구독, 리소스 그룹, 서버/클러스터데이터베이스 이름을 필터링합니다. 액세스 권한이 있는 구독의 Azure HorizonDB 클러스터가 나열됩니다.

연결 문자열 형식

Azure HorizonDB 클러스터는 두 번째 엔드포인트를 노출합니다. 워크로드와 일치하는 항목을 선택합니다.

  • 읽기/쓰기 엔드포인트 - 읽기 및 쓰기를 모두 허용하는 기본 엔드포인트에 연결합니다. 최신 커밋된 데이터를 확인해야 하는 애플리케이션 쓰기, 스키마 변경 및 읽기에 이 엔드포인트를 사용합니다.
  • 판독기 엔드포인트 - 클러스터의 모든 읽을 수 있는 HA 복제본에서 자동으로 연결 부하를 분산합니다. 읽기 스케일 아웃, 보고 및 분석 워크로드에 이 엔드포인트를 사용합니다. 현재 최대 4개의 읽을 수 있는 HA 복제본이 지원되며(8개로 증가) 각각은 주 복제본과 동일하게 크기가 조정됩니다.

두 엔드포인트 호스트 이름은 클러스터 Overview 페이지와 Azure 포털의 Replicas 페이지에 나열됩니다. 연결 문자열 형식은 표준 libpq 형식입니다.

# Read/write endpoint (primary)
psql "host=<cluster-name>.<region>.horizondb.azure.com port=5432 dbname=<database> user=<user> sslmode=require"

# Reader endpoint (load-balanced HA replicas)
psql "host=<cluster-name>-reader.<region>.horizondb.azure.com port=5432 dbname=<database> user=<user> sslmode=require"

일반적인 패턴은 읽기/쓰기 엔드포인트에 대한 프로필과 판독기 엔드포인트에 대한 프로필 등 두 개의 프로필을 연결 관리자 저장하고 작업에 따라 프로필 간에 전환하는 것입니다.

인증

확장은 다음 두 가지 인증 방법을 지원합니다.

  • 사용자 이름/암호 - 연결 필드에 직접 데이터베이스 자격 증명을 입력합니다.

 Visual Studio Code 연결 대화 상자에 대한 PostgreSQL 확장 스크린샷.

연결 테스트 및 저장

  1. 연결 테스트를 선택하여 연결 세부 정보를 확인합니다.
  2. 테스트에 성공하면 테스트 상자에 확인 표시가 표시됩니다.
  3. 연결을 설정하려면 연결을 선택합니다.
  4. 연결이 자동으로 저장되고 연결 창에 표시됩니다.

클라우드 호스팅 데이터베이스에 연결할 때 테스트가 실패하는 경우 클러스터의 방화벽 규칙(HorizonDB)에서 클라이언트 IP 주소를 허용하는지 확인합니다. 두 서비스 모두 현재 IP 허용 목록을 사용하여 공용 액세스를 지원합니다. HorizonDB의 프라이빗 엔드포인트 지원은 로드맵에 있습니다.

데이터베이스 개체 검색

개체 탐색기는 데이터베이스 개체의 계층적 보기를 제공합니다.

  • 데이터베이스 항목을 확장하여 스키마, 테이블, 뷰, 함수 및 저장 프로시저를 봅니다.
  • 데이터베이스를 마우스 오른쪽 단추로 클릭하여 다음 옵션을 확인합니다.
    • 새 쿼리 시작
    • 이 데이터베이스와 채팅 (채팅 환경 시작 @pgsql )
    • PSQL로 연결하여 터미널 연결 시작 psql
  • 테이블을 마우스 오른쪽 단추로 클릭하고 상위 1000개 선택 항목을 선택하여 해당 데이터를 봅니다. 쿼리가 쿼리 편집기에서 열리고 결과는 결과 뷰어 탭에 표시됩니다.

Azure HorizonDB 연결에서 다음을 사용하여 클러스터에서 사용할 수 있는 허용 목록 확장을 나열할 수도 있습니다.

SELECT * FROM pg_available_extensions ORDER BY name;

데이터베이스에 설치할 수 있는 일반적인 HorizonDB 확장에는 다음이 vectorpg_diskannazure_ai포함됩니다.age

CREATE EXTENSION IF NOT EXISTS azure_ai;
CREATE EXTENSION IF NOT EXISTS vector;
CREATE EXTENSION IF NOT EXISTS pg_diskann;
CREATE EXTENSION IF NOT EXISTS age;

쿼리 실행

쿼리 편집기를 사용하여 SQL 쿼리 초안을 작성하고 실행합니다.

  • 컨텍스트 인식 IntelliSense를 활용하여 SQL 키워드 및 개체 이름을 자동으로 완성합니다.
  • 가독성과 정확도를 높이기 위해 구문 강조 표시 및 자동 서식을 사용합니다.
  • 쿼리 기록 창을 통해 이전에 실행한 쿼리에 액세스합니다.

HorizonDB에서 읽기 및 쓰기 작업 라우팅하기

읽기/쓰기 및 판독기 엔드포인트 모두에 대한 프로필이 있는 경우 쿼리를 실행하기 전에 쿼리 편집기 연결 선택기에서 적절한 연결을 선택합니다. 쓰기 및 DDL은 읽기/쓰기 엔드포인트에 대해 실행되어야 합니다. 판독기 엔드포인트는 읽기 전용 쿼리를 허용하고 HA 복제본 간에 부하를 분산합니다.

쿼리 결과 검토

결과 뷰어는 쿼리 결과와 상호 작용하는 고급 기능을 제공합니다.

  • 추가 분석을 위해 결과를 CSV, JSON 또는 Excel 형식으로 내보냅니다.
  • 검색, 필터링 및 정렬 옵션을 사용하여 데이터를 구체화합니다.
  • 영구 데이터 뷰는 탭 간에 전환하는 동안 컨텍스트를 유지 관리합니다.

고급 지원을 위해 GitHub Copilot 사용

GitHub Copilot 통합은 AI 기반 코드 제안, 쿼리 최적화 팁 및 대화형 데이터베이스 지원을 제공하여 PostgreSQL 개발 환경을 향상시킵니다. 이 기능을 사용하면 워크플로를 간소화하고, 개발 시간을 줄이고, 데이터베이스 작업에 대한 심층적인 인사이트를 얻을 수 있습니다.

GitHub Copilot 및 Copilot 채팅 확장이 설치되어 있는지 확인합니다. GitHub 계정에 로그인하고 확장 설정에서 Copilot 채팅 에이전트를 사용하도록 설정합니다 @pgsql .

대화형 데이터베이스 프롬프트

데이터베이스를 마우스 오른쪽 단추로 클릭하고 이 데이터베이스와의 채팅 을 선택하여 Copilot와 상호 작용합니다.

자세한 인사이트 및 제안을 받으려면 다음 예제와 같은 프롬프트를 작성합니다.

@pgsql tell me about the tables in the HR schema

Azure HorizonDB 클러스터에 연결된 경우 Copilot 설치된 확장을 포함하여 라이브 연결 컨텍스트를 선택하므로 프롬프트는 pgvector, pg_diskann 고급 필터링 및 azure_ai AI 함수와 같은 HorizonDB 기능을 활용할 수 있습니다.

자세한 내용은 Quickstart: Visual Studio Code PostgreSQL 확장에 대한 GitHub Copilot 구성을 참조하세요.

Visual Studio Code를 사용하여 연결

Visual Studio Code용 PostgreSQL 확장의 Add Connection 옵션은 Azure HorizonDB 클러스터에 연결하는 과정을 간소화해 줍니다. 이 기능은 필요한 연결 세부 정보를 안내하여 설정을 간소화합니다.

연결 추가 단추를 사용하여 HorizonDB 클러스터에 대한 새 연결을 만듭니다. 읽기/쓰기 엔드포인트 또는 판독기 엔드포인트와의 연결을 미리 채울 수 있습니다.

요구 사항 확인

  • 측면 창에서 적절한 확인란을 선택하여 모든 필수 구성 요소(Visual Studio Code 및 PostgreSQL 확장)가 충족되는지 확인합니다.
  • 필요한 경우 측면 창의 링크를 사용하여 Visual Studio Code 및 확장을 다운로드합니다.
  • 필요에 따라 기본 데이터베이스 이름, 인증 방법 및 연결 풀링과 같은 연결 매개 변수를 입력합니다.

Open in Visual Studio Code 단추가 강조 표시된 Connect with Visual Studio Code 측면 창을 보여 주는 Azure 포털의 스크린샷.

Visual Studio Code에서 열기

  • 측면 창 에서 Visual Studio Code에서 열기 단추를 선택합니다.
  • Visual Studio Code 및 확장을 여는 데 40초 이상이 걸리면 Visual Studio Code에서 다시 시도 열기 단추가 측면 창에 나타납니다.

Visual Studio Code 시작

  • Visual Studio Code가 설치되고 실행되면 PostgreSQL 확장의 연결 대화 상자가 자동으로 시작됩니다.
  • Visual Studio Code가 설치되어 있지만 열리지 않으면 약 40초 내에 시작되고 연결 대화 상자가 나타납니다.

인증 정보를 제공하세요

기본 인증 방법을 선택합니다.

  • 암호 인증 - 사용자 이름 및 암호를 수동으로 입력합니다.

프로필 이름, 데이터베이스 이름(선택 사항), 서버 그룹포트 번호와 같은 다른 연결 세부 정보를 지정합니다.

저장 및 연결

연결 저장 및 연결 단추를 선택하여 연결을 설정합니다. 연결되면 개체 탐색기 트리에서 서버를 확장하여 데이터베이스, 스키마 및 테이블을 보거나 기본 제공 쿼리 도구를 사용하여 데이터베이스 개체를 관리합니다.

Troubleshoot

연결 프로세스 중에 문제가 발생하는 경우:

  • Visual Studio Code 및 PostgreSQL 확장이 설치되고 사용하도록 설정되어 있는지 확인합니다.
  • Azure HorizonDB 클러스터에서 클라이언트 IP 주소가 허용되는지 확인합니다.
  • HorizonDB의 경우 워크로드에 대한 올바른 엔드포인트에 연결하고 있는지 확인합니다. 쓰기는 판독기 엔드포인트가 아닌 읽기/쓰기 엔드포인트를 대상으로 해야 합니다.
  • 필수 구성 요소를 충족하지 않는 경우 사이드 창은 연결 다시 시도를 포함하여 문제를 해결하기 위한 피드백과 단계를 제공합니다.
  • 데이터베이스에 대한 사용자 이름과 자격 증명이 올바른지 확인합니다.

피드백 및 지원

버그, 기능 요청 및 문제의 경우 Visual Studio Code의 기본 제공 피드백 도구를 사용합니다. Visual Studio Code 도움말 메뉴 또는 PGSQL 명령 팔레트를 통해 이 피드백 프로세스를 완료할 수 있습니다.

  • 도움말 메뉴
    • 도움말 > 보고서 문제로 이동
  • 명령 팔레트
    • 명령 팔레트 Ctrl + Shift + P 를 열고 다음을 실행합니다. PGSQL: Report Issue