Nine-step Methodology
- Choosing the process
- เคยบอกไปแล้วว่าการออกแบบ data warehouse มันมีแบบ top-down และ bottom-up โดยขั้นตอนแรกนี้เราจะคิดถึงการเลืิอกโปรเซส ว่าเราจะทำ warehouse สำหรับงานอะไร
- Choosing the grain
- เลือกระดับความละเอียดของงาน ว่าเราจะดูไปถึงระดับรายวัน หรือเอาแค่สรุปมาเป็นเงินเดือนก็พอ ให้เราเลือกระดับความละเอียดที่คิดว่าเราสนใจ
- Identifying and conforming the dimensions
- คิดว่าเราจะทำในแง่มุมไหนบ้าง เช่นวิเคราะห์ในแง่มุมของลูกค้า พนักงานขาย หรือในมิติของตัวสินค้า
- ในมิติที่แน่ๆมิติหนึ่งเลยที่มักจะมีตลอดใน data warehouse ก็คือมิติของเวลา
- หา conform dimension ด้วย เราอาจจะต้องหา หรือต้องการเปรียบเทียบ เพื่อให้มันเทียบกันได้
- Choosing the facts
- คิดว่าเราจะมองในแง่ใหนใน fact เช่นจำนวนชิ้นที่ขาย ผลการเรียนของนักเรียน เช่นเกรดของนักเรียน (เกรดก็คงต้องเป็นตัวเลข) โดยสิ่งที่เราจะเลืิอกเอามาเป็น fact ได้มันจะต้องบวก ลบ คูณ หารกันได้ อะไรก็ตามที่เป็นตัวเลขแล้วเอามาทำกันแล้วมีความหมาย แต่ของบางอย่างเป็นตัวเลขแล้วเอามาบวก ลบ คูณ หารกันก็ไม่ได้มีความหมาย เช่นเบอร์เสื้อเป็นต้น
- fact ก็ควรอยู่ในระดับ granularity เดียวกัน เช่นเรามีธุรกิจหลายๆอย่าง แล้วแต่ละอันก็มีการชำระเงินเป็นรายเดือน รายปี รายวันเป็นต้น ทำให้ช่วงเวลามันเข้ากันไม่ได้ ดังนั้น granularity ควรจะเป็นแบบเดียวกัน unit เดียวกัน ถึงจะอยู่ใน fact table เดียวกันได้ เพื่อไม่ให้การตีความผิดความหมาย
- Storing pre-calculations in the fact table
- เวลาเราจะเก็บ fact เราควรจะเก็บข้อมูลที่ถูกคำนวนมาแล้วเรียบร้อย ไม่ควรเก็บอะไรที่จะต้องไปคำนวณอีกรอบ เพราะถ้าเราไม่ได้คำนวณมาก่อนหน้านี้แล้ว เวลาเราจะ query มันก็จะเสียเวลามาก เนื่องจากเรื่องนี้จะเล่นกับข้อมูลจำนวนมาก
- Rounding out the dimension tables
- แจกแจง dimension table เช่น เราอยากจะวิเคราะห์อะไรเกี่ยวกับลูกค้า เช่น ชื่อว่าคนไหนชื่ออะไร หรือบางทีเราไม่อยากสรุปเป็นรายบุคคล เราอาจจะอยากสรุปเป็นรายจังหวัด หรืออาชีพว่ากลุ่มอาชีพนี้ซื้อของเรามากน้อยแค่ไหน
- ขั้นนี้เป็นขั้นของการออกแบบในเชิงของ static มากกว่า
- Choosing the duration of the database
- กำหนดว่าเราจะเอาข้อมูลจาก database มาใส่ใน warehouse บ่อยแค่ไหน
- ส่วนใหญ่แล้วเราจะเอาข้อมูลมากองๆรวมกันไว้ก่อน จากนั้นค่อยเอามาใส่ใน warehouse ทีหลัง
- บางคนใช้เทคนิคของ replication server เช่น เวลามีเหตุเกิดอะไรขึ้นกับ database ปกติแบบ online transaction ของทั่วไป โดยเมื่อมี transaction เกิดขึ้นก็จะดึงข้อมูลมากองๆรวมกันไว้ก่อน เมือถึงเวลาก็เอาข้อมูลมาสรุปจากนั้นถึงจะดึงมาใส่ไว้ใน warehouse แต่กระบวนการในการทำตรงนี้เราต้องวิเคราะห์ว่าจะเอาข้อมูลมาถี่ขนาดไหน แล้วเวลาเราเอาข้อมูลมา เราต้องคิดในเชิงที่ว่า ข้อมูลมันควรที่จะถูกสร้างและสะสมไปได้เรื่อยๆ (incremental) ไม่ถูกลบทิ้ง หรือสร้างใหม่ ซึ่งการออกแบบให้เป็น incremental นั้นก็ต้องใช้ความสามารถมากเหมือนกัน เช่นใน database มันจะต้องมีอะไรซักอย่างหนึ่งมาบอกว่าอันนี้เอาไปแล้ว โดยมากจะดูจากเวลา แต่ว่าบางทีข้อมูลมันมีการ update ทับ ทำให้เราตรวจสอบได้ยาก ทำให้บางทีเวลาจะออกแบบเราก็ต้องกลับไปดูที่ database ของเราด้วย ว่า transaction มันทำงานยังไง แล้วการที่จะดึงมา มันจะสามารถรองรับการดึงมาได้อย่างถูกต้องสมบูรณ์หรือเปล่า แต่ยังไงก็แล้วแต่ ก็ไม่ได้หมายความว่าเราจะเอาทุกๆอย่างใน database มาใส่ใน data warehouses เพราะเราอาจไม่ได้สนใจทุกๆอย่าง เช่นรายละเอียดปลีกย่อยบางอย่าง
- อย่าลืมว่าข้อมูลที่อยู่ใน warehouses มันโตเรื่อยๆไม่มีวันเต็ม เราควรที่จะ schedule ในเรื่องของการทำ archive ด้วย เราควรจะทยอยเอาออก เช่นข้อมูลรายละเอียดของเมื่อ 10 ปีก่อนอาจจะไม่มีความหมายแล้ว แต่ข้อมูลสรุปของเมื่อ 10 ปีก่อนอาจจะยังมีความหมายอยู่
- Tracking slowly changing dimensions (SCD)
- เรื่องมีอยู่ว่า เวลาเรามี fact table อยู่ ซึ่งเป็น fact ที่เก็บข้อมูลมาตั้งแต่อดีตแล้ว เช่นเดิม fact table บอกว่านาย ก. ลงทะเบียนเรียนวิชา INT641 แล้วมีตารางหนึ่งบอกว่า INT641 คือวิชา DBT แต่พอมีข้อมูลของคนใหม่เข้ามาลงทะเบียน INT641 มันก็ไม่ใช่ DBT โดยแต่รหัสวิชานี้มันถูกเปลี่ยนไปเป็นวิชาอื่นแล้ว ทีนี้เราจะรู้ได้ยังยังไงว่า 641 ไหนเป็นวิชาไหน เราจะเห็นได้ว่า 2 คนลงรหัสเดียวกัน แต่คนละวิชากัน แบบนี้เราถึงเรียกว่า fact table มันมีการเปลี่ยนแปลงได้ เราจะทำยังไงเพื่อไม่ให้การเปลี่ยนแปลงนี้กระทบกับแบบอื่นๆ ซึ่งก็ต้องดูด้วยว่าข้อมูลที่เปลี่ยนมันน่าสนใจแค่ไหน และมีผลกระทบกับส่วนอื่นๆแค่ไหน
- ใน lecture มีแค่ 3 type หลักเท่านั้น แต่ใน wikipedia บอกว่ามีทั้งหมด 6 type ด้วยกัน
- ถ้ามีโอกาสจะกลับมาเขียนถึงความแตกต่างระหว่างแต่ละ Type อีกรอบ
- Deciding the query priorities and the query modes
- ขั้นนี้จะออกไปทาง physical แล้ว
- มองว่า query ที่มาส่วนใหญ่มักจะเป็น query ลักษณะไหน เราอาจจะมองไปว่าเราควรจะสร้าง index ใน column ไหน
- ถ้าผู้บริหารชอบดูข้อมูลรายเดือน เราก็ทำรายเดือนไว้รอเลย อยากถามก็หาได้เลยไม่ต้องไปคำนวณอะไรบ่อยๆซ้ำๆ
- ขั้นตอนนี้คงต้องดูจากสถิติเองว่าเราควรจะต้องเตรียมอะไรไว้ล่วงหน้า หรืออาจจะต้องถามผู้ใช้เอง
ตอนต่อไปจะว่าด้วยเรื่องของ On-Line Analytical Processing (OLAP)
