บริหาร BigQuery ยังไงให้คุ้ม (BigQuery Cost Optimization)

BigQuery เป็นเครื่องมือทรงพลังสำหรับการวิเคราะห์ข้อมูลขนาดใหญ่ แต่หากใช้ไม่เป็น ค่าใช้จ่ายอาจพุ่งสูงโดยไม่รู้ตัว มาเรียนรู้เทคนิคการใช้งาน BigQuery อย่างชาญฉลาด เพื่อให้ได้ประสิทธิภาพสูงสุดในราคาที่คุ้มค่าที่สุด
BigQuery คืออะไร
BigQuery คือบริการวิเคราะห์ข้อมูลแบบคลาวด์ (Cloud Data Analytics Service) ที่นำเสนอโดย Google Cloud Platform เป็นโซลูชั่นที่มีความสามารถในการประมวลผลข้อมูลในขนาดใหญ่และความเร็วสูง โดยไม่ต้องมีการจัดการกับโครงสร้างพื้นฐานเอง ทำให้ผู้ใช้สามารถโฟกัสที่การวิเคราะห์ข้อมูลได้มากขึ้น
คุณสมบัติหลักของ BigQuery
- Serverless Architecture: BigQuery เป็นบริการแบบ serverless ซึ่งหมายความว่าผู้ใช้ไม่ต้องจัดการกับเซิร์ฟเวอร์หรือโครงสร้างพื้นฐานต่าง ๆ Google จะจัดการทรัพยากรการประมวลผลให้โดยอัตโนมัติ
- SQL Interface: ผู้ใช้สามารถใช้คำสั่ง SQL ในการสืบค้นข้อมูล ทำให้สามารถนำข้อมูลมาใช้ได้ง่ายดาย
- Scalability: สามารถประมวลผลข้อมูลในขนาดใหญ่ได้อย่างรวดเร็ว ไม่ว่าจะเป็นข้อมูลที่มีขนาดเทระไบต์ (TB) หรือเพตาไบต์ (PB)
- Real-Time Analytics: รองรับการวิเคราะห์ข้อมูลแบบเรียลไทม์ ผู้ใช้สามารถสตรีมข้อมูลเข้ามาใน BigQuery และทำการวิเคราะห์ได้ทันที
การใช้งาน
BigQuery เหมาะสำหรับการวิเคราะห์ข้อมูลในหลากหลายรูปแบบ เช่น:
- การวิเคราะห์ข้อมูลเชิงธุรกิจ (Business Intelligence)
- การประมวลผลและวิเคราะห์ข้อมูลขนาดใหญ่ (Big Data Analytics)
- การสร้างรายงานและการสืบค้นข้อมูล (Reporting and Querying)
- การสร้างโมเดล Machine Learning และการประยุกต์ใช้ในเชิงปฏิบัติ
BigQuery เป็นเครื่องมือที่มีประสิทธิภาพสูงสำหรับองค์กรที่ต้องการทำการวิเคราะห์ข้อมูลที่ซับซ้อนและในปริมาณมาก โดยไม่ต้องลงทุนในโครงสร้างพื้นฐานด้านไอทีที่มีค่าใช้จ่ายสูง
การคิดค่าใช้จ่าย
การคิดราคาของ BigQuery แบ่งออกเป็น 2 ส่วนหลัก: ราคาสำหรับการประมวลผล (Compute Pricing) และราคาสำหรับการจัดเก็บข้อมูล (Storage Pricing)
การประมวลผล (Compute Pricing)
BigQuery มีสองโมเดลการคิดราคาสำหรับการประมวลผล:
- On-Demand Pricing: คิดราคาเป็นจำนวนไบต์ที่ถูกประมวลผลในแต่ละคำสั่ง SQL โดยจะไม่คิดเงินในจำนวนไบต์ข้อมูล 1TB แรก
- Capacity Pricing: คิดราคาตามความสามารถในการประมวลผล (slots) ซึ่งเป็นหน่วยวัดการประมวลผลของ CPU เสมือนจริง
การจัดเก็บข้อมูล (Storage Pricing)
BigQuery มีการคิดราคาสำหรับการจัดเก็บข้อมูลสองประเภท:
- Active Storage: ข้อมูลที่ถูกแก้ไขในช่วง 90 วันที่ผ่านมา
- Long-Term Storage: ข้อมูลที่ไม่ถูกแก้ไขในช่วง 90 วันที่ผ่านมา
โดยพื้นที่การจัดเก็บข้อมูล 10 GiB แรกจะไม่มีค่าใช้จ่าย
เทคนิคการลดค่าใช้จ่ายของ BigQuery
ปัญหาส่วนใหญ่ของราคาที่เกิดขึ้น มักจะมาจากการประมวลข้อมูลที่มีขนาดใหญ่บ่อยด้วยการคิดเงินแบบ On-Demand ทำให้ไม่สามารถควบคุมค่าใช้จ่ายที่เกิดขึ้นได้ โดยวิธีในการลดค่าใช้จ่ายนั้นก็มีหลากหลายวิธี ดังนี้
- การทำ Partitioned Tables และ Clustered Tables ใน BigQuery
- Partitioned Tables: การแบ่งตารางออกเป็นส่วน ๆ ตามคอลัมน์ที่สนใจ เพื่อให้ BigQuery อ่านเฉพาะส่วนนั้น ๆ โดยเลือกได้สูงสุด 1 คอลัมน์
- Clustered Tables: การจัดกลุ่มข้อมูลตามคอลัมน์ที่ใช้ในการกรองบ่อย ๆ เพื่อลดการอ่านข้อมูลในตาราง โดยเลือกได้สูงสุด 4 คอลัมน์

