MPP Greenplum Datawarehouse สำหรับ Big Data

facebooktwittergoogle_plusredditpinterestlinkedinmail

จริงๆ แล้วเคยเขียนเรื่องนี้ไปครั้งหนึ่งแล้วแต่เกิดปัญหาทางเทคนิค (ย้าย Blog ลง Docker Container แทน) คอนเทนต์ได้หายไปบางส่วน เลยต้องเขียนใหม่

เข้าเรื่องกันต่อ จริงๆ แล้วมีคนถามมาว่า จำเป็นต้องมี Data Warehouse อยู่หรือไม่ก็มี  Hadoop Cluster กันอยู่แล้วทำไมต้องมาทำ DW มาเก็บอีกซ้ำซ้อน Duplicate?

คำตอบ: แน่นอนว่าปัญหาเรื่องของ Data มันไม่ได้มีมิติเดียว Hadoop,Datalake จบข่าว ทุกอย่างมี Pros และ Cons (ของดีข้อเสีย)
ยกตัวอย่างเช่น Hadoop จริงๆแล้วก็ไม่ Friendly การประมวลผลและการเก็บข้อมูล แบบ Real-time ซักเท่าไหร่ ยิ่งถ้าเป็นการอับเดตข้อมูล ก็ยิ่งเป็นไปไม่ได้เลย  เพราะ Software Stack ที่เป็น Hadoop ส่วนใหญ่ เป็น “Append-Only Style” (คล้ายๆกังนัม Style) เนื่องจากเป็น Distributed Storage และ Distributed Computing ที่เพิ่มมาคือ Performance, Availability และเรื่อง Capacity แต่สิ่งที่ได้มาต้องแลกกับเรื่อง Consistency ของข้อมูล ตามทฤษฎีของ CAP (Cap theorem) คือ มี
C- Consistency – ความถูกต้องของข้อมูล
A- Availability – ความมีอยู่ของข้อมูล
*P – Partition Tolerance  – ความคงทนของข้อมูลระหว่างเครือข่าย

**ยังไม่มี DB, Storage Technology ใดๆทำได้ทั้ง 3  อย่างพร้อมกัน มากสุดแค่ 2 ใน 3 เนื่องจากพอเป็น​ Distributed Architect ที่เสียไปข้อมูล ก็จะถูกแบ่งแยก(Partitioning )และ Copy  ผ่านเครื่อข่ายเพื่อให้มี Availability เพื่อเพิ่มการคงอยู่ของข้อมูลให้มากขึ้นจะได้ทำ Map Reduce Processing , Parallel Processing ได้ แต่ต้องจ่ายค่า Consistency(ความถูกต้อง) ไปแทน ความหมายของความถูกต้องในที่นี้คืออ่าน Data จาก Cluster เพื่อ Read / Write ตอนไหน Node ไหน ก็ตาม ต้องเห็นข้อมูลเดียวกันเสมอ มันเป็นไปไม่ได้กับเทคโนโลยีที่มีอยู่ตอนนี้ ดังนั้นจึงมีคำว่า Eventual Consistency แปลในแบบง่ายคือ “รอแว๊บดิเดี๋ยวข้อมูลก็ถูกเอง”
ยกตัวอย่าง Cassandra Write ข้อมูลใน Node ของ Cluster Ring Topology ถ้าไปอ่านอีก Node จะยังไม่ได้ข้อมูลที่อับเดตทันที ต้องรอแว๊บหนึ่งให้ข้อมูล Sync ใน Cluster ให้หมดก่อน Cassandra เลยออก Level ของ Consistency มาให้เพื่อปิดจุดอ่อนของการอ่าน อ่านการเขียนข้อมูล ถ้าอยากได้ความถูกต้อง 100% ตอนนี้ที่อ่าน/เขียนนะก็ให้ใช้ Consistency Level ในการ read/wite เป็น All แต่ก็ต้องแลกกับ Performance  แต่ถ้าอยากอ่านเร็วยังไม่ Serious ที่จะเอาข้อมูลที่ถูกอับเดตแล้วเป็นแบบ real-time ให้ใช้ Consistency Level แบบ Quarum, Local Quarum หรือ ONE, TWO  และอื่นๆ (ข้อมูลเพิ่มเติม )

