Wraz z postępem technologicznym ludzkość została pobłogosławiona telefonami komórkowymi, sieciami bezprzewodowymi, a przede wszystkim Internetem. Internet jest pełen danych, które dzieli od nas tylko jedno kliknięcie. Takie przytłaczające ilości danych są przechowywane elektronicznie w bazie danych, która z kolei jest kontrolowana przez system zarządzania bazą danych (DBMS). Cassandra i MongoDB to dwie takie bazy danych.
Cassandra kontra MongoDB
Różnica między Cassandrą i MongoDB polega na tym, że podczas gdy ta pierwsza działa na hybrydowym modelu danych składającym się ze struktury tabelarycznej i kluczowej wartości oraz wykorzystuje model architektury „peer-to-peer”, ten drugi model danych jest zorientowany obiektowo i dokumentowo, oraz wykorzystuje model „master-slave”.
Cassandra jest bazą danych typu open source NoSQL i wykorzystuje model architektury „peer-to-peer”. Dzięki tej funkcji Cassandra nie ma jednego węzła nadrzędnego, ale wiele węzłów nadrzędnych wewnątrz klastra, dlatego nawet jeśli jeden węzeł nadrzędny ulegnie awarii, istnieje wiele węzłów nadrzędnych, które mogą przejąć i zapewnić, że baza danych w ogóle odpowie na wszystkie żądania punkty czasu. Co więcej, tylko węzeł główny może zapisywać i akceptować dane wejściowe, a Cassandra korzysta z modelu klastrowego, co oznacza, że wiele węzłów głównych może zapisywać i akceptować dane wejściowe. To dzięki temu modelowi Cassandra zapewnia wysoką dostępność danych i elastyczną skalowalność.
MongoDB jest również bazą danych typu open source NoSQL i jest oparta na modelu „master-slave”. W konsekwencji, gdy węzeł nadrzędny nie jest w stanie funkcjonować, węzeł podrzędny może przejąć rolę węzła nadrzędnego, ale przejście to zajmuje kilka minut iw tym okresie baza danych nie jest w stanie odpowiadać na żądania. Wpływa to na dostępność danych. MongoDB jest również ograniczony pod względem skalowalności, ponieważ tylko węzeł główny może zapisywać i akceptować dane wejściowe, a węzły podrzędne przydają się tylko do odczytów.
Tabela porównawcza między Cassandrą a MongoDB
Parametr porównania | Kasandra | MongoDB |
Model danych | Jest to hybryda między klucz-wartość a strukturą tabeli, która wykorzystuje wiersze i kolumny | Posiada model danych zorientowany obiektowo i dokumentowo |
Obsługa języka programowania | Obsługuje C++, Python, Java, JavaScript,.Net, Ruby, PHP, Scala, Perl, C#, Clojure, Go, Erlang, Haskell | Obsługuje C, C++, C#, Clojure, ColdFusion, Dart, Delphi, Ruby, Python, Scala, JavaScript, Java, Erlang, Go, Groovy, Haskell, PHP, Perl, Lisp, Lua, MatLab, PowerShell, Prolong, Smalltalk |
Ramy agregacji | Nie ma struktury agregacji, ale wymaga pomocy zewnętrznych narzędzi, takich jak Hadoop, Apache Spark itp. | Ma wbudowaną strukturę agregacji |
Schemat | Ma elastyczny schemat, dlatego każdy wiersz w tej samej rodzinie kolumn nie musi mieć tej samej liczby kolumn | W nowszej wersji MongoDB można zdecydować, czy chce schematu, dzięki czemu baza danych jest znacznie bardziej elastyczna |
Obsługa języka zapytań | Cassandra Query Language (CQL) to własny język zapytań Cassandry | Nie ma jeszcze języka zapytań, ale używa struktury JSON |
Czym jest Cassandra?
Cassandra została opracowana przez Facebooka na potrzeby wyszukiwania w skrzynce odbiorczej i została wydana w 2008 roku. W 2009 roku stała się projektem Apache i była znana jako Apache Cassandra.
Cassandra to baza danych NoSQL, która do przechowywania danych wykorzystuje podstawową strukturę danych składającą się z rodzin kolumn, wierszy, kolumn i przestrzeni kluczy. Ponieważ Cassandra ma elastyczny schemat, wiersze w tej samej rodzinie kolumn mogą mieć różną liczbę kolumn.
Każdy węzeł w klastrze węzłów w Cassandrze ma te same funkcje i otrzymuje wszystkie typy żądań. Cassandra nie używa modelu „master-slave”, ale używa idei „węzła koordynatora”. Oznacza to, że gdy klient wysyła żądanie, węzeł, który otrzymuje żądanie, jest koordynatorem dla konkretnego żądania i koordynuje wymianę odpowiedzi z węzła, który faktycznie zawiera informacje na żądanie klienta, aby wysłać wynik do klienta.
Kilku wybitnych użytkowników Cassandry to Netflix, Twitter, Viocom Hosting, Walmart Labs, Spotify, Reddit, Instagram i Facebook.
Co to jest MongoDB?
MongoDB to baza danych NoSQL opracowana przez firmę 10gen, obecnie znaną jako MongoDB, Inc., w 2007 roku w celu rozwiązania problemów związanych ze skalowalnością.
Ponieważ jest to baza danych zorientowana na dokumenty, podstawową strukturą używaną do przechowywania danych są dokumenty. W tym kontekście dokument jest podstawową strukturą używaną do przechowywania pojedynczej jednostki danych. Ze względu na brak schematu przechowywane są dokumenty o różnej strukturze i zawartości, wszystkie w tej samej kolekcji.
Dokumenty w MongoDB używają JSON jako języka zapytań, dlatego jego model może również obsługiwać programowanie obiektowe.
MongoDB opiera się na modelu master-slave, w wyniku czego jeśli węzeł master przestanie działać, baza danych przestanie działać na kilka minut. Aby temu zaradzić, MongoDB ma zestaw replik, który składa się z węzła głównego lub węzła podstawowego oraz wszystkich węzłów drugorzędnych. To sprawia, że węzeł główny jest odbiorcą wszystkich żądań wysyłanych przez klienta, a także przechowuje wszystkie zmiany w swoim dzienniku operacji. Węzły podrzędne wykorzystują dziennik operacji węzła głównego i replikują zmiany na swoich kopiach danych, aby zachować spójność.
Jeśli główny węzeł umrze, MongoDB używa protokołu komunikacyjnego o nazwie „bicie serca” i „wybory”. W odstępie dwóch sekund członkowie zestawu replik wysyłają sobie nawzajem pulsy, jeśli jeden element nie odpowie w ciągu dziesięciu sekund, jest uważany za martwy i węzły drugorzędne są o tym informowane. Następnie zestaw replik przeprowadza wybory i głosuje, aby wybrać węzeł pomocniczy, który stanie się nowym węzłem podstawowym. Drugi węzeł z największą liczbą głosów wygrywa wybory. W przypadku remisu istnieje trzeci rodzaj węzła, znany jako Arbiter, który decyduje, który węzeł drugorzędny stanie się głównym.
Abode, Google, Forbes, Facebook, eBay, BOSH, Cisco to jedni z wybitnych użytkowników MongoDB.
Główne różnice między Cassandrą a MongoDB
- Podczas gdy Cassandra używa struktury tabelarycznej do przechowywania danych, MongoDB używa obiektywnego i zorientowanego na dane modelu.
- Cassandra korzysta z klastra węzłów, aby zapewnić wysoką dostępność danych. Natomiast MongoDb wykorzystuje pojedynczy węzeł główny, ograniczając w ten sposób dostępność danych.
- Cassandra zapewnia elastyczną skalowalność, ponieważ wszystkie węzły w pierścieniu są równe. W przeciwieństwie do tego MongoDB nie oferuje elastycznej skalowalności, ponieważ ma jeden węzeł główny do przechowywania wszystkich danych.
- Cassandra nie ma wbudowanej struktury agregacji, dlatego opiera się na narzędziach zewnętrznych. Natomiast MongoDB ma wewnętrzną strukturę agregacji, która jest najbardziej odpowiednia dla małego i średniego ruchu danych.
- Cassandra oferuje komponenty, takie jak tabele pamięci, dzienniki zatwierdzania, klastry, centra danych i węzeł, natomiast MongoDB obsługuje zapytania ad-hoc, przechowywanie plików, kolekcje, replikację i transakcje.
Wniosek
Cassandra i MongoDB są systemami zarządzania bazami danych NoSQL, ale mają kilka istotnych różnic. Cassandra okazuje się być ważniejsza, gdy mamy do czynienia z danymi transakcyjnymi, ale MongoDB jest bardziej przydatna do prowadzenia analiz w czasie rzeczywistym.
Bibliografia
- 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