8 คะแนน โดย GN⁺ 2024-12-09 | 1 ความคิดเห็น | แชร์ทาง WhatsApp

เป้าหมายและแรงบันดาลใจ

  • เป้าหมายของรีโพซิทอรีนี้คือการแสดงให้เห็นว่า จะใช้ Postgres กับทุกสิ่งได้อย่างไร
  • ได้รับแรงบันดาลใจจากบทความของ Amazing CTO และ GitHub gist ของ @cpursley

ทำไมจึงต้องดูแลรายการนี้ไว้?

  • ทุกสัปดาห์จะมีเครื่องมือใหม่หรือวิธีการใช้งานใหม่บน 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: เครื่องมือสำหรับ CDC ใน Postgres ที่ช่วยให้สตรีมแถวและการเปลี่ยนแปลงจาก Postgres ไปยังแพลตฟอร์มสตรีมมิงและคิวอย่าง Kafka และ SQS ได้อย่างง่ายดาย
  • janbjorge/pgqueuer: ไลบรารี Python สำหรับการจัดคิวงานอย่างมีประสิทธิภาพโดยใช้ PostgreSQL

การวิเคราะห์

  • pg_analytics: เปลี่ยน Postgres ให้เป็นฐานข้อมูล OLAP ที่รวดเร็ว
  • pg_duckdb: ส่วนขยาย Postgres อย่างเป็นทางการสำหรับ DuckDB

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: ส่วนขยาย PostgreSQL ที่ช่วยให้พัฒนา RAG การค้นหาเชิงความหมาย และแอปพลิเคชัน AI อื่น ๆ ภายใน Postgres ได้
  • timescale/pgvectorscale: อิมพลีเมนเทชันของดัชนีเวกเตอร์ DiskANN ที่ทำงานเสริมกับ pgvector

อนุกรมเวลา

  • timescale/timescaledb
  • tembo-io/pg_timeseries
  • แนะนำ pg_timeseries: ส่วนขยายอนุกรมเวลาโอเพนซอร์สสำหรับ PostgreSQL

แบบคอลัมน์

  • hydradatabase/hydra
  • citusdata/cstore_fdw

NoSQL

  • เอกสาร PostgreSQL เกี่ยวกับการจัดเก็บและทำดัชนีข้อมูล JSON
  • robconery/dox
  • ferretdb.com
  • วิธีจัดเก็บและทำดัชนี JSONB อย่างมีประสิทธิภาพใน PostgreSQL

ข้อมูลกราฟ

  • 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

  • แพตเทิร์น Notifier สำหรับแอปพลิเคชันที่ใช้ Postgres
  • เอกสาร 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 รองรับคำขอ 55 ล้านรายการต่อวินาทีด้วย PostgreSQL คลัสเตอร์ 15 ชุด
  • supabase/supavisor
  • pg-sharding/spqr
  • orioledb.com: ส่วนขยาย PostgreSQL ที่ผสานข้อดีของเอนจินดิสก์และหน่วยความจำเข้าด้วยกัน

แดชบอร์ดและ UI

  • Baserow
  • NocoDB
  • AppSmith

การแสดงภาพข้อมูล

  • Evidence
  • Metabase

การจัดการแพ็กเกจ

  • pgxman/pgxman
  • supabase/dbdev

เซิร์ฟเวอร์ภาษา

  • supabase/postgres_lsp

อื่น ๆ

  • รายการเครื่องมือ Postgres ที่ครอบคลุมมาก
  • รายการฟีเจอร์ PostgreSQL ที่ Aurora DSQL ไม่รองรับ

โบนัส: จำนวนรายการที่มี Supabase

  • 11 รายการ

1 ความคิดเห็น

 
GN⁺ 2024-12-09
ความคิดเห็นจาก Hacker News
  • ไม่ควรใช้ Postgres กับทุกอย่าง และเมื่อขยายทีมเกิน 100 วิศวกร ต้องมีภาวะผู้นำทางเทคนิคในการกำหนดขอบเขตเชิงตรรกะและเชิงกายภาพ เพื่อให้แต่ละหน่วยมี Postgres ของตัวเอง
    • CTO หลายคนไม่ได้ทำส่วนที่ยากนี้
  • ดัชนีของ Postgres ไม่รองรับการข้าม และการที่สตริงไม่สามารถมีอักขระ null (\u0000) ได้ก็ไม่สะดวก
    • Postgres ยอดเยี่ยมมาก แต่ก็มีข้อบกพร่องแปลก ๆ อยู่บ้าง
  • ไม่ควรเปิดเผย API ที่สร้างจากฐานข้อมูลให้คนนอกทีมใช้
    • จะทำให้มีข้อจำกัดเวลาต้องเปลี่ยนวิธีจัดเก็บข้อมูล
    • เคยเขียนเรื่องนี้ไว้ก่อนหน้านี้แล้ว และมุมมองก็แทบไม่เปลี่ยน
  • PGQueuer เป็นคิวงานขนาดเบาสำหรับ Python ที่สร้างบน PostgreSQL และใช้ SKIP LOCKED เพื่อให้การประมวลผลงานมีประสิทธิภาพและปลอดภัย
    • ถ้าใช้งาน Postgres อยู่แล้ว และต้องการจัดการงานเบื้องหลังแบบ native ของ Python โดยไม่ต้องเพิ่มโครงสร้างพื้นฐาน ก็ถือว่า PGQueuer น่าสนใจ
  • จากการเปรียบเทียบ MariaDB/MySQL กับ PostgreSQL พบว่ามีส่วนขยายมากมาย เช่น JSON, time table, คอลัมน์ และ vector store
    • ฟีเจอร์ LISTEN/NOTIFY ยังด้อยกว่า แต่ก็น่าประหลาดใจที่ไล่ตามมาได้มาก ทั้งที่ในแอปแบบเลกาซีจำนวนมากก็ไม่ได้ใช้
  • มีการให้บริการการค้นหา BM25 แบบโอเพนซอร์สใน PL/pgSQL ซึ่งมีประโยชน์เมื่อไม่สามารถใช้ส่วนขยาย Rust ได้
    • มีการค้นหาแบบไฮบริดโดยใช้ pgvector และ Reciprocal Rank Fusion
  • รู้สึกยินดีที่เห็นการกล่าวถึงว่าได้รับแรงบันดาลใจจากบทความของ "Amazing CTO"
  • การเข้าถึงความสามารถมากมายผ่าน API เดียวมีข้อดีหลายอย่าง
    • แทนที่จะผสานกับ message queue ก็จัดการแบบง่าย ๆ ผ่าน INSERT ได้
    • การค้นหาเวกเตอร์ก็สามารถจัดการด้วยฐานข้อมูลเดียวได้ตามธรรมชาติ
    • แต่การใช้ Postgres สร้าง HTML ยังน่าสงสัย และดูไม่น่าเหมาะกับการสร้างส่วนติดต่อผู้ใช้
  • กำลังมองหาแหล่งข้อมูลดี ๆ เกี่ยวกับวิธี self-host ฐานข้อมูล Postgres
    • อยากรู้แนวทางที่ดีที่สุดเรื่องแบ็กอัป การปรับแต่งประสิทธิภาพ เป็นต้น
  • ใช้เวลา 2 สัปดาห์เพื่อผสาน Apache Age เข้ากับข้อมูลกราฟ แต่ก็พบว่าโปรเจ็กต์เก่าและชวนสับสน
    • คาดหวังผลลัพธ์ที่ดีกว่าจาก DGraph แต่ฐานข้อมูลกราฟยังอยู่ในสภาพที่ไม่นิ่ง