8P by GN⁺ 4달전 | ★ favorite | 댓글 1개

목표 및 영감

  • 이 저장소의 목표는 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개
Hacker News 의견
  • 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로 더 나은 결과를 기대하고 있지만, 그래프 데이터베이스는 불안정한 상태임