Existuje tolik systémů pro správu databází (DBMS), ze kterých si můžete vybrat, od relačních po nerelační DBMS. V posledních letech byl relační DBMS dominantnější, ale s nedávnými trendy datové struktury se stávají populárnější nerelační DBMS. Možnosti pro relační DBMS jsou zcela zřejmé:MySQL, PostgreSQL a MS SQL. Na druhou stranu, MongoDB, nerelační DBM, se v podstatě zvedlo díky své schopnosti zpracovávat velkou sadu dat. Každý výběr má své klady a zápory, ale váš výběr bude záviset hlavně na potřebách vaší aplikace, protože oba slouží v různých výklencích. V tomto článku však budeme diskutovat o výhodách používání MongoDB přes MySQL.
Výhody používání MongoDB přes MySQL
- Rychlost a výkon
- Vysoká dostupnost a cloud computing
- Flexibilita schématu
- Je třeba se zvětšit
- Funkce vkládání
- Bezpečnostní model
- Údaje založené na poloze
- Rozsáhlá podpora dotazovacího jazyka
Rychlost a výkon
To je jedna z hlavních výhod používání MongoDB přes MySQL, zvláště když je zapojena velká sada nestrukturovaných dat. MongoDB ve výchozím nastavení podporuje vysokou míru vkládání před bezpečností transakcí. Tato funkce není v MySQL dostupná, a proto například pokud chcete do DBM uložit velké množství dat najednou, v případě MySQL to budete muset udělat jedno po druhém. Ale v případě MongoDB s dostupností funkce insertMany() můžete bezpečně provést více vložení. Pozorujeme-li některé z dotazovacích chování těchto dvou, můžeme shrnout různé požadavky na operace pro 1 milion dokumentů na obrázku níže.
V případě aktualizace, což je operace zápisu, trvá MongoDB 0,002 sekundy k aktualizaci všech studentských e-mailů, zatímco MySQL trvá 0,2491 s k provedení stejného úkolu.
Z ilustrace můžeme usoudit, že MongoDB vyžaduje mnohem méně času než MySQL pro stejné operace. MongoDB je strukturován hlavně tak, že dokumenty jsou základem úložiště, což podporuje velké ukládání dotazů a dat. To znamená, že výkon závisí na dvou klíčových hodnotách, kterými jsou design a škálování. Na druhou stranu má MySQL data uložená v jednotlivé tabulce, takže v určitém okamžiku je třeba před provedením operace zápisu vyhledat celou tabulku.
Vysoká dostupnost a cloud computing
Pro nestabilní prostředí poskytuje MongoDB lepší manipulační techniku než MySQL. Je tomu tak proto, že aktivním sekundárním uzlům trvá velmi kratší dobu, než zvolí nový primární uzel, a tak je v okamžiku selhání snadná administrace. Kromě toho díky komplexním sekundárním indexům a nativní replikaci je vytvoření zálohy pro databázi MongoDB ve srovnání s MySQL docela snadné, protože ta má integrovanou podporu replikace.
Stručně řečeno, nastavení sady serverů, které mohou fungovat jako Master-Slave, je v MongoDB snadné a rychlé než v MySQL. Kromě toho je zotavení po selhání clusteru okamžité, automatické a bezpečné. Pro MySQL neexistuje žádné jasné oficiální řešení pro zajištění převzetí služeb při selhání mezi master a slave v případě selhání.
Řešení cloudových úložišť vyžadují, aby byla data hladce rozložena na různé servery, aby bylo možné škálovat. MongoDB dokáže načíst velký objem dat ve srovnání s MySQL a díky vestavěnému shardingu je snadné rozdělit a rozložit data na více serverů jako způsob využití úsporného řešení podle výhod cloudového úložiště.
Flexibilita schématu
MongoDB je bez schématu, takže různé dokumenty ve stejné kolekci mohou mít stejná nebo odlišná pole. To znamená, že neexistuje žádná omezení na strukturu dokumentu pro každou vložku nebo aktualizaci, takže změny datového modelu nebudou mít velký dopad. Samozřejmě existují scénáře, které se mohou rozhodnout pro použití nedefinovaného schématu, například pokud denormalizujete schéma databáze nebo když vaše databáze roste, ale vaše schéma je nestabilní. MongoDB proto umožňuje přidávat různé typy dat podle potřeby.
Na druhou stranu je MySQL tabulkově orientovaný, přičemž každý řádek musí mít stejné sloupce jako ostatní řádky. Přidání nového sloupce by vyžadovalo spuštění operace ALTER, která je z hlediska výkonu poměrně nákladná, protože bude muset zamknout celou databázi. To je zejména případ, kdy tabulka naroste přes 10 GB, MongoDB tento problém nemá.
Díky flexibilnímu schématu je snadné vyvinout a udržovat čistší kód. Kromě toho MongoDB poskytuje možnost použití validátoru JSON v případě, že chcete zajistit určitou integritu a konzistenci dat pro vaši kolekci, takže před vložením nebo aktualizací dokumentu můžete provést určité ověření.
Potřeba růst
Škálování databází není snadný úkol, zvláště s MySQL, může mít za následek zhoršení výkonu, když je překročeno 5-10 GB paměti na tabulku. S MongoDB to není problém, protože je možné rozdělit a rozdělit databázi pomocí vestavěné funkce sharding. Jakmile je specifikován shard klíč a je povoleno sharding, data jsou rozdělena rovnoměrně podle shard klíče. Pokud je přidán nový fragment, dojde k automatickému vyrovnání. Sharding v podstatě umožňuje horizontální škálování, které je v MySQL obtížné implementovat. Kromě toho má MongoDB vestavěnou replikaci, pomocí které sady replik vytvářejí více kopií dat. Každý člen této sady má v kterémkoli bodě procesu roli buď jako primární, nebo sekundární.
Čtení a zápisy se provádějí na primární a poté se replikují na sekundární. S touto předností může být v případě nekonzistence dat nebo selhání instance zvolen nový člen, který bude jednat jako primární.
Funkce vkládání
Na rozdíl od MySQL, kde nemůžete vkládat data do pole, MongoDB nabízí lepší techniku vkládání pro související data. Jakkoli můžete provést JOIN pro tabulky v MySQL, můžete skončit s tolika tabulkami, přičemž některé budou zbytečné, zvláště pokud nezahrnují tolik polí. V případě MongoDB se můžete rozhodnout vložit data do pole pro související data nebo odkaz z jiné kolekce, pokud očekáváte, že dokument v budoucnu přesáhne velikost dokumentu JSON.
Například pokud máme data pro uživatele, u kterých chceme zachytit jejich adresy a nějaké další informace, v případě MongoDB můžeme snadno mít jednoduchou strukturu jako
{
id:1,
name:'George Bush',
gender: 'Male',
age:45,
address:{
City: 'New York',
Street: 'Florida',
Zip_code: 1342243
}
}
Ale v případě MySQL budeme muset v tomto případě vytvořit 2 tabulky s odkazem na id. T.j.
Tabulka podrobností o uživatelích
id | jméno | gender | věk |
---|---|---|---|
1 | George Bush | Muž | 45 |
Tabulka uživatelských adres
id | Město | Ulice | PSČ |
---|---|---|---|
1 | George Bush | Muž | 134224 |
V MySQL budete mít tolik tabulek, se kterými by mohlo být tak hektické pracovat, zvláště pokud jde o škálování. I když lze při načítání těchto dat v MySQL provést spojení tabulek v jediném dotazu, latence je ve srovnání s MongoDB poměrně větší a to je jeden z důvodů, proč výkon MongoDB převyšuje výkon MySQL.
Somenines Staňte se MongoDB DBA – Uvedení MongoDB do produkce Zjistěte, co potřebujete vědět, abyste mohli nasadit, monitorovat, spravovat a škálovat MongoDBDdownload zdarmaModel zabezpečení
Správa databáze (DBA) je v MySQL zcela zásadní, ale není nutná v případě MongoDB. To znamená, že musíte mít DBA, aby upravil schéma v případě MySQL, když se aplikace změní. Na druhou stranu lze v MongoDB provádět úpravy schématu bez DBA, protože je to skvělé pro persistenci třídy a třídu lze stejně serializovat do JSON a uložit. Toto je však osvědčený postup, pokud neočekáváte nárůst objemu dat, jinak budete muset dodržovat některé osvědčené postupy, abyste se vyhnuli nástrahám.
Údaje podle polohy
Aby se zlepšila propustnost operací, zejména operace čtení, MongoDB poskytuje vestavěné speciální funkce, které zlepšují vyhledávání relevantních dat z konkrétních míst, která jsou přesná, a tím urychlují proces. To v případě MySQL není možné.
Podpora bohatého dotazovacího jazyka
Na základě osobního zájmu jako nadšence MongoDB jsem získal svou přitažlivost díky flexibilitě dotazování funkce MongoDB. Co se týče agregačního rámce v pozdějších verzích a funkce MapReduce, lze optimalizovat výsledná data tak, aby vyhovovala vlastním specifikacím. Stejně jako MySQL nabízí také operace, jako je seskupování, řazení a mnoho dalších, MongoDB je poměrně rozsáhlý, zejména s vestavěnými datovými strukturami. Dále, jak již bylo zmíněno dříve, dotazy se v agregačním rámci vracejí s menší latencí, než když bylo třeba provést JOIN v případě MySQL. Například MongoDB nabízí snadný způsob úpravy schématu pomocí operací $set a $unset pro vložené schéma. Ale v případě MySQL je třeba provést příkaz ALTER pro jedinou tabulku, ve které pole existuje, a to je z hlediska výkonu poměrně drahé.
Závěr
Pokud jde o přednosti diskutované výše, stejně jako výběr databáze absolutně závisí na designu aplikace, MongoDB nabízí spoustu flexibility v různých směrech. Pokud hledáte něco, co zajistí lepší výkon, bude pracovat se složitými daty, a proto nepotřebujete žádná omezení v návrhu schématu, budoucí očekávání ohledně růstu databáze a bohaté techniky dotazovacího jazyka, doporučil bych vám zvolit MongoDB.