
ที่มาของภาพ: เอกสารประกอบการบรรยายวิชา Database Technology โดย Asst. Prof.,Dr. Kriengkrai Porkaew
ตรงกลางคือ Data Warehouse
เริ่มจากมี OLPT ทั่วๆไปจากหลายๆแหล่ง แหล่งไหนก็แล้วแต่ แล้วเราก็ดึงข้อมูลเหล่านั้นเข้ามาใส่ใน warehouse โดยกระบวนการที่เราใช้ดึงเข้ามา เราจะใช้ ETL Tools ในการ extract ข้อมูลเข้ามา ซึ่งบ่อยครั้งเราไม่ได้เอามันเข้ามาใส่ใน warehouse ทันที แต่เราจะเอาไปใส่ไว้ในที่พักข้อมูลไว้ก่อน เราเรียกว่า Staging Area หรือบางตำราเรียกว่า Operational Data Store หมายความว่ามันเป็นที่ที่เก็บ Operational Data เอาไว้ชั่วคราวก่อน ซึ่งเหตุผลว่าทำไมต้องเอามาใส่ไว้ในที่พักก่อน ส่วนหนึ่งก็คือข้อมูลที่เอาเข้ามาอาจต้องเอาไปทำการ clean ข้อมูลก่อน หรือบางทีเราไม่ได้เอารายละเอียดไปใส่ไว้ใน warehouse แต่ที่เราต้องการคือเราเอาข้อมูลเข้ามา summary ก่อนจากนั้นเราก็เอาผลที่ได้จากการ summary เข้าไปใส่ใน warehouse ซึ่งบางตำราบางเล่มอาจจะแยกว่า Operational Data Store กับ Staging Area เป็นคนละอย่างกัน แยกกันอยู่ แต่นั่นก็ไม่ใช่ประเด็น
การดึงข้อมูลจาก Operational ไปใส่ใน warehouse เราต้องคิดว่าข้อมูลทีเกิดขึ้นใน Operational Database มันจะเกิดขึ้นตลอดเวลา เช่นเราซื้อของเข้ามา ขายของออกไป มันก็จะเกิดขึ้นตลอดเวลา ทำให้เวลาดึงเข้ามาใน warehouses ก็ไม่ได้ดึงเข้ามาตลอดเวลา มันมักจะมีการ schedule ไว้ว่าให้เอาทุกๆเดือน ทุกๆสัปดาห์เป็นต้น ทีนี้ปัญหาก็มีอยู่ว่า เราจะรู้ได้ยังไงว่าข้อมูลไหนเอามาแล้ว และยังไม่ได้เอามา หรือเอามาแล้ว แต่ต่อมาข้อมูลนั้นมีการอัพเดทใหม่ ทีนี้จะทำยังไง? ซึ่งตรงนี้จะกล่าวถึงอีกทีในหัวข้อถัดๆไป
Technical Terms เกี่ยวกับ flow ต่างๆ
บางตำราเรียกข้อมูลที่ไหลเข้า data warehouses ว่า in-flow ส่วนข้อมูลที่มีการสรุปเป็นรายปี รายวัน หรืออะไรก็แล้วแต่เรียกว่า up-flow ส่วนข้อมูลอะไรก็ตามที่ถูกดึงมาแล้ว เราต้องการเก็บข้อมูลเกี่ยวกับข้อมูลไว้ เช่นมันมาจากแหล่งไหน สัมพันธ์กันยังไง เราจะเรียกว่า meta-flow
ใน data warehouses ข้อมูลจะไหลเข้ามาเรื่อยๆ สักวันก็จะไม่พอเก็บ ดังนั้นแล้วเราควรจะวางแผนเอาไว้ด้วยว่าข้อมูลไหนที่เก่าแล้วเราควรจะย้าย มันออก ซึ่งการย้ายออกหรือ backup เราเราจะเรียกว่า down-flow เช่นการทำ Archive ก็คือเรามีข้อมูลอยู่ไม่อยากจะใช้มันแล้ว แต่อยากเก็บมันไว้ ก็เลยเอาออกไปเก็บไว้อีกทีหนึ่ง
out-flow ไมไ่ด้แปลว่าเป็นการเอาข้อมูลออกไปจาก data warehouse แต่มันเป็นการเอาข้อมูลออกไปใช้ (แต่ข้อมูลยังอยู่ใน warehouse นะ) เช่น การดึงข้อมูลออกมาเพื่อเอาไปวิเคราะห์ และเอาไปทำเป็น Data Mart หรือเอาไปใช้ในเชิงของ OLAP หรือเอาไปใช้ในเชิงของการทำ Data Mining เป็นต้น
ที่ว่ามาก็คือ flow การไหลเวียนของข้อมูลนั่นเอง
SQL OLAP
บางทีการที่เราจะดึงข้อมูลออกจาก data warehouse เราต้องเขียน SQL query ที่กว่าจะดึงออกมาได้เราต้องเขียน SQL ที่สลับซับซ้อน ที่ต้องใช้หลายๆ query กว่าจะดึงออกมาได้ ทำให้ standard SQL ได้ปรับปรุงคำสั่ง SQL ให้มีความสามารถให้เหมือนกับการรวมเอา SQL หลายๆอันมารวมเข้าด้วยกันให้เป็นอันเดียว แล้วสั่งทีเดียวมันก็จะ summary หลายๆมิติให้เราเองได้เลย คำสั่ง SQL เหล่านั้นเรียกว่า SQL OLAP
อ่านรายละเอียดเกี่ยวกับ SQL OLAP functions ได้ ที่นี่
Data Warehouse Components
- ETL Tools - เครื่องมือที่ทำให้เราสามารถไปดึงข้อมูลมาได้ง่ายๆ
- Operational Data Store/ Data Staging Area - เอาไว้เก็บข้อมูลชั่วคราว ก่อนนำเข้าไปใน warehouses
- Data Warehouses - ข้อมูลจะถูกสรุปในมิติต่างๆ และมีการ de-normalize ซึ่งปกติเราจะไม่ normalize เพราะถ้าเรา normalize เวลาจะมาค้นมาทีนึงเราก็ต้องมา join ข้อมูลหลายๆตาราง ซึ่งถือว่าเป็นการเสียเวลา โดยเราจะมีวิธีในการ design แบบหนึ่ง เรียกว่า Star Schema
- Data mart - จริงๆมันก็คือ data warehouses นั่นแหละ แต่มันเป็น data warehouses ที่มีขนาดเล็ก หรือจะเรียกว่าเป็น sub set ของ data warehouse ก็ได้ เวลาเราพูดถึง data warehouse แล้วเราก็จะมองว่าองค์กรของเรามีหน่วยงานย่อยๆเป็นกองต่างๆ แต่ละกองไปทำคลังข้อมูลของตัวเองก็แล้วกัน แบบนี้เราเรียกว่าเป็น Data Mart โดยการที่ทำ Data Mart มันทำให้เราสร้าง warehouse โดยรวมได้ไม่ยากนัก เพราะว่าในองค์กรหนึ่งๆ ก็จะมีหลายๆเรื่องเต็มไปหมด เราจะเอาทุกๆเรื่องไปรวมกันอยู่ที่ศูนย์กลาง ทำให้เรา design ออกมาทั้งองค์กรให้มันสมบูรณ์แบบเลยทีเดียวมันก็ยาก ถ้ามองอีกนัยหนึ่งแล้ว มันก็เหมือนกับการออกแบบ application นี่แหละ ที่มีหลายๆงาน ซึ่งปกติเราจะออกแบบและเขียนโปรแกรมแค่ส่วนงานหนึ่ง เช่น ระบบลา ระบบซื้อขาย ระบบขาดงาน โดย Data Mart ก็จะใช้ concept นี้คือใครอยากใช้อะไรก็ไปทำของตัวเองก็แล้วกัน โดยทำระบบย่อยๆของตัวเอง ทำให้ scale เล็ก และทำได้ง่าย
- Metadata Repository - เก็บ meta data ของสิ่งต่างๆไว้
ตอนต่อไปจะเป็นบันทึกเกี่ยวกับเรื่องอื่นๆของ Data warehouse อีกนิด เกี่ยวกับ ETL Tools และ Approach ในการสร้าง Data Warehouse
