#howto - Installazione e configurazione di MongoDB

Scritto da il
mongodb
systemd
archlinux
ubuntu
fedora

MongoDB è un database non relazionale, basato su documenti. La sua struttura lo colloca nella classifica dei database NoSQL.

NOTA BENE:

Se noti inesattezze o parti non aggiornate di questa guida segnalale sul nostro github, è nostra intenzione tenerla quanto più possibile aggiornata col tempo.

NoSQL - excursus

Senza addentrarsi in troppi dettagli, è stato ritenuto opportuno fornire un breve spazio informativo a cosa sia l’approccio Not Only SQL.
La prima precisazione, doverosa da farsi, è che NoSQL non significhi No-SQL come purtroppo pensano molti, ma come svela invece l’acronimo significa “non solo SQL”; questa disambiguazione è importante a capirsi poiché anche i dati NoSQL sono strutturati.

Mentre la filosofia SQL si basa sui principi ACID ( che impongono al database di godere delle proprietà di Atomicità, Consistenza, Isolamento e Durabilità ), la filosofia NoSQL vuole rilassarne alcuni vincoli creando i principi BASE.

Teorema CAP

Nel 1998 un professore di informatica dell’università californiana Berkeley, tale Brewer, teorizza attraverso un enunciato che non è possibile per un sistema di database distribuito ( ovvero condiviso tra più calcolatori in diversi luoghi fisici contemporaneamente ) offrire queste proprietà:

  • Consistenza
  • disponibilità (dall’inglese Avaibility )
  • tolleranza di Partizione ( ovvero la tolleranza alla perdita di informazioni e malfunzionamenti )

Da queste e altre considerazioni nasce il principio BASE (ovvero Basically Available Soft-state (services with) Eventual consistency) che è alla base dei sistemi NoSQL, ciò enuncia che rilassando il principio di consistenza dei DBMN è possibile garantire disponibilità, isolamento e durabilità.

In realtà ciò non significa che questi sistemi non godono di consistenza, ma causa ritardi ed eventuali fallimenti di comunicazione, non può essere garantita in tempi reali.

Installazione di MongoDB

Seguono le istruzioni per installare su diverse distribuzioni mongodb

Debian e derivate

Per prima cosa dobbiamo installare il pacchetto mongodb dal gestore pacchetti:

apt install -y mongodb

questo è in realtà un metapackage che andrà ad installare un totale di 5 pacchetti:

  • mongodb-org-server
  • mongodb-org-mongos
  • mongodb-org-shell
  • mongodb-org-tools

Archlinux e derivate

Su archlinux troviamo i vari pacchetti su AUR, in particolare per il cli possiamo scegliere tra:

  • mongodb : il pacchetto da compilare direttamente tramite sorgente

  • mongodb-bin : pacchetto precompilato

Proviamo ad installare il secondo:

git clone https://aur.archlinux.org/packages/mongodb-bin/
cd mongodb-bin
makepkg -si 











Ovviamente possiamo usare anche un AUR-helper.

Inoltre esiste un pacchetto con diversi strumenti utili di mongo, i mongodb-tools ( o se lo volete precompilato i mongodb-tools-bin ).

Allo stesso modo possiamo installarlo con un AUR-Helper oppure manualmente:

git clone https://aur.archlinux.org/packages/mongodb-tools-bin/
cd mongodb-tools-bin
makepkg -si

Fedora e distro con dnf/yum package manager

Per installare mongodb su fedora aggiungiamo prima i repository, andiamo a creare con il nostro editor preferito un nuovo file tra i repository:

nano /etc/yum.repos.d/mongodb-4.4.repo

E scriviamo al suo interno:

[mongodb-org-4.4]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.4/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-4.4.asc

Quindi aggiorniamo dnf:

dnf update

E installiamo mongo:

dnf install mongodb-org

Se non avete dnf, provate con yum

Avvio con systemd

procediamo con l’abilitazione e l’avvio del servizio via systemctl:

systemctl enable mongodbsudo systemctl start mongodb

richiedendone quindi lo stato:

systemctl status mongodb

dovremmo ricevere un output simile al seguente:

    mongodb.service - An object/document-oriented database   
    Loaded: loaded (/lib/systemd/system/mongodb.service; enabled; vendor preset: enabled)   
    Active: active (running) since Wed 2019-08-07 17:55:43 BST; 38min ago     
    ..
    Started An object/document-oriented database.

Possiamo procedere nel seguente modo per ottenere una seconda verifica del suo funzionamento:

mongo --eval 'db.runCommand({ connectionStatus: 1 })'

ottenendo quindi un esito simile al seguente:

    MongoDB shell version: 3.2.11
    connecting to: test{        
      "authInfo" : {                
        "authenticatedUsers" : [ ],                
        "authenticatedUserRoles" : [ ]        
        },        
        "ok" : 1
      }

dove ok: 1 è la conferma che il server funziona correttamente.

Configurazione

Per impostazione base MongoDB è configurato per funzionare nella maggior parte delle casistiche, unico accorgimento è quello di modificare l’indirizzo IP a cui è consentita la connessione. Infatti di default resta in ascolto sull’indirizzo locale 127.0.0.1 per consetire a MongoDB di funzionare con un IP pubblico ci basta modificare le impostazioni con il seguente comando:

nano /etc/mongodb.conf

andiamo quindi a modificare come segue:

bind_ip = 127.0.0.1, NOSTRO_IP#port = 27017

dove NOSTRO_IP è ovviamente il nostro indirizzo IP a cui vogliamo abilitare l’accesso.

Ultimate le modifiche riavviamo il servizio via systemctl:

systemctl restart mongodb
history_edu Revisioni