8 คะแนน โดย GN⁺ 2024-07-08 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • Pongo ใช้ประโยชน์จากการรองรับ JSONB เพื่อใช้ PostgreSQL เป็นฐานข้อมูลเอกสาร
    • JSONB จัดเก็บข้อมูล JSON ในรูปแบบไบนารี เพื่อเพิ่มประสิทธิภาพและประสิทธิภาพในการจัดเก็บ
  • รูปแบบไบนารีของ PostgreSQL JSONB ทำให้ข้อมูลถูกพาร์สไว้ล่วงหน้า จึงรองรับการอ่านและเขียนได้รวดเร็ว
    • JSONB รองรับตัวเลือกการทำดัชนีขั้นสูง เช่น GIN และ GiST index เพื่อเพิ่มความเร็วในการค้นหา
    • JSONB สามารถเก็บข้อมูลกึ่งโครงสร้าง พร้อมใช้ความสามารถในการคิวรีอันทรงพลังของ PostgreSQL ได้
  • Pongo เป็น ORM หรือไม่?
    • ไม่ใช่ โดยมุ่งเน้นที่การจัดการคุณลักษณะของข้อมูลเอกสารอย่างมีประสิทธิภาพ
    • ORM ของ Node.js สามารถจัดการ JSONB ได้ แต่สำหรับคิวรีขั้นสูงจำเป็นต้องใช้ JSONPath หรือฟังก์ชัน JSONB
    • Pongo จัดการส่วนนี้ให้แทน
  • พร้อมสำหรับโปรดักชันหรือยัง?
    • ปัจจุบันปลอดภัยพอสำหรับการใช้งาน แต่ยังไม่เข้ากันได้กับ MongoDB แบบ 100%
    • Pongo เป็นโปรเจ็กต์ใหม่ จึงอาจยังขาดบางฟีเจอร์
    • เป็นโปรเจ็กต์ชุมชน หากพบปัญหา แนะนำให้ช่วยขยายการรองรับหรือเพิ่ม test coverage ผ่าน GH issue หรือ Pull Request

สรุปโดย GN⁺

  • Pongo เป็นเครื่องมือที่ใช้ PostgreSQL เป็นฐานข้อมูลเอกสาร และแปลง MongoDB API เป็น PostgreSQL query
  • ใช้ประโยชน์จากข้อดีของ JSONB เพื่อเพิ่มประสิทธิภาพและประสิทธิภาพในการจัดเก็บ
  • รองรับคิวรีขั้นสูงและการทำดัชนี เพื่อมอบทั้งความยืดหยุ่นและความสอดคล้อง
  • Pongo ไม่ใช่ ORM และมุ่งเน้นที่การจัดการคุณลักษณะของข้อมูลเอกสารอย่างมีประสิทธิภาพ
  • เป็นโปรเจ็กต์ใหม่ที่อาจยังขาดบางฟีเจอร์ แต่สามารถขยายได้ผ่านการมีส่วนร่วมของชุมชน

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

 
GN⁺ 2024-07-08
ความคิดเห็นจาก Hacker News
  • เพิ่ม Pongo ไว้ในหมวด NoSQL แล้ว
  • โมเดลไฮบริดเป็นตัวเลือกที่ดีที่สุด ฟิลด์หลักใช้คอลัมน์ปกติ ส่วนโครงสร้างข้อมูลแบบไดนามิกเก็บไว้ใน JSONB
  • ในทางเทคนิคมันเจ๋งมาก แต่ใน README ควรมีส่วน "ทำไม" อยากรู้ว่าเพราะต้องการใช้ Mongo API หรือเพราะอยากคัดลอกโค้ดจากโปรเจ็กต์เดิม
    • ถ้าเป็นการนำคิวรีจากโปรเจ็กต์อื่นกลับมาใช้ใหม่ AI ทำเรื่องนี้ได้ค่อนข้างดี
  • ตอนย้ายโปรเจ็กต์จาก Mongo ไป Postgres ก็เคยใช้แนวทางคล้ายกัน ประสิทธิภาพดีขึ้นมาก
    • ในโปรเจ็กต์ต่อ ๆ ไปมีแผนจะลบความคล้ายกับ Mongo ออกทั้งหมด
  • สงสัยว่า Pongo เข้ากันได้กับ Mongoose หรือไม่ เพราะผู้ใช้ Mongo ส่วนใหญ่ใช้ Mongoose กัน ถ้ารองรับ ก็น่าจะมีผู้ใช้เพิ่มขึ้น
  • เคยทวีตแซวเรื่อง Pongo ไว้เมื่อเดือนพฤศจิกายน 2023 เป็นเรื่องบังเอิญที่น่าสนุก แต่ก็คงทำให้รู้สึกเหมือนตัวเองทำนายอนาคตได้
  • ใช้คอลัมน์ JSONB เยอะมาก มันเหมาะกับแอปพลิเคชันบางประเภท แต่ก็ทำให้คิวรีซับซ้อนขึ้น และเสียโอกาสในการปรับปรุงประสิทธิภาพคิวรีที่ได้จากแนวทางเชิงสัมพันธ์
    • JSONB มีประโยชน์ แต่ไม่ควรละทิ้งข้อดีของฐานข้อมูลเชิงสัมพันธ์
  • สงสัยว่าเมื่อเทียบกับ FerretDB แล้วเป็นอย่างไร
  • MongoDB รองรับความสามารถที่เทียบเท่ากับ serializable isolation ของ Postgres มาหลายปีแล้ว เลยไม่แน่ใจว่า "ข้อดีด้าน strong consistency" หมายถึงอะไร
  • Oracle Database ก็มี API ที่เข้ากันได้กับ MongoDB มาหลายปีแล้ว