MongoDB
| MongoDB | ||
|---|---|---|
|
| ||
|
| ||
| Generell informasjon | ||
| programtype | Database , NoSQL | |
| utvikler | MongoDB Inc. | |
| Utviklingsmodell | Gratis programvare | |
| Første utgivelse | 2009 | |
| Tillatelse | GNU AGPL v3.0 (drivere: Apache-lisens ) | |
| Teknisk informasjon | ||
| Planlagt inn | C++ | |
| Versjoner | ||
| Siste stabile versjon | 4.0.8 ( info ) (29. mars 2019 (3 år, 6 måneder og 20 dager)) | |
| Siste versjon i tester | 4.1.9 ( info ) (13. mars 2019 (3 år, 7 måneder og 5 dager)) | |
| Lenker | ||
MongoDB ( hu mongo us , "enorm" [ sitering nødvendig ] ) er et åpen kildekode , dokumentorientert , NoSQL - databasesystem .
I stedet for å lagre data i tabeller, slik det gjøres i relasjonsdatabaser , lagrer MongoDB BSON -datastrukturer (en spesifikasjon som ligner på JSON ) med et dynamisk skjema, noe som gjør dataintegrasjon i visse applikasjoner enklere, enklere og raskere.
MongoDB er en database egnet for bruk i produksjon og med mange funksjoner. Denne databasen er mye brukt i industrien, [ 1 ] med implementeringer i selskaper som MTV Network, [ 2 ] Craigslist, [ 3 ] Foursquare. [ 4 ]
Kildekoden er tilgjengelig for operativsystemene Windows , GNU/Linux , OS X og Solaris .
Historie
Utviklingen av MongoDB startet i 2007 av 10gen Inc. (nå kalt MongoDB Inc.) [ 5 ] da de utviklet en plattform som en tjeneste (PaaS) som ligner på den velkjente Google App Engine. [ 6 ] I 2009 ble MongoDB utgitt som et frittstående produkt og utgitt under AGPL åpen kildekode-lisens . [ 7 ]
I mars 2011 ble versjon 1.4 utgitt og ble ansett for å være en produksjonsklar database. [ 8 ]
Lisensering og støtte
MongoDB er fritt tilgjengelig under GNU Affero General Public License ( AGPL ) . [ 7 ] Driverne for programmeringsspråkene er lisensiert under Apache-lisensen . I tillegg til disse lisensene tilbyr MongoDB Inc. en kommersiell lisens som inkluderer avanserte funksjoner (som integrasjon med SASL , LDAP , Kerberos , [ 9 ] Simple Network Management Protocol [ 10 ] og Rosette Linguistics Platform -tekstsøk fra Basis Technology [ 11 ] ), verktøy for administrasjon, overvåking og sikkerhetskopiering, samt støtte. [ 12 ]
Hovedtrekk
Ad hoc-søk
MongoDB støtter søk etter felt, rekkeviddespørringer og regulære uttrykk. Spørringene kan returnere et spesifikt felt i dokumentet, men det kan også være en brukerdefinert funksjon for din bekvemmelighet.
Indeksering
Ethvert felt i et MongoDB-dokument kan indekseres, akkurat som det er mulig å gjøre sekundære indekser. Konseptet med indekser i MongoDB ligner det som brukes i relasjonsdatabaser ..
Replikering
MongoDB støtter foreldre-underreplikeringstype. Hver gruppe av primær og sekundær kalles et replikasett. [ 13 ] Primæren kan utføre lese- og skrivekommandoer. Sekundærer replikerer data fra primæren og kan bare brukes til lesing eller sikkerhetskopiering, men kan ikke skrives. Sekundærer har muligheten til å kunne velge en ny primær i tilfelle den nåværende primæren ikke svarer.
Lastbalansering
MongoDB kan skalere ut ved å bruke konseptet [shard . [ 14 ] Utvikleren velger en sharding-nøkkel, som bestemmer hvordan dataene i en samling skal distribueres. Dataene er delt inn i områder (basert på sharding-nøkkelen) og fordelt på flere shards. Hvert skår kan være et replikasett. MongoDB har muligheten til å kjøre på flere servere, lastbalansere og/eller replikere data for å holde systemet i gang i tilfelle maskinvarefeil. Automatisk konfigurasjon er enkel å implementere under MongoDB og nye servere kan legges til MongoDB med databasesystemet kjørende.
Fillagring
MongoDB kan brukes som et filsystem , og drar nytte av MongoDBs evne til å laste balanse og replikere data på tvers av flere servere. Denne funksjonaliteten, kalt GridFS [ 15 ] og inkludert i den offisielle distribusjonen, implementerer på driverne, ikke på serveren, [ 16 ] en rekke funksjoner og metoder for å manipulere filer og innhold. I et system med flere servere kan filer distribueres transparent og replikeres mellom dem, og dermed skape et effektivt feiltolerant og belastningsbalansert system.
Aggregasjon
MongoDB gir et aggregeringsrammeverk som tillater operasjoner som ligner på "GROUP BY" i SQL. Aggregeringsrammeverket er bygget som en pipeline der dataene går gjennom ulike stadier der disse dataene modifiseres, legges til, filtreres og formateres til ønsket resultat er oppnådd. All denne behandlingen er i stand til å bruke indekser hvis de eksisterer og forekommer i minnet. MongoDB tilbyr også en MapReduce-funksjon som kan brukes til databatching og aggregeringsoperasjoner.
JavaScript-kjøring på tjenersiden
MongoDB har muligheten til å utføre spørringer ved hjelp av JavaScript, noe som fører til at de sendes direkte til databasen for kjøring.
Sharding _ _
Hvis du utvikler en tjeneste som er i ferd med å bli populær eller tilgangsnivåene til databasene blir høyere, vil du begynne å legge merke til at databasen din blir angrepet av økende trafikk og serveren din lider av høye tilgangsnivåer. stress og du kan finne deg selv i behovet for å oppdatere infrastrukturen din for å støtte etterspørselen.
Det er her sharding kommer inn i bildet, det er måten vi gjør databasen vår skalerbar på. I stedet for å ha en samling i en database, ville vi lagt den i flere distribuerte databaser, slik at når vi konsulterer dataene til nevnte samling, henter vi den som om det var en enkelt database. Mongo skal sørge for transparent å finne ut hvilken database dataene ligger i.
Skårene vil bestå av replikasett, så hvis vi lager tre shards, som hver har et replikasett med tre servere, vil vi snakke om totalt ni servere.
Spørringene gjøres på en distribuert måte gjennom en rutermodul, "MongoS", som opprettholder en pool av forbindelser til de forskjellige vertene. For å distribuere dataene til en bestilt samling, deles samlingen inn i områder som er tildelt en identifikator ( shard key ), som kan være en del av selve dokumentet, og fordelt mellom replikasettene .
Hovedbegrensninger
Implementering av ACID-egenskaper for flere dokumenter
MongoDB garanterte kun ACID i samme dokument. Å ikke implementere ACID -egenskapene betydde at databasen ikke sikret holdbarheten, integriteten, konsistensen og isolasjonen som kreves i transaksjoner. Støtte for ACID -transaksjoner med flere dokumenter ble lagt til MongoDB i versjon 4.0 juni 2018.
Basert på dette punktet er følgende fire detaljert:
Konsistensproblemer
I eldre versjoner av databasen ser strengt konsistente lesinger utdaterte versjoner av dokumenter, de kan også returnere feil data fra lesinger som aldri skulle ha skjedd. [ 17 ]
Dette problemet anses som løst fra og med versjon 3.4: https://jepsen.io/analyses/mongodb-3-4-0-rc3
Låsing på dokumentnivå
MongoDB låser databasen på dokumentnivå ved hver skriveoperasjon. Kun samtidige skriveoperasjoner mellom ulike dokumenter kan utføres.
Skjøter er ikke holdbare eller verifiserbare
MongoDB returnerer når data ennå ikke er skrevet til permanent lagring, noe som kan føre til tap av data. MongoDB 2.2 endrer standarden til å skrive til minst én replika, men dette tilfredsstiller fortsatt ikke holdbarhet og verifiserbarhet. [ 18 ]
Skalerbarhetsproblemer
Den har ytelsesproblemer når datavolumet overstiger 100 GB. [ 19 ]
Brukstilfeller
MongoDB-databasen er egnet for følgende bruksområder: [ 20 ]
- Hendelseslagring og logging
- Dokument- og innholdsstyringssystemer
- elektronisk handel
- Spill
- Systemer med høyt volum av avlesninger
- Mobilapper
- Nettstedets driftsdatalager
- Kommentarlagring
- stemmegivning
- bruker registrering
- Brukerprofiler
- dataøkter
- Prosjekter som bruker iterative eller smidige utviklingsmetoder
- Håndtering av statistikk i sanntid
MongoDB brukes til en eller flere av disse sakene av ulike selskaper. [ 21 ]
Datamanipulering: samlinger og dokumenter
MongoDB lagrer strukturen til dataene i BSON-dokumenter med et dynamisk skjema, som betyr at det ikke er noe forhåndsdefinert skjema. Dataelementer kalles dokumenter og lagres i samlinger. En samling kan ha et hvilket som helst antall dokumenter. Sammenligner man med en relasjonsdatabase, kan man si at samlinger er som tabeller og dokumenter er poster i tabellen. Forskjellen er at i en relasjonsdatabase har hver post i en tabell samme antall felt, mens i MongoDB kan hvert dokument i en samling ha forskjellige felt. I et dokument kan nye felt legges til, slettes, endres eller gis nytt navn når som helst, [ 22 ] siden det ikke er noe forhåndsdefinert opplegg. Strukturen til et dokument er enkel og består av nøkkel/verdi-par, lik assosiative arrays i et programmeringsspråk, dette er fordi MongoDB følger JSON-formatet. I MongoDB er nøkkelen navnet på feltet og verdien er innholdet, som er atskilt ved bruk av ":", som kan sees i følgende eksempel. Som verdi kan du bruke tall, strenger eller binære data som bilder eller andre.
{
"_id" : ObjectId ( "4efa8d2b7d284dad101e4bc7" ),
"Last Name" : "PELLERIN" ,
"First Name" : "Franck" ,
"Alder" : 29 ,
"Address" : {
"Street" : "1 logg " ,
"City" : "VERSAILLES"
}
}
I dette eksemplet kan du se at "Adresse"-feltet inneholder et annet dokument som har feltene "Gate" og "By".
Støttede programmeringsspråk
I følge den offisielle MongoDB-dokumentasjonen har dette systemet offisielle drivere for følgende programmeringsspråk:
MongoDB-instrumenter
Følgende kommandoer kan installeres for databasesystemadministrasjon og -administrasjon:
- mongo [ 23 ]
- Interaktivt skall som lar utviklere og administratorer se, sette inn, slette og oppdatere data i databasen deres. Dette tillater også, blant andre funksjoner, datareplikering, sharding-konfigurasjon, nedleggelse av servere, utføring av JavaScript og alle kommandoene som kan utføres.
- mongostat [ 24 ]
- Kommandolinjeinstrument som viser en sammendragsliste over statistikk for en MongoDB-forekomst som kjører. Dette lar deg se hvor mange innsettinger, oppdateringer, slettinger, spørringer og kommandoer som er utført, men også hvor mye minne som brukes og hvor lenge databasen har vært stengt.
- Mongotop [ 25 ]
- Kommandolinjeinstrument som gir en metode for å spore hvor lang tid en datalesing eller skriving tar til en forekomst. Den gir også statistikk over nivået på hver samling.
- mongosniff [ 26 ]
- Kommandolinjeinstrument som gir databasesniffing ved å snuse nettverkstrafikk som går til og fra MongoDB.
- mongoimport [ 27 ] /mongoexport [ 28 ]
- Kommandolinjeinstrument som gjør det enkelt å importere og eksportere innhold fra JSON, CSV eller TSV. Den har også potensial til å importere eller eksportere til andre formater.
- mongodump [ 29 ] /mongorestore [ 30 ]
- Kommandolinjeinstrument for å lage et binært bilde av databaseinnholdet. Disse kommandoene brukes for MongoDB backup strategi.
Referanser
- ^ "DB-motorrangering" . DB-motorer (på engelsk) . Hentet 9. august 2019 .
- ↑ "MongoDB driver MTVs webegenskaper | MongoDB-blogg» . MongoDB (på amerikansk engelsk) . Hentet 9. august 2019 .
- ↑ "MongoDB live på Craigslist | MongoDB-blogg» . MongoDB (på amerikansk engelsk) . Hentet 9. august 2019 .
- ↑ "http://blip.tv/mongodb/mongodb-at-foursquare-3723202" . Arkivert fra originalen 8. juni 2012.
- ↑ "10gen kunngjør endring av firmanavn til MongoDB, Inc." . MongoDB . Hentet 6. mai 2016 .
- ^ "http://www.theregister.co.uk/2011/05/25/the_once_and_future_mongodb/" .
- ^ a b "http://blog.mongodb.org/post/103832439/the-agpl" .
- ↑ "http://blog.mongodb.org/post/472835820/mongodb-1-4-ready-for-production" . Arkivert fra originalen 8. juli 2014.
- ↑ "Enterprise Authentication Mechanisms — MongoDB Manual 3.2" . docs.mongodb.com . Hentet 6. mai 2016 .
- ↑ "Overvåk MongoDB med SNMP på Linux — MongoDB Manual 3.2" . docs.mongodb.com . Hentet 6. mai 2016 .
- ↑ "Tekstsøk med basisteknologi Rosett lingvistikkplattform — MongoDB Manual 3.2" . docs.mongodb.com . Hentet 6. mai 2016 .
- ↑ "https://www.mongodb.com/lp/contact/enterprise" .
- ↑ "https://docs.mongodb.org/manual/replication/" .
- ↑ "http://www.mongodb.org/display/DOCS/Sharding" .
- ↑ "http://www.mongodb.org/display/DOCS/GridFS" .
- ^ "mongodb/spesifikasjoner" . GitHub . Hentet 12. april 2016 .
- ↑ "Ring meg kanskje: MongoDB foreldet leser" .
- ↑ "Broken by Design: MongoDB Fault Tolerance :: Hacking, Distributed" .
- ↑ "MongoDB hånet etter å ha lagt ut "100GB skaleringssjekkliste"" .
- ↑ "http://www.mongodb.org/display/DOCS/Use+Cases" .
- ↑ "http://www.mongodb.org/display/DOCS/Production+Deployments" . Arkivert fra originalen 10. mai 2012.
- ↑ "http://www.mongodbspain.com/wp-content/uploads/2014/03/MongoDBSpain-CheetSheet.pdf" . Arkivert fra originalen 28. mars 2014 . Hentet 27. mars 2014 .
- ↑ "The mongo Shell — MongoDB Manual" . https://github.com/mongodb/docs/blob/v4.0/source/mongo.txt . _ Hentet 9. august 2019 .
- ^ "mongostat - MongoDB Manual" . https://github.com/mongodb/docs/blob/v4.0/source/reference/program/mongostat.txt . _ Hentet 9. august 2019 .
- ^ "mongotop — MongoDB Manual" . https://github.com/mongodb/docs/blob/v4.0/source/reference/program/mongotop.txt . _ Hentet 9. august 2019 .
- ^ "mongosniff — MongoDB Manual" . https://github.com/mongodb/docs/blob/v4.0/source/reference/program/mongosniff.txt . _ Hentet 9. august 2019 .
- ^ "mongoimport - MongoDB Manual" . https://github.com/mongodb/docs/blob/v4.0/source/reference/program/mongoimport.txt . _ Hentet 9. august 2019 .
- ^ "mongoexport — MongoDB Manual" . https://github.com/mongodb/docs/blob/v4.0/source/reference/program/mongoexport.txt . _ Hentet 9. august 2019 .
- ↑ "mongodump — MongoDB Manual" . https://github.com/mongodb/docs/blob/v4.0/source/reference/program/mongodump.txt . _ Hentet 9. august 2019 .
- ^ "mongorestore — MongoDB Manual" . https://github.com/mongodb/docs/blob/v4.0/source/reference/program/mongorestore.txt . _ Hentet 9. august 2019 .
Bibliografi
- Banker, Kyle (28. mars 2011), MongoDB in Action (1. utgave), Manning , s. 375, ISBN 9781935182870 .
- Chodorow, Kristina; Dirolf, Michael (23. september 2010), MongoDB: The Definitive Guide (1. utgave), O'Reilly Media , s. 216, ISBN 9781449381561 .
- Pirtle, Mitch (3. mars 2011), MongoDB for webutvikling (1. utgave), Addison-Wesley Professional , s. 360, ISBN 9780321705334 .
- Hawkins, Tim; Plugge, Eelco; Membery, Peter (26. september 2010), The Definitive Guide to MongoDB: The NoSQL Database for Cloud and Desktop Computing (1. utgave), Apress , s. 350, ISBN 9781430230519 .