# Postgres 활용 방법

> Clean Markdown view of GeekNews topic #18156. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=18156](https://news.hada.io/topic?id=18156)
- GeekNews Markdown: [https://news.hada.io/topic/18156.md](https://news.hada.io/topic/18156.md)
- Type: GN+
- Author: [neo](https://news.hada.io/@neo)
- Published: 2024-12-09T10:53:19+09:00
- Updated: 2024-12-09T10:53:19+09:00
- Original source: [github.com/Olshansk](https://github.com/Olshansk/postgres_for_everything)
- Points: 8
- Comments: 1

## Topic Body

### 목표 및 영감
- 이 저장소의 목표는 **Postgres를 모든 것에 사용하는 방법**을 보여주는 것임.
- Amazing CTO의 기사와 @cpursley의 GitHub gist에서 영감을 받음.

### 왜 이 목록을 유지하는가?
- 매주 Postgres 위에 새로운 도구나 사용 방법이 등장하므로, 이를 기록할 장소가 필요함.
- 다른 예시가 있다면 PR을 제출할 수 있음.

### 목차
- 블로그 게시물 및 기사
- 크론 작업
- 메시지 큐
- 분석
- GIS 및 매핑
- 감사 로그
- 접근 제어 및 권한 부여
- 검색
  - 전체 텍스트
  - 벡터
- 시계열
- 열 지향
- NoSQL
- 그래프 데이터
- 외부 데이터
- 대체 쿼리 언어
- HTTP
- API
- 이벤트, 복제, CDC
- 캐싱
- 단위 테스트
- HTML 및 애플리케이션
- 그래픽 및 시각화
- 마이그레이션
- 성능 튜닝
- 확장 및 저장
- 대시보드 및 UI
- 데이터 시각화
- 패키지 관리
- 언어 서버
- 기타
- 보너스: Supabase를 포함하는 항목 수

### 블로그 게시물 및 기사
- 코드를 데이터베이스 함수로 이동하여 단순화
- 모든 것에 Postgres 사용
- PostgreSQL은 세계 최고의 데이터베이스
- Postgres가 데이터베이스 세계를 장악하고 있음
- Hacker News 토론

### 크론 작업
- citusdata/pg_cron
- cybertec-postgresql/pg_timetable

### 메시지 큐
- Postgres 큐 기술 선택에 대한 글
- tembo-io/pgmq
- SKIP LOCKED
- riverqueue/river
- sequinstream/sequin: Postgres에서 CDC를 위한 도구로, Kafka 및 SQS와 같은 스트리밍 플랫폼 및 큐로 Postgres 행과 변경 사항을 쉽게 스트리밍할 수 있음.
- janbjorge/pgqueuer: PostgreSQL을 활용한 효율적인 작업 큐잉을 위한 Python 라이브러리

### 분석
- pg_analytics: Postgres를 빠른 OLAP 데이터베이스로 변환
- pg_duckdb: DuckDB를 위한 공식 Postgres 확장

### GIS 및 매핑
- postgis/postgis

### 감사 로그
- arkhipov/temporal_tables
- supabase/supa_audit
- pgMemento/pgMemento
- pgaudit/pgaudit

### 접근 제어 및 권한 부여
- arkhipov/acl
- pgcrypto 문서
- michelp/pgjwt
- supabase.com의 데이터베이스 보안 가이드

### 검색
##### 전체 텍스트
- Postgres 전체 텍스트 검색 관련 유용한 링크 모음
- paradedb/paradedb
- Postgres 전체 텍스트 검색과 다른 검색 기술 비교

##### 벡터
- pgvector/pgvector
- tensorchord/VectorChord: 확장 가능한 고성능 벡터 유사성 검색을 위한 PostgreSQL 확장
- timescale/pgai: Postgres 내에서 RAG, 시맨틱 검색 및 기타 AI 애플리케이션 개발을 허용하는 PostgreSQL 확장
- timescale/pgvectorscale: pgvector를 보완하는 DiskANN 벡터 인덱스 구현

### 시계열
- timescale/timescaledb
- tembo-io/pg_timeseries
- pg_timeseries 소개: PostgreSQL을 위한 오픈 소스 시계열 확장

### 열 지향
- hydradatabase/hydra
- citusdata/cstore_fdw

### NoSQL
- JSON 데이터 저장 및 인덱싱에 대한 PostgreSQL 문서
- robconery/dox
- ferretdb.com
- PostgreSQL에서 JSONB를 효과적으로 저장 및 인덱싱하는 방법

### 그래프 데이터
- age.apache.org

### 외부 데이터
- supabase/wrappers

### 대체 쿼리 언어
- kaspermarstal/plprql
- supabase.github.io/pg_graphql
- dosco/graphjin

### HTTP
- pramsey/pgsql-http
- supabase/pg_net

### API
- PostgREST/postgrest
- hasura/graphql-engine
- postgraphile.org
- supabase.github.io/pg_graphql

### 이벤트, 복제, CDC
- Postgres를 사용하는 애플리케이션을 위한 Notifier 패턴
- SQL NOTIFY 문서
- cpursley/walex
- PeerDB-io/peerdb
- debezium/debezium
- 2ndQuadrant/pglogical

### 캐싱
- martinheinz.dev 블로그
- readysettech/readyset

### 단위 테스트
- theory/pgtap
- peterldowns/pgtestdb

### HTML 및 애플리케이션
- SQLpage
- Omnigres
- pg_render
- plmustache

### 그래픽 및 시각화
- pgSVG

### 마이그레이션
- purcell/postgresql-migrations
- bytebase.com
- xataio/pgroll
- stripe/pg-schema-diff

### 성능 튜닝
- Supabase Index Advisor
- Dexter
- HypoPG
- pg_hint_plan
- PGHero

### 확장 및 저장
- Cloudflare가 15개의 PostgreSQL 클러스터로 초당 5,500만 요청을 처리한 방법
- supabase/supavisor
- pg-sharding/spqr
- orioledb.com: 디스크 및 메모리 엔진의 장점을 결합한 PostgreSQL 확장

### 대시보드 및 UI
- Baserow
- NocoDB
- AppSmith

### 데이터 시각화
- Evidence
- Metabase

### 패키지 관리
- pgxman/pgxman
- supabase/dbdev

### 언어 서버
- supabase/postgres_lsp

### 기타
- 매우 포괄적인 Postgres 도구 목록
- Aurora DSQL에서 지원되지 않는 PostgreSQL 기능 목록

### 보너스: Supabase를 포함하는 항목 수
- 11개

## Comments



### Comment 32139

- Author: neo
- Created: 2024-12-09T10:53:19+09:00
- Points: 1

###### [Hacker News 의견](https://news.ycombinator.com/item?id=42347606) 
- Postgres를 모든 것에 사용하지 말고, 100명 이상의 엔지니어로 확장할 때는 각 단위가 자체 Postgres를 갖도록 논리적, 물리적 경계를 설정하는 기술적 리더십이 필요함
  - 많은 CTO들이 이 어려운 부분을 수행하지 않음
- Postgres 인덱스가 스킵을 지원하지 않으며, 문자열에 널 문자(\u0000)를 포함할 수 없는 점이 불편함
  - Postgres는 훌륭하지만 몇 가지 이상한 결함이 있음
- 데이터베이스에서 생성된 API를 팀 외부 사람들에게 노출하지 않는 것이 좋음
  - 데이터 저장 방식을 변경하는 데 제한이 생김
  - 이 주제에 대해 이전에 글을 썼으며, 의견이 크게 변하지 않음
- PGQueuer는 Python을 위한 경량 작업 큐로, PostgreSQL을 기반으로 하며 SKIP LOCKED를 사용하여 효율적이고 안전한 작업 처리를 제공함
  - Postgres를 이미 사용 중이고 추가 인프라 없이 Python 네이티브 방식으로 백그라운드 작업을 관리하고 싶다면 PGQueuer를 고려할 만함
- MariaDB/MySQL과 PostgreSQL을 비교한 결과, JSON, 시간 테이블, 컬럼 및 벡터 저장소 등 많은 확장 기능이 존재함을 발견함
  - LISTEN/NOTIFY 기능은 부족하지만, 많은 레거시 앱에서 사용되지 않음에도 불구하고 놀랍게도 따라잡고 있음
- 오픈소스 BM25 검색을 PL/pgSQL에서 제공하며, Rust 확장을 사용할 수 없는 경우에 유용함
  - pgvector와 Reciprocal Rank Fusion을 사용한 하이브리드 검색 제공
- "Amazing CTO"의 기사에서 영감을 받았다는 언급을 보고 기쁨을 느낌
- 하나의 API로 많은 기능에 접근할 수 있는 이점이 많음
  - 메시지 큐와 통합하는 대신 INSERT를 통해 간단하게 처리 가능함
  - 벡터 검색도 당연히 하나의 데이터베이스로 처리 가능함
  - Postgres를 사용하여 HTML을 생성하는 것은 의문이며, 사용자 인터페이스를 만드는 데 적합하지 않을 것 같음
- Postgres 데이터베이스를 자체 호스팅하는 방법에 대한 좋은 자료를 찾고 있음
  - 백업, 최적화 등 최선의 방법을 알고 싶음
- Apache Age를 그래프 데이터에 통합하는 데 2주를 보냈지만, 프로젝트가 오래되고 혼란스러움을 깨달음
  - DGraph로 더 나은 결과를 기대하고 있지만, 그래프 데이터베이스는 불안정한 상태임
