SQL is de meest geprefereerde manier om relationele databases te gebruiken voor zover het query's betreft. Het is duidelijk dat gebruikers zouden hebben gewerkt met relationele databases zoals MySQL en PostgreSQL die gebruikmaken van de SQL-queryfunctie. Over het algemeen is SQL gemakkelijk te begrijpen en werd daarom veel gebruikt, vooral in relationele databases.
SQL is echter vrij complex wanneer u probeert een brede reeks documenten in een database te betrekken. In een notendop, het is niet bedoeld voor documentdatabases, omdat het gepaard gaat met een aantal tegenslagen. U kunt bijvoorbeeld niet gemakkelijk ingesloten array-documenten opvragen, of u moet een subprogramma ontwerpen om de geretourneerde gegevens te herhalen en te filteren om de vereiste resultaten te krijgen. Dit resulteert dus in een verhoging van de uitvoeringsduur. Maar een goed begrip van SQL zal een betere basis bieden voor interactie met MongoDB vanaf een bepaald punt in plaats van helemaal opnieuw te beginnen.
In deze blog zullen we het Studio 3T-programma gebruiken om de verschillende SQL-joinquery's te laten zien en hoe u deze opnieuw kunt ontwerpen in MongoDB-query's om betere prestaties te bereiken. Het programma kan worden gedownload via deze link.
SQL verbinden met MongoDB
Er zijn verschillende stuurprogramma's of liever interfaces waarmee u SQL kunt gebruiken om met MongoDB te communiceren, bijvoorbeeld ODBC. ODBC staat voor Open Database Connectiviteit. Dit is gewoon een interface waarmee toepassingen toegang kunnen krijgen tot gegevens in databasebeheersystemen met SQL als het standaardproces voor toegang tot die gegevens. Het wordt geleverd met een extra interoperabiliteitsvoordeel waarbij een enkele applicatie toegang heeft tot meerdere databasebeheersystemen.
In deze blog zullen we code van SQL produceren en testen en deze vervolgens optimaliseren via een aggregatie-editor om een MongoDB-query te produceren.
Kaartschema voor SQL naar MongoDB
Voordat we ingaan op veel details, moeten we de basisrelaties tussen deze 2 databases begrijpen, met name trefwoorden in het zoekconcept.
Terminologie en concepten
SQL | MongoDB |
---|---|
Tabel Rij Kolom Tabel samenvoegingen | Verzameling BSON-document Veld $lookup |
De primaire sleutel in SQL definieert een unieke kolom die de rijen in feite in volgorde van recordtijd rangschikt. Aan de andere kant is de primaire sleutel in MongoDB een uniek veld voor het bewaren van een document en om ervoor te zorgen dat geïndexeerde velden geen dubbele waarden opslaan.
Multiplenines Word een MongoDB DBA - MongoDB naar productie brengenLeer over wat u moet weten om MongoDB gratis te implementeren, bewaken, beheren en schalenCorrelatie tussen SQL en MongoDB
Laten we zeggen dat we studentgegevens hebben en dat we deze gegevens willen vastleggen in zowel de SQL-database als MongoDB. We kunnen een eenvoudig studentobject definiëren als:
{
name: ‘James Washington’,
age: 15,
grade: A,
Score: 10.5
}
Bij het maken van een SQL-tabel moeten we de kolomnamen en het gegevenstype definiëren, terwijl in MongoDB automatisch een verzameling wordt gemaakt tijdens de eerste invoeging.
De onderstaande tabel helpt ons te begrijpen hoe sommige SQL-instructies in MongoDB kunnen worden geschreven.
SQL-schema-instructie | MongoDB-schemaverklaringen |
---|---|
Een document in de database invoegen | We kunnen een schemaontwerp definiëren met behulp van enkele modules zoals mangoest en de velden definiëren als een object in plaats van direct een document in te voegen om de correlatie te tonen. De primaire gearchiveerde id wordt automatisch gegenereerd tijdens het invoegen van een document. Een nieuw document invoegen om de collectie te maken |
Het ADD-statement gebruiken om een nieuwe kolom aan de bestaande tabel toe te voegen. | De structuur van incassodocumenten is niet goed gedefinieerd en update daarom documenten op documentniveau met de updateMany() |
Een kolom neerzetten (eenheden) | Een veld (eenheden) neerzetten |
Een tafel laten vallen studenten | Collectiestudenten laten vallen |
SQL Select-instructie | MongoDB-statements vinden |
---|---|
Selecteer alle rijen | Selecteer alle documenten |
Alleen specifieke kolommen retourneren. | Alleen specifieke velden retourneren. Standaard wordt het veld _id geretourneerd, tenzij anders aangegeven in het projectieproces. De _id instellen:0 betekent dat alleen het geretourneerde document de naam en de waarde van het cijferobject heeft. |
Om specifieke rij(en) te selecteren met een overeenkomende kolomwaarde. | Om specifieke documenten te selecteren met een overeenkomende veldwaarde. |
Rijen selecteren met een kolom waarvan de waarden enkele tekens bevatten als de opgegeven criteriawaarde | Documenten selecteren met een veld waarvan de waarden enkele tekens bevatten als de opgegeven criteriawaarde |
Om de rijen in oplopende volgorde te retourneren met de primaire sleutel. | Om de documenten in oplopend terug te geven met de primaire sleutel |
Geretourneerde rijen groeperen in overeenstemming met een kolom (cijfer) | Geretourneerde documenten groeperen in overeenstemming met een bepaald veld (cijfer) |
Het aantal geretourneerde rijen beperken en enkele overslaan | Het aantal geretourneerde documenten beperken en rijen overslaan |
Een essentiële optie is om te weten hoe onze query wordt uitgevoerd, gebruik daarom de explain-methode. | |
SQL Update-instructie | MongoDB-updateverklaringen |
---|---|
Werk de cijferkolom bij voor studenten van wie de leeftijd gelijk is aan 15 of hoger | Hier gebruiken we enkele operatoren zoals $gt, $lt en $lte. |
Een kolomwaarde verhogen | |
SQL delete-instructie | MongoDB-verklaringen verwijderen |
---|---|
Alle rijen verwijderen | Om alle documenten te verwijderen. |
Om een specifieke rij te verwijderen waar een kolom een specifieke waarde heeft. | |
Met deze voorbeeldtabel voor toewijzingen krijgt u een beter begrip van wat we in ons volgende onderwerp gaan leren.
SQL en Studio 3T
Studio 3T is een van de beschikbare programma's die helpt om SQL en MongoDB met elkaar te verbinden. Het heeft een SQL Query-functie voor het verbeteren van een om SQL te manipuleren. De query wordt geïnterpreteerd in Mongo-shell om een eenvoudige querycode te produceren in MongoDB-taalequivalent. Naast het uitvoeren van eenvoudige query's, kan de Studio 3T-applicatie nu ook joins doen.
Voor onze voorbeeldgegevens hierboven kunnen we, nadat we uw database in Studio 3T hebben aangesloten, het SQL-venster gebruiken om het document te vinden dat aan onze criteria voldoet, namelijk:
SELECT * FROM students WHERE name LIKE 'James%';
Als u een document met naamveld hebt ingesteld op de waarde James, wordt dit geretourneerd. Evenzo, als u op de querycode-tab klikt, krijgt u een venster te zien met de equivalente MongoDB-code. Voor de bovenstaande verklaring hebben we:
db.getCollection("students").find(
{
"name" : /^James.*$/i
}
);
Samenvatting
Soms wil je misschien een snelle manier van interactie met MongoDB vanuit de kennis die je hebt over SQL. We hebben enkele basiscode-overeenkomsten geleerd tussen SQL en het equivalent daarvan in MongoDB. Verder hebben sommige programma's, zoals Studio 3T, gevestigde tools om de SQL-query om te zetten in MongoDB-equivalente taal en deze query te verfijnen voor betere resultaten. Welnu, voor de meesten van ons zal dit een geweldig hulpmiddel zijn om ons werk gemakkelijk te maken en ervoor te zorgen dat de code die we uiteindelijk hebben, zeer optimaal is voor de prestaties van onze database. In deel 2 van deze blog gaan we leren over SQL INNER JOIN in MongoDB.