Udviklet af | MongoDB, Inc. ( i ) |
---|---|
Første version | 2009 |
Sidste version | 5,0 (13. juli 2021) |
Avanceret version |
3.7.1 (16. januar 2018) 4.3.0 (3. juni 2019) |
Depositum | MongoDB på GitHub |
Projektstatus | i aktiv udvikling |
Skrevet i | C ++ , Go , JavaScript , C og Python |
Operativ system | Linux , macOS , Microsoft Windows og OpenBSD |
Type |
NoSQL DBMS Dokumentorienteret database Database management system Source-tilgængelig software ( da ) |
Licens | Server-side licens (inspireret af GNU AGPL v3.0 licens ) til servere og værktøjer; Apache v2.0 (drivere); Creative Commons BY-NC-SA 3.0 (dokumentation) |
Internet side | www.mongodb.com |
MongoDB (fra engelsk humongous som kan oversættes som "store") er en database management system orienteret dokument , dispatchable på et vilkårligt antal computere og kræver ikke foruddefineret data skema. Det er skrevet i C ++ . Serveren og værktøjerne distribueres under SSPL-licensen , driverne under Apache-licensen og dokumentationen under Creative Commons-licensen . Det er en del af NoSQL- bevægelsen .
MongoDB er udviklet siden 2007 af MongoDB. Dette firma arbejdede på et system Cloud computing , bredt distribuerede data til computeren, svarende til tjenesten Google App Engine fra Google .
Det er siden blevet et af de mest anvendte DBMS'er, især for Craigslist , eBay , Foursquare , SourceForge.net , Viacom , pagesjaunes og New York Times websteder .
Siden oktober 2018, MongoDB frigives under Server Side Public License (SSPL), en licens udviklet af projektet. Det erstatter GNU Affero General Public License og er næsten identisk med GNU General Public License version 3 , men kræver, at de, der stiller software til rådighed for offentligheden som en del af en tjeneste, skal stille hele tjenestens kildekode. Tilgængelig under dette licens. SSPL blev sendt til certificering til Open Source Initiative, men blev derefter trukket tilbage på grund af OSI's tilbageholdenhed. Sprogdrivere er tilgængelige under en Apache-licens . Derudover tilbyder MongoDB Inc. proprietære licenser til MongoDB. De seneste versioner, der er licenseret under AGPL version 3, er 4.0.3 (stabil) og 4.1.4.
MongoDB er blevet fjernet fra Debian , Fedora og Red Hat Enterprise Linux distributioner på grund af licensændringen. Fedora har betragtet version 1 af SSPL ikke som en gratis softwarelicens, fordi den "bevidst er designet til at være aggressivt diskriminerende" over for kommercielle brugere.
MongoDB giver dig mulighed for at manipulere strukturerede objekter i BSON-format ( binært JSON ) uden forudbestemt skema. Med andre ord kan nøgler tilføjes når som helst "i farten" uden omkonfiguration af basen.
Data har form af dokumenter, der selv er gemt i samlinger , en samling, der indeholder et hvilket som helst antal dokumenter. Samlinger er som tabeller , og dokumenter er som poster i relationsdatabaser. I modsætning til relationsdatabaser er felterne i en post gratis og kan være forskellige fra en post til en anden inden for den samme samling. Det eneste almindelige og obligatoriske felt er det primære nøglefelt ("id"). Derudover tillader MongoDB ikke meget komplekse standardiserede forespørgsler eller JOIN'er , men giver dig mulighed for at programmere specifikke anmodninger i JavaScript .
For data angivet som følger:
ID | Efternavn | Fornavn | Alder |
---|---|---|---|
6 | DUMOND | Jeans | 43 |
7 | Pilgrim | Franck | NUL |
8 | MARTIN | Emile | 62 |
9 | KONGE | NUL | 51 |
Den tilsvarende kode i lagringsfilen i en tabel (for eksempel csv ) i et regneark (for eksempel Calc fra LibreOffice ) er:
ID,Nom,Prénom,Âge 6,DUMOND,Jean,43 7,PELLERIN,Franck 8,MARTIN,Emile,62 9,KING,,51Bemærk, at en værdi muligvis mangler ( NULL ), men at hver række har det samme antal felter.
For det samme layout (for eksempel en .php- side i en webbrowser) kan en NoSQL-samling forskelligt have forskellige felter på hver række (og endda rede flere felter i træk):
{ "_id": ObjectId("4efa8d2b7d284dad101e4bc7"), "Nom": "DUMOND", "Prénom": "Jean", "Âge": 43 }, { "_id": ObjectId("4efa8d2b7d284dad101e4bc8"), "Nom": "PELLERIN", "Prénom": "Franck", "Adresse": "1 chemin des Loges", "Ville": "VERSAILLES" }, { "_id": ObjectId("4efa8d2b7d284dad101e4bc9"), "Nom": "KING", "Âge": "51", "Adresse": "36 quai des Orfèvres", "Ville": "PARIS" }Vi bemærker straks, at nye felter er blevet føjet til de seneste poster uden nogen indvirkning på den ældste post. Dette er, hvad der gør NoSQL så speciel. Vi bemærker også, at denne opbevaring i form "attribut =" værdi "" er meget tæt på XML . Derudover kan en databasedump ( (en) dump) i SQL-forespørgselssprog også tage denne "attribut =" værdi "" form, men den kan kun bruges, når den genskabes i form af tabeller (i et DBMS ).
Dokumenterne i en MongoDB-samling kan have forskellige felter (bemærk: "_id" -feltet er et obligatorisk felt, genereret og tilføjet af MongoDB, det er et unikt indeks, der identificerer dokumentet).
I et dokument kan felter tilføjes, slettes, ændres og omdøbes til enhver tid. I modsætning til relationsdatabaser er der ingen foruddefineret skema. Strukturen i et dokument er meget enkel og består af nøgle / værdipar som associerende arrays , nøglen er navnet på feltet , værdien dets indhold (se i denne forbindelse JSON- formatet ). De to er adskilt af et kolon ":" som vist i eksemplet ovenfor. En "værdi" kan være et tal eller en tekst, men også binære data (som et billede) eller en samling af andre nøgle / værdipar som vist i eksemplet nedenfor:
{ "_id": ObjectId("4efa8d2b7d284dad101e4bc7"), "Nom": "PELLERIN", "Prénom": "Franck", "Âge": 29, "Adresse": { "Rue" : "1 chemin des Loges", "Ville": "VERSAILLES" } }Her er indlejrede dokumenter : den "Adresse" felt indeholder et dokument med to felter : "Gade" og "By".
Visse operationer på markerne, såsom inkrementering, kan udføres atomisk , det vil sige uden at flytte eller kopiere dokumentet .
MongoDB leveres med bindinger til de vigtigste programmeringssprog :
Disse drivere giver dig mulighed for at håndtere databasen og dens data direkte fra disse sprog. MongoDB har dog også et værktøj, der kan bruges fra kommandolinjen, og som giver adgang til det oprindelige sprog i databasen : JavaScript , hvorigennem du også kan manipulere databasen.
Mens du skriver:
./mongoi kommandolinjen i operativsystemet lancerer det shell MongoDB interaktiv.
I en database, der hedder salg, der indeholder flere samlinger, er her, hvordan man viser alle dokumenterne i samlingen, der hedder kunder :
> use vente // Sélectionne la base de données "vente" > db.clients.find(); // Cherche et affiche tous les documents de la collection "clients".Resultatet er trykt på skærmen:
{ "_id": 28974, "Nom": "ID Technologies", "Adresse" : "7 Rue de la Paix, Paris"} { "_id": 89136, "Nom": "Yoyodine", "Adresse" : "8 Rue de la Reine, Versailles"}MongoDB's officielle dokumentation (se afsnittet om eksterne links ) beskriver detaljeret mekanismerne til manipulation af data gennem mongo- værktøjet . For at manipulere MongoDB-databasen fra et programmeringssprog skal den dog henvise til dokumentationen til driveren ( driveren ) for det pågældende sprog.
Webstedet MongoDB Tools (uafhængigt af MongoDB-firmaet) henviser til forskellige løsninger ved hjælp af MongoDB-databasen.
Et bemærkelsesværdigt eksempel på en klient management ansøgning til denne database management system er Robo 3T (Tidligere Robomongo).
MongoDB kan bruges som et filsystem , denne ret usædvanlige funktion til en database giver dog mulighed for at drage fordel af alle de egenskaber, der er beskrevet i afsnittet Implementering , nemlig replikering og distribution af data på et sæt servere , og at bruge det til administrere filer.
Denne funktion, kaldet GridFS , er inkluderet i de drivere, der leveres med MongoDB og kan bruges uden særlige problemer i programmeringssprog. Programmøren har funktioner til at manipulere filerne og deres indhold, MongoDB tager sig af deres ledelse.
I et system, der kører på flere MongoDB-servere , kan filer således automatisk distribueres og duplikeres mellem computere transparent, hvilket giver systemet den fejltolerance og belastningsafbalancering, som MongoDB bringer til data.
De hierarkiske databaser er udviklet til hardware med lav ydeevne. De mest magtfulde 1970'ere i 1990'erne kunne bruge den relationsmodel (meget forbruger, men meget mere fleksibel). 2010'erne tillod indførelse af ikke-kun- SQL ( " NoSQL ": ikke-kun- SQL ) databaser såsom MongoDB associerende attributter (eller felter ) med data placeres på efterspørgslen i realtid, og derefter er brugbart i af forespørgsler . Hver af disse to tilgange drager fordel af de lavere omkostninger og øget effekt af hardwaren for at muliggøre enklere og hurtigere udvikling.
Ifølge db-engines.com, MongoDB indtager 5 th plads i rækkefølgen af de mest populære database management systemer imarts 2017, alle typer kombineret og førstepladsen for NoSQL-databasestyringssystemer (i antal Google- og Bing-søgeresultater og i antal Google-forespørgsler).
MongoDB understøtter replikering gennem en master-slave- model med henblik på fejlmodstand og belastningsafbalancering .
I praksis kan MongoDB køre på flere computere, distribuere eller duplikere dataene. Det er således muligt at distribuere dataene på flere maskiner for at distribuere arbejdsbyrden, men det er også muligt at duplikere dataene fra hver computer på en eller flere andre computere for at holde databasesystemet i drift, selv i tilfælde af fejl. ' en fiasko hos en af dem. MongoDB gør også disse konfigurationer nemme at konfigurere ved at automatisere dem. På denne måde er det meget muligt at tilføje en eller flere computere til en kørende database på farten .
Problemer med MongoDB-ydeevne kan have stor indflydelse på applikationer, der bruger denne database i deres produktionsinfrastruktur. For at undgå dem er det vigtigt at overvåge de nøglemålinger (statistik), der leveres af MongoDB, uanset om du bruger MongoDB med WiredTiger, nu som standard eller MMAPv1:
Alle disse statistikker kan indsamles på tre måder: