Data Warehouse (คลังข้อมูล) ถ้าอธิบายให้เห็นภาพง่ายที่สุด มันคือ “ห้างสรรพสินค้าขนาดใหญ่ที่จัดหมวดหมู่สินค้าไว้อย่างดี เพื่อให้คนมาเลือกซื้อไปใช้งาน” ต่างจากฐานข้อมูลทั่วไปที่เป็นเหมือน “ร้านขายชำหลังบ้านที่เน้นรับของเข้า-ออกรายวัน” ครับ
Data Warehouse คืออะไร?
Data Warehouse (DWH) คือระบบฐานข้อมูลรูปแบบหนึ่งที่ออกแบบมาเพื่อ การวิเคราะห์ข้อมูล (Analytics) และการทำรายงาน (Reporting) โดยเฉพาะ มันจะรวบรวมข้อมูลจากหลาย ๆ แหล่งในองค์กร (เช่น ระบบ ERP, CRM, ระบบหลังบ้าน เว็บไซต์ หรือแม้แต่ไฟล์ Excel) มารวมไว้ที่เดียวกัน
คุณสมบัติเด่น 4 ประการ (โดย W.H. Inmon บิดาแห่ง Data Warehouse)
- Subject-Oriented: จัดเก็บข้อมูลตามหัวข้อหลักของธุรกิจ เช่น เรื่องยอดขาย (Sales), สินค้า (Product), หรือลูกค้า (Customer) ไม่ได้เก็บตามโมดูลของแอปพลิเคชัน
- Integrated: มีการปรับปรุงข้อมูลให้เป็นมาตรฐานเดียวกัน เช่น ระบบหนึ่งเก็บเพศเป็น
M/Fอีกระบบเก็บเป็น1/0เมื่อเข้า DWH ต้องแปลงให้เป็นแบบเดียวกันทั้งหมด - Non-Volatile: ข้อมูลที่เข้า DWH แล้วจะเน้นอ่านและวิเคราะห์เป็นหลัก จะไม่มีการแก้ไข (Update) หรือลบ (Delete) บ่อย ๆ เหมือนระบบหน้าร้าน
- Time-Variant: เก็บข้อมูลย้อนหลังเป็นเวลานาน (เช่น 5-10 ปี) เพื่อดูแนวโน้ม (Trend Analysis) ต่างจากระบบหน้าร้านที่มักสนใจแค่ข้อมูลปัจจุบัน
ความแตกต่างระหว่าง OLTP และ OLAP
ในการทำงานกับข้อมูล เราจะแบ่งระบบออกเป็น 2 ขาหลัก ๆ
| คุณสมบัติ | OLTP (Online Transaction Processing) | OLAP (Online Analytical Processing) |
| วัตถุประสงค์ | เน้นงานประจำวัน ทำงานกับข้อมูลปัจจุบัน (เช่น การบันทึกยอดซื้อขาย) | เน้นการวิเคราะห์ หาข้อมูลเชิงลึก (Insight) และทำ Report |
| ตัวอย่างระบบ | ฐานข้อมูลในระบบ App/Web, MySQL, SQL Server, Oracle ทั่วไป | Data Warehouse (เช่น BigQuery, Snowflake, Amazon Redshift) |
| ลักษณะ Query | INSERT, UPDATE ทีละแถว (Row-based) ทำงานเร็วมาก | SELECT ข้อมูลปริมาณมหาศาลเพื่อมา Aggregate (Sum, Avg, Count) |
| การออกแบบ | มักทำ Normalization (3NF) เพื่อลดความซ้ำซ้อนของข้อมูล | มักทำ Denormalization (เช่น Star Schema) เพื่อให้ Query ได้เร็วที่สุด |
สถาปัตยกรรมและกระบวนการทำงาน (Architecture)
กว่าข้อมูลจากระบบต่าง ๆ จะมาอยู่ใน Data Warehouse และพร้อมใช้ จะต้องผ่านกระบวนการที่เรียกว่า ETL / ELT ครับ
- Data Sources: แหล่งข้อมูลต้นทาง (App DB, Log files, Third-party API)
- Staging Area: พื้นที่พักข้อมูลชั่วคราว เพื่อทำการคลีนข้อมูลก่อน
- ETL / ELT Process:
- Extract: ดึงข้อมูลมาจากแหล่งต่าง ๆ
- Transform: คลีนข้อมูล แปลงรูปแบบ (Format) และจัดการกรณีข้อมูลสูญหาย หรือแทนค่าว่าง (เช่น การจัดการ
''หรือNULLให้เป็นมาตรฐานเดียวกัน) - Load: นำข้อมูลเข้าสู่ Data Warehouse
- Data Mart (ถ้ามี): คือ Data Warehouse ย่อย ๆ ที่ตัดแบ่งตามแผนก เพื่อให้ใช้งานง่ายขึ้น เช่น Data Mart สำหรับฝ่ายการตลาด, ฝ่ายการเงิน
- BI / Analytics: บอร์ดบริหาร หรือ Data Analyst นำข้อมูลไปใช้ต่อผ่านเครื่องมืออย่าง Power BI, Tableau หรือเขียน SQL เพื่อรันโมเดล AI
การออกแบบ Data Modeling สำหรับ คลังข้อมูล
ส่วนใหญ่ใน Data Warehouse จะนิยมใช้ Star Schema หรือ Snowflake Schema โดยจะแบ่งตารางออกเป็น 2 ประเภทหลัก
- Fact Table: ตารางที่เก็บ “เหตุการณ์” หรือ “ตัวเลข” ที่เกิดขึ้น เช่น ตารางยอดขาย (เก็บยอดเงิน, จำนวนชิ้น, วันที่เกิดรายการ, Key ของลูกค้า)
- Dimension Table: ตารางที่เก็บ “บริบท” หรือ “รายละเอียด” เพื่อเอาไว้ขยายความใน Fact Table เช่น รายละเอียดลูกค้า (ชื่อ, ที่อยู่, ช่วงอายุ), รายละเอียดสินค้า (ชื่อสินค้า, หมวดหมู่)
เทคโนโลยีในปัจจุบัน
ปัจจุบัน Data Warehouse ได้ย้ายขึ้นไปอยู่บน Cloud เป็นส่วนใหญ่ (Cloud Data Warehouse) เพราะขยายขนาด (Scale) ง่าย และคิดเงินตามการใช้งานจริง
- Google BigQuery: ได้รับความนิยมสูงมากในฝั่ง Data Analytics เพราะเป็น Serverless และทำงานร่วมกับเครื่องมืออื่น ๆ ได้ดี
- Snowflake: ยืดหยุ่นสูง แยกส่วนคำนวณ (Compute) กับส่วนเก็บข้อมูล (Storage) ออกจากกันชัดเจน
- Amazon Redshift / Microsoft Azure Synapse: เหมาะกับองค์กรที่ใช้ Infra หลักบน AWS หรือ Azure อยู่แล้ว
Note
ในยุคนี้บางองค์กรยังมีการขยับไปใช้แนวคิด Data Lakehouse (เช่น Databricks) ที่เป็นการรวมข้อดีของ Data Lake (เก็บไฟล์ดิบได้ทุกประเภท) และ Data Warehouse (เขียน SQL และจัดการ Transaction ได้ดี) เข้าไว้ด้วยกันอีกด้วยครับ
อ่านเพิ่มเติม