มารู้จักกับ OLAP หรือ ฐานข้อมูลการประมวลผลออนไลน์เชิงวิเคราะห์

ฐานข้อมูลการประมวลผลออนไลน์เชิงวิเคราะห์ หรือ OLAP จะช่วยเพิ่มความเร็วในการค้นหาข้อมูลได้ในหลากหลายมิติที่พบได้ทั่วไปในแอปพลิเคชัน และการจัดทำรายงานต่าง ๆ ( OLAP คือ อะไร )

ฐานข้อมูลการประมวลผลออนไลน์เชิงวิเคราะห์ (Online Analytical Processing – OLAP) ถ้าให้อธิบายสั้น ๆ มันคือเทคโนโลยีตัวหนึ่งที่จะช่วยให้การวิเคราะห์ข้อมูลมหาศาลทำได้ดีขึ้น ถูกสร้างขึ้นมาเพื่อการสืบค้น และการค้นหาข้อมูลเชิงวิเคราะห์ ซึ่งแตกต่างจากการประมวลผลบนฐานข้อมูลการประมวลผลธุรกรรมออนไลน์ (OLTP) ที่มักจะใช้เวลานาน ในการส่งกลับผลลัพธ์ เพราะมีสาเหตุหลายประการดังต่อไปนี้

ประการแรก ฐานข้อมูล OLTP มักจะอยู่ในรูปนอร์มัลฟอร์มที่ 3 (ตามตำราการสร้างฐานข้อมูล เราจะถูกสอนกันว่าต้องจัดเก็บข้อมูลแยกเป็นหลาย ๆ ตาราง เป็นนอร์มัลฟอร์ม ที่มีระดับหนึ่ง สอง สาม สี่… แต่ที่นิยมสุด คือ ระดับสาม เพื่อให้การเก็บข้อมูลไม่ซ้ำซ้อน และเข้าใจง่าย) ดังนั้นเมื่อเราค้นหาข้อมูลเพื่อการวิเคราะห์ เราต้องทำการ JOIN ที่ซับซ้อนกันในหลายตาราง ซึ่งอาจจะต้องเสียเวลาในการคํานวณเป็นอย่างมาก

ประการที่สอง ถ้าจะเพิ่มประสิทธิภาพความเร็วในการเขียนข้อมูลของฐานข้อมูล OLTP เราจะต้องมี Index น้อย ซึ่งขัดกับการสืบค้นข้อมูลเพื่อวิเคราะห์ที่ต้องมี Index ปริมาณมากถึงจะมีคุณภาพ

ประการที่สาม ฐานข้อมูล OLTP มักจะถูกใช้ในกลุ่มธุรกิจบริการ ซึ่งมักจะมีธุรกรรมย่อย ๆ ปริมาณมาก และเกิดขึ้นอย่างต่อเนื่อง ซึ่งอาจทําให้เกิดความขัดแย้ง เพราะส่วนใหญ่ เมื่อเราดำเนินการกับธุรกรรมย่อย ๆ จำนวนมากก็จะใช้ Index มากตาม และเมื่อเรากำลังค้นหาข้อมูลเชิงวิเคราะห์ที่ใช้เวลานาน เลยทำให้ทั้งการทำธุรกรรม และการค้นหาข้อมูลทำงานช้าลงไปด้วย

ฐานข้อมูล OLAP จะแก้ปัญหาที่ได้กล่าวไปข้างต้น โดยแยกฐานข้อมูลออกมา และปรับให้เหมาะสมกับการค้นหา หรือสืบค้นเชิงวิเคราะห์ นอกจากนี้ยังมีหลายวิธีในการเพิ่มประสิทธิภาพฐานข้อมูลสําหรับการวิเคราะห์ที่เราจะขอพูดถึงต่อไปนี้

มารู้จักกับ OLAP

