Cloudflare รายงานถึงการเปลี่ยนฐานข้อมูลสำหรับเก็บ log จากเดิมที่ใช้ Elasticsearch หันมาใช้ฐานข้อมูลแบบคอลัมน์ ClickHouse หลังจากพบข้อจำกัดของ Elasticsearch หลายอย่าง ได้แก่
การเปลี่ยนไปใช้ ClickHouse ได้เปรียบหลายอย่าง เช่น การเพิ่ม index ในฟิลด์ใดๆ สามารถทำได้ทันที, ตัวฐานข้อมูลบีบอัดเป็นค่าเริ่มต้นและคอนฟิกแยกกระบวนการบีบอัดรายฟิลด์ได้, และการขยายคลัสเตอร์ได้ประสิทธิภาพตามขนาดคลัสเตอร์ที่ขยาย (linearly scalable)
ในบทความนี้ Cloudflare ยังแนะนำถึงการใช้ ClickHouse ว่าควรเลือกรูปแบบการเก็บข้อมูลว่าจากเก็บแยกฟิลด์แบบ SQL ปกติที่ต้อง ALTER TABLE ทุกครั้งเพื่อเพิ่มฟิลด์ หรือจะใช้ JSON เพื่อเก็บฟิลด์ที่ไม่แน่นอน แต่มีข้อจำกัดว่าไม่ควรมีข้อมูลเกิน 1,000 ฟิลด์ สำหรับ Cloudflare ที่มีฟิลด์จำนวนมากก็เลือกเก็บข้อมูลเป็น array ของฟิลด์อื่นๆ ทั้งหมด
ผลที่ได้จากการเปลี่ยนไช้ ClickHouse ทำให้ Cloudflare ลดการใช้ซีพียูและหน่วยความจำจากการเขียนลง 8 เท่า ขนาดข้อมูลลดลง 10 เท่า ทำให้ Cloudflare สามารถเก็บข้อมูลเต็มรูปแบบไม่ต้อง sampling บางส่วน, และการคิวรีเกือบทั้งหมดประสิทธิภาพดีขึ้นมาก
แม้จะชม ClickHouse ค่อนข้างมากแต่ทาง Cloudflare ก็ระบุว่า Elasticsearch เป็นตัวค้นหาแบบ full text ที่ดี และการใช้งานของแต่ละที่ก็อาจจะต่างกันจึงควรพิจารณาการใช้งานจริงด้วย
ที่มา - Cloudflare
Comments
ว่าแต่เรื่อง Log นี่ elk เทียบกับ loki ตอนนี้ตัวไหนดีเด่นกันตรงไหนบ้างครับ
แม้จะใช้งานมีความสุขพอสมควร
แต่ปัญหาหลักของ Elasticsearch คือ GC ใน Java จริงๆ นั่นแหละ และแต่ละครั้งที่ release เวลา upgrade ต้องสวดมนต์ว่ามันจะไม่มีปัญหา
หลังจากพบข้อจำกัดของ Elasticsearch