Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Database NoSQL

Un esempio pratico di utilizzo della libreria mongolite per il linguaggio di programmazione statistico R, per l'accesso al DBMS NoSQL MongoDB.
Un esempio pratico di utilizzo della libreria mongolite per il linguaggio di programmazione statistico R, per l'accesso al DBMS NoSQL MongoDB.
Link copiato negli appunti

Molte fonti di dati sono disponibili in database NoSQL. Questo è uno scenario molto ricco di soluzioni, e per questo molto variegato, quindi ci si troverà a dover individuare strumenti adatti per dialogare con ogni possibile tipo di DB. Le vie, in generale, saranno per lo più due:

  • si potranno sfruttare API REST eventualmente messe a disposizione dal DBMS, cosa molto comune nel NoSQL. Come visto nella lezione precedente, esistono librerie già pronte per un completo accesso via REST: dovremo solo familiarizzazione con le chiamate specifiche del DBMS cui saremo interessati;
  • si potranno sfruttare librerie dedicate messe a disposizione tramite il progetto CRAN.

Un esempio che può esser emolto utile trattare in questa lezione è l'interazione con MongoDB, il database NoSQL più diffuso al mondo. Per esso, esiste un'apposita libreria, mongolite, che includere nel nostro ambiente di lavoro con i due passaggi che abbiamo già visto: installazione del pacchetto e caricamento in memoria con la funzione library.

Per le prove, avremo a disposizione una nostra installazione di MongoDB sulla macchina locale ed il primo esperimento consisterà nel creare un data.frame in R ed inserirlo, mediante mongolite, in una collection del database. Creiamo un data.frame in R, popolato con pochi dati simbolici:

> cliente <- c("Ditta Rossi e figli", "Azienda Bianchi", "Manifatture Verdi", "Compagnia Neri e C.")
> importo <- c(12000, 8590, 7800, 2440)
> ordini<-data.frame(cliente, importo)
>
> ordini
              cliente importo
1 Ditta Rossi e figli   12000
2     Azienda Bianchi    8590
3   Manifatture Verdi    7800
4 Compagnia Neri e C.    2440

A questo punto, potremo - sempre in R - iniziare a lavorare con MongoDB, importando la libreria e stabilendo una connessione:

> library("mongolite")
> collection <- mongo(collection="ordini", db="gestione_azienda")

Con la funzione mongo diamo vita ad un collegamento ad una collection nel database di MongoDB. Per stabilire questa via di dialogo, abbiamo solo specificato il nome della collection e del database, ed in questo caso verrà dato per assodato che l'installazione del DBMS sia attiva sulla macchina locale. In alternativa, potremo specificare anche il parametro url nell'invocazione a mongo. Il risultato che si otterrà sarà un puntatore alla collection mediante cui invocare funzioni di accesso o manipolazione di dati in MongoDB.

Proviamo ora l'inserimento del data.frame nella collection:

> collection$insert(ordini)
List of 5
 $ nInserted  : num 4
 $ nMatched   : num 0
 $ nRemoved   : num 0
 $ nUpserted  : num 0
 $ writeErrors: list()

Come possiamo vedere, l'inserimento ha avuto successo, e infatti MongoDB riporta il numero e la tipologia delle variazioni apportate alla collection evidenziando così un totale di quattro inserimenti corrispondenti appunto al numero di righe presenti nel data.frame predisposto. La verifica potremo farla operando tramite la shell di MongoDB oppure continuando ad operare sul database mediante il nostro collegamento ormai stabilito. Seguiamo questa ultima via, sfruttando la funzione find: le query potranno essere impostate secondo le modalità usate in MongoDB:

> collection$find()
              cliente importo
1 Ditta Rossi e figli   12000
2     Azienda Bianchi    8590
3   Manifatture Verdi    7800
4 Compagnia Neri e C.    2440
> collection$find('{"importo":{"$gte":8000}}')
              cliente importo
1 Ditta Rossi e figli   12000
2     Azienda Bianchi    8590

Eseguiremo due query - dall'interno dell'ambiente R - di cui la prima ci offrirà l'insieme dei documenti inseriti nella collection mentre la seconda accetterà i parametri in BSON di una normale query per MongoDB.

Ti consigliamo anche