MongoDB
MongoDB | |
Dezvoltator | MongoDB Inc. |
---|---|
Versiune inițială | 2009 |
Ultima versiune | 2.6.4 ( | )
Repo | github.com/mongodb/mongo |
Stare de dezvoltare | Activ |
Scris în | C++ |
Sistem de operare | Cross-platform |
Disponibil în | Engleză |
Tip | Document-oriented database |
Licență | GNU AGPL v3.0 (drivere: licența Apache) |
Prezență online | |
www.mongodb.org | |
Modifică date / text |
MongoDB este o bază de date NoSQL open-source orientată pe documente. Acestă bază de date beneficiază de suport din partea companiei 10gen. MongoDB face parte din familia de sistemelor de baze de date NoSQL. Diferența principală constă în faptul că stocarea datelor nu se face folosind tabele precum într-o bază de date relațională, MongoDB stochează datele sub formă de documente JSON cu scheme dinamice.
Istorie
[modificare | modificare sursă]Dezvoltarea MongoDB a fost începută de 10gen în 2007, când compania dezvolta un produs platform as a service similar cu Windows Azure sau Google App Engine[1]. În 2009 MongoDB a fost transformat într-un produs open-source
- În martie 2010, de la versiune 1.4, MongoDB a fost considerat gata pentru mediul de producție[2].
Caracteristici principale
[modificare | modificare sursă]MongoDB este o bază de date open-source NoSQL scrisă în C++. Aceasta poate conține mai multe baze de date, colecții și indecși. În unele cazuri (baze de date și colecții ) aceste obiecte pot fi create implicit. Odată create, ele se găsesc în catalogul sistemului db.systems.collection, db.system.indexes. Colecțiile conțin documente (BSON). Aceste documente conțin la rândul lor mai multe câmpuri. În MongoDB nu există câmpuri predefinite spre deosebire de bazele de date relaționale, unde există coloanele care sunt definite în momentul în care tabelele sunt create. Nu există schemă pentru câmpurile dintr-un document, acestea precum și tipurile lor pot varia. Astfel nu există operația de „alter table” pentru adăugare de coloane. În practică este obișnuit ca o colecție să aibă o structură omogenă, deși nu este o cerință, colecțiile putând avea structuri diferite. Această flexibilitate presupune ușurință în migrarea și modificarea imaginii de ansamblu asupra datelor.
- Caracteristicile MongoDB
- Stocarea datelor sub formă de documente ;
- Baza de date MongoDB stochează obiecte (documente). Aceste documente reduc nevoia de join;
- Prezintă support pentru indexare
- Indexarea pe fiecare din atribute se face în modul tradițional (RDBMS) asupra cheilor de regăsire ale documentelor;
- Disponibilitate - Disponibilitatea datelor este asigurată printr-un proces automat de failover;
- Auto-Sharding
- Shardingul sau partiționarea datelor pe orizontală se face automat. Citirile și scrierile sunt distribuite pe partiții. Lipsa joinurilor face ca interogările distribuite să fie rapide;
- Limbajul de interogare
- Limbajul de interogare este îmbunatatit și păstreaza principii SQL si C++;
- Modificări rapide
- MongoDB suportă operații de actualizare atomice căt și pe cele tradiționale. Operatiile de mai jos demonstrează flexibilitatea limbajului NoSQL
- $inc - { $inc : { camp : valoare } } – incementează câmpul “camp” cu numărul dat ca valoare
- $set -{ $set : { camp : valoare } } – câmpul „camp” ia valoarea dată
- $push -{ $push : { camp : valoare } } – se adaugă valoarea dată câmpului specificat
- $addToSet -{ $addToSet : { camp : valoare } } – adaugarea valorii într-un vector
- $pop -{ $pop : { camp : 1 } } –șterge ultimul element dintr-un vector
- $pop -{ $pop : { camp : -1 } } –șterge primul element dintr-un vector
- $pull -{ $pull : { camp : _valoare } } – șterge toate valorile egale cu “valoare” din câmpul “camp
- Map Reduce
- MongoDB folosește map/reduce pentru agregare și procesare batch;
- GridFS
- Poate stoca fișiere de dimensiuni mari fără a complica stiva de date;
- Suport
- Există o cantitate mare de informații online – tutoriale , carți forumuri ce servesc pentru a asimila rapid lucrul cu MongoDB. [3]
- Paralelă MySQL versus MongoDB
Termeni MySQL | Concepte MongoDB |
---|---|
Bază de date | Bază de date |
Tabelă | Colecție |
Index | Index |
Rând | Document BSON |
Coloană | Câmp BSON |
Join | Încapsulare și legatură |
Cheie primară | Câmpul cheie unică _id |
Group by | Agregare |
Instalare MongoDB
[modificare | modificare sursă]Instalarea MongoDB este extrem de simplă. Această bază de date poate fi intalată pe sisteme de operare variate, incluzând Windows, Linux, Ubuntu, Debian și OS X. Mediul de dezvoltare în cazul acestui articol a fost reprezentat de MongoDB în Windows 7 Professional 32 bit. Sistemele 32 bit sunt folosite de obicei pentru testare, deoarece instalările MongoDB pe un astfel de sistem permit o capacitate maximă de stocare de 2G. De menționat este faptul că nu se permite instalarea pe sistemele Windows XP. De asemenea distribuția Mongo include fisierul bin/mongo ce reprezintă un shell interactiv scris în JavaScript și folosit în aceeași manieră în care este folosit SQl Plus pentru baze de date Oracle pentru comenzi în linie de comandă. Shellul este folositor pentru verificări teste si pentru funcțiile administrative.
Referințe
[modificare | modificare sursă]Bibliografie
[modificare | modificare sursă]- Banker, Kyle (), MongoDB in Action (ed. 1st), Manning, p. 375, ISBN 978-1-935182-87-0
- Chodorow, Kristina; Dirolf, Michael (), MongoDB: The Definitive Guide (ed. 1st), O'Reilly Media, p. 216, ISBN 978-1-4493-8156-1
- Pirtle, Mitch (), MongoDB for Web Development (ed. 1st), Addison-Wesley Professional, p. 360, ISBN 978-0-321-70533-4
- Hawkins, Tim; Plugge, Eelco; Membrey, Peter (), The Definitive Guide to MongoDB: The NoSQL Database for Cloud and Desktop Computing (ed. 1st), Apress, p. 350, ISBN 978-1-4302-3051-9
Legături externe
[modificare | modificare sursă]- Site web oficial
- MongoDB Manual
- Designing for the Cloud Arhivat în , la Wayback Machine. at MIT Technology Review
- A vendor-independent comparison of NoSQL databases: Cassandra, HBase, MongoDB, Riak Arhivat în , la Wayback Machine. (NetworkWorld)
- MongoDB Cheat Sheet for Quick Reference
- Cassandra vs MongoDB vs CouchDB vs Redis vs Riak vs HBase vs Couchbase vs Neo4j vs Hypertable vs ElasticSearch vs Accumulo vs VoltDB vs Scalaris comparison