การใช้ PostgreSQL เป็นดาต้าแวร์เฮาส์
(narrator.ai)Narrative ระบบสนับสนุนการตัดสินใจผ่านการวิเคราะห์ข้อมูล ได้สรุปทริกสำคัญจากประสบการณ์ใช้งาน
-
อย่าใช้เซิร์ฟเวอร์เดียวกับระบบโปรดักชัน
-
อัปเกรดเป็น PG 12+ (อย่าใช้ CTE)
-
ทำดัชนีให้เล็กที่สุดเท่าที่ทำได้
-
ทำ table partitioning (range/list)
-
ลด disk I/O ให้ต่ำที่สุด
-
ทำ Vacuum หลัง bulk insert
-
ใช้ parallel query
-
เพิ่มการสุ่มตัวอย่างสถิติ (ต่อคอลัมน์หรือทั้ง DB; ค่าเริ่มต้นคือ 100 แต่ใช้ 500)
-
ใช้จำนวนคอลัมน์ให้น้อยลง (เพราะเป็นการจัดเก็บแบบ row-based)
-
สำหรับตารางขนาด 50 ล้านถึง 100 ล้านแถว Postgres ทำงานได้ยอดเยี่ยม
-
เมื่อสเกลไปถึงระดับพันล้าน แนะนำ Citus
→ https://www.citusdata.com : โอเพนซอร์สที่เปลี่ยน Postgres ให้เป็น distributed DB
3 ความคิดเห็น
จากประสบการณ์ ถ้าเป็นงานที่อิงกับ time series ก็คิดว่า timescaledb น่าจะดีกว่า แต่ก็ยังพูดอย่างระมัดระวังเพราะไม่มีข้อมูลอ้างอิงที่ชัดเจนครับ ในแง่อัตราการบีบอัดและประสิทธิภาพ ผมขอแสดงความเห็นอย่างระมัดระวังว่า timescaledb น่าจะดีกว่า
ผม/ฉันสงสัยว่าถ้าเปรียบเทียบ citus กับ timescaledb จะเป็นอย่างไร
เท่าที่ผมเข้าใจ timescaledb มีข้อดีในด้านการพาร์ทิชันแบบ time-series ส่วน citus มีข้อดีในด้านการชาร์ดดิ้ง... (ว่าแต่ การใช้ทั้งสองอย่างร่วมกันก็ไม่ถึงกับเป็นไปไม่ได้ใช่ไหมนะ?)