Tmax OpenSQL 개발 엔지니어가 직접 제공하는 기술 자료입니다.
포스트별 댓글로 작성자와 직접 대화할 수 있어요! 궁금한 게 있다면 질문을 남겨주세요!
Tutorials
제품 설치 요구 및 설치 가이드

PostgreSQL Install
참고 메뉴얼
•
PostgreSQL 공식 문서 : https://www.postgresql.org/docs/
•
PostgreSQL 공식 위키 : https://wiki.postgresql.org/wiki/Main_Page
해당 문서는 위 공식 문서와 위키를 참고하여 작성되었습니다.
지원 플랫폼 및 OS
•
PostgreSQL Build Farm 에서 install 현황이 update 되고 있으니 참고 바랍니다.
패키지
필수 패키지
필수 패키지는 아래와 같은 사양을 요구합니다.
•
GNU Make 3.80 이상
PostgreSQL Install
SYB
Internals
PostgreSQL 의 Internal Architecture 포스팅
Parallel_Query_(2).png&blockId=09f02a87-0336-4a22-829c-0f150faf1522)
Reminder 
PostgreSQL의 Parallel Query에 대해 이어서 이야기 하기에 앞서 지난 챕터에서 이야기 했던 내용을 요약해보겠습니다.
Parallel Query 실행 계획에는 Gather 또는 Gather Merge 노드가 있고, 이 노드에는 항상 한 개의 자식 실행 계획이 있습니다. 메인 질의를 수행하던 프로세스(Leader Worker)가 Gather 또는 Gather Merge 노드를 만나면 실행 계획에서 제공한 Parallel Worker 개수만큼 Background Process 할당을 요청하게 됩니다. 할당된 Parallel Worker는 Gather의 자식 실행 계획을 받아서 병렬로 수행하게 됩니다.
Parallel Query 실행 계획을 만들 때에는 Parallel Safety 규칙을 준수합니다. Parallel Query 실행 계획은 Parallel Safe 또는 Parallel Restricted인 노드로만 구성되어야 하며, Gather의 자식 실행 계획은 Parallel Safe인 노드로만 구성되어야 합니다. CTE나 DML과 같은 Parallel Unsafe한 노드가 필요한 Path는 Parallel Query 실행 계획으로 만들어지지 않습니다.
더 자세한 내용은 지난 챕터를 참고하시기 바랍니다.
Overview 
이번 챕터에서는 Parallel Query의 실제 수행 과정에 대해서 이야기하려고 합니다. Leader Worker가 수행하는 Gather 노드에서 어떤 일이 발생하는지 중점적으로 말씀 드리겠습니다.
Shared Context for Parallel Query 
혹자는 질의를 병렬로 처리하기 위해서는 수행할 실행 계획을 Parallel Worker에게 공유하고 Leader Worker가 결과물을 공유 받을 수 있는 방법만 마련된다면 될 것이라고 생각할 수 있습니다. 하지만 실상은 다릅니다. PostgreSQL의 Parallel Worker는 전달 받은 실행 계획을 Executor Framework에 그대로 수행 시키도록 설계되어 있으며, Executor가 실행되기 위해서 기본적으로 필요로 하는 정보들을 Leader Worker가 Parallel Worker에게 전달해야만 합니다.
예를 들어 EXPLAIN ANALYZE 문을 사용하여 수행한 질의의 런타임 통계 정보를 알고 싶다고 한다면, Parallel Worker는 각자 프로세스에서 실행 계획을 수행하며 수집한 통계 정보를 Leader Worker에게 공유하고, Leader Worker는 여러 프로세스의 통계 정보를 집계하여 보여줘야 합니다.
다른 예를 들어보면, 질의에 사용되는 바인드 변수(Bind Variable)은 Executor의 런타임 최상위 컨텍스트인 QueryDesc에 포함되어 있는데, 바인드 변수를 Gather의 자식 실행 계획에서도 사용하고 있다면 Parallel Worker에게 바인드 변수를 공유해야 정상적으로 실행 계획을 수행할 수 있게 됩니다.
이렇듯 질의를 수행하기 위해서 필요로 하는 정보는 다양합니다. PostgreSQL에서는 Leader Worker와 Parallel Worker 사이에 공유해야 하는 정보를 공유 메모리를 통해 공유하여 해결합니다. Leader Worker는 동적 공유 메모리(Dynamic Shared Memory) 세그먼트 할당을 요청하고 해당 세그먼트에 공유 컨텍스트를 직렬화하여 복사합니다.
Leader Worker가 공유하는 공유 컨텍스트는 아래와 같습니다.
19. PostgreSQL의 Parallel Query (2)
JSW
Load more
Technical Guide
Admin, Feature, Backup, Operating 관련 기술 가이드 포스팅

Npgsql 개요
Npgsql란?
Npgsql is an open source ADO.NET Data Provider for PostgreSQL, it allows programs written in C#, Visual Basic, F# to access the PostgreSQL database server. It is implemented in 100% C# code, is free and is open source.
An Entity Framework Core provider is also available, and exposes some features unique to the PostgreSQL database to EF Core users.
- Npgsql 공식 홈페이지 소개 내용-
Npgsql은 100% C# 코드로 만들어진 PostgreSQL 인터페이스로 C#, Visual Basic, F# 프로그래밍 언어에서 PostgreSQL 데이터베이스에 접속할 수 있도록 만들어주는 오픈소스 라이브러리 입니다.
Entitiy Framework Core에서도 사용 가능하며, Entitiy Framework 6 버전도 지원합니다.
.NET 이란?
.NET은 모든 운영체제에서 기본적으로 실행할 수 있는 데스크탑, 웹 및 모바일 어플리케이션 빌드를 위한 오픈 소스 플랫폼입니다.
.NET Framework는 Windows에서 웹, 서비스, 데스크톱 등 앱을 실행할 수 있도록 지원합니다.
.NET Core는 .NET 개발자를 위한 교차 플랫폼을 지원합니다.
Npgsql 버전 호환성 확인
(Interface) .NET - Npgsql
LHW
.png&blockId=dd68031c-4023-44cc-ad79-e3ca1c1b4c8e)
Interface(C++) 개요
Interface(C++) 이란?
postSQL은 C/C++를 이용하여 인터페이스를 구축할 수 있습니다. C++을 사용하여 postgreSQL과 상호작용하려면 libpqxx 라는 라이브러리를 사용해야 합니다.
- PostgreSQL 공식 문서 -
설치 요구사항
libpqxx의 지원 범위
libpqxx의 가장 최신 버전은 23년도 6월 기준 7.8.0 이며 stable은 7.7.5 버전입니다.
https://libpqxx.readthedocs.io/en/latest/
49. Interface(C++)
KMS

bucardo 개요
bucardo 란?
Its heart a Perl daemon that listens for NOTIFY requests and acts on them, by connecting to remote databases and copying data back and forth
- bucardo 공식 문서 -
bucardo 공식 홈페이지 : https://bucardo.org/Bucardo/
Bucardo는 복제 및 동기화 솔루션 이며, 다중 마스터 복제, 다중 노드 복제, 양방향 복제 등 다양한 복제 방법 지원하며, 안정성과 유연성을 제공합니다.
Bucardo 주요 개념과 기능은 아래와 같습니다.
•
주요 개념과 기능
•
설정 파라미터 - Bucardo show all
bucardo 설치
•
Bucardo 설치 파일 다운로드
45. bucardo
KMS
Load more
CONTACT US

제품 문의
•

기술지원 문의
•