Node.js

Introducció a MongoDB

  

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.

1. Alguns conceptes de bases de dades NoSQL

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.

2. Instal·lació de MongoDB

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 apt per a Ubuntu o brew per 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.

2.1. Instal·lació com a aplicació independent

La instal·lació de MongoDB com a aplicació independent ens permetrà posar-ho en marxa i detindre-ho quan ens convinga, utilitzant comandos específics o scripts personalitzats.

Per a descarregar i instal·lar MongoDB, has de dirigir-te al seu lloc web oficial i, en el menú superior, seleccionar la secció de Productes. Allí, trobaràs l’opció de descarregar la versió Community *Server, que és gratuïta i no requerix registre previ (enllaç directe a la descàrrega). Tria la versió adequada per al teu sistema operatiu.

2.1.1. Sistemes Mac i Linux

En el cas de Mac OSX o Linux, pots descarregar un arxiu TGZ, i descomprimir-lo en la carpeta que vulgues. Normalment se sol situar en una carpeta anomenada mongo en la carpeta personal de l’usuari (per exemple, /home/alumne/mongo).

En el cas de Ubuntu i distribucions basades en Debian, és més convenient descarregar el .deb i instal·lar-ho des de consola amb el comando $ sudo dpkg -i nomPaquet.deb.

En Ubuntu 20.04 i versions més recents, no és necessari instal·lar la llibreria libssl1.1, ja que les versions actuals de MongoDB depenen de libssl3. Seguix les instruccions oficials en la documentació de MongoDB per a una correcta instal·lació.

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

Finalment, actualitza els repositoris: $ sudo apt-get update

2.1.2. Sistemes Windows

En el cas de Windows, pots descarregar un arxiu ZIP i procedir com en el cas anterior (descomprimir-lo on vulgues), o bé utilitzar 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.I, sent X.I la versió descarregada), ja que caldrà accedir a esta carpeta per a arrancar el servidor manualment.

2.1.3. La carpeta per a les bases de dades

Una vegada que hages instal·lat o descomprimit MongoDB en el teu sistema, és necessari crear una carpeta on s’emmagatzemaran les bases de dades. Encara que pots cridar-la com preferisques, és comú nomenar-la mongo-data. Esta carpeta ha de situar-se en un lloc accessible i fàcil de localitzar.

És important assegurar-se que MongoDB tinga els permisos adequats per a escriure en esta carpeta, especialment en sistemes basats en Unix.

2.1.4. Posada en marxa del servidor

Per a iniciar el servidor MongoDB en qualsevol sistema, has d’accedir des d’un terminal a la subcarpeta bin de la carpeta d’instal·lació de MongoDB, i executar des del propi terminal el comando mongod, indicant en el paràmetre --dbpath la ruta cap a la carpeta que hem creat per a emmagatzemar les dades.

./*mongod --dbpath /home/alumne/mongo-data

NOTA: Si no saps on s’ha instal·lat mongo, utilitza el comando $ whereis mongod

mongod.exe --dbpath C:\mongo-data

En qualsevol cas, 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

2.2. Instal·lació com a servei

La instal·lació de MongoDB com a servei deixa el servidor instal·lat i lloc en funcionament en el sistema, i proporciona una sèrie de comandes per a poder detindre i reprendre el servei des de terminal. Aquesta opció és particularment útil en sistemes de producció (no tant de proves o desenvolupament) per a deixar la base de dades permanentment en marxa.

Per a deixar instal·lat MongoDB com a servei en sistemes Linux (una cosa molt habitual), podem seguir els passos indicats en la web oficial, per a la versió de MongoDB desitjada (es pot triar en un desplegable en la secció esquerra).

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

Instal·lació en altres sistemes

Si preferixes instal·lar MongoDB com a servici en altres sistemes, ací tens algunes guies per a fer-ho, ja que estos continguts no formen part del curs en si:

2.3. Ús de MongoDB en el núvol

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 aquesta web podem registrar-nos i triar el pla gratuït, que ofereix una capacitat màxima en MB d’emmagatzematge, però suficient per al que provarem durant aquest curs. En aqueixa mateixa pantalla, una mica més a baix, 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 hem de configurar el sistema d’accés. 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 premem 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.

3. Eines de connexió amb el servidor

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:

3.1. Plugin MongoDB per a VS Code

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):

3.2. Utilitzant Compass

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:

3.3. Utilitzant Studio3T

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.

3.4. Resum

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.