เลือกฐานข้อมูลสำหรับ Big Data

imagesความท้าทายอย่างสำคัญในเรื่อง Big Data ก็คือมันมาพร้อมกับเทคโนโลยีและแนวคิดใหม่หลายอย่างที่ แม้แต่ CIO หรือ IT Manager ยังต้องพยายามทำความเข้าใจ เพื่อจะได้เลือกใช้ให้เหมาะสมกับสถานการณ์

บทความนี้จะเน้นไปในเรื่องของการเลือกระบบฐานข้อมูล ข้อควรพิจารณาตลอดจนข้อดีข้อเสียของฐานข้อมูลแต่ละประเภท

ช่วงเวลาแห่งความสับสน

การเปลี่ยนแปลงในเทคโนโลยีเกี่ยวกับข้อมูลอย่างก้าวกระโดดในช่วงหลายปีที่ผ่านมา ส่งผลกระทบหลายอย่าง ปัจจัยที่ส่งผลต่อเทคโนโลยีการเก็บข้อมูลประกอบไปด้วย

  • ขนาดข้อมูลที่เติบโตขึ้นอย่างรวดเร็ว
  • ความเชื่อมโยง หรือ connectedness ข้อมูลเชื่อมโยงกันมากขึ้นเรื่อยๆ เริ่มจาก hyperlink ไปจนถึง social graph
  • ลักษณะข้อมูลแบบ Multi-Structure คือทั้งแบบที่มีโครงสร้างเต็มรูปแบบ บางส่วนหรือผสมกัน
  • สถาปัตยกรรมของแอพลิเคชั่น ที่เคยเป็นแบบหนึ่งแอพลิเคชั่นหนึ่งฐานข้อมูลในยุค mainframe พัฒนามาเป็นแบบหนึ่งฐานข้อมูลหลายแอพลิเคชั่นในช่วง client-server จนมากลายเป็นสถาปัตยกรรมแบบให้บริการย่อยๆ แยกส่วนกัน และแต่ละบริการมีส่วนข้อมูลของตัวเอง (SOA)

แนวโน้มทั้งสี่ข้อ ส่งผลให้เกิดการพัฒนาฐานข้อมูลรูปแบบใหม่ขึ้นมามากมาย บริษัท startup หลายแห่งเติบโตและได้รับความสนใจเป็นอย่างมาก ดึงดูดให้มีผู้เล่นหน้าใหม่เข้ามาในตลาดอยู่เรื่อยๆ แนวคิด เทคนิค และศัพท์ใหม่ๆ ถูกพัฒนาและต่อยอดต่อไป ซึ่งนับเป็นผลดีเพราะเป็นการผลักดันเทคโนโลยีให้ก้าวหน้าขึ้น
แต่ในขณะเดียวกัน ก็ส่งผลเสียให้หลายคนที่อาจเกิดความสับสนขึ้นได้ โดยเฉพาะผู้ที่มีหน้าที่ต้องกำหนดและวางแนวทางการจัดการข้อมูลขององค์กร ความสับสนที่เกิดขึ้น ส่งผลให้เกิดความล่าช้าในการปรับเปลี่ยนแนวทางการทำงาน

สถาปัตยกรรมข้อมูล

หนึ่งในความรับผิดชอบของผู้นำ IT ในองค์กร คือการวางผังสถาปัตยกรรมของระบบ IT ต่างๆ ในองค์กร โดยมีสถาปัตยกรรมข้อมูล หรือ Data Architecture เป็นองค์ประกอบสำคัญหนึ่งในผังรวม

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

  • คุณภาพของบุคลากร
  • ความเข้าใจในธุรกิจ

โซลูชั่นต่างๆ ก็เหมือนกับเครื่องมือ หากเราได้ช่างฝีมือดี เครื่องมือแย่ก็ยังสามารถทำงานได้อยู่ แต่ถึงจะได้เครื่องมือชั้นยอดมา แต่หากใช้โดยช่างผู้ไม่มีทักษะเพียงพอกับเครื่องมือนั้น ผลลัพธ์ก็ออกมาแย่ได้เช่นกัน

ความเข้าใจในโจทย์ทางธุรกิจก็เป็นตัวแปรสำคัญ นั่นคือความสามารถในการแปลงเป้าหมายธุรกิจเป็นข้อกำหนดทางเทคนิค ตัวอย่างเช่น ลักษณะของแหล่งข้อมูลรวมถึงอัตราการเติบโตของข้อมูล รูปแบบการใช้ข้อมูล (ผ่านแอพลิเคชั่น หรือผ่าน API มี concurrent มากน้อยเพียงใด เป็นต้น) ความต้องการด้าน SLA เวลาในการตอบสนอง ระยะเวลาในการกู้ระบบ ต้นทุนการจัดการระบบ การวางแผน capaciy planning เผื่อช่องว่างสำหรับการเติบโตบ้าง แต่ไม่ต้องมากจนเกินไปในช่วงแรก

หากมีบริษัทแห่งหนึ่งประสบความสำเร็จในการใช้ฐานข้อมูล X ในการรับมือกับลูกค้าจำนวน 500 ล้านคน ก็ไม่ได้หมายความว่าบริษัทอื่นจะใช้ฐานข้อมูล X จัดการกับลูกค้า 100 ล้านคนได้ จำเป็นต้องพิจารณาบริบทประกอบด้วย

ปัจจัยที่ควรพิจารณาในการเลือกฐานข้อมูล

มีปัจจัยหลายข้อที่ส่งผลต่อการพิจารณาเลือกระบบฐานข้อมูล ความสำคัญของปัจจัยแต่ละข้ออาจมากน้อยแตกต่างกันไปตามความต้องการของธุรกิจ

Data Characteristics

ปัจจัยแรกคือคุณลักษณะของข้อมูลที่ต้องการจัดเก็บ ลักษณะข้อมูลมักเป็นตัวกำหนดกลุ่มเทคโนโลยีฐานข้อมูลที่จะเลือกใช้ ในขณะที่ฐานข้อมูลเชิงสัมพันธ์ RDBMS เหมาะกับข้อมูลที่มีลักษณะเป็นโครงสร้างสูง เช่นข้อมูลธุรกรรมจากระบบ OLTP แต่ไม่เหมาะกับข้อมูลในลักษณะอื่น เช่นเสียงรูปภาพหรือข้อมูลจาก social media

Functionalities

เทคโนโลยีฐานข้อมูลบางแบบ มีความสามารถอื่นๆ เพิ่มเติมนอกเหนือจากการเก็บและเรียกค้น ผนวกรวมมากับตัวฐานข้อมูลเลย ทำให้สะดวกต่อการพัฒนาระบบงานเพิ่มเติม ในขณะที่ฐานข้อมูลบางแบบหากต้องการความสามารถเพิ่มเติม จำเป็นต้องพัฒนาแยกต่างหาก

Transactional Compliance

การจัดการธุรกรรมหรือ Transaction ในแง่ของระบบฐานข้อมูลหมายถึงกลุ่มของการเปลี่ยนแปลงข้อมูลในระบบ ที่ต้องการให้มีคุณสมบัติ ACID (Atomicity, Consistency, Isolation, Durability)

  • Atomicity – คือการรับประกันว่าการเปลี่ยนแปลงเกิดขึ้น “ทั้งหมด” หรือ “ไม่เกิดขึ้นเลย” อย่างใดอย่างหนึ่งท่านั้นในหนึ่งธุรกรรม ไม่มีการทำธุรกรรมแบบครึ่งๆ กลางๆ
  • Consistency – คือการรับประกันว่า ข้อมูลในฐานข้อมูลจะสอดคล้องกันในตลอดช่วงเวลาการทำธุรกรรม
  • Isolation – หมายถึงการที่ข้อมูลการทำธุรกรรมรายการหนึ่ง จะไม่สามารถอ่านข้อมูลจากอีกธุรกรรมหนึ่งได้หากธุรกรรมนั้นยังไม่สมบูรณ์ ซึ่งหมายถึงหากมีการทำธุรกรรมมากกว่าหนึ่งรายการพร้อมๆ กัน ระบบฐานข้อมูลจะจัดเรียงลำดับให้เหมือนกับว่าทำงานเรียงกัน
  • Durability – คือการรับประกันว่า เมื่อการทำธุรกรรมเสร็จสมบูรณ์แล้ว ผลลัพธ์นั้นจะถูกบันทึกลงในสื่อที่คงทนถาวร เช่น ฮาร์ดดิสก์ และคงอยู่ต่อไป