ฐานข้อมูล OLAP ได้ถูกออกแบบมา เพื่อเพิ่มมิติในการวิเคราะห์ข้อมูล ให้สามารถวิเคราะห์ข้อมูลปริมาณมากจากคลังข้อมูลหรือ Data Mart ได้รวดเร็วขึ้น โดยมีหลักการคือ แยกข้อมูลเชิงสัมพันธ์ออกเป็นรูปแบบหลายมิติที่เรียกว่า OLAP Cube   เริ่มต้นจากการโหลดข้อมูลที่ต้องการวิเคราะห์ลงในหน่วยความจํา จัดเก็บข้อมูลตามลําดับคอลัมน์ และใช้ CPU หลายตัวควบคู่กันในการวิเคราะห์ (เช่น การประมวลผลแบบขนานหรือที่เรียกว่า MPP – Massively Parallel Processing)

ETL และ ELT

การใช้ OLAP มีอุปสรรคอย่างหนึ่งก็คือ การสร้างกระบวนการ หรือ Process ในการนําข้อมูลออกจากฐานข้อมูลธุรกรรม และเข้าสู่ฐานข้อมูลการวิเคราะห์ ซึ่งเราคุ้นเคยดีว่าระบบจะจัดข้อมูลเป็นชุดข้อมูลทุกคืน เพื่อแยก แปลง และโหลด (ETL) ข้อมูล แต่เมื่อฮาร์ดแวร์ และซอฟต์แวร์ได้รับการปรับปรุงให้ดีขึ้น เราจึงเริ่มใช้การสตรีมข้อมูลอย่างต่อเนื่องมาแทนที่ชุดการทำงานที่เป็น ETL Batch จนทำให้ในบางครั้งขั้นตอนการแปลงข้อมูล ถูกเลื่อนสลับไปทำหลังจากโหลดแทนด้วยซ้ำ (เลยกลายเป็น ELT แทน)  และด้วยเหตุผลนี้เอง ELT จึงถูกนำมาใช้มากขึ้น เพราะตอบโจทย์ในการทำวิศวกรรมสําหรับ Machine Learning ที่ทํางานกับฐานข้อมูลการวิเคราะห์ตลอดเวลา

การเก็บข้อมูลแบบเรียงเป็นคอลัมน์

ฐานข้อมูลธุรกรรมจะเก็บข้อมูลในตารางเป็นแถว ๆ ไว้ด้วยกัน ซึ่งมันจะทำให้คุณสามารถดูข้อมูลได้ง่าย แต่ถ้าเราใช้ฐานข้อมูล OLAP การจัดเก็บข้อมูลจะถูกเรียงตามคอลัมน์ไว้ด้วย เป็นการรวมข้อมูลหลาย ๆ ค่าเข้าด้วยกันที่จะทำให้คุณสามารถดูข้อมูลได้ง่ายขึ้นกว่าเดิมอีก (ยกตัวอย่างแต่ละแถว เราจะเก็บข้อมูลรายชื่อลูกค้า อายุ หรือยอดที่ซื้อ แต่ส่วนใหญ่เวลาเราวิเคราะห์ข้อมูล เรามักจะหาเป็นรายคอลัมน์มากกว่าเป็นแถว เช่น หาค่าเฉลี่ยอายุลูกค้า ยอดขายแต่ละจังหวัด ซึ่งหากฐานข้อมูลเก็บเป็นคอลัมน์ มันจะคำนวณได้เร็วกว่าเก็บแบบเป็นแถวแน่ ๆ ) นอกจากนี้การเก็บคอลัมน์ที่ใช้งานไว้ในหน่วยความจำ ทำให้การทำงานของฐานข้อมูล OLAP รวดเร็วขึ้น ไม่เพียงเท่านี้ การรวมคอลัมน์ของข้อมูลที่คล้ายกันจะทำให้การจัดเก็บแบบคอลัมน์ใช้ความจำน้อยลงไปอีก

OLAP Cube คืออะไร

