Data Warehouse (คลังข้อมูล)

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 ครับ

  1. Data Sources
    แหล่งข้อมูลต้นทาง (App DB, Log files, Third-party API)
  2. Staging Area
    พื้นที่พักข้อมูลชั่วคราว เพื่อทำการคลีนข้อมูลก่อน
  3. ETL / ELT Process
    • Extract
      ดึงข้อมูลมาจากแหล่งต่าง ๆ
    • Transform
      คลีนข้อมูล แปลงรูปแบบ (Format) และจัดการกรณีข้อมูลสูญหาย หรือแทนค่าว่าง (เช่น การจัดการ '' หรือ NULL ให้เป็นมาตรฐานเดียวกัน)
    • Load
      นำข้อมูลเข้าสู่ Data Warehouse
  4. Data Mart (ถ้ามี)
    คือ Data Warehouse ย่อย ๆ ที่ตัดแบ่งตามแผนก เพื่อให้ใช้งานง่ายขึ้น เช่น Data Mart สำหรับฝ่ายการตลาด, ฝ่ายการเงิน
  5. 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 ได้ดี) เข้าไว้ด้วยกันอีกด้วยครับ


อ่านเพิ่มเติม