ง่ายๆคือเอาให้เหมาะกับงานหรือปัญหา มันมี Solutions เรื่อง Data ใดๆ อะไรตอบโจทย์ไปซะทั้งหมด (ฝั่ง Hadoop ก็มีจะมี  Datawarehouse ชื่อว่า Apache Tajo ที่ขี่อยู่บน Technology Hadoop)

 

วันนี้เลยมาแนะนำ GreenPlumDB.  Datawarehouse ที่น่าใช้อีกตัวหนึ่งซึ่งออกเป็น Opensource Licences หลังจากเป็น Commercial Licence โดยบริษัท Pivotal มาซักพัก Technology ก็น่าจะ Mature ระดับนึงเลยที่เดียว  สนับสนุนหลักการ ACID (Atomicity, Consistency, Isolation and Durability) ของ Relational DB แต่ทำงานแบบ MPP architecture

จริงๆแล้ว Core หลักคือ Postgresql DB  แต่มาทำให้มันเป็น Parallel Processing ซะ ดังนั้นเครื่องไม้เครื่องมือต่างๆ ก็จะคุ้นเคยกันดีถ้าใครเคยใช้ Postgresql  สิ่งที่เพิ่มเติมคือคุณต้องมี H/W ที่สุดติ่งกระดิ่งแมวให้สมกับคำว่า Massive — Storage CPU Network แบบจัดเต็มเพื่อจะ Run GreenplumDB ได้อย่างมีประสิทธิภาพ หรือไม่อยากซื้อ H/W ก็ไม่ใช้ Cloud แทน หรือไม่อยากวุ่นวายมากๆ ก็ไป Fully Managed Service ใกล้เคียงที่สุดก็น่าจะเป็น AWS Redshift

จะใช้อะไรกันดี ระหว่าง MPP กับ Hadoop  แน่นอนว่าคำถามนี้ก็ตอบไม่ง่าย ตอนนี้ Big Data ต่างๆก็มีแนวโน้ม Unstructure / Semi-Structure  มาทางนี้เยอะเหลือกัน แต่ระบบจริงๆแล้วที่ Support เรื่อง Business Transaction  ส่วนใหญ่ก็อยู่ในรูป Structure (RDMS) ความเห็นส่วนตัวไม่ซ้ายไม่ขวาก็ใช้ทั้งคู่ละครับถ้ามันจะแก้ปัญหาของ Data ของคุณได้

สนใจว่ามันทำอะไรได้บ้าง  ตาม Slide ด้านล่างไปเลย

*,** เกร็ดเล็กน้อย การ Transfer ข้อมูลผ่านเครือข่าย ต้องผ่านตัวนำหรือ Medium (ไม่ว่าจะ Wire, Wireless) เร็วที่สุดที่เราส่งข้อมูลได้คือความเร็วแสง ไม่มีการส่งข้อมูล (Infomation Travel ใดๆ ทำได้เกินความเร็วแสง) ไม่งั้นไอสไตน์ ตายตาไม่หลับไปกับทฤษฎี General Relativity แต่ก็มีนักวิทยาศาสตร์จำนวนหนึ่งศึกษา เพื่อทำลายข้อจำกัดนี้  ใครสนใจลอง Search คำว่า Faster Than Light (FTL) หรือ Superluminal  Communication

สิ่งน่าสนใจ ในความเป็นไปไม่ได้ที่ทำลายกฎของ ไอสไตน์ ยังมี Quantum Mechanic อยู่ โดยหนึ่งในความเป็นไปได้เราจะใช้ Quantum Entanglement เพื่อส่งข้อมูล แต่มันก็ยังมีปัญหามากมาย ใน Quantum ซึ่งชี้ว่าเราไม่สามารถทำได้
กฏของไอสไตน์จะยังอยู่ตลอดไปพร้อมกับ CAP theorem

แต่ถ้าทำได้เราทำลายถึงสองต่อ เพราะการ Sync ข้อมูลแบบ Instant เสมือนอยู่ที่เดียวกัน ของข้อมูลก็จะทำให้ CAP theorem ไร้ความหมายไปเลย

 

facebooktwittergoogle_plusredditpinterestlinkedinmail
The following two tabs change content below.

Be the first to comment

Leave a Reply

Your email address will not be published.


*