Big Data คืออะไร ทำไมต้อง Big แล้วมันมีประโยชน์ยังไง ?

เชื่อแน่ว่าหลายคนโดยเฉพาะคนที่ต้องทำงานเกี่ยวข้องกับเทคโนโลยี หรือผู้บริหารขององค์กรต่างๆ จะต้องเคยได้ยินคำว่า Big Data (ข้อมูลขนาดใหญ่) กันมาบ้างไม่มากก็น้อย เพราะการทำธุรกิจทั้งในอดีตและปัจจุบันนั้น ข้อมูลถือว่าเป็นสิ่งสำคัญในการบอกถึงสิ่งที่เกิดขึ้น เช่น ยอดขายในปีที่ผ่านมาเป็นอย่างไร แล้วอะไรมีผลกระทบโดยตรงกับยอดขายนั้น ? แต่ในปัจจุบัน (เอาจริงๆ คือตั้งแต่ Google เริ่มครองโลกตามด้วย Facebook, Amazon และอีกมากมาย) แนวทางการเก็บและใช้ข้อมูลนั้นต่างไปจากเดิมตรงที่จากการตั้งคำถามแค่ว่า “เกิดอะไรขึ้น” และ “ทำไมมันถึงเกิดขึ้น” ต่อยอดมาเป็น “แล้วอะไรจะเกิดขึ้นต่อไป” และ “เราจะทำยังไงให้มันเกิดอย่างที่เราต้องการ” เรียกว่าเรามีความสามารถในการมองเห็นอนาคตได้มากกว่าที่เคยเป็นมานั่นเอง

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

หรือตัวอย่างที่คลาสสิคที่สุดตัวอย่างนึงคือที่ร้านค้าปลีก Wal-Mart ซึ่งมักพบว่าผู้ชายช่วงวัย 30-40 ที่มาซื้อของตอนวันศุกร์ ที่มาซื้อผ้าอ้อมเด็ก มักจะซื้อเบียร์ด้ว!? ทำให้ Wal-Mart สามารถวางถังเบียร์ไว้ใกล้กับผ้าอ้อมเด็ก และเพิ่มยอดขายได้ขึ้นอีก 35%

แต่เราต้องมีข้อมูลใหญ่แค่ไหนถึงจะเพียงพอในการทำการวิเคราะห์ให้เห็นสิ่งเหล่านี้ล่ะ ?

ลองมาดูตัวอย่าง Facebook ที่เราใช้ๆ นะครับ วันๆ นึง เรากด like หรือ comment ไปกี่ครั้ง ? และถ้าคำนวณว่าคนที่ใช้ Facebook บนโลกนี้มีกี่คนที่สร้างข้อมูลจากกิจกรรม like และ comment (ยังไม่นับการอัพโหลดภาพกับวีดีโอนะ) ทาง Facebook จะต้องเก็บข้อมูลขนาดไหน ?

ปัจจุบันการเก็บข้อมูลที่เราคุ้นเคยอยู่ในรูปแบบหน้าตาประมาณนี้ใช่ไหมครับ ?

ใช่แล้ว เรามักเก็บข้อมูลในรูปแบบตาราง เพราะมันง่ายต่อการกลับไปดูและค้นนั่นเอง ส่วนใหญ่เรามักเก็บในรูปแบบ Excel ใช่ไหมครับ ? (ถ้าคนที่ใช้ระบบฐานข้อมูลก็อาจบอกว่าไม่ๆ เราเก็บใน SQL) แต่อยากให้ลองจินตนาการว่าถ้าเราต้องเก็บข้อมูลแบบ Facebook คือ ผู้ใช้ Like โพสอะไร ที่เวลาอะไร (และสถานที่ไหน… และอื่นๆ …) เค้าจะยัดเข้าไปเก็บยังไงล่ะ

แบบนี้รึเปล่า ?

สมมติว่าข้อมูลมีแค่นี้ก็ได้ ถามว่าถ้าวันนี้มีคนใช้ Facebook 1 พันล้านคน โดยเฉลี่ยคนนึงสร้างข้อมูล 2 แถว หมายความว่าวันนี้ Facebook ต้องเก็บข้อมูลถึง 2 พันล้านแถว ??!! (ซึ่งในความเป็นจริงแล้วเยอะกว่านี้มาก)

สมมติว่า Facebook ยัดข้อมูลลง Excel คิดว่าไฟล์จะเป็นอย่างไรครับ ?

เฉลย ก็ยัดได้นะ Excel เก็บได้มากสุด 1 ล้านแถว ก็จะมีไฟล์ Excel 2 พันไฟล์ต่อ 1 วัน ถ้ารวมหนึ่งปีก็ไม่มากไม่น้อย แค่ 730,000 ไฟล์ (ย้ำว่าไฟล์ละล้านแถว ขนาดไฟล์ใหญ่มากก)

แล้วถ้าจะเรียกเอาข้อมูลมาวิเคราะห์ดูว่านาย kongwiz เคยโพสอะไรบ้างจะทำไงดี ??
(หรือถ้าคนเคยใช้ SQL ก็จะรู้ว่ามันทรมานทีเดียวในการไปให้ระบบมันค้นออกมา เพราะการทำงานของ SQL จะไล่ไปทีละแถวจนกว่าจะเจอสิ่งที่ต้องการ ทำให้การค้นช้ามาก)

