GNU/Linux >> Znalost Linux >  >> Ubuntu

Cassandra vs MongoDB - Jaké jsou rozdíly?

Úvod

Pokud hledáte NoSQL databázi, pravděpodobně jste narazili na Cassandra a MongoDB. Přesto mají tyto dvě oblíbené možnosti NoSQL mnohem méně společného, ​​než se očekávalo.

V tomto tutoriálu vysvětlujeme podobnosti a rozdíly mezi Cassandrou a MongoDB.

Cassandra vs MongoDB:Podobnosti

Při porovnávání dvou databázových systémů se obvykle usuzuje, že existují také společné podobnosti. Ačkoli existují, pokud jde o Cassandra a MongoDB, tyto podobnosti jsou omezené.

Databáze NoSQL

Nejdůležitější je, že Cassandra a MongoDB jsou klasifikovány jako databáze NoSQL. NoSQL (nejen SQL) je oblíbenou alternativou k tradičním databázím. Na rozdíl od relačních databází, které známe, může NoSQL ukládat velké množství dat, aniž by vyžadovalo logickou kategorii nebo schéma.

Vzhledem k tomu, že tradiční databáze nebyly schopny zpracovat velké množství nestrukturovaných dat v reálném čase, databáze NoSQL tuto výzvu přijaly horizontálním škálováním.

V souladu s tím byla Cassandra vydána v roce 2008 jako jedna z těchto databází NoSQL. O rok později byl vytvořen MongoDB.

Open-Source Software

Další společnou vlastností těchto dvou je, že se jedná o bezplatný software s otevřeným zdrojovým kódem. Můžete si zdarma stáhnout databázové balíčky, nastavit je a nakonfigurovat.

Cassandra, původně vytvořená vývojáři z Facebooku, je nyní ve vlastnictví projektu Apache a je součástí jeho open-source komunity. Na druhou stranu je MongoDB jedním z nejpopulárnějších systémů pro správu databází na světě se silnou komunitou vývojářů MongoDB.

Nelze nahradit RDBMS a ACID

Mějte na paměti, že Cassandra ani MongoDB nemohou nahradit tradiční systém správy relačních databází (RDBMS). Pokud potřebujete ukládat data pomocí řádků a sloupců ve strukturovaném formátu, držte se jedné z mnoha dostupných relačních databází.

Navíc, pokud potřebujete databáze kompatibilní s ACID, NoSQL pravděpodobně není nejlepší řešení. Pro databázové transakce, které zajišťují atomicitu, konzistenci, izolaci a trvanlivost, je lepší používat relační databáze, jako je MySQL nebo PostgreSQL.

Cassandra vs MongoDB:Rozdíly

Dostupnost dat

Jedním z nejvýznamnějších rozdílů mezi MongoDB a Cassandrou je jejich strategie týkající se dostupnosti dat. Tato funkce závisí na počtu master slave v clusteru.

MongoDB má jeden master, který řídí více podřízených uzlů. Pokud hlavní uzel spadne, převezme jeho roli jeden z podřízených uzlů. Přestože strategie automatického převzetí služeb při selhání zajišťuje obnovu, může trvat až minutu, než se podřízený systém stane hlavním. Během této doby není databáze schopna reagovat na požadavky.

Cassandra , na druhou stranu používá jiný model. Namísto jednoho hlavního uzlu využívá více hlavních serverů uvnitř clusteru. Při přítomnosti více mistrů se nemusíte bát žádného výpadku. Redundantní model zajišťuje vysokou dostupnost za všech okolností.

Škálovatelnost

Škálovatelnost je funkce přímo spojená s modelem clusteru. Cassandra a MongoDB tedy mají značné rozdíly mezi jejich škálovatelností zápisu.

Pouze hlavní uzel může zapisovat a přijímat vstup. Mezitím se podřízené uzly používají pouze pro čtení. V souladu s tím jako MongoDB má jeden hlavní uzel, je omezený z hlediska škálovatelnosti zápisu.

Více hlavních uzlů zvyšuje Cassandras schopnosti psaní. Umožňuje této databázi koordinovat četné zápisy současně, všechny pocházejí od jejích masterů. Proto čím více hlavních uzlů je v clusteru, tím lepší je rychlost zápisu (škálovatelnost).

Datový model

Nyní se podívejme na datový model těchto dvou databází NoSQL.

MongoDB datový model je kategorizován jako objektový a dokumentový. To znamená, že může představovat jakýkoli druh objektových struktur, které mohou mít vlastnosti nebo mohou být dokonce vnořené pro více úrovní.

Pokud jde o Cassandru, existuje tradičnější model. Cassandra má strukturu tabulky pomocí řádků a sloupců. Přesto je flexibilnější než relační databáze, protože každý řádek nemusí mít stejné sloupce. Po vytvoření je těmto sloupcům přiřazen jeden z dostupných datových typů Cassandra, který se nakonec více spoléhá na datovou strukturu.

Dotazovací jazyk

Dalším rozlišujícím faktorem je, zda potřebujete databázi s podporou dotazovacího jazyka.

MongoDB používá dotazy strukturované do fragmentů JSON a zatím nemá žádnou podporu dotazovacího jazyka. Pokud jste vy nebo váš tým zvyklí na SQL, budete si na to zvykat. Je však dostatečně snadné jej spravovat.

