วันศุกร์ที่ 29 กันยายน พ.ศ. 2560

[บันทึกความรู้] การออกแบบและสร้างคลังข้อมูล

จากหลักสูตรเรียนออนไลน์ RSU-MOOC: rsu001 ฉลาดด้วยข้อมูล ใครๆ ก็ทำได้ (คลังข้อมูลและการทำเหมืองข้อมูล)
เนื้อหาก่อนหน้านี้ :  คลังข้อมูล (Data Warehouse) คืออะไร

หลักการออกแบบคลังข้อมูลแบบ Star Schema และ Snowflake Schema
การออกแบบ Data Warehouse จะใช้ Dimensional Model  ในการออกแบบโครงสร้างพื้นฐานของระบบฐานข้อมูล  จะทำในลักษณะของลูกบาศก์ (Cube) โดยจะเป็นรูปลูกบาศก์ที่มีมุมมองหลากหลาย ประกอบด้วยส่วนประกอบสำคัญ 2 ส่วนคือ Dimension Table (ตารางแกนมิติ) กับ Measure (ค่าที่ต้องการวัด )

Dimensional Model เป็นการทำให้ฐานข้อมูลดูง่ายขึ้นต่อการทำความเข้าใจ
โดยมองภาพฐานข้อมูลเป็นลูกบาศก์ ซึ่งจะมีกี่มิติก็ได้    แต่ต้องสามารถหั่นแบ่งออกมาเป็นลูกเต๋า
ตัดข้อมูลช่วงใดช่วงหนึ่งมาวิเคราะห์และหมุนดูทุกด้านของลูกเต๋าได้
ยกตัวอย่าง เช่น   ขายสินค้า(Product) ในหลายๆที่ (Market) ในช่วงเวลาต่างกัน (Time)
เราจะใช้ Dimensional Model ออกแบบ โดยเป็นลูกบาศก์ 3 มิติของ Product,Market,Time
 แต่ละจุดภายในที่เกิดจากการตัดของ 3 มิตินี้    นั่นก็คือผลลัพธ์ทางธุรกิจ เมื่อพิจารณาจาก   Product,Market,Time พร้อมกัน

1. Star Schema (โครงสร้างแบบดาว)
Star Schema เป็น Dimensional Model ที่มีรูปร่าง Diagram คล้ายรูปดาว
ประกอบไปด้วยตารางหลักที่อยู่ตรงกลางเรียกว่า Fact Table(ตารางค่าที่แท้จริง)  เป็นศูนย์รวมข้อมูล
และรายล้อมไปด้วยตารางที่เรียกว่า Dimensional Table (ตารางแกนมิติ)
ซึ่งจะมีกี่ตารางก็ได้   แต่ในแต่ละตารางนั้นต้องมี Key ที่สัมพันธ์ไปยัง Fact Table ตารางเดียวเท่านั้น
สัมพันธ์กันแบบ Single Join และจะไม่สัมพันธ์กับ Dimensional Table อื่นๆ 
ดังนั้น Fact Table จึงเป็นตารางเดียวที่มี Multiple Join


โดรงสร้างแบบ Star Schema  ข้อมูลจะเป็นแบบ Denomalized  และเนื่องจากความสัมพันธ์ระหว่างตารางไม่ซ้บซ้อน   ทำให้สามารถสืบค้นข้อมูลได้อย่างรวดเร็ว

2. Snowflake Schema (โครงสร้างแบบเกล็ดหิมะ )
แตกต่างจาก Star Schema ตรง Dimension Table มีหลายระดับ และระหว่าง Dimension Table มี Key ที่เชื่อมโยงกัน

 
ดังนั้นโครงสร้างแบบนี้จะซับซ้อนมาก สืบค้นยาก  ลักษณะของข้อมูลมีความเป็น Normalized


 Fact Table (ตารางค่าที่แท้จริง)
เป็นตารางหลักเก็บข้อมูลที่ต้องการนำมาวิเคราะห์  โดยปกติข้อมูลในตารางนี้จะไม่มีการแก้ไข ยกเว้นกรณีเพิ่มข้อมูลใหม่
ข้อมูลที่เก็บอยู่ใน fact table เรียกว่า grain of fact table
แต่ละ Record ของ Fact Table  เป็นการสรุปรวมข้อมูลทั้งหมดที่เกิดจาก Intersection ของทุกๆ Dimensions

Dimension Table (ตารางแกนมิติ) 
- เก็บคำอธิบายของแต่ละ Dimension  อธิบายทุกๆสมาชิกใน Table ว่าประกอบด้วย Attributes อะไรบ้าง
Attributes ที่ดีต้องเป็นตัวอักษร และต้องแยกออกจากกัน
-  เก็บความหมายของรหัสที่ใช้ในค่าที่ต้องการวัด (Measure)  เช่น  ตารางที่ไว้เก็บรหัสสินค้ารายละเอียดสินค้า   เป็นต้น

เนื้อหาต่อไป :   การประมวลผลเชิงวิเคราะห์แบบออนไลน์ (Online Analytical Processing: OLAP)