SQL je nejvíce preferovaný způsob zapojení relačních databází, pokud jde o dotazování. Je zřejmé, že uživatelé by pracovali s relačními databázemi, jako je MySQL a PostgreSQL, které využívají funkci dotazování SQL. Obecně je SQL snadno srozumitelný, a proto se stal široce používaným zejména v relačních databázích.
Při pokusu o zapojení široké sady dokumentů do databáze je však SQL poměrně složitý. Stručně řečeno, není určen pro databáze dokumentů, protože přichází s řadou neúspěchů. Například se nemůžete snadno dotazovat na dokumenty vestavěného pole nebo spíše budete muset navrhnout podprogram, který bude iterovat a filtrovat vrácená data, aby poskytl požadované výsledky. V důsledku toho to povede k prodloužení doby provádění. Ale dobrá znalost SQL poskytne lepší základ pro interakci s MongoDB od určitého bodu, než začít od nuly.
V tomto blogu budeme používat program Studio 3T k zobrazení různých připojovacích dotazů SQL a toho, jak je můžete přepracovat na dotazy MongoDB, abyste dosáhli lepšího výkonu. Program lze stáhnout z tohoto odkazu.
Připojení SQL k MongoDB
Existuje několik ovladačů nebo spíše rozhraní, pomocí kterých můžete pomocí SQL komunikovat s MongoDB, například ODBC. ODBC znamená Open Database Connectivity. Toto je jednoduše rozhraní, které umožňuje aplikacím přistupovat k datům v systémech správy databází pomocí SQL jako standardního procesu přístupu k těmto datům. Přichází s další výhodou interoperability, kdy jedna aplikace může přistupovat k více systémům správy databází.
V tomto blogu vytvoříme a otestujeme kód z SQL a poté jej optimalizujeme pomocí agregačního editoru pro vytvoření dotazu MongoDB.
Mapovací graf pro SQL na MongoDB
Než půjdeme do mnoha podrobností, musíme porozumět základním vztahům mezi těmito 2 databázemi, zejména klíčovými slovy v konceptu dotazování.
Terminologie a koncepty
SQL | MongoDB |
---|---|
Tabulka Řádek Sloupec Spojení tabulky | Sbírka dokument BSON pole $lookup |
Primární klíč v SQL definuje jedinečný sloupec, který v podstatě uspořádává řádky v pořadí podle času záznamu. Na druhou stranu primární klíč v MongoDB je jedinečné pole pro uložení dokumentu a zajištění toho, aby indexovaná pole neukládala duplicitní hodnoty.
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 zdarmaKorelace mezi SQL a MongoDB
Řekněme, že máme data studenta a chceme tato data zaznamenat do databáze SQL i MongoDB. Jednoduchý studentský objekt můžeme definovat jako:
{
name: ‘James Washington’,
age: 15,
grade: A,
Score: 10.5
}
Při vytváření SQL tabulky musíme definovat názvy sloupců a datový typ, zatímco v MongoDB se kolekce automaticky vytvoří při prvním vložení.
Níže uvedená tabulka nám pomůže pochopit, jak lze některé příkazy SQL zapsat v MongoDB.
Příkaz schématu SQL | Výkazy schématu MongoDB |
---|---|
Vložení dokumentu do databáze | Můžeme definovat návrh schématu pomocí některých modulů, jako je mongoose, a definovat pole jako objekt, spíše než přímo vkládat dokument, abychom ukázali korelaci. ID primárního souboru bude vygenerováno automaticky během vkládání dokumentu. Vložení nového dokumentu k vytvoření kolekce |
Použití příkazu ADD k přidání nového sloupce do existující tabulky. | Struktura sbírkových dokumentů není dobře definována, a proto aktualizujte dokumenty na úrovni dokumentů pomocí updateMany() |
Vypuštění sloupce (jednotek) | Chcete-li vypustit pole (jednotky) |
Chcete-li upustit stůl studenti | Chcete-li vyřadit studenty ze sbírky |
Příkaz SQL Select | Příkazy hledání MongoDB |
---|---|
Vyberte všechny řádky | Vyberte všechny dokumenty |
Chcete-li vrátit pouze určité sloupce. | Chcete-li vrátit pouze konkrétní pole. Ve výchozím nastavení je vráceno pole _id, pokud není v procesu projekce uvedeno jinak. Nastavení _id:0 znamená, že pouze vrácený dokument bude mít pouze hodnoty názvu a hodnocení. |
Chcete-li vybrat konkrétní řádek(y) s nějakou odpovídající hodnotou sloupce. | Chcete-li vybrat konkrétní dokument(y) s nějakou odpovídající hodnotou pole. |
Výběr řádků se sloupcem, jehož hodnoty obsahují některé znaky jako zadaná hodnota kritéria | Výběr dokumentů s polem, jehož hodnoty obsahují některé znaky jako zadaná hodnota kritéria |
Chcete-li vrátit řádky ve vzestupném pořadí pomocí primárního klíče. | Chcete-li vrátit dokumenty vzestupně pomocí primárního klíče |
Seskupit vrácené řádky podle nějakého sloupce (stupně) | Seskupit vrácené dokumenty podle nějakého pole (stupně) |
Omezení počtu vrácených řádků a přeskočení některých | Omezení počtu vrácených dokumentů a přeskakování řádků |
Základní možností je vědět, jak se náš dotaz provádí, a proto použijte metodu vysvětlení. | |
Příkaz aktualizace SQL | Prohlášení o aktualizaci MongoDB |
---|---|
Aktualizujte sloupec hodnocení pro studenty, jejichž věk je 15 nebo více | Zde používáme některé operátory jako $gt, $lt a $lte. |
Zvýšení některé hodnoty sloupce | |
příkaz SQL delete | Příkazy k odstranění MongoDB |
---|---|
Chcete-li odstranit všechny řádky | Chcete-li odstranit všechny dokumenty. |
Chcete-li odstranit konkrétní řádek, kde má některý sloupec určitou hodnotu. | |
Tato vzorová mapovací tabulka vám umožní lépe porozumět tomu, co se naučíme v našem dalším tématu.
SQL a Studio 3T
Studio 3T je jedním z dostupných programů, který pomáhá propojit SQL a MongoDB. Má funkci SQL Query pro vylepšení manipulace s SQL. Dotaz je interpretován do prostředí Mongo, aby se vytvořil jednoduchý kód dotazu v ekvivalentu jazyka MongoDB. Kromě jednoduchých dotazů nyní aplikace Studio 3T umí provádět připojení.
Pro naše ukázková data výše, po připojení vaší databáze ve Studiu 3T, můžeme použít okno SQL k nalezení dokumentu, který odpovídá našim kritériím, tj.:
SELECT * FROM students WHERE name LIKE 'James%';
Pokud máte dokument s polem názvu nastaveným na hodnotu James, bude vrácen. Podobně, pokud kliknete na záložku kódu dotazu, zobrazí se vám okno s ekvivalentním kódem MongoDB. Pro tvrzení výše budeme mít:
db.getCollection("students").find(
{
"name" : /^James.*$/i
}
);
Shrnutí
Někdy možná budete chtít rychlý způsob interakce s MongoDB ze znalostí, které máte o SQL. Naučili jsme se některé základní podobnosti kódu mezi SQL a jeho ekvivalentem v MongoDB. Dále některé programy, jako je Studio 3T, mají dobře zavedené nástroje pro převod SQL dotazu do ekvivalentního jazyka MongoDB a doladí tento dotaz pro lepší výsledky. Pro většinu z nás to bude skvělý nástroj, který nám usnadní práci a zajistí, že jakýkoli kód, který nakonec máme, bude velmi optimální pro výkon naší databáze. V části 2 tohoto blogu se dozvíme o SQL INNER JOIN v MongoDB.