SQL er den mest foretrukne måde at engagere relationelle databaser på, hvad angår forespørgsler. Det er underforstået, at brugere ville have arbejdet med relationelle databaser såsom MySQL og PostgreSQL, der anvender SQL-forespørgselsfunktionen. Generelt er SQL let at forstå og blev derfor meget brugt, især i relationelle databaser.
SQL er dog ret kompleks, når man forsøger at engagere et bredt sæt dokumenter i en database. I en nøddeskal er det ikke beregnet til dokumentdatabaser, da det kommer med en række tilbageslag. For eksempel kan du ikke forespørge indlejrede array-dokumenter med lethed, eller rettere, du bliver nødt til at designe et underprogram til at gentage og filtrere returnerede data for at give de nødvendige resultater. Dette vil følgelig resultere i en forøgelse af eksekveringsvarigheden. Men at have en god forståelse af SQL vil give et bedre grundlag for at interagere med MongoDB fra et tidspunkt i stedet for at starte fra bunden.
I denne blog vil vi bruge Studio 3T-programmet til at vise de forskellige SQL join-forespørgsler, og hvordan du kan omdesigne dem til MongoDB-forespørgsler for at opnå bedre ydeevne. Programmet kan downloades fra dette link.
Tilslutning af SQL til MongoDB
Der er flere drivere eller rettere interfaces, hvorigennem du kan bruge SQL til at kommunikere med MongoDB, for eksempel ODBC. ODBC står for Open Database Connectivity. Dette er simpelthen en grænseflade, der tillader applikationer at få adgang til data i databasestyringssystemer ved hjælp af SQL som standardprocessen til at få adgang til disse data. Det kommer med en ekstra interoperabilitetsfordel, hvorved en enkelt applikation kan få adgang til flere databasestyringssystemer.
I denne blog vil vi producere og teste kode fra SQL og derefter optimere den via en aggregeringseditor for at producere en MongoDB-forespørgsel.
Kortlægningsdiagram for SQL til MongoDB
Før vi går i detaljer, er vi nødt til at forstå de grundlæggende relationer mellem disse 2 databaser, især søgeord i forespørgselskonceptet.
Terminologi og koncepter
SQL | MongoDB |
---|---|
Tabel Række Kolonne Tabelsammenkædning | Samling BSON-dokument Felt $lookup |
Den primære nøgle i SQL definerer en unik kolonne, der grundlæggende arrangerer rækkerne i rækkefølge efter rekordtid. På den anden side er den primære nøgle i MongoDB et unikt felt til at opbevare et dokument og sikre, at indekserede felter ikke gemmer duplikerede værdier.
Severalnines Bliv en MongoDB DBA - Bring MongoDB to ProductionFå flere oplysninger om, hvad du skal vide for at implementere, overvåge, administrere og skalere MongoDBDownload gratisKorrelation mellem SQL og MongoDB
Lad os sige, at vi har en elevdata, og vi ønsker at registrere disse data i både SQL-database og MongoDB. Vi kan definere et simpelt elevobjekt som:
{
name: ‘James Washington’,
age: 15,
grade: A,
Score: 10.5
}
Ved oprettelse af en SQL-tabel skal vi definere kolonnenavne og datatype, mens der i MongoDB automatisk oprettes en samling under den første indsættelse.
Tabellen nedenfor hjælper os med at forstå, hvordan noget af SQL-sætningen kan skrives i MongoDB.
SQL-skemaerklæring | MongoDB Schema Statements |
---|---|
For at indsætte et dokument i databasen | Vi kan definere et skemadesign ved hjælp af nogle moduler såsom mongoose og definere felterne som et objekt i stedet for at indsætte et dokument direkte for at vise sammenhængen. Det primære arkiverede id vil blive genereret automatisk under indsættelsen af et dokument. Indsættelse af et nyt dokument for at oprette samlingen |
Brug af ADD-sætningen til at tilføje en ny kolonne til den eksisterende tabel. | Strukturen af indsamlingsdokumenter er ikke veldefineret, og derfor opdaterer dokumenter på dokumentniveau ved hjælp af updateMany() |
Sådan slettes en kolonne (enheder) | Sådan slettes et felt (enheder) |
At droppe et bord studerende | At droppe indsamlingsstuderende |
SQL Select-sætning | MongoDB find erklæringer |
---|---|
Vælg alle rækker | Vælg alle dokumenter |
For kun at returnere specifikke kolonner. | For kun at returnere specifikke felter. Som standard returneres _id-feltet, medmindre andet er angivet i projektionsprocessen. Indstilling af _id:0 betyder, at kun det returnerede dokument vil have navnet og karakterobjektets værdier. |
For at vælge bestemte række(r) med en passende kolonneværdi. | For at vælge specifikke dokument(er) med en eller anden matchende feltværdi. |
Valg af rækker med en kolonne, hvis værdier har nogle tegn som den angivne kriterieværdi | Valg af dokumenter med et felt, hvis værdier har nogle tegn som den angivne kriterieværdi |
For at returnere rækkerne i stigende rækkefølge ved hjælp af den primære nøgle. | For at returnere dokumenterne i stigende retning ved hjælp af den primære nøgle |
At gruppere returnerede rækker i overensstemmelse med en kolonne (karakter) | At gruppere returnerede dokumenter i overensstemmelse med et eller andet felt (karakter) |
Begrænsning af antallet af returnerede rækker og spring nogle over | Begrænsning af antallet af returnerede dokumenter og spring over rækker |
En væsentlig mulighed er at vide, hvordan vores forespørgsel udføres, og brug derfor forklaringsmetoden. | |
SQL-opdateringserklæring | MongoDB-opdateringserklæringer |
---|---|
Opdater karakterkolonnen for elever, hvis alder er lig med 15 år eller derover | Her bruger vi nogle operatorer såsom $gt, $lt og $lte. |
Forøgelse af en eller anden kolonneværdi | |
SQL-sletningserklæring | MongoDB fjerner erklæringer |
---|---|
For at slette alle rækker | For at slette alle dokumenter. |
For at slette en bestemt række, hvor en kolonne har en bestemt værdi. | |
Denne eksempelkortlægningstabel vil gøre dig i stand til at få en bedre forståelse af, hvad vi skal lære i vores næste emne.
SQL og Studio 3T
Studio 3T er et af de tilgængelige programmer, der hjælper med at forbinde SQL og MongoDB. Den har en SQL Query-funktion til at forbedre en til at manipulere SQL. Forespørgslen tolkes til Mongo shell for at producere en simpel forespørgselskode i MongoDB sprogækvivalent. Udover at lave simple forespørgsler kan Studio 3T-applikationen nu lave joins.
For vores eksempeldata ovenfor, efter at have tilsluttet din database i Studio 3T, kan vi bruge SQL-vinduet til at finde det dokument, der matcher vores kriterier, dvs.:
SELECT * FROM students WHERE name LIKE 'James%';
Hvis du har et dokument med navnefeltet indstillet til værdien James, vil det blive returneret. På samme måde, hvis du klikker på forespørgselskodefanen, vil du blive præsenteret for et vindue med den tilsvarende MongoDB-kode. For udsagnet ovenfor vil vi have:
db.getCollection("students").find(
{
"name" : /^James.*$/i
}
);
Oversigt
Nogle gange vil du måske have en hurtig måde at interagere med MongoDB fra den viden, du har om SQL. Vi har lært nogle grundlæggende kodeligheder mellem SQL og dets ækvivalent i MongoDB. Yderligere har nogle programmer såsom Studio 3T veletablerede værktøjer til at konvertere SQL-forespørgslen til MongoDB-ækvivalent sprog og finjustere denne forespørgsel for bedre resultater. Nå, for de fleste af os vil dette være et fantastisk værktøj til at gøre vores arbejde let og sikre, at den kode vi har i sidste ende er meget optimal for vores databases ydeevne. I del 2 af denne blog skal vi lære om SQL INNER JOIN i MongoDB.