101 mosse da giocare per dare scacco matto a MONGO DB e alla collection Morphy!

web design umbria
DALLA TEORIA ALLA PRATICA: costruire una collection dati con Mongo Db

Salta subito all’ occhio il numero di mosse, ci vuole così tanto? Magari una bella miniatura in 17 mosse alla Paul Morpy come nella https://www.chessgames.com/perl/chessgame?gid=1233404 no? Si perchè Mongo DB della Atlas in questo momento è in crescita vertiginosa come strumento per memorizzare i dati, se non altro per le sue particolarità uniche che lo vedono salvare gli input da da tastiera in formato stringa per esempio, senza l’ausilio di database tradizionali come mysql che presuppongono un lavoro di preparazione. Da qui l’individuazione di un vantaggio immediato, quello di non dover lavorare prima sul DB per iniettare campi e valori, perché Mongo crea tutto in automatico. Quando si installa da https://www.mongodb.com/ ci avvisano che MongoDB è un database distribuito per scopi generici, basato su documenti, creato per i moderni sviluppatori di applicazioni e per l’era del cloud. Ok si ma quando lo inserisco sulla macchina di default dove va a finire fisicamente? All indirizzo “C:\Program Files\MongoDB\Server\numero.versione\bin” ok e poi conviene anche modificare la variabile di ambiente su Pannello di controllo\Sistema e sicurezza\Sistema dove sceglieremo l’opzione di sicurezza avanzate, questo per addizionare il path dell’ eseguibile in entry level. Ok ma come mi districo, ad esempio se volessi mettere in piedi una appllicazione con php e mongo lo posso fare? Si ma preparando prima l’ambiente, occorre installare una patch che consente ai due di parlarsi e modificare il php.ini nella sezione extension cosa che vedremo in un altro articolo con Umbriaway Consulting. Inoltre sul menù di avvio Mongo ci mette a disposizione una Compass GUI che ci consente di collegarci direttamente al DB sfruttando una visualizzazione grafica incisiva per cui possiamo fare tutto senza finestra CMD e comandi manuali, perché abbiamo a disposizione tutti i metodi per creare, inserire, aggiornare cancellare i dati con un semplice click, senza ricordare a memoria i comandi per gestire il DB. Tuttavia questi comandi bisogna conoscerli così come certe particolarità legate agli oggetti javascript circoscritti dalle parentesi {graffe}. Superiamo quindi il trauma iniziale con alcune mosse di approccio. Partiamo dal link sopra: https://www.chessgames.com/perl/chessgame?gid=1233404. Scorporiamo i dati del nostro database: i campi tolto ID che generalmente viene inserito dalla macchina (identificativo unico che rende la singolarità impossibile da clonare, record quindi non ridondante all’ interno del DB sucui possiamo fare operazioni di filtraggio esclusive) a noi serviranno:

Nome del giocatore analizzato, player
Game vs un avversario, game
Apertura giocata, opening
classificazione di apertura, eco
luogo di scontro, where
data di scontro, when
esito dello scontro, result
mosse giocate, moves
link di riferimento per vedere la partita, nome campo link

tradotto nella pratica nel caso specifico:

Nome del database = Morphy
game = Paul Morphy vs Duke Karl / Count Isouard
opening = Philidor Defense: Main Line
eco = C41
luogo = Paris FRA
when = 1858
result = 1-0
moves = 17
link = https://www.chessgames.com/perl/chessgame?gid=1233404

A questo punto come faccio a creare il database con Mongo? E a inserire i dati? In quale formato? E’ buona regola comportamentale per un web developare che deve lavorare in autonomia consultare sempre la documentazione, quindi nel caso specifico: https://docs.mongodb.com/ dove ci sono tutti i riferimenti utili per iniziare dalle basi e anche quelli esterni per approvvigionarsi: https://university.mongodb.com/ per esempio. Ma iniziamo a esplorare i comandi base da dare a terminal (per chi utilizza studio code come editor ci sono molti plug in che consentono una connessione diretta grafica con i database presenti, basta digitare mongo nella stringa di ricerca plug-in, in ogni caso ricordiamoci che COMPASS GUI ci viene installato di default se la nostra esigenza è fare tutto da click e tasto destro senza impartire comandi). Lanciato Mongo se voglio vedere tutti i databases presenti lancio il comando:

> show dbs