คุณสมบัติ ACID เหล่านี้มีความสำคัญอย่างยิ่ง ในระบบงานแบบ OLTP (Online Transaction Processing) ตัวอย่างเช่นการทำธุรกรรมโอนเงินระหว่างบัญชี หรือการจองที่นั่ง ที่หนึ่งรายการธุรกรรมมีหลายขั้นตอน และมีจำนวนผู้ทำรายการพร้อมๆ กันเป็นจำนวนมาก

Response Time

ระยะเวลาตอบสนองของระบบ โดยยังแบ่งเป็นสองส่วน คือ ความเร็วในการ “อ่าน” ข้อมูล และความเร็วในการ “เขียน” หรือบันทึกข้อมูล รูปแบบการทำงานหรือระยะเวลาตาม SLA (service level agreement) จะเป็นตัว กำหนดว่าระบบที่ต้องใช้ต้องมี response time อย่างไร

Scalability

ความสามารถในการขยายขีดความสามารถของระบบ เป็นอีกหนึ่งปัจจัยที่สำคัญ ในขณะที่เราต้องการหลีกเลี่ยงการซื้อระบบที่มีขนาดใหญ่ ราคาสูงเกินความจำเป็นตั้งแต่เริ่มต้น แต่เราก็ยังต้องการความสามารถที่จะขยายระบบให้ใหญ่ขึ้น รองรับปริมาณงานที่จะเพิ่มในอนาคตได้ โดยไม่ต้องรื้อสร้างใหม่ทั้งหมด
แนวคิดที่สำคัญอย่างหนึ่งคือ ความแตกต่างระหว่าง Scale Up กับ Scale Out ซึ่งเป็นการขยายเหมือนกันแต่คนละแนวทาง

  • Scale Up คือการเพิ่มความสามารถของระบบโดยขยายหน่วยเก็บข้่อมูลหรือหน่วยประมวลผลให้มีความสามารถสูงขึ้น อาจจะด้วยการเพิ่มจำนวนฮาร์ดดิสก์ เพิ่มหน่วยความจำ เพิ่มจำนวนซีพียู แน่นอนว่า องค์ประกอบอื่นๆ จะต้องรองรับด้วย เช่นฮาร์ดแวร์ต้องมีสล็อตว่าง ระบบปฎิบัติการต้องรองรับ แอพลิเคชั่นต้องเป็นแบบ multi-threads การขยายในลักษณะนี้จะมีต้นทุนค่อนข้างสูง
  • Scale Out เป็นการเพิ่มความสามารถโดยการ เพิ่มจำนวนหน่วยประมวลผลหรือหน่วยเก็บข้อมูลทั้งหน่วย โดยที่แต่ละหน่วย จะมีราคาไม่สูงนัก ทำให้ต้นทุนการขยายระบบโดยรวมแล้วต่ำกว่าและมีลักษณะเป็นเชิงเส้น คาดการณ์ได้ง่ายและคุ้มค่ากว่าแบบ Scale Up อย่างไรก็ตาม การที่จะสามารถ Scale Out ได้ จำเป็นต้องมีซอฟต์แวร์ที่ช่วยในการจัดการกระจายโหลดการทำงานทั้งหลาย ออกไปยังเครื่องโหนดแต่ละเครื่อง จึงจะสามารถใช้งานทุกโหนดได้เต็มที่

1-lusBWUjJPjdcqAGRfA9p3Q

ที่มาของภาพ : https://medium.com/cloud-mobile-the-products-around/database-sql-nosql-7244061b7697

Maintainability

