Tags:
Node Thumbnail

Cloudflare รายงานถึงการเปลี่ยนฐานข้อมูลสำหรับเก็บ log จากเดิมที่ใช้ Elasticsearch หันมาใช้ฐานข้อมูลแบบคอลัมน์ ClickHouse หลังจากพบข้อจำกัดของ Elasticsearch หลายอย่าง ได้แก่

  • Mapping Explosion: เนื่องจากข้อมูล log มักมีฟิลด์เปลี่ยนไปมาเรื่อยๆ แต่ Elasticsearch พยายาม index ทุกฟิลด์แยกจากกัน ทำให้เมื่อถังข้อมูลมีฟิลด์จำนวนมากเข้าก็จะกินหน่วยความจำมาก ทางแก้ปัญหาของ Elasticsearch คือจำกัดฟิลด์ที่ใช้งานแต่ก็จะทำให้ไม่สามารถค้นหาฟิลด์ที่ไม่ได้ระบุไว้
  • Multi-tenancy: ตอนนี้ Elasticsearch ไม่สามารถจำกัดจำนวนเอกสารที่ผู้ใช้ต้องสแกนในการคิวรีแต่ละครั้ง ส่งผลให้ผู้ใช้คนใดคนหนึ่งส่งคำสั่งคิวรีหนักๆ ก็จะทำทั้งคลัสเตอร์ช้าไปได้
  • การจัดการยาก: หากคลัสเตอร์ Elasticsearch ทำงานผิดพลาดจนกลายเป็น degrade แล้วกระบวนการกู้คืนจะใช้เวลานาน การ index ฐานข้อมูลใหม่กินเวลานาน และกระบวนการย้ายข้อมูลจากฐานข้อมูล hot ไป cold กระทบประสิทธิภาพคลัสเตอร์
  • การจัดการหน่วยความจำจาวา: เนื่องจาก Elasticsearch ใช้จาวาจึงมีช่วงเวลาที่ garbage collector ทำงาน ทำให้เสียประสิทธิภาพในช่วงนั้น ทาง Cloudflare พยายามเปลี่ยนตัว garbage collector แล้วแต่ก็ไม่ดีขึ้นนัก

การเปลี่ยนไปใช้ 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

No Description

Get latest news from Blognone

Comments

By: sukoom2001
ContributorAndroidUbuntu
on 3 September 2022 - 00:16 #1260327
sukoom2001's picture

ว่าแต่เรื่อง Log นี่ elk เทียบกับ loki ตอนนี้ตัวไหนดีเด่นกันตรงไหนบ้างครับ

By: Ford AntiTrust
ContributorAndroidBlackberryUbuntu
on 3 September 2022 - 00:24 #1260329
Ford AntiTrust's picture

แม้จะใช้งานมีความสุขพอสมควร

แต่ปัญหาหลักของ Elasticsearch คือ GC ใน Java จริงๆ นั่นแหละ และแต่ละครั้งที่ release เวลา upgrade ต้องสวดมนต์ว่ามันจะไม่มีปัญหา

By: Jonathan_Job
WriteriPhoneUbuntuWindows
on 3 September 2022 - 03:28 #1260336
Jonathan_Job's picture

หลังจากพบข้อจำกัดของ Elasticsearch

หลังจากพบข้อจำกัดของ Elasticsearch