sql >> Databáze >  >> NoSQL >> MongoDB

Bitva o databáze NoSQL - srovnání MongoDB a Cassandra

Úvod do MongoDB

MongoDB byl představen již v roce 2009 společností s názvem 10gen. 10gen byl později přejmenován na MongoDB Inc., společnost, která je zodpovědná za vývoj softwaru a prodává podnikovou verzi této databáze. Společnost MongoDB Inc. zajišťuje veškerou podporu svým vynikajícím týmem podpory na podnikové úrovni nepřetržitě. Zavázali se poskytovat doživotní podporu, což znamená, že zákazníci se rozhodnou používat jakoukoli verzi MongoDB, a pokud chtějí upgradovat, bude podporována kdykoli. Poskytuje jim také příležitost být v souladu se všemi bezpečnostními opravami, které společnost nabízí 24 hodin denně.

MongoDB je dobře známá databáze NoSQL, která se za posledních zhruba deset let velmi rozšířila díky prudkému růstu webových a mobilních aplikací běžících v cloudu. Tento nový druh aplikací připojených k internetu vyžaduje rychlé, chybové a škálovatelné úložiště dat bez schématu, které mohou databáze NoSQL nabídnout. MongoDB používá JSON k ukládání dat, jako jsou dokumenty, které se mohou lišit nabídkou struktury, což je dynamické a flexibilní schéma. MongoDB navržený pro vysokou dostupnost a škálovatelnost s automatickým shardingem. MongoDB je jednou z oblíbených open-source databází, které vznikají v rámci databáze NoSQL, která se používá pro ukládání velkých objemů dat. MongoDB má řádky nazývané dokumenty, které nevyžadují definování schématu, protože pole jsou vytvářena za běhu. Datový model dostupný v MongoDB umožňuje reprezentaci hierarchických vztahů, efektivnější ukládání polí a dalších složitějších struktur.

Úvod do Cassandry

Apache Cassandra je další známý jako bezplatný a open source distribuovaný obchod se širokými sloupci. Cassandra byla představena již v roce 2008 několika vývojáři z Facebooku, který později vyšel jako open-source projekt. V současné době je podporován nadací Apache Software Foundation a Apache v současné době udržuje tento projekt pro případná další vylepšení.

Cassandra je systém pro správu databází NoSQL navržený tak, aby zpracovával velké množství dat na mnoha komoditních serverech a poskytoval vysokou dostupnost bez jediného bodu selhání. Cassandra nabízí velmi robustní podporu pro clustery zahrnující více datových center, s asynchronní replikací bez masteru, která všem klientům umožňuje operace s nízkou latencí. Cassandra podporuje návrh distribuce Amazon Dynamo s datovým modelem Bigtable od Google.

Podobnosti mezi MongoDB a Cassandrou

S krátkým představením těchto dvou NoSQL databází se podíváme na některé podobnosti mezi těmito dvěma databázemi:

MongoDB i Cassandra jsou typy databáze NoSQL a distribuce s otevřeným zdrojovým kódem.

  • Žádná z těchto databází nenahrazuje tradiční typy databází RDBMS.
  • Obě tyto databáze nejsou v souladu s ACID (Atomicity, Consistency, Isolation, Durability), což se týká vlastností databázových transakcí, které zaručují spolehlivé zpracování databázových transakcí.
  • Obě tyto databáze podporují sharding horizontální rozdělení.
  • Konzistence a normalizace jsou dva koncepty, které tyto dva typy databází nesplňují (protože se více přiklánějí k databázovým typům RDBMS)

MongoDB vs. Cassandra:Funkce

Obě technologie hrají zásadní roli ve svých oborech, přičemž jejich podobnosti mezi MongoDB a Cassandrou ukazují jejich společné rysy a rozdíly ukazují jedinečnost těchto technologií.

Obrázek 1 MongoDB vs. Cassandra – 8 hlavních faktorů rozdílu

Expresivní datový model

MongoDB poskytuje bohatý a expresivní datový model, který je známý jako „objektově orientovaný“ nebo „datově orientovaný“. Tento datový model může snadno podporovat a reprezentovat jakoukoli datovou strukturu v doméně uživatele. Data mohou mít vlastnosti a mohou být vnořena do sebe pro více úrovní. Cassandra je spíše tradiční datový model se strukturou tabulky, řádky a konkrétními sloupci datových typů. Tento typ je definován při vytváření tabulky. Každopádně, když porovnáme oba modely, MongoDB má tendenci poskytovat bohatý datový model. Obrázek níže popisuje typické architektury na vysoké úrovni obou databází, pokud jde o jejich úložiště a úrovně replikace.

Obrázek 2:Schéma architektury MongoDB vs. Cassandra

Hlavní uzel s vysokou dostupností

MongoDB podporuje jeden hlavní uzel v clusteru, který řídí sadu podřízených uzlů. Pokud hlavní uzel spadne, je jako hlavní zvolen podřízený a trvá to asi 20-30 sekund. Během této doby zpoždění bude cluster mimo provoz a nebude schopen přijmout žádný vstup. Cassandra podporuje více hlavních uzlů v clusteru a v případě, že jeden z hlavních uzlů přejde do režimu offline, jeho místo převezme jiný hlavní uzel. Ve srovnání s tím Cassandra podporuje vyšší dostupnost oproti MongoDB, protože neovlivňuje cluster a je vždy k dispozici.

Sekundární indexy

