8 ポイント 投稿者 GN⁺ 2024-12-09 | 1件のコメント | WhatsAppで共有

目標と着想

  • このリポジトリの目標は、あらゆるものにPostgresを使う方法を示すこと。
  • Amazing CTOの記事と @cpursley のGitHub gistから着想を得た。

なぜこの一覧を維持するのか?

  • 毎週、Postgres上の新しいツールや活用方法が登場するため、それらを記録する場所が必要。
  • 他にも例があれば、PRを提出できる。

目次

  • ブログ投稿と記事
  • cronジョブ
  • メッセージキュー
  • 分析
  • GISとマッピング
  • 監査ログ
  • アクセス制御と認可
  • 検索
    • 全文検索
    • ベクトル
  • 時系列
  • 列指向
  • NoSQL
  • グラフデータ
  • 外部データ
  • 代替クエリ言語
  • HTTP
  • API
  • イベント、レプリケーション、CDC
  • キャッシュ
  • 単体テスト
  • HTMLとアプリケーション
  • グラフィックスと可視化
  • マイグレーション
  • パフォーマンスチューニング
  • 拡張とスケーリング
  • ダッシュボードとUI
  • データ可視化
  • パッケージ管理
  • 言語サーバー
  • その他
  • ボーナス: Supabaseを含む項目数

ブログ投稿と記事

  • コードをデータベース関数へ移して単純化する
  • あらゆるものにPostgresを使う
  • PostgreSQLは世界最高のデータベース
  • Postgresがデータベースの世界を席巻している
  • Hacker Newsでの議論

cronジョブ

  • citusdata/pg_cron
  • cybertec-postgresql/pg_timetable

メッセージキュー

  • Postgresのキュー技術の選定に関する記事
  • tembo-io/pgmq
  • SKIP LOCKED
  • riverqueue/river
  • sequinstream/sequin: PostgresでCDCを行うためのツールで、Postgresの行や変更をKafkaやSQSのようなストリーミングプラットフォームやキューへ簡単にストリーミングできる。
  • 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件

1件のコメント

 
GN⁺ 2024-12-09
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」の記事から着想を得たとの言及を見てうれしく思った
  • 1つのAPIで多くの機能にアクセスできる利点は大きい
    • メッセージキューと統合する代わりに、INSERTでシンプルに処理できる
    • ベクトル検索も当然1つのデータベースで処理できる
    • Postgresを使ってHTMLを生成するのは疑問であり、ユーザーインターフェースを作るのに適しているとは思えない
  • Postgresデータベースをセルフホストする方法について、良い資料を探している
    • バックアップ、最適化などのベストプラクティスを知りたい
  • Apache Ageをグラフデータへ統合するのに2週間費やしたが、プロジェクトが古く混乱していることに気づいた
    • DGraphでもっと良い結果を期待しているが、グラフデータベースは不安定な状態にある