8 poin oleh GN⁺ 2024-12-09 | 1 komentar | Bagikan ke WhatsApp

Tujuan dan inspirasi

  • Tujuan repositori ini adalah untuk menunjukkan cara menggunakan Postgres untuk segala hal.
  • Terinspirasi dari artikel Amazing CTO dan GitHub gist milik @cpursley.

Mengapa mempertahankan daftar ini?

  • Setiap minggu, muncul alat atau cara baru menggunakan Postgres, jadi diperlukan tempat untuk mencatatnya.
  • Jika ada contoh lain, Anda dapat mengirimkan PR.

Daftar isi

  • Postingan blog dan artikel
  • Pekerjaan cron
  • Antrean pesan
  • Analitik
  • GIS dan pemetaan
  • Log audit
  • Kontrol akses dan otorisasi
  • Pencarian
    • Teks lengkap
    • Vektor
  • Deret waktu
  • Berorientasi kolom
  • NoSQL
  • Data graf
  • Data eksternal
  • Bahasa kueri alternatif
  • HTTP
  • API
  • Event, replikasi, CDC
  • Caching
  • Pengujian unit
  • HTML dan aplikasi
  • Grafik dan visualisasi
  • Migrasi
  • Penyetelan performa
  • Ekstensi dan penyimpanan
  • Dasbor dan UI
  • Visualisasi data
  • Manajemen paket
  • Server bahasa
  • Lain-lain
  • Bonus: Jumlah item yang menyertakan Supabase

Postingan blog dan artikel

  • Menyederhanakan dengan memindahkan kode ke fungsi basis data
  • Menggunakan Postgres untuk segala hal
  • PostgreSQL adalah basis data terbaik di dunia
  • Postgres sedang menguasai dunia basis data
  • Diskusi Hacker News

Pekerjaan cron

  • citusdata/pg_cron
  • cybertec-postgresql/pg_timetable

Antrean pesan

  • Tulisan tentang pemilihan teknologi antrean dengan Postgres
  • tembo-io/pgmq
  • SKIP LOCKED
  • riverqueue/river
  • sequinstream/sequin: Alat untuk CDC di Postgres, yang memudahkan streaming baris dan perubahan Postgres ke platform streaming dan antrean seperti Kafka dan SQS.
  • janbjorge/pgqueuer: Library Python untuk antrean pekerjaan yang efisien dengan memanfaatkan PostgreSQL

Analitik

  • pg_analytics: Mengubah Postgres menjadi basis data OLAP yang cepat
  • pg_duckdb: Ekstensi Postgres resmi untuk DuckDB

GIS dan pemetaan

  • postgis/postgis

Log audit

  • arkhipov/temporal_tables
  • supabase/supa_audit
  • pgMemento/pgMemento
  • pgaudit/pgaudit

Kontrol akses dan otorisasi

  • arkhipov/acl
  • Dokumentasi pgcrypto
  • michelp/pgjwt
  • Panduan keamanan basis data di supabase.com

Pencarian

Teks lengkap

  • Kumpulan tautan bermanfaat tentang pencarian teks lengkap Postgres
  • paradedb/paradedb
  • Perbandingan pencarian teks lengkap Postgres dengan teknologi pencarian lain

Vektor

  • pgvector/pgvector
  • tensorchord/VectorChord: Ekstensi PostgreSQL untuk pencarian kemiripan vektor yang skalabel dan berperforma tinggi
  • timescale/pgai: Ekstensi PostgreSQL yang memungkinkan pengembangan RAG, pencarian semantik, dan aplikasi AI lain di dalam Postgres
  • timescale/pgvectorscale: Implementasi indeks vektor DiskANN yang melengkapi pgvector

Deret waktu

  • timescale/timescaledb
  • tembo-io/pg_timeseries
  • Pengantar pg_timeseries: ekstensi deret waktu open source untuk PostgreSQL

Berorientasi kolom

  • hydradatabase/hydra
  • citusdata/cstore_fdw

NoSQL

  • Dokumentasi PostgreSQL tentang penyimpanan dan pengindeksan data JSON
  • robconery/dox
  • ferretdb.com
  • Cara menyimpan dan mengindeks JSONB secara efektif di PostgreSQL

Data graf

  • age.apache.org

Data eksternal

  • supabase/wrappers

Bahasa kueri alternatif

  • 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

