Cloudflare เพิ่ม TimescaleDB ในโครงสร้างหลังบ้าน ระบุแอปเรียบง่ายกว่า ClickHouse แต่ประสิทธิภาพดีกว่า PostgreSQL
Body
Cloudflare รายงานถึงการปรับปรุงโครงสร้างพื้นฐานหลังบ้านของบริษัท จากเดิมมีฐานข้อมูลมาตรฐานสองตัว คือ PostgreSQL สำหรับแอปพลิเคชั่น และ ClickHouse สำหรับการเก็บข้อมูลระดับสิบล้านชุดต่อวินาที ล่าสุดทีมงานตัดสินใจเพิ่ม TimescaleDB เพื่อให้สมดุลระหว่างความง่ายและความเร็ว
ความต้องการฐานข้อมูลใหม่เกิดจากบริการ Digital Experience Monitoring (DEX) ที่เก็บข้อมูลการเชื่อมต่อ Cloudflare WARP ของผู้ใช้ แล้วนำมาแสดงเป็น dashboard ในเว็บ โดย WARP ยิง log เข้ามายังบริการทุกๆ 2 นาที และเก็บข้อมูลไว้ 7 วัน
ตัวแอปเดิมนั้นเป็น React ที่มี backend เป็น monolith ก้อนเดียว เชื่อมต่อกับ PostgreSQL โดยตัวแอปก็ทำงานได้ดี แต่การเก็บข้อมูล analytics นั้นไม่เหมาะกับ PostgreSQL แต่เมื่อไปดู ClickHouse พบว่าต้องการส่วนประกอบหลายชิ้น เช่น
ทีมงานตัดสินใจไม่ยอมใช้ ClickHouse แล้วยิง log ลง PostgreSQL โดยตรง ระบบทำงานได้ดีในช่วงแรก แต่เมื่อมีการใช้งานมากขึ้นเรื่อยๆ ตาราง log ก็ทะลุ 1,000 ล้านแถว ลูกค้ารายใหญ่ที่จำนวนอุปกรณ์เยอะๆ เริ่มคิวรีข้อมูลระยะยาว 7 วันได้ช้าลง ลูกค้าบางรายมีอุปกรณ์ติดตั้ง WARP มากกว่า 30,000 ชุด ทีมงานต้องออปติไมซ์ด้วยการทำตารางสรุปไว้ล่วงหน้า แม้ PostgreSQL จะมีฟีเจอร์บางส่วนช่วยได้ เช่น table partition แบะ materialized views แต่ก็ไม่สำงานอัตโนมัติ
สุดท้ายทีมงานจึงตัดสินใจทดสอบ TimescaleDB เนื่องจากมันเป็นส่วนขยาย PostgreSQL แต่มีความสามารถ partition อัตโนมัติ สามารถทำ aggregate ต่อเนื่องได้เอง ผลทดสอบการคิวรีข้อมูลระดับ 500-1,000 ล้านแถว เมื่อใช้ฟีเจอร์เร่งความเร็วต่างๆ เช่น compress, segmenting ก็ทำให้การคิวรีลดเวลาเหลือเพียงไม่ถึง 5 วินาที จากเดิมใช้ 1-2 นาที ขนาดข้อมูลบนดิสก์ลดลง 33 เท่าตัว
ผลการทดลองพบว่า TimescaleDB รองรับการใส่ข้อมูลได้ระดับแสนชุดต่อวินาที โดยต้องอาศัยการออปติไมซ์บ้าง เช่น ปิด synchronous replication และ fsync เพื่อเร่งความเร็ว เพราะข้อมูล dashboard ยอมรับข้อมูลหายได้ ปิด index แทบทั้งหมด ยกเว้น (account_id, timestamp) เท่านั้น เพราะพบว่าอัตราการเขียนดีขึ้นและความเร็วการคิวรีก็ไม่ได้ลดลงมาก
ที่มา - Cloudflare
lew Thu, 17/07/2025 - 14:22
Continue reading...
Body
Cloudflare รายงานถึงการปรับปรุงโครงสร้างพื้นฐานหลังบ้านของบริษัท จากเดิมมีฐานข้อมูลมาตรฐานสองตัว คือ PostgreSQL สำหรับแอปพลิเคชั่น และ ClickHouse สำหรับการเก็บข้อมูลระดับสิบล้านชุดต่อวินาที ล่าสุดทีมงานตัดสินใจเพิ่ม TimescaleDB เพื่อให้สมดุลระหว่างความง่ายและความเร็ว
ความต้องการฐานข้อมูลใหม่เกิดจากบริการ Digital Experience Monitoring (DEX) ที่เก็บข้อมูลการเชื่อมต่อ Cloudflare WARP ของผู้ใช้ แล้วนำมาแสดงเป็น dashboard ในเว็บ โดย WARP ยิง log เข้ามายังบริการทุกๆ 2 นาที และเก็บข้อมูลไว้ 7 วัน
ตัวแอปเดิมนั้นเป็น React ที่มี backend เป็น monolith ก้อนเดียว เชื่อมต่อกับ PostgreSQL โดยตัวแอปก็ทำงานได้ดี แต่การเก็บข้อมูล analytics นั้นไม่เหมาะกับ PostgreSQL แต่เมื่อไปดู ClickHouse พบว่าต้องการส่วนประกอบหลายชิ้น เช่น
logfwdr
และ Kafka เนื่องจาก ClickHouse ออกแบบมาเพื่อการเขียนแบบ batch เป็นหลักทีมงานตัดสินใจไม่ยอมใช้ ClickHouse แล้วยิง log ลง PostgreSQL โดยตรง ระบบทำงานได้ดีในช่วงแรก แต่เมื่อมีการใช้งานมากขึ้นเรื่อยๆ ตาราง log ก็ทะลุ 1,000 ล้านแถว ลูกค้ารายใหญ่ที่จำนวนอุปกรณ์เยอะๆ เริ่มคิวรีข้อมูลระยะยาว 7 วันได้ช้าลง ลูกค้าบางรายมีอุปกรณ์ติดตั้ง WARP มากกว่า 30,000 ชุด ทีมงานต้องออปติไมซ์ด้วยการทำตารางสรุปไว้ล่วงหน้า แม้ PostgreSQL จะมีฟีเจอร์บางส่วนช่วยได้ เช่น table partition แบะ materialized views แต่ก็ไม่สำงานอัตโนมัติ
สุดท้ายทีมงานจึงตัดสินใจทดสอบ TimescaleDB เนื่องจากมันเป็นส่วนขยาย PostgreSQL แต่มีความสามารถ partition อัตโนมัติ สามารถทำ aggregate ต่อเนื่องได้เอง ผลทดสอบการคิวรีข้อมูลระดับ 500-1,000 ล้านแถว เมื่อใช้ฟีเจอร์เร่งความเร็วต่างๆ เช่น compress, segmenting ก็ทำให้การคิวรีลดเวลาเหลือเพียงไม่ถึง 5 วินาที จากเดิมใช้ 1-2 นาที ขนาดข้อมูลบนดิสก์ลดลง 33 เท่าตัว
ผลการทดลองพบว่า TimescaleDB รองรับการใส่ข้อมูลได้ระดับแสนชุดต่อวินาที โดยต้องอาศัยการออปติไมซ์บ้าง เช่น ปิด synchronous replication และ fsync เพื่อเร่งความเร็ว เพราะข้อมูล dashboard ยอมรับข้อมูลหายได้ ปิด index แทบทั้งหมด ยกเว้น (account_id, timestamp) เท่านั้น เพราะพบว่าอัตราการเขียนดีขึ้นและความเร็วการคิวรีก็ไม่ได้ลดลงมาก
ที่มา - Cloudflare
lew Thu, 17/07/2025 - 14:22
Continue reading...