OLAP Cubes หรือ Hypercubes คือ วิธีการจัดระเบียบข้อมูลด้วยมิติลําดับชั้น เพื่อให้สามารถดําเนินการวิเคราะห์ได้อย่างรวดเร็วโดยไม่ต้องมี SQL JOINs และ UNIONS มากมายนัก OLAP cubes จะมาปฏิวัติระบบ Business Intelligence (BI) ไปเลย โดยก่อนหน้านี้นักวิเคราะห์ตัวเลขจะต้องมาทำการสรุปสิ่งที่ต้องการสืบค้นในทุก ๆ วัน และจะดำเนินการหาผลลัพธ์ของการวิเคราะห์ในวันถัดไป แต่หลังจากมีระบบฐานข้อมูล OLAP Cubes วิศวกรข้อมูลสามารรถรันงานเพื่อสร้าง Cube ได้ในตอนกลางคืนและนักวิเคราะห์จะสามารถหาคำตอบ บอกสิ่งที่ต้องการสืบค้นแบบโต้ตอบReal-time กับ Cubes ในตอนเช้าได้เลย

OLAP Cubes รองรับการจัดการข้อมูลแบบ “สไลซ์และทอยลูกเต๋า”  ทั้ง 5 ชนิด ซึ่งการสไลซ์หมายถึงหั่นแยก Cube ที่มีมิติไม่มากด้วยเซ็ตมิติหนึ่งค่าเป็นค่าเดียว (เลยคล้าย ๆ กับการหั่นบาง ๆ ) เช่น MONTH=6 ส่วนลูกเต๋าหมายถึงการดึง  Sub-cube ที่มีมิติข้อมูลหลายตัว ตั้งค่าเป็นค่าเดียว เช่น STORE=95 AND MONTH=6 และมาดูรายละเอียดให้ลึกลงไป การดูรายละเอียดแนวลึกช่วยให้นักวิเคราะห์สามารถเปลี่ยนมุมจากการดูแค่ผลสรุป  ไปเป็นการดูค่าโดยละเอียดได้ และเราจะมีค่าที่รวบรวมหรือสรุปผลข้อมูลตามแต่ละคอลัมน์ แต่ละมิติ ส่วนการทำ Pivot คือการหมุน cube เพื่อดูมุมมองอื่นของชุดข้อมูล ซึ่งการหมุน OLAP Cube มีประสิทธิภาพมากกว่าการทำบน Excel อีกด้วย โดยเราจะใช้ภาษา MDX ซึ่งเป็นชุดคำสั่งรูปแบบ SQL ในการค้นหา OLAP Cubes

ในช่วงไม่กี่ปีที่ผ่านมา OLAP Cubes ส่วนใหญ่ถูกแทนที่โดยคลังข้อมูลที่ใช้ที่เก็บข้อมูลแบบคอลัมน์ที่บีบอัด (ควรอยู่ในหน่วยความจํา) และ MPP (Massively Parallel Processing คือ ฐานข้อมูลชนิดหนึ่งที่ออกแบบมาเพื่อทำหน้าที่เป็น OLAP Database)

MOLAP คืออะไร?

MOLAP คือ การประมวลผลการวิเคราะห์ทางออนไลน์หลายมิติ (MOLAP) โดยเป็นต้นแบบของ OLAP ที่ใช้ OLAP Cubes แบบหลายมิติ ซึ่งการใช้การประมวลผลเบื้องต้นของ OLAP Cubes จะใช้เวลานานมาก เมื่อเทียบกับ MOLAP ที่สามารถวิเคราะห์ข้อมูลได้อย่างรวดเร็ว โดย MOLAP จะมีประสิทธิภาพมากที่สุด เมื่อเราใช้ Data Field เป็นตัวเลขที่สามารถรวมกันได้

ROLAP คืออะไร?

