สถาบันข้อมูลขนาดใหญ่ (องค์การมหาชน)

Logo BDI For web

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

Aug 26, 2024

BigQuery เป็นเครื่องมือทรงพลังสำหรับการวิเคราะห์ข้อมูลขนาดใหญ่ แต่หากใช้ไม่เป็น ค่าใช้จ่ายอาจพุ่งสูงโดยไม่รู้ตัว มาเรียนรู้เทคนิคการใช้งาน BigQuery อย่างชาญฉลาด เพื่อให้ได้ประสิทธิภาพสูงสุดในราคาที่คุ้มค่าที่สุด

BigQuery คืออะไร 

BigQuery คือบริการวิเคราะห์ข้อมูลแบบคลาวด์ (Cloud Data Analytics Service) ที่นำเสนอโดย Google Cloud Platform เป็นโซลูชั่นที่มีความสามารถในการประมวลผลข้อมูลในขนาดใหญ่และความเร็วสูง โดยไม่ต้องมีการจัดการกับโครงสร้างพื้นฐานเอง ทำให้ผู้ใช้สามารถโฟกัสที่การวิเคราะห์ข้อมูลได้มากขึ้น 

คุณสมบัติหลักของ BigQuery 

  1. Serverless Architecture: BigQuery เป็นบริการแบบ serverless ซึ่งหมายความว่าผู้ใช้ไม่ต้องจัดการกับเซิร์ฟเวอร์หรือโครงสร้างพื้นฐานต่าง ๆ Google จะจัดการทรัพยากรการประมวลผลให้โดยอัตโนมัติ 
  1. SQL Interface: ผู้ใช้สามารถใช้คำสั่ง SQL ในการสืบค้นข้อมูล ทำให้สามารถนำข้อมูลมาใช้ได้ง่ายดาย 
  1. Scalability: สามารถประมวลผลข้อมูลในขนาดใหญ่ได้อย่างรวดเร็ว ไม่ว่าจะเป็นข้อมูลที่มีขนาดเทระไบต์ (TB) หรือเพตาไบต์ (PB) 
  1. 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 มีสองโมเดลการคิดราคาสำหรับการประมวลผล: 

  1. On-Demand Pricing: คิดราคาเป็นจำนวนไบต์ที่ถูกประมวลผลในแต่ละคำสั่ง SQL โดยจะไม่คิดเงินในจำนวนไบต์ข้อมูล 1TB แรก 
  1. Capacity Pricing: คิดราคาตามความสามารถในการประมวลผล (slots) ซึ่งเป็นหน่วยวัดการประมวลผลของ CPU เสมือนจริง 

การจัดเก็บข้อมูล (Storage Pricing) 

BigQuery มีการคิดราคาสำหรับการจัดเก็บข้อมูลสองประเภท: 

  1. Active Storage: ข้อมูลที่ถูกแก้ไขในช่วง 90 วันที่ผ่านมา 
  1. Long-Term Storage: ข้อมูลที่ไม่ถูกแก้ไขในช่วง 90 วันที่ผ่านมา 

โดยพื้นที่การจัดเก็บข้อมูล 10 GiB แรกจะไม่มีค่าใช้จ่าย 

เทคนิคการลดค่าใช้จ่ายของ BigQuery 

ปัญหาส่วนใหญ่ของราคาที่เกิดขึ้น มักจะมาจากการประมวลข้อมูลที่มีขนาดใหญ่บ่อยด้วยการคิดเงินแบบ On-Demand ทำให้ไม่สามารถควบคุมค่าใช้จ่ายที่เกิดขึ้นได้ โดยวิธีในการลดค่าใช้จ่ายนั้นก็มีหลากหลายวิธี ดังนี้ 

  1. การทำ Partitioned Tables และ Clustered Tables ใน BigQuery 
  • Partitioned Tables: การแบ่งตารางออกเป็นส่วน ๆ ตามคอลัมน์ที่สนใจ เพื่อให้ BigQuery อ่านเฉพาะส่วนนั้น ๆ โดยเลือกได้สูงสุด 1 คอลัมน์ 
  • Clustered Tables: การจัดกลุ่มข้อมูลตามคอลัมน์ที่ใช้ในการกรองบ่อย ๆ เพื่อลดการอ่านข้อมูลในตาราง โดยเลือกได้สูงสุด 4 คอลัมน์ 
ภาพที่ 1 Clustered และ Partitioned Tables สามารถอ่านเพิ่มเติมได้ที่ Link  
  1. การเลือกใช้ตารางแบบ Materialized View 

เป็นการจัดเก็บข้อมูลในฐานข้อมูลที่มีการเก็บผลลัพธ์ของการสืบค้น (query) ไว้ล่วงหน้าเป็นตารางจริง ๆ ในฐานข้อมูล ซึ่งต่างจาก standard view ที่จะดำเนินการสืบค้นใหม่ทุกครั้ง ซึ่งจะเหมาะกับการประมวลข้อมูลที่ต้องการรวมข้อมูล (aggregate) การกรองข้อมูลบางส่วน, การผสมข้อมูลกับตารางอื่น เป็นต้น โดยสามารถศึกษาเพิ่มเติมได้ที่ Link  

  1. การเลือกใช้ BI Engine 

เป็นบริการวิเคราะห์ข้อมูลที่ถูกจัดเก็บอยู่ในหน่วยความจำ (in-memory) ซึ่งจะมีการจัดเก็บข้อมูลที่ถูกใช้อยู่บ่อย ๆ ทำให้ไม่ต้องย้อนกลับไปประมวลผลข้อมูลตั้งแต่ต้น ช่วยลดการอ่านข้อมูลซ้ำ ๆ ได้เป็นอย่างดี สามารถอ่านรายละเอียดเพิ่มเติมได้ที่ Link  

  1. การเปลี่ยนวิธีคิดเงินเป็นแบบ Capacity Pricing 

การคิดราคาตามความสามารถในการประมวลผล (slots) ซึ่งเป็นหน่วยวัดการประมวลผลของ CPU เสมือนจริง ซึ่งจะเหมาะกับการประมวลผลข้อมูลที่สามารถรอได้นาน หรือข้อมูลที่ถูกอ่านเพื่อประมวลผลที่มีปริมาณที่มาก โดยสามารถปรับจำนวน slot ได้ตามต้องการและสามารถตั้งค่าให้ปรับแบบอัตโนมัติตามความต้องการใช้งานของระบบได้ ทำให้สามารถคาดการค่าใช้จ่ายที่จะเกิดขึ้นสูงสุดในแต่ละเดือน สามารถอ่านรายละเอียดเพิ่มเติมได้ที่ Link โดยวิธีการนี้จะมีการให้บริการในหลายราคาตามแพคเกจซึ่งจะเปรียบในตารางด้านล่างนี้ 

  Standard Enterprise Enterprise Plus On-demand pricing 
Pricing model Slot-hours (1 minute minimum) Slot-hours (1 minute minimum) Slot-hours (1 minute minimum) Pay per query with free tier 
Compute model Autoscaling Autoscaling + Baseline Autoscaling + Baseline On-demand 
Commitment plans No access to capacity commitments 1-year commitment at 20% discount or 3-year commitment at 40% discount 1-year commitment at 20% discount or 3-year commitment at 40% discount No access to capacity commitments 
Compliance controls No access to compliance controls through Assured Workloads No access to compliance controls through Assured Workloads Compliance controls through Assured Workloads Compliance controls through Assured Workloads 
VPC Service Controls No VPC Service Controls Support VPC Service Controls Support VPC Service Controls Support VPC Service Controls Support 
Fine-grained security controls No access to fine-grained security controls Column-level access control Column-level access control Column-level access control 
Row-level security Row-level security Row-level security 
Dynamic data masking Dynamic data masking Dynamic data masking 
Custom data masking Custom data masking Custom data masking 
Business Intelligence acceleration No access to query acceleration through BI Engine Query acceleration through BI Engine Query acceleration through BI Engine Query acceleration through BI Engine 
Materialized views Query existing materialized views directly Create materialized views Create materialized views Create materialized views 
Automatic refresh of materialized views Automatic refresh of materialized views Automatic refresh of materialized views 
Manual refresh of materialized views Manual refresh of materialized views Manual refresh of materialized views 
Direct query of materialized views Direct query of materialized views Direct query of materialized views 
Smart tuning Smart tuning Smart tuning 
Integrated machine learning No access to BigQuery ML BigQuery ML BigQuery ML BigQuery ML 
Workload management Users cannot set the maximum concurrency target Advanced workload management (idle capacity sharing, target concurrency) Advanced workload management (idle capacity sharing, target concurrency) On-demand users don’t have access to Advanced workload management 
Cached results Single-user caching Cross-user caching Cross-user caching Single-user caching 

สามารถดูรายละเอียดตารางเต็มได้จาก 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 ที่มีประสิทธิภาพยิ่งขึ้นนะครับ 

บทความโดย ไชยณรงค์  ทุมาภา 

ตรวจทานและปรับปรุงโดย นววิทย์ พงศ์อนันต์ 

Chainarong Tumapha

Senior Data Engineer Big Data Institute (Public Organization), BDI

© Big Data Institute | Privacy Notice