SQL jest najbardziej preferowanym sposobem angażowania relacyjnych baz danych w zakresie zapytań. Zrozumiałe jest, że użytkownicy pracowaliby z relacyjnymi bazami danych, takimi jak MySQL i PostgreSQL, które wykorzystują funkcję zapytań SQL. Ogólnie rzecz biorąc, SQL jest łatwy do zrozumienia i dlatego stał się szeroko stosowany, zwłaszcza w relacyjnych bazach danych.
Jednak SQL jest dość złożony, gdy próbuje się zaangażować szeroki zestaw dokumentów w bazie danych. Krótko mówiąc, nie jest przeznaczony do baz danych dokumentów, ponieważ ma wiele wad. Na przykład, nie można z łatwością przeszukiwać dokumentów osadzonej tablicy, a raczej trzeba zaprojektować podprogram do iteracji i filtrowania zwracanych danych w celu uzyskania wymaganych wyników. W konsekwencji spowoduje to zwiększenie czasu wykonania. Ale dobre zrozumienie SQL zapewni lepsze podstawy do interakcji z MongoDB od pewnego momentu, zamiast zaczynać od zera.
W tym blogu będziemy używać programu Studio 3T, aby pokazać różne zapytania sprzężenia SQL i sposoby ich przeprojektowania na zapytania MongoDB w celu uzyskania lepszej wydajności. Program można pobrać z tego linku.
Łączenie SQL z MongoDB
Istnieje kilka sterowników, a raczej interfejsów, przez które można używać SQL do komunikacji z MongoDB, na przykład ODBC. ODBC to skrót od Open Database Connectivity. Jest to po prostu interfejs, który umożliwia aplikacjom dostęp do danych w systemach zarządzania bazami danych przy użyciu SQL jako standardowego procesu uzyskiwania dostępu do tych danych. Ma dodatkową zaletę interoperacyjności, dzięki której pojedyncza aplikacja może uzyskać dostęp do wielu systemów zarządzania bazami danych.
W tym blogu będziemy tworzyć i testować kod z SQL, a następnie optymalizować go za pomocą edytora agregacji, aby utworzyć zapytanie MongoDB.
Mapowanie wykresu dla SQL do MongoDB
Zanim przejdziemy do wielu szczegółów, musimy zrozumieć podstawowe relacje między tymi 2 bazami danych, zwłaszcza słowa kluczowe w koncepcji zapytań.
Terminologia i koncepcje
SQL | MongoDB |
---|---|
Tabela Wiersz Kolumna Łączenia tabel | Kolekcja Dokument BSON Pole $lookup |
Klucz podstawowy w SQL definiuje unikalną kolumnę, która zasadniczo porządkuje wiersze według czasu zapisu. Z drugiej strony klucz podstawowy w MongoDB jest unikalnym polem do przechowywania dokumentu i zapewnia, że indeksowane pola nie przechowują zduplikowanych wartości.
Kilkadziesiąt — Zostań administratorem baz danych MongoDB — wprowadzenie MongoDB do produkcjiDowiedz się, co trzeba wiedzieć, aby wdrażać, monitorować, zarządzać i skalować MongoDB. Pobierz za darmoKorelacja między SQL i MongoDB
Załóżmy, że mamy dane ucznia i chcemy je zapisać zarówno w bazie danych SQL, jak i MongoDB. Możemy zdefiniować prosty obiekt ucznia jako:
{
name: ‘James Washington’,
age: 15,
grade: A,
Score: 10.5
}
Tworząc tabelę SQL, musimy zdefiniować nazwy kolumn i typ danych, podczas gdy w MongoDB kolekcja zostanie utworzona automatycznie podczas pierwszego wstawiania.
Poniższa tabela pomoże nam zrozumieć, w jaki sposób niektóre instrukcje SQL można napisać w MongoDB.
Schemat SQL | Wyciągi schematu MongoDB |
---|---|
Aby wstawić dokument do bazy danych | Możemy zdefiniować projekt schematu za pomocą niektórych modułów, takich jak mangusta, i zdefiniować pola jak obiekt, zamiast wstawiać dokument bezpośrednio, aby pokazać korelację. Główny identyfikator pola zostanie wygenerowany automatycznie podczas wstawiania dokumentu. Wstawianie nowego dokumentu w celu utworzenia kolekcji |
Użycie instrukcji ADD, aby dodać nową kolumnę do istniejącej tabeli. | Struktura dokumentów kolekcji nie jest dobrze zdefiniowana, dlatego aktualizuj dokumenty na poziomie dokumentu za pomocą funkcji updateMany() |
Aby upuścić kolumnę (jednostki) | Aby upuścić pole (jednostki) |
Aby upuścić tabelę uczniowie | Aby usunąć uczniów z kolekcji |
Instrukcja SQL Select | Wyciągi wyszukiwania MongoDB |
---|---|
Wybierz wszystkie wiersze | Wybierz wszystkie dokumenty |
Aby zwrócić tylko określone kolumny. | Aby zwrócić tylko określone pola. Domyślnie zwracane jest pole _id, chyba że w procesie projekcji określono inaczej. Ustawienie _id:0 oznacza, że tylko zwrócony dokument będzie miał tylko nazwę i wartości obiektu oceny. |
Aby wybrać określone wiersze z odpowiednią wartością kolumny. | Aby wybrać określony dokument(y) z odpowiednią wartością pola. |
Wybieranie wierszy z kolumną, której wartości mają kilka znaków jako wartość podanego kryterium | Wybieranie dokumentów z polem, którego wartość zawiera kilka znaków jako wartość podanego kryterium |
Aby zwrócić wiersze w kolejności rosnącej za pomocą klucza podstawowego. | Aby zwrócić dokumenty rosnąco za pomocą klucza podstawowego |
Aby pogrupować zwrócone wiersze zgodnie z jakąś kolumną (oceną) | Grupowanie zwracanych dokumentów zgodnie z pewnym polem (oceną) |
Ograniczanie liczby zwracanych wierszy i pomijanie niektórych | Ograniczenie liczby zwracanych dokumentów i pomijanie wierszy |
Podstawową opcją jest wiedzieć, jak nasze zapytanie jest wykonywane, dlatego użyj metody wyjaśnij. | |
Oświadczenie SQL Update | Wyciągi dotyczące aktualizacji MongoDB |
---|---|
Zaktualizuj kolumnę ocen dla uczniów w wieku co najmniej 15 lat | Tutaj używamy niektórych operatorów, takich jak $gt, $lt i $lte. |
Zwiększanie wartości niektórych kolumn | |
Instrukcja usunięcia SQL | MongoDB usuń wyciągi |
---|---|
Aby usunąć wszystkie wiersze | Aby usunąć wszystkie dokumenty. |
Aby usunąć określony wiersz, w którym jakaś kolumna ma określoną wartość. | |
Ta przykładowa tabela mapowania pozwoli Ci lepiej zrozumieć, czego nauczymy się w następnym temacie.
SQL i Studio 3T
Studio 3T to jeden z dostępnych programów, który pomaga łączyć SQL i MongoDB. Posiada funkcję SQL Query do ulepszania jednego do manipulowania SQL. Zapytanie jest interpretowane w powłoce Mongo w celu utworzenia prostego kodu zapytania w odpowiedniku języka MongoDB. Oprócz wykonywania prostych zapytań aplikacja Studio 3T może teraz wykonywać połączenia.
W przypadku naszych przykładowych danych powyżej, po połączeniu bazy danych w Studio 3T, możemy użyć okna SQL, aby znaleźć dokument spełniający nasze kryteria, tj.:
SELECT * FROM students WHERE name LIKE 'James%';
Jeśli masz dokument z polem nazwy ustawionym na wartość James, zostanie on zwrócony. Podobnie, jeśli klikniesz na zakładkę z kodem zapytania, pojawi się okno z równoważnym kodem MongoDB. W przypadku powyższego oświadczenia będziemy mieć:
db.getCollection("students").find(
{
"name" : /^James.*$/i
}
);
Podsumowanie
Czasami możesz potrzebować szybkiego sposobu interakcji z MongoDB na podstawie posiadanej wiedzy na temat SQL. Poznaliśmy podstawowe podobieństwa kodu między SQL a jego odpowiednikiem w MongoDB. Co więcej, niektóre programy, takie jak Studio 3T, mają dobrze ugruntowane narzędzia do konwersji zapytania SQL na język równoważny MongoDB i dostrajania tego zapytania w celu uzyskania lepszych wyników. Cóż, dla większości z nas będzie to świetne narzędzie ułatwiające naszą pracę i zapewniające, że nasz kod jest bardzo optymalny dla wydajności naszej bazy danych. W części 2 tego bloga dowiemy się o SQL INNER JOIN w MongoDB.