เคล็ดลับการทำรายงานจากฐานข้อมูล
สิงหาคม 15, 2009 ใส่ความเห็น
Reporting Services เคล็ดลับการทำรายงานจากฐานข้อมูล ลาภลอย วานิชอังกูร (laploy.com) โพสบล็อกตอนนี้จะขอเล่าประสบการณ์เมื่อผู้เขียนให้คำปรึกษาเกี่ยวกับ Business Intelligence ในหน่วยงานแห่งหนึ่ง แม้จะเป็นเหตุการณ์ที่ผ่านมานานแล้ว แต่บทเรียนย้งใช้ได้ดีอยู่จนถึงตอนนี้ การใช้ BI มีมาหลายสิบปีแล้ว แต่ก่อนหน้าที่จะมีโปรแกรม MS-SQL การมีหรือการใช้ BI เป็นสิ่งที่ยุ่งยากและมีราคาแพง คงมีแต่หน่วยงานขนาดใหญ่เท่านั้นที่จะสามารถจัดหา BI มาใช้ได้ แต่การมาถึงของ SQL2008 ทำให้ทุกอย่างเปลี่ยนแปลงไป ปัจจุบันนี้หน่วยงานเล็กๆ ก็สามารถมี BI ใช้ได้ ใน SQL2008 มีส่วนที่เกี่ยวข้องกับ BI โดยตรงสามส่วนคือ Integration services (SSIS) ทำหน้าที่รวบรวมข้อมูลจากหลายๆ แหล่งเพื่อนำมาสังเคราะห์ให้อยู่ในรูปแบบที่นำไปใช้ได้อย่างมีประสิทธิภาพ , Analysis services (SSAS) ใช้สร้าโมเดลสำหรับการวิเคราะห์ข้อมูลเช่น Cube และ Subspace และ Reporting services (SSRS) ใช้สร้างรายงานแบบ OLAP ซึ่งเป็นส่วนที่ท่านจะได้เรียนโดยละเอียดในบทนี้และบทต่อไป หากท่านติดตั้งโปรแกรม Microsoft Visual Studio 2008 (MSVS2008) ไว้และติดตั้งโปรแกรม SQL2008 พร้อมส่วนเสริม BI ท่านจะสามารถใช้ MSVS2008 พัฒนางาน BI ได้ทั้งครบถ้วนทั่งสามแบบคือ SSIS, SSAS และ SSRS
สถาปัตยกรรม "เอเลฟอง" (ชื่อสมมุติ) คือหน่วยงานหนึ่งที่ผู้เขียนทำหน้าที่ให้คำปรึกษา เอเลฟองเป็นบริษัทสัญชาติฝรั่งเศสที่มีสาขาหลายร้อยแห่งอยู่ในหลายประเทศทั่วโลก ในส่วนไอทีหน่วยงานนี้ใช้เทคโนโลยีของไมโครซอฟต์เป็นหลัก ส่วนฐานข้อมูลแบ่งออกเป็นสองส่วน ฐานข้อมูลที่ประมวลผลธุรกรรมการเงินใช้ออราเคิล และฐานข้อมูลที่ประมวลผลธุรกรรมในฝ่ายการผลิตใช้ไมโครซอฟต์ SQL เวอร์ชัน 2000 สาเหตุที่เอเลฟองใช้ดาต้าเบสเซอฟเวอร์เวอร์ชันเก่าขนาดนี้เพราะแอพลิเกชันที่ใช้อยู่ (ชื่อ Fx.Net) เป็นแอพลิเกชันที่พัฒนาขึ้นนานแล้ว โดยมีสำนักงานใหญ่ของเอเลฟองภาคพื้นเอเซียแปซิฟิก ว่าจ้างให้บริษัทใน "แบงกาลอร์" ทำหน้าที่ผลิตและดูแล Fx.Net เป็นแอพลิเกชันที่ถูกเขียนด้วยภาษา C# บนด็อตเน็ตเวอร์ชัน 1.1 และไมโครซอฟต์ SQL เวอร์ชัน 2000 เอเลฟองผลิตสินค้าแต่ละเดือนหลายแสนชิ้น ข้อมูลปริมาณมหาศาลที่เกิดจากขั้นตอนต่างๆ ในการผลิตสินค้าถูกเก็บรวบรวมไว้ในฐานข้อมูลอย่างเป็นระบบ นี่คือโกดังสะสมข้อมูลหรือ "ดาต้าแวร์เฮาส์" (Data warehouse) ที่นอกจากจะจำเป็นต้องใช้ในกระบวนการผลิตแล้ว ผู้บริหารระดับต่างๆ ยังหวังว่าจะสามารถนำข้อมูลเหล่านี้มาเรียบเรียงให้อยู่ในรูปแบบที่ทำให้เกิด "ความเฉียบแหลมทางธุรกิจ" (Business Intelligence หรือนิยมเรียกย่อว่า BI)
นิทานแห่งสองนาคร แน่นอนว่าการนำข้อมูลที่กระจัดกระจายอยู่ในตารางต่างๆ นับร้อย มาเรียงร้อยให้อยู่ในรูปแบบที่ผู้บริหารสามารถอ่านเข้าใจได้จำเป็นต้องอาศัยการทำ "รายงาน" ในรูปแบบต่างๆ ปัญหาหลักคือ Fx.Net ทำรายงานได้ไม่ดีนักเนื่องจากสาเหตุสองประการ ประการแรกคือการเกิดเออเรอร์แบบหมดเวลา (Query time-out error) ปัญหานี้เกิดจากโปรแกรม Fx.Net เรียกใช้เฟรมเวิร์คของเอเลฟองและสตอร์โปรซีเจอร์ (Stored procedure) ที่ถูกกำหนดไว้แล้วโดยศูนย์กำหนดทิศทางด้านไอที (ทีเซ็นเตอร์ T-Center) ของเอเลฟองที่สำนักงานใหญ่ในฝรั่งเศส บ่อยครั้งเมื่อรายงานต้องทำคิวรีข้อมูลปริมาณมากๆ จะเกิด time-out แต่ผู้พัฒนาซอฟต์แวร์ที่แบงกาลอร์ไม่สามารถปรับเปลี่ยนโครงสร้างหลัก เพื่อแก้ปัญหานี้ได้ตามอำเภอใจ ประการที่สองรูปแบบของรายงานไม่สวย คือเป็นเพียงเท็กซ์ ไม่สามารถใส่ตารางหรือแผนภูมิได้ ปัญหานี้เกิดจากโปรแกรม Fx.Net (รวมถึงเฟรมเวิร์คของเอเลฟอง) เป็นโปรแกรมที่ออกแบบมาให้ทำงานในระดับการผลิต (shop floor) จึงขาดคุณสมบัติที่จำเป็นต้องใช้เพื่อทำรายงานระดับบริหาร
ทางเลือกที่สาม ทางเลือกในการแก้ปัญหานี้มีสามทาง แต่ละวิธีต่างก็มีข้อดีข้อเสียในตัวของมันเองทั้งสิ้นดังนี้
ทางเลือกต่างๆ ที่ว่ามาสามอย่างข้างต้นถูกนำมาพิจารณาอย่างรอบคอบ และพบว่ามันไม่สามารถแก้ปัญหาหลักอย่าง time out ได้ ทางออกคือการจัดตั้งเครื่องแม่ข่ายอีกเครื่องหนึ่งเพื่อใช้ทำเป็นฐานข้อมูล OLAP การทำเช่นนี้จะปลดเปลื้องภาระของแม่ข่ายธุรกรรมหรือ OLTP จากความหน่วงของคิวรีรายงานได้ทั้งหมด รายงานแบบ OLAP คือการวิเคราะห์ข้อมูลแบบออนไลน์ (Online Analytical Processing) OLAP ไม่ใช่แค่รายงานตายตัวแบบในกระดาษ แต่เป็นรายงานที่มีพลวัตและมีหลายมิติ ช่วยให้ผู้ใช้ได้รับข้อมูลที่ทันสมัยเพราะเปลี่ยนแปลงไปตามความเป็นจริง (real time) ในลักษณะต่างๆ เช่นตารางแสดงข้อมูลไขว้ (Pivot Table) หรือตารางแบบเมตริกซ์ (Matrix) ตารางรายงานที่ข้อมูลแปรผันได้ตามการป้อนเงื่อนไข (Report Parameter) รายงานที่เจาะลึกได้ (Drill Down) หรือรายงานที่โยงไปยังรายงานย่อยที่มีรายละเอียดอ้างอิงได้ (Drill through) เป็นรายงานบนหน้าจอที่มีปฏิสัมพันธ์กับผู้ใช้ หรือจะพิมพ์ลงกระดาษก็ได้ รายงานแบบ OLAP มักเป็นการวิเคราะห์ข้อมูลกับคลังข้อมูลหรือข้อมูลสะสม (data mining) เพื่อการทำนายแนวโน้ม เพื่อใช้เป็นเครื่องมือช่วยการบริหารและพัฒนากระบวนการต่างๆ ของธุรกิจให้มีประสิทธิภาพมากขึ้น อย่าสับสนระหว่าง OLAP กับ OLTP เพราะอย่างหลังคือการทำธุรกรรมออนไลน์ (Online Transaction Processing) ที่เป็นคนละเรื่องกัน ฐานข้อมูลของงาน OLTP จะมีขนาดเล็กกว่าและมีพลวัตสูง ส่วนฐานข้อมูลของ OLAP จะมีขนาดใหญ่กว่ามากแต่มีพลวัตต่ำหรือถึงกับไม่มีเลย การใช้เซิฟเวอร์อีกตัวทำเป็น OLAP มีข้อเสียอยู่ที่รายงานจะไม่ใช่ข้อมูลอัพเดตตามเวลาจริง แต่จะมีช่วงล้าสมัยเล็กน้อย ขึ้นอยู่กับว่าเราตั้งให้แม่ข่ายฐานข้อมูล OLTP คัดลอกข้อมูลในฐานข้อมูลมายังแม่ข่าย OLAP ถี่เพียงใด การกำหนดความถี่ต้องพิจารณาอย่างรอบคอบ เพราะถ้าทำถี่เกินไป (คือทุกชั่วโมง) อาจมีผลให้โหลดแม่ข่ายฐานข้อมูล OLTP มากเกินไป แต่ถ้าถี่น้อยไป (ทุกสัปดาห์) รายงานอาจล้าสมัยแล้ว
ต่อไปนี้เป็นรายการแสดงข้อดีต่างๆ ของการทำรายงานด้วย SSRS
Crystal Report (CR) เป็นโปรแกรมประยุกต์แบบ BI จากบริษัท Business Object ซึ่งมีฐานะเป็นบริษัทลูกของ SAP โปรแกรม CR มีมานานแล้วแต่ไม่เด่นดัง จนกระทั่งไมโครซอฟต์นำมาผนวกไว้กับเครื่องมือพัฒนาโปรแกรมวิสชวลเบสิก ทำให้ CR เป็นที่รู้จักและกลายเป็นมาตรฐาน โดดเด่นกว่าโปรแกรมสร้างรายงานอื่นๆ ที่มีอยู่เป็นจำนวนมาก ในยุค MS-SQL 7 และ MS-SQL 2000 ผู้ที่ต้องการสร้างรายงานซับซ้อนสวยงามจำเป็นต้องนำ CR มาใช้ร่วมกับ MS-SQL เพราะ SSRS ในสมัยนั้นมีความสามารถที่จำกัด แต่พอถึงยุค SQL2005 และ SQL2008 สถานการณ์ก็เปลี่ยนไป เพราะ SSRS ถูกพัฒนาอย่างต่อเนื่องให้มีประสิทธิภาพสูงขึ้น แม้ SSRS จะมีความสามารถด้อยกว่า CR ในบางด้าน แต่ผู้ใช้ CR ร่วมกับ SQL2008 ก็เริ่มมีจำนวนลดลง เพราะในหลายๆ กรณี SSRS มีความสามารถเพียงพอที่จะตอบสนองความต้องการได้ และที่สำคัญคือผู้ใช้ไม่ต้องจัดซื้อ SSRS เพิ่มเติมเพราะมันถูกผนวกอยู่ใน SQL2008 ผู้ใช้จึงสามารถติดตั้งใช้งาน SSRS ได้ทันทีโดยไม่มีค่าใช้จ่ายเพิ่มเติม
|