- การเลือกใช้ตารางแบบ Materialized View
เป็นการจัดเก็บข้อมูลในฐานข้อมูลที่มีการเก็บผลลัพธ์ของการสืบค้น (query) ไว้ล่วงหน้าเป็นตารางจริง ๆ ในฐานข้อมูล ซึ่งต่างจาก standard view ที่จะดำเนินการสืบค้นใหม่ทุกครั้ง ซึ่งจะเหมาะกับการประมวลข้อมูลที่ต้องการรวมข้อมูล (aggregate) การกรองข้อมูลบางส่วน, การผสมข้อมูลกับตารางอื่น เป็นต้น โดยสามารถศึกษาเพิ่มเติมได้ที่ Link
- การเลือกใช้ BI Engine
เป็นบริการวิเคราะห์ข้อมูลที่ถูกจัดเก็บอยู่ในหน่วยความจำ (in-memory) ซึ่งจะมีการจัดเก็บข้อมูลที่ถูกใช้อยู่บ่อย ๆ ทำให้ไม่ต้องย้อนกลับไปประมวลผลข้อมูลตั้งแต่ต้น ช่วยลดการอ่านข้อมูลซ้ำ ๆ ได้เป็นอย่างดี สามารถอ่านรายละเอียดเพิ่มเติมได้ที่ Link
- การเปลี่ยนวิธีคิดเงินเป็นแบบ Capacity Pricing
การคิดราคาตามความสามารถในการประมวลผล (slots) ซึ่งเป็นหน่วยวัดการประมวลผลของ CPU เสมือนจริง ซึ่งจะเหมาะกับการประมวลผลข้อมูลที่สามารถรอได้นาน หรือข้อมูลที่ถูกอ่านเพื่อประมวลผลที่มีปริมาณที่มาก โดยสามารถปรับจำนวน slot ได้ตามต้องการและสามารถตั้งค่าให้ปรับแบบอัตโนมัติตามความต้องการใช้งานของระบบได้ ทำให้สามารถคาดการค่าใช้จ่ายที่จะเกิดขึ้นสูงสุดในแต่ละเดือน สามารถอ่านรายละเอียดเพิ่มเติมได้ที่ Link โดยวิธีการนี้จะมีการให้บริการในหลายราคาตามแพคเกจซึ่งจะเปรียบในตารางด้านล่างนี้
สามารถดูรายละเอียดตารางเต็มได้จาก Link และการประมาณปริมาณ slot ที่ต้องใช้ สามารถศึกษาได้จาก Link
การลดค่าใช้จ่ายในแต่ละวิธีการใช้งาน (use-case)
การลดค่าใช้จ่ายนั้นขึ้นอยู่กับพฤติกรรมการใช้ BigQuery ซึ่งจะจำแนกแนวทางออกเป็นดังตารางด้านล่าง โดยข้อความที่เน้นจะเป็นวิธีการแก้ไขปัญหาที่แนะนำ
Partitioned Tables และ Clustered Tables | Materialized View | BI Engine | การเปลี่ยนวิธีคิดเงินเป็นแบบ Capacity Pricing | |
ใช้ผลลัพธ์เดิมจากการประมวลผลอยู่บ่อย ๆ โดยผลลัพธ์มีขนาดเล็ก | ช่วยให้การประมวลผลอ่านข้อมูลที่สนใจเท่านั้น | ช่วยเก็บผลลัพธ์โดยไม่ต้องประมวลผลใหม่ | ช่วยเก็บผลลัพธ์โดยไม่ต้องประมวลผลใหม่ | – |
ใช้ผลลัพธ์เดิมจากการประมวลผลอยู่บ่อย ๆ โดยผลลัพธ์มีขนาดใหญ่ | ช่วยให้การประมวลผลอ่านข้อมูลที่สนใจเท่านั้น | ช่วยเก็บผลลัพธ์โดยไม่ต้องประมวลผลใหม่ | – | ช่วยควบคุมค่าใช้จ่ายในการประมวลผลข้อมูลที่มีปริมาณมาก โดยแลกกับเวลาที่ใช้ |
ใช้ข้อมูลที่ประมวลเดิมอยู่บ่อย ๆ แต่ใช้ SQL ที่ต่างกัน | ช่วยให้การประมวลผลอ่านข้อมูลที่สนใจเท่านั้น | – | – | ช่วยควบคุมค่าใช้จ่ายในการประมวลผลข้อมูลที่มีปริมาณมาก โดยแลกกับเวลาที่ใช้ |
ข้อมูลที่ใช้ประมวลผลมีขนาดใหญ่ | ช่วยให้การประมวลผลอ่านข้อมูลที่สนใจเท่านั้น | – | – | ช่วยควบคุมค่าใช้จ่ายในการประมวลผลข้อมูลที่มีปริมาณมาก โดยแลกกับเวลาที่ใช้ |
ข้อมูลที่ประมวลผลมีขนาดเล็ก แต่ SQL มีความซ้ำซ้อน | ช่วยให้การประมวลผลอ่านข้อมูลที่สนใจเท่านั้น | – | – | – |
มีการประมวลผลข้อมูลอย่างต่อเนื่องตลอดทั้งวัน | – | – | – | ช่วยควบคุมค่าใช้จ่ายในการประมวลผลข้อมูลจากการจัดสรร slot การประมวลผลแบบ baseline |
ใช้งาน BigQuery เป็นประจำและมีแผนใช้ระยะยาว | – | – | – | มีส่วนลดเมื่อซื้อการใช้งานล่วงหน้า (commitment) 1ปี และ 3ปี |
เหนือสิ่งอื่นใดไม่ว่าการลดค่าใช้จ่ายด้วยเทคนิคต่าง ๆ บน BigQuery จะเป็นแบบใด สิ่งที่ควรต้องระลึกสม่ำเสมอก็คือการเขียน SQL ที่ดี มีประสิทธิภาพ เลือกดึงและประมวลผลข้อมูลที่จำเป็น และง่ายต่อการอ่านและดูแลรักษา
ท้ายที่สุดนี้การบริหารจัดการ BigQuery อย่างมีประสิทธิภาพไม่ใช่เรื่องยาก เพียงแค่รู้เทคนิคและเลือกใช้ให้เหมาะสมกับงานของคุณ ติดตามบทความดีดีของเรา และในโอกาสหน้าเราจะมาเจาะลึกวิธีการนำ BigQuery ไปประยุกต์ใช้ในสถานการณ์จริงและเคล็ดลับการออกแบบ query ที่มีประสิทธิภาพยิ่งขึ้นนะครับ
บทความโดย ไชยณรงค์ ทุมาภา
ตรวจทานและปรับปรุงโดย นววิทย์ พงศ์อนันต์