ลองเพิ่มอีกสักตัวอย่าง สมมติว่าผมต้องการวิเคราะห์ใบหน้าของลูกค้าและให้ระบบที่เชื่อมต่อกับกล้องส่งข้อมูลมาให้ผมรู้ในตอนนั้นเลย (Real-Time) ในภาพด้านล่าง ผมทำการวิเคราะห์ใบหน้าท่านผู้นำ ซึ่งระบบที่ผมใช้ก็ฉลาดพอที่จะวิเคราะห์ว่าเขาน่าจะเป็นบุคคลและเป็นทหาร (แถมอารมณ์ดีเสียด้วย..)

และนี่คือข้อมูลที่ระบบจะส่งออกมาครับ (เรียกว่า JSON) ถามว่าผมจะยัดข้อมูลหน้าตาประมาณนี้ลงในตารางได้ไหม ?

เพื่อให้เห็นภาพสว่างไสวยิ่งขึ้น แถมอีกซักตัวอย่าง คราวนี้ผมเขียนคำสั่งไปดูดข้อมูลจาก Twitter ตาม Keyword ที่ผมต้องการ ซึ่งสิ่งที่ผมได้ก็จะมาเป็นไฟล์ๆ แบบนี้ ผมจะเอาไฟล์เหล่านี้เข้าไปประมวลผลเชื่อมโยงกับข้อมูลการตลาดอย่างอื่นต่อยังไงดี เพราะไฟล์เหล่านี้ไส้ในก็จะมาแบบที่อ่านไม่รู้เรื่อง และไม่ได้เป็นตารางแบบที่เราคุ้นเคย

เริ่มเห็นปัญหาแล้วใช่ไหมครับ…

จริงๆ มันมีวิธีในการเก็บข้อมูลเยอะๆ และเรียกมาใช้เร็วๆ ได้ในนาม “NoSQL” (ถ้า SQL คือการเก็บในรูปแบบมีโครงสร้างชัดเจน NoSQL ก็คืออะไรก็ตามที่ไม่ต้องมีโครงสร้างชัดเจนนั่นเอง แต่จะยังไม่ขอลงรายละเอียดในตอนนี้) แต่ทั้งนี้ทั้งนั้นการประมวลผลข้อมูลเยอะๆ นี่ต้องใช้พลังการประมวลมหาศาลเกินกว่าเครื่อง Server หรือคอมพิวเตอร์เทพๆ จะทำได้ด้วยตัวมันเองตามลำพัง การพยายามเอาคอมพิวเตอร์หลายเครื่องมาประมวลผลงานพร้อมๆ กัน และแบ่งข้อมูลไปเก็บในหลายๆ เครื่องจึงเริ่มบังเกิด

ซึ่งเจ้าแรกที่เห็นปัญหานี้และลงมือจัดการก็ไม่ใช่ใครที่ไหน “Google” นั่นเอง เพราะเค้าพยายามเก็บข้อมูลเว็บทั้งหมดบนโลกนี้ซึ่งมีมหาศาล จึงเกิดการค้นคว้าและพัฒนา algorithm ในการจัดการจนได้เป็นงานวิจัยชื่อ MapReduce: Simplified Data Processing on Large Clusters จากนั้นก็มีวิศวกร Yahoo! นาม Doug Cutting ต่อยอดจนได้เป็นระบบที่สามารถเปิดให้ชาวโลกใช้ในนาม “Hadoop” (ตั้งชื่อตามของเล่นรูปช้างของลูกชายตัวเอง)

ซึ่ง Hadoop นี้เป็น Open Source ภายใต้เงื่อนไขของ Apache เราเลยคุ้นเคยในชื่อว่า “Apache Hadoop” ซึ่งหมายความว่าเราสามารถนำมาใช้ได้ “ฟรี” ตรงจุดนี้ทำให้คนที่คุ้นเคยกับซอฟท์แวร์เสียเงินแบบเคยๆ เกิดคำถามว่าแล้วฟรีนี่มันจะดีเหรอ ? คำตอบก็ย้อนกลับไปว่าแล้ว Linux นี่ฟรีใช่ไหม ? แล้วรู้ไหมว่า Web Server ที่เราๆ ท่านๆ ใช้กันอยู่เนี่ย เกือบทั้งโลก run อยู่บน Linux !!

แต่แน่นอนระบบที่ซับซ้อนขนาดนี้ย่อมใช้ไม่ง่าย และการที่จะนำมามาใช้จึงต้องมีผู้เชี่ยวชาญในการนำเจ้า Hadoop นี้มาประยุกต์ใช้งาน ซึ่งจริงๆ ตอนนี้ก็มีหลายเจ้าที่ให้บริการ (ที่ผม prefer หน่อยจะเป็น Cloudera) และด้วยความที่ Big Data เป็นสิ่งที่ธุรกิจกำลังสนใจอย่างมาก แม้แต่ Microsoft ที่เปิดให้บริการ Cloud ของตัวเองในนาม Azure ก็ยังเปิดให้บริการ Hadoop ในนาม HDInsight

Big Data ไม่ได้แปลว่า Hadoop แต่มันจะเกิด Big Data ไม่ได้ ถ้าปราศจาก Hadoop

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

ปิดท้ายด้วยภาพด้านล่างซึ่งเป็น Joke ของการอยากใช้ “Big Data” แต่ใช้ไม่เป็น ไม่เข้าใจมัน ก็เลยกลายเป็น “Big Problems” แทนครับ

Comments

comments

Leave a Comment

Your email address will not be published. Required fields are marked *