การทำงานของ Relational OLAP หรือ OLAP เชิงสัมพันธ์ จะเป็นทํางานโดยตรงกับฐานข้อมูลเชิงสัมพันธ์ที่ไม่จําเป็นต้องสร้าง OLAP Cubes โดยปกติแล้วการวิเคราะห์ข้อมูลของ ROLAP และ OLTP จะถูกแยกออกจากกัน แล้วกระบวนการ ETL หรือ ELT จะทำการอัปเดตคลังข้อมูลหรือ Data Mart จากฐานข้อมูล OLTP เป็นระยะ ๆ และนำมาสร้างตารางรวม เท่านั้นยังไม่พอถ้าเรานำกระบวนการ ETL หรือ ELT มาทํางานร่วมกับข้อมูลที่เพิ่มขึ้นแทนการสร้างคลังข้อมูลใหม่ตั้งแต่เริ่มต้น ก็จะทำให้ประสิทธิภาพในการทำงานเพิ่มขึ้นไปอีก

การที่นักวิเคราะห์ค้นหาข้อมูลในฐานข้อมูล ROLAP ด้วย SQL แทนการใช้ MDX จะทำให้นักวิเคราะห์ทำงานได้ง่ายขึ้น เพราะมีกลุ่มคำสั่งที่ใช้ในการวิเคราะห์หลากหลายกว่ากลุ่มคำสั่งเดิม ๆ เช่น กลุ่มคําสั่ง GROUP BY จะช่วยรวมข้อมูลให้ตามคอลัมน์ที่ระบุ และ ROLLUP ก็จะช่วยขยายผลของ GROUP BY ไปอีกหลายคอลัมน์ โดยคํานวณผลรวมย่อยและผลรวมทั้งหมดเป็นหลัก ส่วนตัวดําเนินการ CUBE จะคํานวณผลรวมย่อยและผลรวมทั้งหมดสําหรับการเรียงสับเปลี่ยนทั้งหมดของคอลัมน์ที่ระบุ

HOLAP คืออะไร?

HOLAP คือการประมวลผลเชิงวิเคราะห์ออนไลน์แบบไฮบริดที่ผสมผสานระหว่าง ROLAP และ MOLAP เข้าด้วยกัน ซึ่งจะช่วยในการจัดเก็บข้อมูล เพราะ HOLAP สมารถแบ่งการจัดเก็บข้อมูลได้ โดยข้อมูลส่วนหนึ่งจะถูกจัดเก็บใน MOLAP และอีกส่วนหนึ่งจะถูกจัดเก็บใช้ ROLAP โดยใช้ Cache ในการรวบรวมข้อมูลจากทั้ง Cube และฐานข้อมูลเชิงสัมพันธ์ ซึ่งบริษัทชั้นนำอย่าง Microsoft Analysis Services และ SAP BI Accelerator ก็ใช้ HOLAP ในการประมวผลข้อมูลเช่นกัน

จากที่ได้กล่าวมาข้างต้น จะเห็นได้ว่าฐานข้อมูลการวิเคราะห์แบบเฉพาะทางสามารถทำการสืบค้นข้อมูล เพื่อทำ BI ได้อย่างรวดเร็ว แต่การที่ OLAP Cube เป็นสิ่งที่ได้รับความนิยมมามากกว่าหลายสิบปี จึงเป็นเรื่องปกติมากที่บริษัทต่าง ๆ ในปัจจุบันจะยังคงใช้ฐานข้อมูลเชิงสัมพันธ์ด้วยการเก็บข้อมูลแบบเรียงเป็นคอลัมน์ และการประมวลผลแบบขนานขนาดใหญ่ หรือ MPP

บทความโดย Martin Heller
เนื้อหาจากบทความของ InfoWorld
แปลและเรียบเรียงโดย วิน เวธิต
ตรวจทานและปรับปรุงโดย เมธิยาภาวิ์ ศรีมนตรินนท์

Recommended Posts