Na rozdíl od MongoDB, Cassandra má svůj vlastní dotazovací jazyk nazvaný CQL (Cassandra Query Language). Jeho syntaxe je podobná SQL, ale stále má určitá omezení. Databáze má v podstatě jiný způsob ukládání a obnovy dat, protože není relační.

Jak se dotazy liší?

V příkladech níže můžete vidět, jak se dotazy v MongoDB liší od dotazů používaných v Cassandře (při práci v ukázce zaměstnanec tabulka).

Výběr záznamů ze stolu zaměstnanců:

MongoDB

‘db.employee.find()’

Cassandra

‘SELECT * FROM employee;’

Vkládání záznamů do tabulky zaměstnanců:

MongoDB

‘db.employee.insert({ empid: '101', firstname: 'John', lastname: 'Doe', gender: 'M', status: 'A'})’

Cassandra

‘INSERT INTO employee (empid, firstname, lastname, gender, status) VALUES('101', 'John', 'Doe', 'M', 'A');’

Aktualizace záznamů v tabulce zaměstnanců:

MondgoDB

'db.Employee.update({"empid" : 101}, {$set: { "firstname" : "James"}})'

Cassandra

‘UPDATE employee SET firstname = ‘James' WHERE empid = '101';’

Podporované programovací jazyky

MongoDB: Actionscript, C, C#, C++, Clojure, ColdFusion, D, Dart, Delphi, Erlang, Go, Groovy, Haskell, Java, JavaScript, Lisp, Lua, MatLab, Perl, PHP, PowerShell, Prolog, Python, R, Ruby, Scala, Smalltalk

Cassandra: C#, C++, Clojure, Erlang, Go, Haskell, Java, JavaScript, Perl, PHP, Python, Ruby, Scala

Agregace

Rozhodování mezi MongoDB nebo Cassandrou může také přijít na to, zda chcete nebo nechcete vestavěný agregační rámec.

MongoDB má vestavěný agregační rámec. Tato funkce umožňuje získávat data pomocí vícestupňového potrubí ELT k transformaci dokumentů na agregované výsledky. Takový rámec je však efektivní pouze při práci s malým nebo středně velkým datovým provozem.

Cassandra nemá žádný agregační rámec a vyžaduje externí nástroje jako Hadoop, Spark a další.

Schéma

Pokud jde o schéma, měli byste se rozhodnout, zda chcete flexibilní databázi nebo stacionární.

MongoDB je databáze, která nevyžaduje schéma, díky čemuž je přirozeně lépe přizpůsobitelná změnám. Ve svých předchozích verzích výchozí konfigurace nevynucovala vůbec žádné schéma. Dnes se můžete rozhodnout, zda chcete schéma nebo ne. Tato flexibilita znamená, že databáze může vkládat dokumenty různých struktur a interpretovat je jednou v softwaru.

Cassandra je mnohem stacionárnější databáze. Usnadňuje statické psaní a vyžaduje předem kategorizaci a definici sloupců.

Sekundární indexy

Kvalita sekundárních indexů určuje, jak efektivně můžete přistupovat k záznamům v databázi. Rozsah, v jakém jsou tyto indexy podporovány, není stejný v MongoDB a Cassandře.

MongoDB má vysoce kvalitní sekundární indexy. Díky svému flexibilnímu datovému modelu a sekundárním indexům může přistupovat k jakékoli vlastnosti uloženého objektu (i když je vnořený).

Případně Cassandra má pouze podporu kurzoru pro sekundární index. Jeho dotazy jsou omezeny na jednotlivé sloupce a porovnání rovnosti.

Výkon

Existuje řada faktorů, které ovlivňují výkon těchto dvou typů databází.

Především databázový model (nebo schéma) dělá velký rozdíl v kvalitě výkonu, protože některé jsou vhodnější pro MongoDB, zatímco jiné mohou pracovat lépe s Cassandrou.

A co víc, charakteristika zatížení Zásadní roli hraje také aplikace, kterou vaše databáze potřebuje podporovat. Pokud očekáváte velké zatížení, Cassandra se svými několika hlavními uzly poskytne lepší výsledky. Při velkém zatížení výstupu budou MongoDB i Cassandra vykazovat dobrý výkon.

A konečně, mnozí se domnívají, že MongoDB má navrch, pokud jde o požadavky na konzistenci . Přesto se to může lišit v závislosti na aplikaci. Cassandru můžete také ručně nakonfigurovat tak, aby splňovala vámi nastavené standardy konzistence.


Ubuntu
  1. Co jsou oddělovače slov Readline?

  2. Jaké jsou základní rozdíly mezi mainstreamovými *nix shelly?

  3. Jaké jsou rozdíly mezi různými dostupnými verzemi Emacs?

  1. Router pfSense vs Netgear:Jaké jsou hlavní rozdíly?

  2. Fedora vs Ubuntu:Jaké jsou klíčové rozdíly?

  3. Jaké jsou rozdíly mezi grep, awk a sed?

  1. MySQL vs. MariaDB:Jaké jsou hlavní rozdíly mezi nimi

  2. Debian vs Ubuntu:Jaké jsou rozdíly?

  3. Jaké jsou rozdíly mezi rdesktop a xfreerdp?