일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- Windows 10
- JSP
- STS
- Next.js
- maven
- Eclipse
- PG-Strom
- tortoise SVN
- Spring Cloud
- orioledb
- graph database
- Can't load AMD 64-bit .dll on a IA 32-bit platform
- Maven Project
- Java
- MariaDB
- HTML Special Entity
- tomcat
- typeorm
- NextJs
- BRIN
- exit code = -805306369
- OGM
- loadcomplete
- Spring
- springboot
- 서브라임 텍스트
- NestJS
- HTML Code
- PostgreSQL
- Spring Boot
- Today
- Total
Undergoing
PostGraphile 본문
What is PostGraphile
이하 PostGraphile Github 소개문 일부
GraphQL은 서버와 통신하는 새로운 방법입니다. 과도한 인출과 과소 인출의 문제를 없애고, 강력한 데이터 유형을 통합하며, 내장된 검사, 문서화 및 감가상각 기능을 갖추고 있으며, 많은 프로그래밍 언어로 구현됩니다. 이 모든 것은 영광스럽게도 낮은 대기 시간 사용자 경험, 더 나은 개발자 경험 및 훨씬 더 높은 생산성으로 이어집니다. 이 모든 것 때문에, GraphQL은 일반적으로 RESTful API 서비스의 대체(또는 동반자)로 사용됩니다.
PostgreSQL은 "세계에서 가장 진보된 오픈 소스 데이터베이스"라고 자칭하며, 새로운 릴리스마다 더욱 놀라운 기능과 성능 향상을 제공합니다. 데이터베이스를 평범한 CRUD 저장소로 생각하는 것은 이제 현대식 PostgreSQL이 사용자에게 많은 것을 해줄 수 있는 오래된 관점입니다. RLS(Row-Level Security, PG9.5에 소개됨)를 사용한 인증에서부터 FDW(Foreign Data Wrapper)를 통한 실시간 알림, LISTEN/NOTIFY를 통한 실시간 알림까지.
PostGraphile은 이 두 가지 놀라운 기술을 함께 결합하여 애플리케이션을 더 빠르게 구축할 뿐만 아니라 번개처럼 빠른 애플리케이션을 구축할 수 있도록 도와줍니다. PostGraphile을 사용하면 잘 설계되고 확장 가능하며 사용자 정의 가능하고 믿을 수 없을 정도로 성능이 뛰어난 GraphQL 서버를 통해 PostgreSQL의 힘에 액세스할 수 있습니다. 테이블, 열, 인덱스, 관계, 보기, 유형, 기능, 주석 등을 자동으로 감지하여 데이터에 대해 매우 지능적이고 데이터베이스 스키마를 변경할 때 다시 시작하지 않고 자동으로 자체 업데이트되는 GraphQL 서버를 제공합니다.
개념
- GraphQL과 PostgreSQL을 연결해주는 것
- 데이터베이스 기반(DB-driven) 개발을 활용하여 Postgres 데이터베이스 스키마에서 Graphql 서버를 생성 및 업데이트하여 스키마 변경 사항을 자동으로 감지하고 이 변경사항에 따라 서버를 업데이트
구 명칭 : PostGraphQL
개발 언어 : Node.js
사용법
- PostGraphile CLI: 터미널에서 PostGraphile API를 바로 시작할 수 있음
- Middleware : postgraphile 패키지에서 가져온 PostGraphile 인스턴스를 NodeJS 서버에 마운트
- Docker : PostGraphile을 도커 이미지로 가져와 CLI 옵션으로 Docker 컨테이너에 전달하여 생성
인터페이스 아키텍처
- (PostGraphile 자체 아키텍처 존재하지 않음)
- AWS에서 PostGRaphile을 통해 GraphQL과 연동하는 아키텍처는 존재
1. 개요
1) PostGraphile 프로젝트 개요
- 개요
- 제품 연구 연혁
- 2016년 5월 첫 릴리즈
- 2016년 10월 v2.0.0 릴리즈
- CLI 사용법 개선
- 보안성 강화
- PG Type 지원 강화
- 2017년 2월 v3.0.0 릴리즈
- Auto Exporting 기능 추가
- 2018년 6월 v4.0.0 릴리즈
- 메모리 사용량 성능 개선
- 플러그인 기능 강화
- 스키마 정돈
- 2023년 8월 v5 베타 테스트 시작
- 2023년 10월 현재 최신 버전은 v4.14.0
2. 기술
1) 제품 개요
- GraphQL과 PostgreSQL을 연결해주는 솔루션
- Frontend App 개발자 혹은 API Client가 Data Layer에 액세스 할 수 있도록 해줌
- 데이터베이스 기반(DB-driven) 개발을 활용하여 Postgres Database Schema에서 Graphql 서버를 생성 및 업데이트
- 스키마 변경 사항을 자동으로 감지하고 이 변경사항에 따라 서버를 업데이트
- 개발 언어 : Node.js
2) 주요 Features
- N+1 query issues 없음
- N+1 query : Database 검색에서 관련 entity가 Database에서 개별적으로 쿼리되어 무한 루프로 빠질 수 있는 문제
- Schema 및 Server Plugin을 통한 확장성 보장
- Auto-discovered relations
- 외래 키를 검사하여 Database Table 간의 관계를 자동으로 발견하고 이를 사용하여 생성된 GraphQL Schema에 관계 구축
- API에서 쉽게 확장할 수 있는 계산된 Column 지원
- GraphQL 테이블 유형에 추가 Column(Field)로 보이는 것을 추가. 이 Field필드의 값은 PostgreSQL Schema에 정의된 함수를 호출한 Result Set임
- Custom Query Procedures 지원
- 자동 CRUD Mutation
- 각 Table의 Schema에 CRUD Mutation을 자동으로 추가
- 복잡한 변경 사항을 간단하게 노출할 수 있는 Custom Mutation Procedure 지원
- LISTEN/NOTIFY 및/또는 논리적 디코딩을 통해 구동되는 Real-Time Feature 제공
- GraphQL-PostgreSQL 간 Serverless 환경 구성
3) 구성 아키텍처
--- 더 찾아봐야 할듯. 보기 편한 아키텍처는 잘 안 보임(202406기준)
4) 동작 구성
① 사용자가 PostGraphile에 GraphQL 쿼리를 전송
② PostGraphile은 전달받은 쿼리를 Postgres 쿼리로 변환
③ Postgres에 변환된 구문 전달
④ PG Basic Internal 프로세스(Parser → Analyzer → Rewriter → Planner → Executor)를 통해 쿼리 실행
⑤ 결과 메시지를 PostGrephile에 전달
⑥ 사용자에게 쿼리 결과 발신
5) 설치 및 사용법
- PostGraphile CLI: 터미널에서 PostGraphile API를 바로 시작할 수 있음
- Middleware : postgraphile 패키지에서 가져온 PostGraphile 인스턴스를 NodeJS 서버에 마운트
- Docker : PostGraphile을 도커 이미지로 가져와 CLI 옵션으로 Docker 컨테이너에 전달하여 생성
6) UI 구성 및 동작
- DB 연동 시 PostGraphile이 기존에 존재하는 테이블에 대한 쿼리 옵션을 Explorer에 제공해 줌
- ADD NEW Query나 ADD NEW MUTATION을 통해 쿼리 및 Mutation 관리 가능
- Explorer에서 allUsers 테이블에 설정된 Node 클릭 시 PG에서 가지고 온 결과값을 GraphQL의 형태로 반환해 줌
'개발 > DB' 카테고리의 다른 글
Aurora Replication (0) | 2024.07.13 |
---|---|
OrioleDB (0) | 2024.07.12 |
Postgres Database Replication (0) | 2024.07.10 |
Postgres Source 디버깅 (0) | 2024.07.03 |
PG-Strom (0) | 2022.12.07 |