จากบทความเรื่อง Using ClickHouse as an Analytic Extension for MySQL
ซึ่งเขียนโดย Percona นั้น
ทำการอธิบายการนำข้อมูลจาก MySQL ไปวิเคราะห์ผ่าน ClickHouse
โดยใช้งาน extension สำหรับ MySQL นั่นเอง
ที่สำคัญไม่ใช่เอามาแทนที่ แต่เอามาทำงานตาม use case ที่เหมาะสม
สิ่งที่บทความอธิบายคือ ทำไมถึงต้องมีตัวช่วยสำหรับการ Analytic ด้วย ?
แน่นอนว่า MySQL ไม่สนับสนุน หรือ ไม่เหมาะสม เป็นดังนี้
- จำนวน table มากขึ้น รวมทั้งข้อมูลบเป็นแบบไม่เปลี่ยนแปลง (Immutable data) และที่น่ากลัวคือ transaction data/table
- ต้องการทำ aggregation query ที่หนัก ๆ เราจะเจอได้จากพวก having, group by นั่นเอง ยิ่งทำบนข้อมูลขนาดใหญ่ ยิ่งสนุกสนาน
เมื่อเจอข้อมูลและความต้องการเหล่านี้
ทำให้การ process ข้อมูลช้า รอนาน
หรือต้องเปลี่ยนไปทำงานแบบ baching ไป
จะเห็นได้ว่า สิ่งที่เป็นอยู่ น่าจะไม่เหมาะสมหรือไม่ ?
หนึ่งในคำตอบของความต้องการข้างต้น คือ ClickHouse
ที่ได้เตรียมการทำงานกับข้อมูลที่ไม่ปลี่ยนแปลง
การทำ aggregation ที่รวดเร็ว ดังนั้นทำงานแบบ realtime ได้เลย
ปล. ClickHouse มันถูกออกแบบมาเพื่อ analytic processing โดยเฉพาะ
ข้อมูลจัดเก็บในรูปแบบ colume-based และทำงานแบบ parallel อีกด้วย
แต่ ClickHouse ไม่ได้ support ACID แบบเต็มรูปแบบ
ดังนั้นเรื่องของ use case ที่ต้องการความถูกต้องจริงจัง ก็อาจจะไม่เหมาะนะ
รวมทั้งการ update/delete เยอะ ๆ ก็ไม่เหมาะ
ดังนั้น ใช้ให้ถูกกับงานด้วยนะ !!
รูปแบบการ integrate ClickHose กับ MySQL
มีอยู่ 3 รูปแบบคือ
รูปแบบที่ 1 ทำการดึงข้อมูลจาก MySQL ผ่าน ClickHouse
โดยใช้งานผ่าน MySQL database engine
รูปแบบที่ 2 ทำการย้ายข้อมูลจาก MySQL ไปยัง ClickHouse
โดยไม่ต้องมาดึงข้อมูล หรือ load มายัง MySQL เลย
ให้ใช้งานผ่าน ClickHose ตรง ๆ เลย สำหรับการ analytic
ใช้งานผ่าน MergeTree table engine
รูปแบบที่ 3 ทำการ mirror หรือ snapshot ข้อมูลจาก MySQL ไปยัง ClickHouse
โดยทำการ replicate ข้อมูลที่เปลี่ยนแปลงใน MySQL ไปเท่านั้น
ใช้งานผ่าน ReplacingMergeTree
เป็นอีกแนวทางที่น่าสนใจ ในการออกแบบระบบงาน
เพื่อให้ตอบโจทย์ทาง business
Reference Websites