Fejlesztette | MongoDB, Inc. ( in ) |
---|---|
Az első verzió | 2009 |
Utolsó verzió | 5,0 (2021. július 13) |
Haladó verzió |
3.7.1 (2018. január 16) 4.3.0 (2019. június 3) |
Letét | MongoDB a GitHubon |
Projekt állapota | aktív fejlesztésben |
Beírva | C ++ , Go , JavaScript , C és Python |
Operációs rendszer | Linux , macOS , Microsoft Windows és OpenBSD |
típus |
NoSQL DBMS Dokumentumorientált adatbázis Adatbázis- kezelő rendszer Forrás elérhető szoftver ( en ) |
Engedély | Szerveroldali licenc (a GNU AGPL v3.0 licenc ihlette ) szerverekhez és eszközökhöz; Apache v2.0 (illesztőprogramok); Creative Commons BY-NC-SA 3.0 (dokumentáció) |
Weboldal | www.mongodb.com |
A MongoDB (az angol humongous-ból, amely "hatalmas" -nak is fordítható) egy adatbázis-kezelő rendszer- orientált dokumentum , tetszőleges számú számítógépen felosztható, és nem igényel előre definiált adatsémát. C ++ nyelven íródott . A szervert és az eszközöket az SSPL licenc , az illesztőprogramokat az Apache licenc és a dokumentációt a Creative Commons licenc alatt terjesztik . Ez a NoSQL mozgalom része .
A MongoDB-t 2007 óta fejlesztette a MongoDB. Ez a cég dolgozik a rendszer Cloud computing , széles körben elterjedt az adatokat a számítógép, hasonlóan a szolgáltatást a Google App Engine származó Google .
Azóta az egyik legszélesebb körben használt DBMS, különösen a Craigslist , az eBay , a Foursquare , a SourceForge.net , a Viacom , a pagesjaunes és a New York Times weboldalak számára .
Mivel 2018. október, A MongoDB a Server Side Public License (SSPL), a projekt által kifejlesztett licenc alatt jelenik meg. Ez helyettesíti a GNU Affero General Public License licencet , és szinte megegyezik a GNU General Public License 3. verziójával , de megköveteli, hogy azok, akik a szoftvereket a szolgáltatás részeként a nyilvánosság számára hozzáférhetővé teszik, kötelesek a szolgáltatás összes forráskódját rendelkezésre bocsátani. engedély. Az SSPL-t tanúsítás céljából benyújtották a nyílt forráskódú kezdeményezéshez, de ezt követően visszavonták az OSI vonakodása miatt. A nyelvi illesztőprogramok Apache licenc alatt érhetők el . Ezenkívül a MongoDB Inc. saját licenceket kínál a MongoDB számára. Az AGPL 3. verziója alapján licencelt legújabb verziók: 4.0.3 (stabil) és 4.1.4.
A licencmódosítás miatt a MongoDB eltávolításra került a Debian , a Fedora és a Red Hat Enterprise Linux disztribúcióiból . A Fedora az SSPL 1. verzióját nem tekintette szabad szoftverlicencnek, mert azt "szándékosan úgy tervezték, hogy agresszívan diszkriminatív legyen" a kereskedelmi felhasználókkal szemben.
A MongoDB lehetővé teszi a strukturált objektumok manipulálását BSON ( bináris JSON ) formátumban , előre meghatározott séma nélkül. Más szavakkal, a kulcsok bármikor hozzáadhatók menet közben, a bázis újrakonfigurálása nélkül.
Az adatok olyan dokumentumok formájában jelennek meg, amelyeket maguk is gyűjteményekben tárolnak , és amelyek tetszőleges számú dokumentumot tartalmaznak. A gyűjtemények olyanok, mint a táblázatok , a dokumentumok pedig olyanok, mint a relációs adatbázisokban található rekordok . A relációs adatbázisokkal ellentétben a rekord mezõi szabadok, és ugyanazon gyűjteményen belül különbözhetnek az egyes rekordoktól. Az egyetlen közös és kötelező mező az elsődleges kulcs ("id") mező. Ezen túlmenően a MongoDB nem engedélyez nagyon összetett szabványosított lekérdezéseket vagy JOIN-okat , de lehetővé teszi, hogy programozzon konkrét kéréseket JavaScript-ben .
Az alábbiakban megadott adatok esetében:
ID | Vezetéknév | Keresztnév | Kor |
---|---|---|---|
6. | DUMOND | Farmer | 43 |
7 | Zarándok | Franck | NULLA |
8. | MÁRTON | Emile | 62 |
9. | KIRÁLY | NULLA | 51 |
A megfelelő kódot a tároló fájlt egy táblázat (például CSV ) egy táblázatkezelő (például Calc a LibreOffice ) van:
ID,Nom,Prénom,Âge 6,DUMOND,Jean,43 7,PELLERIN,Franck 8,MARTIN,Emile,62 9,KING,,51Ne feledje, hogy hiányozhat egy érték ( NULL ), de minden sornak ugyanannyi mezője van.
Különböző módon ugyanannak az elrendezésnek (például egy .php oldal egy webböngészőben) a NoSQL gyűjtemény minden mezőben különböző mezőket tartalmazhat (és akár több mezőt is beágyazhat egymás után):
{ "_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" }Rögtön észrevesszük, hogy új mezők kerültek a legújabb rekordokba, a legrégebbi rekordokra nincs hatással. Ez teszi a NoSQL-t annyira különlegessé. Azt is észrevesszük, hogy ez az "attribute =" value "" formában lévő tároló nagyon közel áll az XML-hez . Ezenkívül az adatbázis- kiíratás ( (en) dump) az SQL lekérdezési nyelven is felveheti ezt az "attribute =" value "" formát, de csak akkor használható, ha táblák formájában ( DBMS-ben ) újból létrehozzák .
A MongoDB gyűjtemény dokumentumai különböző mezőkkel rendelkezhetnek (megjegyzés: a "_id" mező kötelező mező, amelyet a MongoDB generál és ad hozzá, ez egy egyedi index, amely azonosítja a dokumentumot).
Egy dokumentum , mezőket lehet hozzáadni, törölni, módosítani, és átnevezték bármikor. A relációs adatbázisokkal ellentétben nincs előre definiált séma. A dokumentum felépítése nagyon egyszerű, és kulcs / érték párokból áll, mint az asszociatív tömbök , a kulcs a mező neve , értéke annak tartalmának (lásd ebben a tekintetben a JSON formátumot ). A kettőt kettőspont választja el ":" a fenti példában látható módon. Az "érték" lehet szám vagy szöveg, de bináris adatok (például kép) vagy más kulcs / érték párok gyűjteménye is, az alábbi példában látható módon:
{ "_id": ObjectId("4efa8d2b7d284dad101e4bc7"), "Nom": "PELLERIN", "Prénom": "Franck", "Âge": 29, "Adresse": { "Rue" : "1 chemin des Loges", "Ville": "VERSAILLES" } }Itt vannak egymásba ágyazott dokumentumok : a "Cím" mező két mezővel rendelkező dokumentumot tartalmaz : "Utca" és "Város".
Bizonyos műveletek a mezőkön , például az inkrementáció, atomszerűen is elvégezhetők, vagyis a dokumentum áthelyezése vagy másolása nélkül .
A MongoDB tartalmaz kötéseket a főbb programozási nyelvekhez :
Ezek az illesztőprogramok lehetővé teszik az adatbázis és annak adatainak kezelését közvetlenül ezeken a nyelveken. A MongoDB rendelkezik azonban a parancssorból is használható eszközzel, amely hozzáférést biztosít az adatbázis anyanyelvéhez : a JavaScript-hez , amelyen keresztül az adatbázist is kezelheti.
Gépelés közben:
./mongoA parancssorban az operációs rendszer , akkor elindítja a héj MongoDB interaktív.
Az eladó nevű adatbázisban, amely több gyűjteményt tartalmaz, a következő módon jelenítheti meg az ügyfelek nevű gyűjtemény összes dokumentumát :
> use vente // Sélectionne la base de données "vente" > db.clients.find(); // Cherche et affiche tous les documents de la collection "clients".Az eredmény kinyomtatásra kerül a képernyőn:
{ "_id": 28974, "Nom": "ID Technologies", "Adresse" : "7 Rue de la Paix, Paris"} { "_id": 89136, "Nom": "Yoyodine", "Adresse" : "8 Rue de la Reine, Versailles"}A MongoDB hivatalos dokumentációja (lásd a külső hivatkozások részt ) részletesen leírja az adatok mongo eszközzel történő manipulálásának mechanizmusait . A MongoDB adatbázis programozási nyelvről történő manipulálásához azonban hivatkoznia kell a szóban forgó nyelv illesztőprogramjának ( illesztőprogramjának ) dokumentációjára .
A MongoDB Tools webhely (a MongoDB vállalattól függetlenül) különböző megoldásokra hivatkozik a MongoDB adatbázis segítségével.
Ennek az adatbázis-kezelő rendszernek egy figyelemre méltó példája az ügyfélkezelő alkalmazásra a Robo 3T (korábban Robomongo).
A MongoDB fájlrendszerként használható , ez az adatbázis meglehetősen szokatlan funkciója lehetővé teszi azonban a Telepítés szakaszban leírt összes jellemző , azaz az adatok replikációjának és terjesztésének egy kiszolgálón történő kiaknázását , és felhasználni őket fájlok kezelése.
Ez a GridFS nevű funkció szerepel a MongoDB-vel szállított illesztőprogramokban , és különösebb nehézség nélkül használható a programozási nyelvekben. A programozónak funkciói vannak a fájlok és azok tartalmának manipulálására, a MongoDB gondoskodik azok kezeléséről.
A több MongoDB szerveren futó rendszerben a fájlok így automatikusan eloszthatók és sokszorosíthatók a számítógépek között, átlátható módon biztosítva a rendszer számára a hibatűrést és a terheléselosztást, amelyet a MongoDB hoz az adatokhoz.
A hierarchikus adatbázisokat alacsony teljesítményű hardverek számára fejlesztették ki. Az 1970-es, 1990-es évek, amelyek a legerősebbek, használhatják a relációs modellt (sok fogyasztó, de sokkal rugalmasabb). A 2010-es évek lehetővé tették a nem csak SQL (" NoSQL ": nem csak SQL ) adatbázisok bevezetését , mint például a MongoDB, amelyek attribútumokat (vagy mezőket ) társítottak a valós időben igény szerint elhelyezett adatokhoz, majd lekérdezéseken keresztül felhasználhatók . E két megközelítés mindegyike kihasználja az alacsonyabb költségeket és a hardver megnövekedett teljesítményét az egyszerűbb és gyorsabb fejlesztés érdekében.
Szerint db-engines.com, MongoDB elfoglalja a 5 -én helyet a rangsorban a legnépszerűbb adatbázis-kezelő rendszerek2017. március, az összes típus együttvéve, és a NoSQL adatbázis-kezelő rendszerek első helye (a Google és a Bing keresési találatai, valamint a Google lekérdezései számában).
A MongoDB támogatja a master-slave modellen keresztüli replikációt a hibabiztonság és a terhelés kiegyenlítése céljából .
A gyakorlatban a MongoDB több számítógépen is futtatható, terjesztheti vagy másolhatja az adatokat. Így lehetséges az adatok több gépen történő terjesztése a munkaterhelés elosztása érdekében, de az is lehetséges, hogy minden számítógép adatait lemásoljuk egy vagy több más számítógépen annak érdekében, hogy az adatbázis-rendszer üzemképes maradjon meghibásodás esetén is. " egyikük kudarca. A MongoDB automatizálásával ezeket a konfigurációkat is könnyen beállíthatja. Ily módon teljesen lehetséges egy vagy több számítógépet menet közben hozzáadni egy futó adatbázishoz .
A MongoDB teljesítményproblémái nagy hatással lehetnek azokra az alkalmazásokra, amelyek ezt az adatbázist használják termelési infrastruktúrájukban. Ezek elkerülése érdekében elengedhetetlen a MongoDB által biztosított legfontosabb mutatók (statisztikák) figyelemmel kísérése, függetlenül attól, hogy a MongoDB-t most alapértelmezés szerint a WiredTigerrel vagy az MMAPv1 segítségével használja:
Ezek a statisztikák háromféleképpen gyűjthetők: