
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 ที่มีประสิทธิภาพยิ่งขึ้นนะครับ
บทความโดย ไชยณรงค์ ทุมาภา
ตรวจทานและปรับปรุงโดย นววิทย์ พงศ์อนันต์
Senior Data Engineer
Big Data Institute (Public Organization), BDI
- Chainarong Tumaphahttps://temp.bdi.or.th/author/chainarong-tu/8 พฤศจิกายน 2023
- Chainarong Tumaphahttps://temp.bdi.or.th/author/chainarong-tu/10 ตุลาคม 2022
- Chainarong Tumaphahttps://temp.bdi.or.th/author/chainarong-tu/22 เมษายน 2022
- Chainarong Tumaphahttps://temp.bdi.or.th/author/chainarong-tu/23 มีนาคม 2021
- Navavit Pongananhttps://temp.bdi.or.th/author/gas/30 สิงหาคม 2024
- Navavit Pongananhttps://temp.bdi.or.th/author/gas/29 สิงหาคม 2024
- Navavit Pongananhttps://temp.bdi.or.th/author/gas/
- Navavit Pongananhttps://temp.bdi.or.th/author/gas/