MongoDB má ve srovnání s Cassandrou více výhod, pokud aplikace vyžaduje sekundární indexy spolu s flexibilitou datového modelu. Z tohoto důvodu je MongoDB mnohem snazší indexovat jakoukoli vlastnost dat uložených v databázi. Tato vlastnost usnadňuje dotazování. Cassandra má podporu kurzoru pro sekundární indexy, které jsou omezeny na jednotlivé sloupce a porovnání rovnosti

Škálovatelnost zápisu

MongoDB podporuje pouze jeden hlavní uzel. Tento hlavní uzel v MongoDB přijímá pouze vstup a zbytek uzlů v MongoDB se používá jako výstup; pokud tedy mají být data zapsána v podřízených uzlech a nechat je projít nadřízeným uzlem. Cassandra podporuje více hlavních uzlů v clusteru, díky čemuž je vhodná v případě škálovatelnosti.

Podpora dotazovacího jazyka

Momentálně MongoDB nepodporuje dotazovací jazyk. Dotazy v MongoDB jsou strukturovány jako fragmenty JSON. Naproti tomu Cassandra má uživatelsky přívětivou sadu dotazů, která je známá jako CQL (Cassandra Query Language) a je snadno přizpůsobitelná vývojáři, kteří mají předchozí znalosti SQL. Jak se liší jejich dotazy?

Výběr záznamů z tabulky zákazníků:

 Cassandra:

SELECT * FROM customer;

 MongoDB:

db.customer.find()

Vkládání záznamů do tabulky zákazníků:

 Cassandra:

INSERT INTO customer (custid, branch, status) VALUES('appl01', 'headquarters', 'A');

 MongoDB:

db.customer.insert({ cust_id: 'appl01', branch: 'headquarters', status: 'A' })

Aktualizace záznamů v tabulce zákazníků:

Cassandra:

UPDATE Customer SET branch = ‘headquarters' WHERE custage > 2;

MongoDB:

db.customer.update( { custage: { $gt: 2 } }, { $set: { branch: 'headquarters' } }, { multi: true } )

Nativní agregace

MongoDB má vestavěný agregační rámec, který se používá ke spuštění ETL kanálu pro transformaci dat uložených v databázi a také podporuje malý a střední datový provoz. Při zvýšené složitosti se rámec také obtížněji ladí, zatímco Cassandra nemá integrovaný agregační rámec. Cassandra využívala externí nástroje jako Hadoop, Apache Spark atd.  Proto je MongoDB lepší než Cassandra, pokud jde o vestavěný agregační rámec.

Model bez schématu

MongoDB poskytuje uživateli možnost změnit vynucení jakéhokoli schématu v databázi. Každá databáze může mít jinou strukturu. Vše závisí na programu nebo aplikaci, která data interpretuje. Zatímco Cassandra nenabízí možnost měnit schémata, ale poskytuje statické psaní, kdy je uživatel povinen na začátku definovat typ sloupce.

Srovnání výkonu

Cassandra zvažuje lepší výkon v aplikacích, které vyžadují velké zatížení dat, protože může podporovat více hlavních uzlů v clusteru. Zatímco MongoDB nebude ideální pro aplikace s velkým zatížením dat, protože nemůže škálovat s výkonem. Na základě standardního standardu vytvořeného společností Yahoo! s názvem YCSB, MongoDB poskytuje vyšší výkon než Cassandra ve všech testech, které provedli, v některých případech použití až 25x. Když je MongoDB optimalizována pro rovnováhu propustnosti a trvanlivosti mezi Cassandrou a MongoDB, poskytuje o více než 50 % vyšší propustnost ve smíšených pracovních zátěžích a 2,5x vyšší propustnost v zátěžích s dominantním čtením ve srovnání s Cassandrou.

MongoDB poskytuje největší flexibilitu pro zajištění trvanlivosti pro konkrétní operace:uživatelé se mohou rozhodnout pro konfiguraci optimalizovanou pro trvanlivost pro konkrétní operace, které jsou považovány za kritické, ale pro které je dodatečná latence přijatelná. Pro Cassandru tato změna vyžaduje úpravu konfiguračního souboru serveru a úplný restart databáze.

Závěr

MongoDB je nejlépe známý pro pracovní zatížení se spoustou vysoce nestrukturovaných dat. Rozsah a typy dat, se kterými budete pracovat s flexibilními datovými strukturami MongoDB, vám budou vyhovovat lépe než Cassandra. Chcete-li efektivně používat MongoDB, budete si muset umět poradit s možností určitého výpadku, pokud selže hlavní uzel, a také s omezenou rychlostí zápisu. A nezapomeňte, že se také budete muset naučit nový dotazovací jazyk. V MongoDB lze složitá data snadno spravovat pomocí možností podpory formátu JSON. Toto je klíčový rozdíl pro MongoDB, když ji porovnáte s Cassandrou. V některých situacích lze Cassandru považovat za nejlepší databázi k implementaci, když zahrnuje velké množství dat, optimalizaci rychlosti a provádění dotazů. Z výsledků srovnání Cassandry a MongoDB zjistíme, že mají své výhody v závislosti na požadavcích implementace a objemu dat, se kterými je třeba pracovat.


  1. Java+Redis vs efektivita Java pro datově náročné aplikace?

  2. MongoDB:upsert dílčí dokument

  3. Provozní správa databáze

  4. 'upsert' ve vloženém dokumentu