ระบบงานสำคัญที่เป็นหัวใจหลักของการทำงานขององค์กรที่หยุดทำงานไม่ได้เลย หรือพวก mission-critical system จำเป็นต้องมีความสามารถเพิ่มเติมในแง่ของการบำรุงรักษา เช่น การสามารถเปลี่ยนหรือเพิ่มเติมอุปกรณ์ที่เสียบางชิ้นได้โดยไม่จำเป็นหยุดระบบทั้งระบบ หรือการสำรองข้อมูล ความสะดวกในการกู้ระบบหรือกู้ข้อมูบลในสถาณการณ์ที่เกิดภัยพิบัติเป็นต้น

Maturity

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

Cost

ต้นทุนค่าใช้จ่าย คงไม่สามารถปฎิเสธได้ว่า นี่ก็เป็นปัจจัยสำคัญข้อหนึ่งที่ส่งผลเป็นอย่างมากต่อการเลือกใช้ฐานข้อมูล แต่การพิจารณาต้นทุน จำเป็นต้องพิจารณาให้รอบด้าน หรือที่เรียกว่า TCO – Total Cost of Ownership ไม่เพียงเฉพาะแค่ค่าฮาร์ดแวร์หรือค่า license software เท่านั้น แต่ยังรวมถึง ค่าใช้จ่ายอื่นๆ ที่เกี่ยวข้อง เช่นค่า suport ค่าฝึกอบรม เป็นต้น

 

ระบบฐานข้อมูล SQL vs NoSQL

หนึ่งในเทคโนโลยีฐานข้อมูลที่มีการพูดถึงกันมากคือ NoSQL โดยถือเป็นหนึ่งในเทคโนโลยีที่เกี่ยวข้องกับ Big Data เป็นอย่างมาก เนื้อหาในส่วนนี้จะอธิบายถึงความแตกต่างระหว่างฐานข้อมูลทั้งสองกลุ่ม แต่ละกลุ่มต่างก็มีข้อเด่น จุดด้อย ตลอดจนลักษณะงานที่เหมาะสมแตกต่างกันไป

SQL

ความจริงแล้ว SQL หรือ Structured Query Language ไม่ได้เป็นเทคโนโลยีฐานข้อมูลโดยตรง แต่เป็นชื่อเรียกภาษาที่ใช้ในการสืบค้นข้อมูล ระบบฐานข้อมูลพื้นฐานที่ใช้ร่วมกับ SQL คือระบบฐานข้อมูลเชิงสัมพันธ์ หรือ Relational Databases แต่เราเรียกกลุ่มนี้ว่า SQL ในเชิงเปรียบเทียบกับกลุ่ม NoSQL เท่านั้นเอง

Relational Databases

ระบบจัดการฐานข้อมูลเชิงสัมพันธ์ หรือ RDBMS เป็นเทคโนโลยีที่เติบโตพัฒนาเต็มที่ต่อเนื่องมายาวนานหลายทศวรรษแล้ว มีผลิตภัณฑ์สินค้าครอบคลุมทุกช่วงการใช้งาน ข้อมูลในฐานข้อมูลกลุ่มนี้จะเก็บอยู่ในรูปแบบตาราง คือจัดเป็นคอลัมน์และแถว โดยจำเป็นต้องมีโครงสร้างข้อมูลชัดเจน

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

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

Analytical Databases

เทคโนโลยีฐานข้อมูลอีกกลุ่มหนึ่ง ซึ่งถูกพัฒนาต่อยอดมาจาก RDBMS คือฐานข้อมูลสำหรับการวิเคราะห์ หรือ OLAP (Online Analytical Processing) โดยทำการปรับแต่งฐานข้อมูล เพื่อให้เหมาะสมกับการวิเคราะห์ข้อมูล นั่นคือการคำนวณค่าต่างๆ ไว้ล่วงหน้า และการจัดรูปแบบโครงสร้างข้อมูลเป็นแบบหลายมิติ multi-dimensional เพื่อเปิดโอกาสให้ผู้ใช้ สามารถเลือกวิเคราะห์ข้อมูลตามมิติต่างๆ ที่ต้องการได้โดยสะดวก
โครงสร้างข้อมูลของ OLAP อาจเป็นรูปแบบที่ซับซ้อนมากขึ้น แต่ก็ยังจำเป็นต้องมีการกำหนดไว้ล่วงหน้า และฐานข้อมูลในลักษณะนี้กลายมาเป็นหัวใจหลักของระบบ Business Intelligence โดยทำหน้าที่เป็น Data Warehouse หรือ Data Mart เป็นศูนย์กลางของระบบ และมีข้อดีและข้อเสียโดยรวมไม่แตกต่างจาก Relational Databases เท่าใดนัก

NoSQL

กลุ่มต่อมาคือกลุ่มที่เรียกว่า NoSQL (Not Only SQL) คือกลุ่มระบบฐานข้อมูลที่ไม่ได้จัดเก็บข้อมูลในรูปแบบตารางที่มี data model ถูกกำหนดไว้ชัดเจนล่วงหน้าเหมือนอย่างระบบ RDBMS
แรงผลักดันของการออกแบบฐานข้อมูลในกลุ่มนี้ ก็เพื่อให้มีการออกแบบฐานข้อมูลทำได้ง่ายขึ้น การ Scale Out ทำได้ดีกว่าเดิม และมีประสิทธิภาพในการทำงาน “บางประเภท” ดีกว่าระบบฐานข้อมูลแบบ RDBMS

ฐานข้อมูลในกลุ่มนี้ ความจริงแล้วมีหลายประเภท ขึ้นอยู่กับสถาปัตยกรรมและรูปแบบในการจัดเก็บข้อมูล

nosql

ที่มาของภาพ: https://kvaes.wordpress.com/2015/01/21/database-variants-explained-sql-or-nosql-is-that-really-the-question/

แบ่งออกเป็นประเภทหลักๆ ได้ดังนี้

  • Key-Value
  • Column-Family
  • Document
  • Graph

 

Key-Value Databases

ฐานข้อมูลแบบนี้มีรูปแบบโครงสร้างข้อมูลง่ายที่สุด คือเป็นการจับคู่ระหว่างข้อมูลที่เป็นกุญแจ และตัวข้อมูลเอง ไม่มีข้อกำหนดว่าคีย์ต้องเป็นข้อมูลอะไร หรือส่วนที่เป็น value ต้องเป็นข้อมูลรูปแบบไหน เรียกได้ว่าเป็นโครงสร้างข้อมูลแบบ schema-free มีข้อดีคือทำงานได้รวดเร็วมาก สามารถขยายขนาดให้ใหญ่มากๆ ได้ง่าย มีโมเดลที่ทำงานได้ง่ายและกระจายโหลดการทำงานได้สะดวก
ข้อเสียก็คือ รูปแบบโครงสร้างข้อมูลอย่างง่ายนี้ ไม่ได้เหมาะกับข้อมูลทุกประเภท และการควบคุมข้อมูลหรือทำความเข้าใจกับข้อมูล เป็นหน้าที่โดยตรงของแอพลิเคชั่นที่เรียกใช้โดยเฉพาะ
ตัวอย่างของระบบฐานข้อมูลในแบบ key-value ได้แก่ Dynamo ของ Amazon, Redis, Riak, Memcache และ SimpleDB

Column-Family Databases

ฐานข้อมูลแบบนี้ ดูเผินๆ อาจจะมีรูปแบบคล้ายคลึงกับตารางข้อมูลในแบบ relational แต่มีความแตกต่างกันอยู่พอสมควร โดยที่ข้อมูลในแต่ละแถว อาจมีจำนวนและรูปแบบคอลัมน์แตกต่างกันได้ แต่ละแถวจึงถูกเรียกว่า column-family ในแต่ละคอลัมน์ ข้อมูลจะเป็นแบบ key-value pair

Column-Family (หรือบางทีอาจเรียก wide-column หรือ column-oriented) มีความสามารถ scale ได้น้อยกว่า ฐานข้อมูลแบบ Key-Value แต่ข้อดีก็คือ สามารถรองรับรูปแบบข้อมูลที่ซับซ้อนกว่าแบบ KV
ตัวอย่างฐานข้อมูลแบบ Column-Family ได้แก่ Google BigTable, HBase, และ Cassandra

Document Databases

รูปแบบฐานข้อมูลแบบ document นี้ได้รับแรงบันดาลใจจากระบบจัดการเอกสารของ Lotus Notes โดยทำการรวบรวมค่า key-value หลายเวอร์ชั่นมารวมกันเป็นคอลเล็กชั่น แล้วประกอบกันเป็นเอกสาร โดยมีรูปแบบลักษณะคล้าย JSON (JavaScript Object Notation)

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

ตัวอย่างฐานข้อมูลแบบ Document ได้แก่ CouchDB และ MongoDB

Graph Databases

ฐานข้อมูลแบบ graph มีลักษณะแตกต่างจากฐานข้อมูล NoSQL อื่นๆ ค่อนข้างมาก เหมาะกับการเก็บข้อมูลความสัมพันธ์ของโหนดต่างๆ ตัวอย่างที่เห็นได้ชัดที่สุดคือความสัมพันธ์ในเครือข่ายสังคมอย่าง facebook โดยที่แต่ละโหนดมีความสัมพันธ์กับโหนดอื่นๆ ได้ในหลากหลายรูปแบบ

ถึงแม้ว่าเราจะสามารถออกแบบฐานข้อมูลที่เก็บความสัมพันธ์เหล่านั้นด้วยโครงสร้างแบบ Relational ได้ก็ตาม แต่เมื่อจำนวนโหนดเพิ่มมากขึ้น จำนวนความสัมพันธ์เพิ่มมากเป็นทวีคูณ การใช้ภาษาสืบค้นข้อมูลอย่าง SQL ต้องใช้เวลานานมาก ฐานข้อมูลแบบ Graph จะใช้อัลกอริทึมในการค้นหาเส้นทางที่สั้นที่สุดเพื่อเพิ่มประสิทธิภาพในการเรียกค้นข้อมูล

ตัวอย่างฐานข้อมูลแบบ Graph ได้แก่ Neo4J, InfoGrid และ Infinite Graph

NoSQL ในภาพรวม

ยังมีระบบฐานข้อมูล NoSQL อีกหลายแบบ ที่ไม่ได้กล่าวถึงในที่นี้ แต่โดยรวมแล้วฐานข้อมูลในกลุ่มนี้มีลักษณะสำคัญร่วมกันคือ

  • มีความยืดหยุ่นในแง่ของโครงสร้างข้อมูลมากกว่าฐานข้อมูลเชิงสัมพันธ์
  • สามารถขยายตัวและกระจายโหลดการเก็บข้อมูลไปบนคอมพิวเตอร์จำนวนมากได้ดีกว่า
  • มีประสิทธิภาพสูงมากในงานเฉพาะด้าน หากเลือกใช้ให้เหมาะกับงาน
  • การควรคุมโครงสร้างข้อมูล จำเป็นต้องขึ้นอยู่กับแอพลิเคชั่นที่ใช้
  • ความยืดหยุ่นและประสิทธิภาพของ NoSQL แลกมาด้วย การที่ไม่สามารถทำตาม ACID ได้ทั้งหมด จึงไม่เหมาะกับการใช้งานด้าน transaction
  • NoSQL เหมาะกับการเก็บข้อมูล แต่ไม่สามารถทำงานบางอย่างได้ดีนัก อย่างเช่น การทำ Reporting, Aggregation หรือ Analytics

 

nosql-databases

ที่มาของภาพ: http://www.tomsitpro.com/articles/rdbms-sql-cassandra-dba-developer,2-547-2.html

สรุป

เทคโนโลยีฐานข้อมูลเกิดนวัตกรรมใหม่เพิ่มขึ้นมากในช่วงไม่กี่ปีที่ผ่านมา เพื่อตอบสนองต่อความต้องการในการจัดการข้อมูลที่เปลี่ยนแปลงไป ทั้งในแง่ของปริมาณข้อมูลที่มากขึ้น และรูปแบบโครงสร้างข้อมูลที่หลากหลายซับซ้อนและยากต่อการคาดเดาได้ล่วงหน้า

ในขณะที่เทคโนโลยีดั้งเดิมที่คุ้นเคยกันมาก่อน ก็ได้รับการพัฒนามายาวนาน ถึงแม้ว่าอาจตอบสนองความต้องการใหม่ๆ บางอย่างได้ไม่ดีนัก แต่ก็ยังมีงานที่เหมาะสมกับเทคโนโลยีแบบเดิมอยู่

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