ìNoSQL
TESTOCONSIGLIATOhttp://martinfowler.com/nosql.html
Definizione
ì Nellasecondametàdeglianni2000Google,Amazon,Facebook studiavanonuovemodalità dimemorizzazionepersistentedeidati
Google è BigTable
Amazon è DynamoDB
Facebook è Cassandra
ì Ilmovimento nascenel2009
ì NomesceltoperattirarepartecipantiaunincontrofrasviluppatoridiDBMS“open-source,distribuiti,nonrelazionali”
Giorgio Giacinto 2015
2
Principali vantaggi modello relazionale
ì DBMSrelazionali(SQL)ottimiper
ì Persistenzadeidati
ì IDBMSconsentonodiorganizzarelamemorizzazione
digrandiquantitàdidatiutili
ì L’estrazionedidatitramitequery SQLèsemplice
ì Integrazionediapplicazionidiverseì L’accessoaidatièfacilitatodallaseparazionefra
organizzazionefisicaeorganizzazionelogica
ì Gestionedellaconcorrenza(transazioni)
ì PortabilitàemanutenibilitàgrazieallostandardSQL
Giorgio Giacinto 2015
3
Criticità del modello relazionale per lo sviluppo di applicazioni web nel 21° secolo
ì Disadattamentodiimpedenza
ì Ilmodellorelazionaleelaborainsiemidituple
ì Ciascunatupla èuninsiemediattributisemplici
ì Unastrutturadaticomplessadaluogoanumerose
relazioni
Giorgio Giacinto 2015
4
Esempio di disadattamento di impedenzaInterfacciautenteperunmodulod’ordine
ecorrispondentitabellenelmodellorelazionale
Giorgio Giacinto 2015
5
Criticità del modello relazionale per lo sviluppo di applicazioni web nel 21° secolo
ì BasidiDatiorientateall’integrazioneì Unodegliscopiprimaridelmodellorelazionale
ì LaBasediDaticentralizzata ottimizzamediamentel’accessodapartediapplicazionidiverse
ì BasidiDatiorientateall’applicazioneì L’archiviodeidatiottimizzatorispettoall’unica
applicazionechevideveaccedere
ì ApplicazionidiversepossonocooperarescambiandodatiusandoilformatoXML eilprotocolloHTTPì XMLconsenteladefinizionedistrutturedati
complesseì Coerenzadeidatiacaricodelleapplicazioni
Giorgio Giacinto 2015
6
Criticità del modello relazionale per lo sviluppo di applicazioni web nel 21° secolo
ì Rapidacrescitaafineanni‘90delleimpreseicuiprofittiderivanodalweb(dot-com)
ì EspansionesupportoHWattraversoclusterdicomputerabassocosto
ì Altascalabilitàacosticontenuti
ì L’usodibasididatirelazionalirichiede
ì unsistemadimemorizzazionecentralizzato
ì acquistodilicenzeperogniprocessore/nodo
IDBMSrelazionalinonsonostatisviluppatiperessereeseguitisusistemicluster
Giorgio Giacinto 2015
7
NoSQL
ì Nonindicaunmodello,néunprodotto,néuna
famigliadiprodotti.
ì E’unmovimento chepromuovesistemidi
memorizzazionepersistentealternativialmodello
relazionale
ì Ciascunsistema“NoSQL”èorientatoaun
particolaredominioapplicativo
ì ListadiprogettiNoSQL su
http://nosql-database.org
Giorgio Giacinto 2015
8
Caratteristiche comuni sistemi NoSQL
ì Natinel21° secoloperleimpresedelwebì noncomprendonoimodellipre-SQL
ì eraBC– Before Codd
ì Open-source
ì Adattiaessereeseguitidauncluster
ì Assenzadiunoschemaì Consentel’usodirecordconnumerodiattributi
variabile
ì NonsupportanointerrogazioneconlinguaggioSQLì OperazionisullabasedidatieseguitetramiteAPI
Giorgio Giacinto 2015
9
DBMS relazionali e DB NoSQL
ì Nondevonoessereconsideraticomeantagonisti
MA
ì comesoluzionicomplementari,ciascunaadattaa
unparticolareambienteoperativo
ì Inunaaziendamodernacoesistonobasididati
relazionaliebasididati‘NoSQL’
ì sipuòparlarediSadalage &Fowler
Giorgio Giacinto 2015
10
ìModelli di Dati Aggregati
Giorgio Giacinto 2015
11
Modelli dei dati
ì Imodellideidatidescrivonoilmodoconcuiidati
sonomanipolati dagliutilizzatori
ì Imodellidimemorizzazionedeidati descrivonoilmodoconcuiidatisonoregistrati inmodo
persistente
ì Nelmondoidealedovrebbeesseresufficiente
lavoraresoloalivellodeimodellilogici…
…mal’ottimizzazionedelleprestazionirichiedela
conoscenzadelmodellodimemorizzazione
Giorgio Giacinto 2015
12
Modelli dei dati aggregati
ì GliapprocciNoSQL possonoesseresuddivisiin
quattromodellididati
ì key-value
ì document store
ì column-family
ì graph
ì Caratteristicacomune:sonoorientati
all’aggregazione
Giorgio Giacinto 2015
13
Orientamento all’aggregazione
ì Nelmodellorelazionaleleentitàsono
rappresentatecometuple divalori
ì Nonèpossibileavereunatupla ounalistadivalori
annidatainun’altratupla
ì Ilmodellorelazionaleèidoneoarappresentare
entitàconstrutturasemplice
ì Un indicaunacollezionedioggettiin
relazionefraloro,daconsiderarecomeunaunità
ì Rappresentadaticonstrutturacomplessa
Giorgio Giacinto 2015
14
EsempioModello relazionale (UML) per un sito di e-commerce
Giorgio Giacinto 2015
15
EsempioUn possibile stato del RDBMS per un sito di e-commerce
Giorgio Giacinto 2015
16
EsempioModello orientato all’aggregazione per un sito di e-commerce
Giorgio Giacinto 2015
17
EsempioDefinizione in JSON di aggregati del sito di e-commerce
Giorgio Giacinto 2015
Ilvaloreè intuttigliaggregati
18
EsempioAltro modello orientato agli aggregati per un sito di e-commerce
Giorgio Giacinto 2015
Tuttigliordinidiun
clientesonoall’interno
dell’aggregatoCliente
19
EsempioDefinizione in JSON di aggregati del sito di e-commerce
Giorgio Giacinto 2015
20
Progettazione per aggregati
ì Diversepossibilitàdidefinireaggregati.
ì Lasceltadipendeprincipalmentedall’aggregazionedidaticoinvoltanelleoperazionipiùfrequentiì Ades.,potreivolerspessoaccedereaidatideiclienti
eatuttigliordinichehannofattooppure
ì potreivolerspessoaccedereaisoliordinisingolarmente
ì Selabasedidatirisiedeinuncluster,simemorizzanosuisingolinodiidatigiàaggregati
ì minimizzazionetempidiaccessoaidatiaggregati
Giorgio Giacinto 2015
21
Accesso ai datiOggettiinseritiinununico
aggregato
Aggregatiseparatiper
ClientieOrdini
Giorgio Giacinto 2015
22
Modello relazionale e aggregati
ì Ilmodellorelazionalenonprevedeilcostrutto
aggregazione
ì E’espressoattraversoilvincolodiintegritàreferenziale
ì Vantaggiodelmodellorelazionaleaggregate-ignorantì E’unmodellogeneraledeidati,nonlegatoalle
operazionipiùfrequentisullabasedidati
ì Consentediesprimereinmodosempliceunaampia
varietàdioperazionidimanipolazionedeidati
ì Unmodelloconaggregatièspecializzato peralcunemanipolazionideidatifrequenti
Giorgio Giacinto 2015
23
Aggregati e proprietà ACID
ì ImodelliNoSQL nonsempregarantisconole
proprietàACID
ì Atomicità alivellodisingoloaggregatoì InmoltimodelliNoSQL ècompitodel
programmatoregarantirel’atomicità suoperazionichecoinvolgonopiùaggregati
ì Lagestionedellacoerenza èpiùcomplessarispetto
almodellorelazionale
Giorgio Giacinto 2015
24
I modelli e
ì Inquestimodelliciascunaggregatopossiedeun
identificatore
ì key-valueì nessunastrutturaneidati
ì labasedidatitrattaciascunaggregatocomeunblobdi
bitsenzasignificato(opacitàdellabasedidati)
ì possibilerecuperaresolointeriaggregatiinbaseall’id
ì documentì èpresenteunastrutturacheimponedeivincoli
ì flessibilitànellamanipolazionedeidati
ì interrogazioniancheinbaseaicampidellastruttura
Giorgio Giacinto 2015
25
Il modello
ì Primoesempio:BigTable realizzatodaGoogle
ì Memorizzazionepercolonneanzichéperrighe
ì Colonneaggregateattraversounamappaadue
livelli
Giorgio Giacinto 2015
26
Il modello basato su
Giorgio Giacinto 2015
ì Inodi contengono
informazionisemplici
ì Unnomeoelementi
ditipochiave-valore
ì Gliarchi rappresentano
lerelazionifrainodi
ì Utiliperinterrogazioni
deltipo:
mostraglioggettichepiaccionoaBarbaraeAnna
Facebook usaunmodelloagrafi:Bronson etal., TAO:Facebook’s DistributedDataStore fortheSocialGraph (USENIX2013)
27
Basi di dati senza schema
ì UnadellecaratteristichecomuniaimodelliNoSQL è
l’assenzadiunoschema
ì Inprincipioogniinformazionememorizzata
potrebbeesseredescrittadaattributidiversi
ì LoschemaneimodelliNoSQL èimplicitonelcodice
dell’applicazioneusatoperaccedereaidati
ì LamemorizzazionedidaticonmodelliNoSQL nonè
adattaperl’accessoaidatidaapplicazionidiverse
Giorgio Giacinto 2015
28
ìKEY-VALUE DATABASES
Giorgio Giacinto 2015
29
Definizione
ì Lebasididatiditipokey-value sonolepiùsemplici
dausaredalpuntodivistadelleAPI
ì Uncontenitoredeltipochiave-valoreèunatabella
hash.
ì ConfrontofralaterminologiaOracleeRiak
Giorgio Giacinto 2015
30
key-value store
ì Lachiaveconsentediindividuarel’entità,mentreil
valoreèunblobdidati.
ì blob=binary largeobject
ì AlcuniDBditipokey-value
ì Riak
ì Redis
ì Memcached DB
ì HamsterDB
ì AmazonDynamoDB
ì ProjectVoldemort
Giorgio Giacinto 2015
31
Modelli di memorizzazione dei dati
Giorgio Giacinto 2015
Ununicobucket checontieneunasolacoppia
chiave-valorecherappresental’utenteeilsuo
acquisto
Ununicobucket incuièpossibilespecificare
chiavidistinteperrecuperareisingolioggetti
nelbucket
Scalabilitàattraversosharding sulvaloredellachiave
32
Interrogazioni nel modello key-value
ì Leinterrogazionipossonocoinvolgeresololachiave
ì Sirecuperailblobassociatoeeventualialtre
condizionisuivalorinelblobdevonoessere
verificatealivelloapplicativo
ì Spessolachiaveècreataautomaticamente
ì ades.,numeroprogressivodiunordine
mapuòancheessereunaemail,unnomeutente
Giorgio Giacinto 2015
33
Quando usare il modello key-value
ì Memorizzazionediinformazionidisessioneper
applicazioniweb
ì Gestioneprofiliutenteerelativepreferenze
ì Rappresentazionedel“carrellodellaspesa”in
applicazionidicommercioelettronico
Giorgio Giacinto 2015
34
Quando non usare il modello key-value
ì Gestionedidatiinrelazionefraloro
ì Transazioniconoperazionimultiple
ì Interrogazionisuidati(“valore”associatoalla
chiave)
ì Necessitàdioperaresuinsiemididati
Giorgio Giacinto 2015
35
ìDOCUMENT DATABASES
Giorgio Giacinto 2015
36
Modello dei dati
ì Questoèilmodellopiùsimileallebasididati
relazionali
ì memorizzadocumentiXML,JSON,ecc.
ì ConfrontofralaterminologiaOracleeMongoDB
Giorgio Giacinto 2015
37
Caratteristiche del modello document
ì Ciascundocumentohaunoschema
ì sonopossibiliinterrogazionisucampideldocumento
ì Documentidiversidiunastessabasedidatipossono
avereschemidiversichecondividonosoloalcuni
attributi
ì AlcuniDBditipodocument
ì MongoDB
ì CouchDB
ì Terrastore
ì OrientDB
ì RavenDB
Giorgio Giacinto 2015
38
Esempi di documenti di una base di dati
Giorgio Giacinto 2015
Documento1
Documento2
39
MongoDB: Rappresentazione dellarelazione WORKS_ON
Giorgio Giacinto 2015
40
MongoDB: Rappresentazione dellarelazione WORKS_ON
Giorgio Giacinto 2015
41
InterrogazioniEsempi con MongoDB
ì SELECT * FROM orderdiventa db.order.find()
ì SELECT * FROM order WHERE customerId = "883c2c5b4e5b”diventa db.order.find({"customerId":"883c2c5b4e5b"})
ì SELECT * FROM customerOrder, orderItem, product WHERE customerOrder.orderId = orderItem.customerOrderId AND orderItem.productId = product.productId AND product.name LIKE '%Refactoring%’diventa db.orders.find({"items.product.name":/Refactoring/})
Giorgio Giacinto 2015
42
Quando usare il modello document
ì Registrazionedieventi(event logging)ì Consentediregistrareeventidiversi,ciascunoconil
proprioinsiemediattributi
ì ContentManagementSystems(CMS)
Piattaformeperblog
ì WebAnalytics
ì Applicazionicommercioelettronico
Giorgio Giacinto 2015
43
Quando non usare il modello document
ì Necessitàdieffettuaretransazionicomplesseche
coinvolgononumeroseoperazioni
ì Interrogazionichecoinvolgonoaggregatilacui
strutturaèvariabile
Giorgio Giacinto 2015
44
ìCOLUMN-FAMILY STORES
Giorgio Giacinto 2015
45
Proprietà
ì Idatisonorappresentatiattraversounachiave
associataauninsiemedivalori,eivalori
appartengonoaunafamigliadicolonne
Giorgio Giacinto 2015
46
Basi di dati di tipo column-family
ì Appartengonoaquestatipologia
ì Cassandra
ì Hbase
ì Hypertable
ì AmazonDynamoDB
Giorgio Giacinto 2015
47
Esempio di column family
Giorgio Giacinto 2015
48
Linguaggio DDL e DML in Cassandra
ì Cassandrahaunsuolinguaggio(CQL)simileaSQL
CREATE COLUMNFAMILY Customer ( KEY varcharPRIMARY KEY, name varchar, city varchar, web varchar);
INSERT INTO Customer (KEY,name,city,web)VALUES ('mfowler’,'Martin Fowler’,'Boston’,'www.martinfowler.com');
Giorgio Giacinto 2015
49
Interrogazioni in Cassandra
ì SELECT * FROM Customer
ì SELECT name,web FROM Customer
ì SELECT name,web FROM CustomerWHERE city='Boston’
ì NonostantelasomiglianzaconSQL,CQLnon
supportatutteleinterrogazioniSQL
ì Nonèpossibileusareinterrogazioniannidate
ì Nonèpossibilel’operazionedijoin
ì DisolitolaclausolaWHEREèsemplice
Giorgio Giacinto 2015
50
Quando usare il modello column-family
ì Registrazionedieventi(event logging)
ì ContentManagementSystems(CMS)
Piattaformeperblog
ì Contatori
ì Ades.,visitatoridiunapaginaweb
ì Gestionescadenze
ì Ades.,licenzesoftwareinprovaperunperiododi
tempolimitato
Giorgio Giacinto 2015
51
Quando non usare il modello column-family
ì NecessitàditransazioniconproprietàACID
ì Interrogazioniconfunzionidiaggregazione
(ades.,SUM,AVG)
Giorgio Giacinto 2015
52
ìPOLYGLOT PERSISTENCE
Giorgio Giacinto 2015
53
A ciascun dato, il suo modello
Giorgio Giacinto 2015
Approcciotipico:unicomodellodidatiper
lediverseattività.
Polyglot persistence:modellididati
diversiperciascunaattività.
54
Evoluzione: dalle basi di dati ai servizi
ì Persemplificarelascritturadiapplicazionichesi
devonointerfacciareadiversebasididati
ì siincapsulaciascunabasedidatiinunservizio
ì LeapplicazionicomunicanoconleAPIdelservizio
Giorgio Giacinto 2015
55
NoSQL e RDBMS
ì IlmovimentoNoSQL nonminaccial’usodeiRDBMS
ì Ilmodellorelazionaleèancoravalidoperle
applicazioniperlequalièstatosviluppato
ì SoluzioniNoSQL sonodapreferireaRDBMSper
nuoveesigenzedimemorizzazioneegestionedei
datiricollegabiliallo
ì Sviluppodelwebedellesueapplicazioni
ì Retisocialivirtuali
ì Evoluzionepiattaformedicalcolo
Giorgio Giacinto 2015
56
Top Related