ตอนเลือก data warehouse มักเจอสามชื่อนี้บ่อยๆ ทั้งที่จริงๆ แล้วออกแบบมาคนละแนว เลยลองเทียบให้เห็นภาพว่าแต่ละตัวเก่งเรื่องอะไร
- Snowflake — general-purpose cloud data warehouse เน้น ease of use, enterprise features, ACID compliance เต็มรูปแบบ
- BigQuery (BQ) — serverless data warehouse ของ Google เน้น scale แบบไม่ต้องจัดการ infra เลย
- ClickHouse (CH) — OLAP database เน้นความเร็วสำหรับ analytical query โดยเฉพาะ real-time analytics
Infrastructure
| Snowflake | BigQuery | ClickHouse | |
|---|---|---|---|
| Compute/Storage | แยกกันชัดเจน เลือก warehouse size เอง | แยกกัน เป็น fully serverless ไม่ต้องจัดการ infra เอง | มีทั้ง Serverful (self-hosted) และ Serverless (cloud) |
| Management | ต้องตั้งค่า warehouse scale เอง | Google จัดการให้หมด ไม่ต้องแตะ infra | ต้อง tune เยอะ ถ้า self-host (replicas, shards, merge tree settings) |
| Multi-cluster | แยก workload ได้ตาม warehouse ที่สร้าง | จัดการผ่าน slot reservation | ต้อง manage cluster เอง ยกเว้นจะใช้ ClickHouse Cloud |
Pricing Model
- Snowflake — จ่ายตาม computer credit ที่ warehouse ใช้จริง (per-second) มีค่า storage ที่จ่ายแยกจาก compute
- BigQuery — มี 2 แบบ คือ 1. On-demand จ่ายตาม query ที่สแกน คิดราคา per TB และ 2. Flat-rate จ่ายตาม compute capacity slot ที่จองไว้
- ClickHouse — ถ้า self-host ก็จ่ายค่า infra ถูกเพราะราคาตาม VM ที่ใช้ แต่ต้องมีทีมดูแล แบบ Cloud คิดราคาตาม Compute/storage คล้าย Snowflake
Performance
ClickHouse ชนะขาดในเรื่องความเร็ว query โดยเฉพาะ:
- Aggregation queries บน column ที่ sort/index ดี
- Real-time analytics ที่ต้องการ latency ต่ำมาก (sub-second) เช่น dashboard ที่ query ถี่ๆ
- ใช้ MergeTree engine ที่ optimize เฉพาะ write-heavy + append-only workload
Snowflake กับ BigQuery เร็วพอสำหรับ BI/reporting ทั่วไป แต่ latency อยู่ในระดับวินาทีขึ้นไป ไม่เหมาะกับ use case ที่ต้องการ sub-second response แบบ high concurrency
Concurrency
- Snowflake — จัดการดีที่สุดในกลุ่มนี้เพราะ multi-cluster warehouse แยก workload ไม่แย่ง resource กัน
- BigQuery — จัดการ concurrency ผ่าน slot allocation อัตโนมัติ แต่ถ้าใช้ on-demand pricing แล้วมี query หนักพร้อมกันเยอะๆ อาจ throttle
- ClickHouse — ออกแบบมาสำหรับ analytical query จำนวนมากพร้อมกัน (high QPS) ได้ดี แต่ transactional/complex join workload ไม่ใช่จุดแข็ง
ACID / Transaction Support
- Snowflake — ACID เต็มรูปแบบ เหมาะกับ workload ที่ต้องการความถูกต้องสูง (financial, enterprise reporting)
- BigQuery — รองรับ ACID ระดับหนึ่งแต่ไม่ได้ออกแบบมาเพื่อ transactional workload
- ClickHouse — ไม่เน้น ACID เลย เหมาะกับ append-only, analytical workload ไม่เหมาะกับ update/delete บ่อยๆ
เหมาะกับ Use Case ไหน
เลือก Snowflake ถ้า:
- ต้องการ enterprise features ครบ (data sharing, governance, RBAC ละเอียด)
- workload หลากหลายทีม ต้องแยก compute ชัดเจน
- ต้องการ ACID/transaction ที่แน่นอน
เลือก BigQuery ถ้า:
- ไม่อยากจัดการ infra เลย อยาก fully managed 100%
- ใช้ร่วมกับ Google ecosystem (GA4, Looker, Ads data)
เลือก ClickHouse ถ้า:
- ต้องการความเร็วสูงสุดสำหรับ real-time analytics/dashboard
- workload เป็น append-only, log/event data จำนวนมหาศาล
- มีทีม engineer ที่ tune ระบบเองได้ (ถ้า self-host) หรือยอมจ่ายเพื่อ managed service