Event, replikasi, CDC

  • Pola Notifier untuk aplikasi yang menggunakan Postgres
  • Dokumentasi SQL NOTIFY
  • cpursley/walex
  • PeerDB-io/peerdb
  • debezium/debezium
  • 2ndQuadrant/pglogical

Caching

  • Blog martinheinz.dev
  • readysettech/readyset

Pengujian unit

  • theory/pgtap
  • peterldowns/pgtestdb

HTML dan aplikasi

  • SQLpage
  • Omnigres
  • pg_render
  • plmustache

Grafik dan visualisasi

  • pgSVG

Migrasi

  • purcell/postgresql-migrations
  • bytebase.com
  • xataio/pgroll
  • stripe/pg-schema-diff

Penyetelan performa

  • Supabase Index Advisor
  • Dexter
  • HypoPG
  • pg_hint_plan
  • PGHero

Ekstensi dan penyimpanan

  • Bagaimana Cloudflare menangani 55 juta permintaan per detik dengan 15 klaster PostgreSQL
  • supabase/supavisor
  • pg-sharding/spqr
  • orioledb.com: Ekstensi PostgreSQL yang menggabungkan keunggulan mesin disk dan memori

Dasbor dan UI

  • Baserow
  • NocoDB
  • AppSmith

Visualisasi data

  • Evidence
  • Metabase

Manajemen paket

  • pgxman/pgxman
  • supabase/dbdev

Server bahasa

  • supabase/postgres_lsp

Lain-lain

  • Daftar alat Postgres yang sangat komprehensif
  • Daftar fitur PostgreSQL yang tidak didukung di Aurora DSQL

Bonus: Jumlah item yang menyertakan Supabase

  • 11

1 komentar

 
GN⁺ 2024-12-09
Opini Hacker News
  • Jangan gunakan Postgres untuk segala hal; saat skala berkembang hingga lebih dari 100 engineer, dibutuhkan kepemimpinan teknis untuk menetapkan batas logis dan fisik agar tiap unit memiliki Postgres sendiri
    • Banyak CTO tidak melakukan bagian sulit ini
  • Tidak nyamannya adalah indeks Postgres tidak mendukung skip, dan string tidak bisa menyertakan karakter null (\u0000)
    • Postgres memang hebat, tetapi punya beberapa kekurangan aneh
  • Sebaiknya jangan mengekspos API yang dihasilkan dari database kepada orang di luar tim
    • Ini membatasi kemampuan untuk mengubah cara data disimpan
    • Saya pernah menulis tentang topik ini sebelumnya, dan pandangan saya tidak banyak berubah
  • PGQueuer adalah job queue ringan untuk Python yang berbasis PostgreSQL dan menggunakan SKIP LOCKED untuk menyediakan pemrosesan pekerjaan yang efisien dan aman
    • Jika Anda sudah menggunakan Postgres dan ingin mengelola pekerjaan latar belakang secara native di Python tanpa infrastruktur tambahan, PGQueuer layak dipertimbangkan
  • Setelah membandingkan MariaDB/MySQL dan PostgreSQL, ditemukan banyak kemampuan yang telah menyusul, seperti JSON, temporal tables, column store, dan vector store
    • Fitur LISTEN/NOTIFY masih tertinggal, tetapi secara mengejutkan banyak aplikasi legacy juga tidak menggunakannya
  • Pencarian BM25 open source tersedia di PL/pgSQL, berguna ketika ekstensi Rust tidak bisa digunakan
    • Menyediakan pencarian hibrida menggunakan pgvector dan Reciprocal Rank Fusion
  • Senang melihat penyebutan bahwa artikel tersebut terinspirasi dari tulisan "Amazing CTO"
  • Ada banyak keuntungan dari bisa mengakses banyak fungsi lewat satu API
    • Alih-alih terintegrasi dengan message queue, banyak hal bisa ditangani sederhana lewat INSERT
    • Pencarian vektor juga tentu bisa ditangani dalam satu database
    • Menghasilkan HTML dengan Postgres terasa meragukan, dan sepertinya bukan pilihan yang tepat untuk membangun antarmuka pengguna
  • Sedang mencari referensi bagus tentang cara self-host database Postgres
    • Ingin mengetahui praktik terbaik untuk backup, optimasi, dan sebagainya
  • Menghabiskan dua minggu untuk mengintegrasikan Apache Age ke data graf, tetapi kemudian menyadari proyeknya sudah tua dan membingungkan
    • Berharap hasil yang lebih baik dengan DGraph, tetapi kondisi database graf masih belum stabil