En aquesta sessió donarem unes nocions bàsiques de com connectar i gestionar una base de dades MongoDB. Per als no iniciats en el tema, MongoDB és el principal representant, actualment, dels sistemes de bases de dades NoSQL. Aquests sistemes s’han tornat molt populars en els últims anys, i permeten dotar de persistència a les dades de la nostra aplicació d’una forma diferent dels tradicionals sistemes SQL.
En lloc d’emmagatzemar la informació en taules amb els seus corresponents camps i registres, el que farem serà emmagatzemar estructures de dades en format BSON (similar a JSON), la qual cosa facilita la integració amb unes certes aplicacions, com les aplicacions Node.
Les bases de dades NoSQL i SQL compartixen algunes similituds, ja que ambdues gestionen i emmagatzemen informació en bases de dades. No obstant això, la principal diferència entre elles radica en com organitzen i emmagatzemen les dades.
En les bases de dades SQL, les dades s’estructuren en taules formades per files (o registres), i cada registre té una estructura fixa, és a dir, tots els registres en una taula compartixen els mateixos camps o columnes.
D’altra banda, en les bases de dades NoSQL, com MongoDB, les dades s’organitzen en col·leccions, que equivalen a les taules de les bases de dades SQL. Cada col·lecció conté documents, que són similars als registres de SQL, però amb una diferència clau: els documents no tenen una estructura fixa. Encara que és comú que els documents dins d’una mateixa col·lecció compartisquen moltes de les seues propietats, cadascun pot tindre un conjunt diferent de camps o propietats, la qual cosa proporciona una major flexibilitat per a manejar dades no estructurades o semiestructurats.
En MongoDB, estos documents s’emmagatzemen en format BSON (una extensió binària de JSON), la qual cosa permet una fàcil integració amb llenguatges com JavaScript i una representació eficient de tipus de dades complexes.
MongoDB és, hui dia, el servidor de bases de dades No-SQL més utilitzat i popular. Com hem comentat, permet estructurar la informació en col·leccions, formades per documents, que es traduïxen de manera senzilla a objectes en JavaScript, de ací la seua popularitat a l’hora de cooperar amb aplicacions Node.js.
Versió requerida: es recomana instal·lar l’última versió disponible, ja siga mitjançant el gestor de paquets del teu sistema operatiu (com
aptper a Ubuntu obrewper a macOS) o descarregant-la directament des de la pàgina oficial de MongoDB.
MongoDB es pot instal·lar i utilitzar de tres maneres principals:
Veurem ací nocions de com instal·lar-ho i posar-ho en marxa de les tres formes possibles.
Podem instal·lar MongoDB de manera local en el nostre sistema, com a aplicació independent (on nosaltres posem en marxa i detenim el servidor) o com a servici que s’inicia automàticament en arrancar el sistema. En esta pàgina tenim instruccions generals d’instal·lació. Hem de triar el sistema operatiu per al qual la vulguem instal·lar i seguir els passos que s’indiquen.
Com la instal·lació i gestió de sistemes MongoDB no forma part dels continguts fonamentals d’este curs, no entrarem en massa detalls al respecte. A continuació pots veure diferents exemples d’instal·lació de MongoDB en local que pots provar, depenent del sistema operatiu que tingues. Però, si cap d’ells et convenç o funciona adequadament, sempre pots acudir a MongoDB Atles per a gestionar les teues bases de dades (veure apartat de MongoDB Atles per a més informació).
En este exemple instal·larem MongoDB com a aplicació independent en un sistema Windows. Per a això descarreguem un arxiu ZIP de la pàgina de Community, i ho descomprimim on vulguem. També podem descarregar l’instal·lador MSI i seguir els passos de l’assistent (triar instal·lació Completa). Convé recordar la carpeta en la qual s’instal·la MongoDB (C:\Arxius de programa\MongoDB\Server\X.Y, sent X.Y la versió descarregada), ja que caldrà accedir a esta carpeta per a arrancar el servidor manualment.
Una vegada instal·lat o descomprimit MongoDB en el sistema, és necessari crear una carpeta on s’emmagatzemaran les bases de dades. Podem cridar-la com vulguem, encara que és habitual usar el nom data o mongo-data. Esta carpeta ha de situar-se en un lloc accessible i fàcil de localitzar. Per exemple, C:\mongo-data.
Per a iniciar el servidor hem d’accedir des d’un terminal a la subcarpeta bin de la carpeta d’instal·lació de MongoDB, i executar des del propi terminal la instrucció mongod, indicant en el paràmetre --dbpath la ruta cap a la carpeta que hem creat per a emmagatzemar les dades.
mongod.exe --dbpath C:\mongo-data
NOTA: pots crear un arxiu BAT en la carpeta
binde MongoDB amb esta instrucció (per exemple, anomenatservidor.bat), i així bastarà amb fer doble clic en l’arxiu en lloc de teclejar cada vegada en terminal.
Es mostraran uns quants missatges per la consola, i un d’ells indicarà que MongoDB queda a l’espera de connexions en el port per defecte, el 27017:
2022-10-11T01:12.27.195+0100 I NETWORK
[thread1] waiting for connections on port 27017
En Ubuntu i altres distribucions basades en Debian, el mètode més recomanable és usar el repositori oficial de MongoDB. Seguix els passos indicats en la web oficial per a la distribució de Linux que necessites.
Per exemple, per a instal·lar MongoDB 8.2 en Debian 12 s’indica utilitzar els següents comandos:
sudo apt-get install gnupg curl
curl -fsSL https://pgp.mongodb.com/server-8.0.asc | sudo gpg -o /usr/share/keyrings/mongodb-server-8.0.gpg --dearmor
echo "deb [ signed-by=/usr/share/keyrings/mongodb-server-8.0.gpg ] https://repo.mongodb.org/apt/debian bookworm/mongodb-org/8.2 main" | sudo tee /etc/apt/sources.list.d/mongodb-org-8.2.list
sudo apt-get update
sudo apt-get install -i mongodb-org
La carpeta on s’emmagatzemen les bases de dades podem crear-la, per exemple, en el directori personal de l’usuari: /home/usuari/mongo-data. És important assegurar-se que MongoDB tinga els permisos adequats per a escriure en esta carpeta, especialment en sistemes basats en Unix.
MongoDB i TLS
MongoDB, com moltes altres aplicacions que es comuniquen per xarxa, utilitza el protocol TLS (Transport Layer Security) per a xifrar les connexions entre client i servidor. Per a implementar este xifratge, MongoDB depén d’una llibreria del sistema anomenada libssl, que forma part del projecte OpenSSL. Cada versió de MongoDB es compila amb una versió concreta de OpenSSL.
Per això:
Si estàs utilitzant una versió anterior de Ubuntu que encara requerix libssl1.1, pots afegir el repositori focal-security executant este comando en una sola línia::
$ echo "deb http://security.ubuntu.com/ubuntu focal-security main" | sudo tee /etc/apt/sources.list.d/focal-security.list
$ sudo apt-get update
La instal·lació de MongoDB com a servici deixa el servidor instal·lat i lloc en funcionament en el sistema, i proporciona una sèrie d’instruccions per a poder detindre i reprendre el servici des de terminal. Esta opció és particularment útil en sistemes de producció (no tant de proves o desenrotllament) per a deixar la base de dades permanentment en marxa. No obstant això, els passos a seguir varien molt d’un sistema a un altre, i també amb les diferents versions de MongoDB. A continuació facilitem els enllaços directes a la documentació per a cada sistema operatiu:
En el cas de Linux, per exemple, una vegada instal·lat podem utilitzar aquestes comandes per a conéixer l’estat actual del servidor, parar-lo, iniciar-lo o reiniciar-lo, respectivament:
sudo systemctl estatus mongod
sudo systemctl stop mongod
sudo systemctl start mongod
sudo systemctl restart mongod
Per a permetre que MongoDB s’inicie automàticament en cada reinici del sistema, executem aquesta comanda:
sudo systemctl enable mongod
En el cas que no vulguem (o no haja sigut possible) instal·lar MongoDB en el nostre sistema, podem utilitzar les bases de dades MongoDB en el núvol proporcionat a través de MongoDB Atlas. En esta web podem registrar-nos i triar el pla gratuït, que oferix una capacitat màxima de 512MB d’emmagatzematge, però suficient per al que provarem durant este curs. Una vegada ens hem identificat, seleccionem en el menú de l’esquerra Deployment > Database, i a continuació creem un clúster.
En crear el clúster, triem el pla de pagament (gratuït), i podem triar la plataforma cloud on es desplegarà la base de dades (Amazon, Azure, Google) i la ubicació. L’elecció de l’una o l’altra opció no és important per al que farem en el curs, encara que com més a prop triem la ubicació més ràpida serà la connexió a la base de dades. També haurem de triar el nom del clúster que es crearà (no és molt rellevant, però sí que convé tindre’l present perquè dins definirem les bases de dades que necessitem).
Després que el clúster estiga creat, és necessari configurar qui pot accedir a la base de dades. Seleccionem des del menú de l’esquerra Security > Quickstart. Podem fer-ho a través d’usuari i contrasenya o a través de certificat; en el nostre cas triarem la primera opció, i polsem el botó per a generar l’usuari (Create User).
Una mica més a baix generem les ubicacions permeses per a accedir a la base de dades. Podem triar a mà algunes adreces IP predeterminades, o prémer el botó de Add my current IP address perquè es genere automàticament la IP des de la qual ens connectem actualment.
Quan el clúster ja estiga configurat podrem accedir a ell des de la secció de Clusters del panell esquerre. Polsant en el botó Connect podem veure diferents opcions de connexió des de diferents fonts:
Algunes ferramentes de connexió les veurem en el següent apartat, i si volem connectar mitjançant codi (per Node.js, per exemple), tenim l’opció Drivers:
Per a poder connectar al servidor i gestionar les bases de dades que tinguem instal·lades podem utilitzar diverses eines. En aquest apartat proposarem dos d’elles:
Com a primera opció podem instal·lar i utilitzar un plugin com MongoDB for vscode, que podem consultar en el marketplace oficial. Una vegada instal·lat, des de la paleta d’eines de VS Code tindrem accés directe a MongoDB:
Ací hem de configurar la connexió al nostre servidor MongoDB (suposant que el tinguem iniciat ja, com s’ha explicat anteriorment). Premem en l’enllaç Add Connection de la part superior esquerra i configurem els paràmetres de connexió (també podem editar connexions o esborrar-les des d’aquests enllaços):
Haurem de verificar l’adreça i port, que per defecte són localhost i 27017 respectivament. Ens connectem a la base de dades, prement en el botó Connect. Després de connectar, en el panell esquerre tindrem l’explorador per a examinar els elements del servidor Mongo. Quan creem una base de dades, apareixerà en el llistat, juntament amb les taules o col·leccions que conté. Fent clic en una col·lecció, podem veure a la dreta els documents que conté.
En el cas que vulguem connectar a un clúster de MongoDB Atlas, simplement especifiquem la URL de connexió juntament amb els paràmetres d’autenticació corresponents. Podem accedir al nostre compte Atlas i prémer en el botó Connect del clúster al qual vulguem connectar per a obtindre la URL de connexió:
Des de VS Code, creem una connexió com Connection String i peguem la URL que ens indique Atlas (incloent el nostre password en ella):
Compass és una eina de gestió de bases de dades MongoDB gratuïta, i disponible en la pròpia web de MongoDB (ací l’enllaç).
Des de l’eina tindrem un xicotet formulari de connexió, que podem utilitzar tant per a connectar-nos a una base de dades local…
… com a una base de dades en el núvol, proporcionant la URL que ens indique Atlas:
L’eina Studio3T és una evolució d’una eina prèvia anomenada Robomongo, que s’emprava en versions anteriors per a connectar amb MongoDB. Aquesta eina posteriorment va evolucionar en Robo3T, que era una versió gratuïta d’una altra comercial anomenada Studio3T. Amb el pas dels anys, tot s’ha unificat amb el nom Studio3T, que ofereix l’eina tant de manera comercial com gratuïta, a través de aquest enllaç.
En aquestes anotacions no explicarem com utilitzar-la, ja que el seu ús és molt similar a Compass. Però deixem aquesta opció també per als qui no us acabe de convéncer cap de les alternatives proposades.
Ací tens disponible un vídeo resumeixen de com instal·lar MongoDB com a aplicació independent en Windows/Mac/Linux, i de com usar MongoDB Atlas des de VS Code o des de Compass.
Exercici 1: instal·la MongoDB en local en el teu sistema (o utilitza MongoDB Atlas) i, emprant alguna de les ferramentes vistes (plugin de VS Code, Compass o Studio 3T), tracta de connectar al servidor/clúster que hages creat.