ด้วยความก้าวหน้าของเทคโนโลยี มนุษยชาติได้รับพรจากโทรศัพท์มือถือ เครือข่ายไร้สาย และเหนือสิ่งอื่นใดคืออินเทอร์เน็ต อินเทอร์เน็ตเต็มไปด้วยข้อมูลปริมาณมาก เพียงไม่กี่คลิกจากเรา ข้อมูลปริมาณมหาศาลดังกล่าวถูกจัดเก็บทางอิเล็กทรอนิกส์บนฐานข้อมูล ซึ่งในทางกลับกัน ถูกควบคุมโดยระบบการจัดการฐานข้อมูล (DBMS) Cassandra และ MongoDB เป็นฐานข้อมูลสองแห่ง
คาสซานดรา vs MongoDB
ความแตกต่างระหว่าง Cassandra และ MongoDB คือในขณะที่อดีตทำงานบนโมเดลข้อมูลไฮบริดที่ประกอบด้วยโครงสร้างแบบตารางและค่าคีย์ และใช้โมเดลสถาปัตยกรรม "peer-to-peer" แต่โมเดลข้อมูลของหลังเป็นแบบวัตถุและเชิงเอกสาร และ มันใช้โมเดล "มาสเตอร์-ทาส"
Cassandra เป็นฐานข้อมูลโอเพ่นซอร์ส NoSQL และใช้โมเดลสถาปัตยกรรมแบบ "peer-to-peer" ด้วยคุณสมบัตินี้ คาสซานดราจึงไม่มีโหนดหลักเพียงโหนดเดียว แต่มีโหนดหลักหลายโหนดภายในคลัสเตอร์ ดังนั้นแม้ว่าโหนดหลักหนึ่งโหนดจะหยุดทำงาน แต่ก็มีโหนดหลักหลายโหนดที่สามารถเข้าควบคุมและรับรองว่าฐานข้อมูลจะตอบสนองต่อคำขอทั้งหมดเลย จุดเวลา นอกจากนี้ มีเพียงมาสเตอร์โหนดเท่านั้นที่สามารถเขียนและรับอินพุต และคาสซานดราใช้โมเดลคลัสเตอร์ ซึ่งหมายความว่ามาสเตอร์โหนดหลายตัวสามารถเขียนและรับอินพุตได้ เป็นเพราะโมเดลนี้ที่ Cassandra ให้ความพร้อมใช้งานของข้อมูลสูงและความสามารถในการปรับขนาดที่ยืดหยุ่น
MongoDB ยังเป็นฐานข้อมูล NoSQL แบบโอเพ่นซอร์สและอิงตามโมเดล "master-slave" ดังนั้น เมื่อโหนดหลักไม่สามารถทำงานได้ โหนดรองสามารถสวมบทบาทเป็นโหนดหลักได้ แต่การเปลี่ยนแปลงนี้ใช้เวลาสองสามนาที และในช่วงเวลานี้ ฐานข้อมูลไม่อยู่ในฐานะที่จะตอบสนองต่อการร้องขอ สิ่งนี้ส่งผลต่อความพร้อมใช้งานของข้อมูล MongoDB ยังถูกจำกัดในแง่ของความสามารถในการปรับขนาดได้ เนื่องจากมีเพียงโหนดหลักเท่านั้นที่สามารถเขียนและยอมรับอินพุตได้ และโหนดรองมีประโยชน์สำหรับการอ่านเท่านั้น
ตารางเปรียบเทียบระหว่าง Cassandra และ MongoDB
พารามิเตอร์ของการเปรียบเทียบ | แคสแซนดรา | MongoDB |
ตัวแบบข้อมูล | เป็นลูกผสมระหว่างคีย์-ค่ากับโครงสร้างตารางที่ใช้แถวและคอลัมน์ | มีโมเดลข้อมูลเชิงวัตถุและเอกสาร |
รองรับการเขียนโปรแกรมภาษา | รองรับ C++, Python, Java, JavaScript,.Net, Ruby, PHP, Scala, Perl, C#, Clojure, Go, Erlang, Haskell | รองรับ C, C++, C#, Clojure, ColdFusion, Dart, Delphi, Ruby, Python, Scala, JavaScript, Java, Erlang, Go, Groovy, Haskell, PHP, Perl, Lisp, Lua, MatLab, PowerShell, ยืดเวลา, Smalltalk |
กรอบการรวมกลุ่ม | ไม่มีเฟรมเวิร์กการรวมแต่ต้องการความช่วยเหลือจากเครื่องมือภายนอก เช่น Hadoop, Apache Spark เป็นต้น | มีกรอบการรวมในตัว |
สคีมา | มีสคีมาที่ยืดหยุ่น ดังนั้นแต่ละแถวภายในกลุ่มคอลัมน์เดียวกันจึงไม่จำเป็นต้องมีจำนวนคอลัมน์เท่ากัน | ใน MongoDB เวอร์ชันใหม่ คุณสามารถเลือกได้ว่าต้องการสคีมาหรือไม่ ทำให้ฐานข้อมูลมีความยืดหยุ่นมากขึ้น |
การสนับสนุนภาษาแบบสอบถาม | Cassandra Query Language (CQL) เป็นภาษาคิวรีของ Cassandra เอง | ยังไม่มีภาษาที่ใช้ค้นหา แต่ใช้ JSON-structure |
แคสแซนดราคืออะไร?
Cassandra ได้รับการพัฒนาโดย Facebook เพื่อจุดประสงค์ในการค้นหากล่องจดหมายและเปิดตัวในปี 2008 กลายเป็นโครงการ Apache ในปี 2009 และกลายเป็นที่รู้จักในชื่อ Apache Cassandra
Cassandra เป็นฐานข้อมูล NoSQL ที่ใช้โครงสร้างข้อมูลพื้นฐานที่ประกอบด้วยกลุ่มคอลัมน์ แถว คอลัมน์ และคีย์สเปซ เพื่อจัดเก็บข้อมูล เนื่องจาก Cassandra มีสคีมาที่ยืดหยุ่น แถวภายในกลุ่มคอลัมน์เดียวกันจึงสามารถมีจำนวนคอลัมน์ต่างกันได้
แต่ละโหนดในคลัสเตอร์ของโหนดใน Cassandra มีฟังก์ชันเหมือนกัน และรับคำขอทุกประเภท Cassandra ไม่ได้ใช้โมเดล "master-slave" แต่ใช้แนวคิดของ "coordinator node" ซึ่งหมายความว่าเมื่อไคลเอนต์ออกคำขอ โหนดที่ได้รับคำขอคือผู้ประสานงานสำหรับคำขอเฉพาะและประสานการแลกเปลี่ยนการตอบสนองจากโหนดที่มีข้อมูลจริงไปยังคำขอของลูกค้าเพื่อส่งผลไปยังไคลเอนต์.
ผู้ใช้ที่โดดเด่นของ Cassandra ได้แก่ Netflix, Twitter, Viocom Hosting, Walmart Labs, Spotify, Reddit, Instagram และ Facebook
MongoDB คืออะไร?
MongoDB เป็นฐานข้อมูล NoSQL ที่พัฒนาโดย 10gen ซึ่งปัจจุบันรู้จักกันในชื่อ MongoDB, Inc. ในปี 2550 เพื่อแก้ไขปัญหาเกี่ยวกับความสามารถในการปรับขนาด
เนื่องจากเป็นฐานข้อมูลเชิงเอกสาร โครงสร้างหลักที่ใช้สำหรับการจัดเก็บข้อมูลจึงอยู่ในรูปของเอกสาร ในบริบทนี้ เอกสารคือโครงสร้างพื้นฐานที่ใช้ในการจัดเก็บข้อมูลหน่วยเดียว เนื่องจากไม่มีสคีมา เอกสารจึงถูกจัดเก็บด้วยโครงสร้างและเนื้อหาที่แตกต่างกัน ทั้งหมดนี้รวมอยู่ในคอลเล็กชันเดียวกัน
เอกสารใน MongoDB ใช้ JSON เป็นภาษาการสืบค้น ดังนั้น โมเดลของ MongoDB จึงสามารถรองรับการเขียนโปรแกรมเชิงวัตถุได้
MongoDB อิงตามโมเดลมาสเตอร์-ทาส ซึ่งเป็นผลมาจากการที่ถ้าโหนดหลักหยุดทำงาน ฐานข้อมูลจะหยุดทำงานเป็นเวลาสองสามนาที เพื่อแก้ไขปัญหานี้ MongoDB มีชุดแบบจำลองที่ประกอบด้วยโหนดหลักหรือโหนดหลัก และโหนดรองทั้งหมด สิ่งนี้ทำให้โหนดหลักเป็นผู้รับคำขอทั้งหมดที่ส่งโดยไคลเอนต์ และยังเก็บการเปลี่ยนแปลงทั้งหมดในบันทึกการทำงานด้วย โหนดสเลฟใช้บันทึกการทำงานของโหนดหลักและทำซ้ำการเปลี่ยนแปลงไปยังสำเนาของข้อมูลเพื่อรักษาความสอดคล้อง
หากโหนดหลักตาย MongoDB จะใช้โปรโตคอลการสื่อสารที่เรียกว่า "ฮาร์ทบีต" และ "การเลือกตั้ง" ในช่วงเวลาสองวินาที สมาชิกของชุดเรพพลิกาส่งฮาร์ตบีตให้กันและกัน หากสมาชิกคนหนึ่งไม่ตอบภายในสิบวินาที จะถือว่าตายและโหนดรองจะได้รับแจ้งเกี่ยวกับเรื่องนี้ ต่อจากนี้ ชุดแบบจำลองจะมีการเลือกตั้งและโหวตเพื่อเลือกโหนดรองที่จะกลายเป็นโหนดหลักใหม่ โหนดรองที่มีคะแนนเสียงสูงสุดชนะการเลือกตั้ง ในกรณีที่เสมอกัน มีโหนดประเภทที่สามที่เรียกว่า Arbiter ซึ่งจะตัดสินใจว่าโหนดรองใดจะกลายเป็นโหนดหลัก
Abode, Google, Forbes, Facebook, eBay, BOSH, Cisco เป็นผู้ใช้ที่โดดเด่นของ MongoDB
ความแตกต่างหลักระหว่าง Cassandra และ MongoDB
- ในขณะที่ Cassandra ใช้โครงสร้างแบบตารางเพื่อจัดเก็บข้อมูล MongoDB ใช้โมเดลเชิงวัตถุประสงค์และเชิงข้อมูล
- Cassandra ใช้คลัสเตอร์ของโหนดเพื่อให้แน่ใจว่ามีข้อมูลสูง ในขณะที่ MongoDb ใช้โหนดหลักเดียว ซึ่งจำกัดความพร้อมใช้งานของข้อมูล
- Cassandra ให้ความสามารถในการปรับขนาดที่ยืดหยุ่นได้ เนื่องจากโหนดทั้งหมดในวงแหวนมีค่าเท่ากัน ในทางตรงกันข้าม MongoDB ไม่มีความสามารถในการปรับขนาดที่ยืดหยุ่นได้ เนื่องจากมีโหนดหลักเพียงโหนดเดียวในการจัดเก็บข้อมูลทั้งหมด
- แคสแซนดราไม่มีเฟรมเวิร์กการรวมในตัว ดังนั้นจึงอาศัยเครื่องมือภายนอก ในขณะที่ MongoDB มีเฟรมเวิร์กการรวมภายในซึ่งเหมาะสมที่สุดสำหรับการรับส่งข้อมูลขนาดเล็กและขนาดกลาง
- ในขณะที่ Cassandra นำเสนอส่วนประกอบต่างๆ เช่น ตารางหน่วยความจำ บันทึกการคอมมิต คลัสเตอร์ ศูนย์ข้อมูล และโหนด MongoDB รองรับการสืบค้นเฉพาะกิจ การจัดเก็บไฟล์ การรวบรวม การจำลองแบบ และธุรกรรม
บทสรุป
Cassandra และ MongoDB เป็นทั้งระบบจัดการฐานข้อมูล NoSQL แต่มีความแตกต่างที่สำคัญหลายประการ Cassandra พิสูจน์ให้เห็นแล้วว่าจำเป็นมากขึ้นเมื่อมีผู้ที่เกี่ยวข้องกับข้อมูลการทำธุรกรรม แต่ MongoDB มีประโยชน์มากกว่าสำหรับการรันการวิเคราะห์ตามเวลาจริง
อ้างอิง
- https://dl.acm.org/doi/abs/10.1145/1773912.1773922
- https://bora.uib.no/bora-xmlui/bitstream/handle/1956/17228/kb-thesis.pdf?sequence=1&isAllowed=y