ottenendo a video:

admin 0.000GB
chatHistory 0.000GB
config 0.000GB
local 0.000GB

per entrare in un database uso il comando use seguito dal nome db:

> use chatHistory

switched to db chatHistory

> use admin

switched to db admin

diciamo che voglio creare una collections di dati per morphy sotto il DB Admin come fare?

> db.createCollection(“morphy”)

{ “ok” : 1 }

se volessi vedere quante collection ho dentro il database admin per vederle come faccio?

> show collections

morphy
system.version

se volessi vedere i dati? Uso > db.morphy.find() ma al momento la collection è vuota quindi inserisco il primo record usando la sintassi javascript che usa i blocchi di graffa per catturare i dati chiave/valore con:

db.morphy.insertOne({})

dobbiamo passare questi dati:

Nome del database = Morphy
game = Paul Morphy vs Duke Karl / Count Isouard
opening = Philidor Defense: Main Line
eco = C41
luogo = Paris FRA
when = 1858
result = 1-0
moves = 17
link = https://www.chessgames.com/perl/chessgame?gid=1233404

quindi usando la sintassi javcascript il tutto diventa:

> db.morphy.insertOne({nome:”Morphy”, game:”Paul Morphy vs Duke Karl / Count Isouard”, opening:”Philidor Defense: Main Line”, eco:”C41″, where: “Paris”, when: “1858”, result:”1-0″, moves:”17″, link:”https://www.chessgames.com/perl/chessgame?gid=1233404″})

e il risultato è un successo:

{
“acknowledged” : true,
“insertedId” : ObjectId(“5ec4ecfebb517f0d4ece84cd”)
}

web developer umbriaFANTASTICO! Siamo riusciti a superare il primo livello di difficoltà per comprendere Mongo DB, “acknowledged” : true è utile da settare in quei casi dove ad esempio ho dei log e non mi interessa entrare in una condizione vero/falso per il riconoscimento di chi ha immesso i dati, nel senso che inserendo false potrò dire se c’è il log dammi semplicemente i dati in output altrimenti non mostrarmi altro, operazione che velocizzerebbe di più l’estrazione. Immediatamente sotto ho il mio ID creato con “insertedId” : ObjectId(“5ec4ecfebb517f0d4ece84cd”) e chi smanetta con mysql vede subito la differenza rispetto a mysql dove dovevo settare in anticipo che ID doveva essere primario, intero, autoincrementante etc etc, qui è tutto automatizzato. Proviamo a rilanciare ora il comando find che prima non funzionava e vediamo l’effetto che fa:

> db.morphy.find()

mi viene restituito a video l’oggetto di interesse.

{ “_id” : ObjectId(“5ec4ecfebb517f0d4ece84cd”), “nome” : “Morphy”, “game” : “Paul Morphy vs Duke Karl / Count Isouard”, “opening” : “Philidor Defense: Main Line”, “eco” : “C41”, “where” : “Paris”, “when” : “1858”, “result” : “1-0”, “moves” : “17”, “link” : “https://www.chessgames.com/perl/chessgame?gid=1233404” }

c’è da dire che la creazione delle collection può anche non passare entrando per un DB di default. Posso sempliciemente dichiarare il nome della collection con o senza il CREATE e in entrambi i casi il contenitore per i miei documenti mi verrebbe generato in automatico. In uno dei prossimi articoli affronteremo con Umbriaway Consulting le questioni legate all’ aggiornamento e alla cancellazione dei dati, nonchè ai filtri di estrazione informazioni da una collection.

CONCLUSIONI

Il trauma iniziale per i problemi di configurazione e l’uso di Mongo DB è stato superato e la porta si è aperta, siamo in grado di selezionare i DB, creare collection, inserire dati e creare oggetti. Ma avanzando abbiamo di fronte un labirinto di porte che apre universi complessi, ce ne rendiamo conto solo approdando a https://docs.mongodb.com/ dove la mole di info per l’operatività dell’applicativo è corposa. La semplicità salta subito all’ occhio, così come l’immediatezza del risultato. Sicuramente uno strumento da conoscere e usare in ambito web development.

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo di WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione /  Modifica )

Google photo

Stai commentando usando il tuo account Google. Chiudi sessione /  Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione /  Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione /  Modifica )

Connessione a %s...

%d blogger hanno fatto clic su Mi Piace per questo: