Slide 1: Crogioli, alambicchi e beute
Dove mettere i vostri dati
Simone Deponti (simone.deponti@abstract.it)
Slide 2: Il problema della persistenza
1.Problema fondamentale dell'informatica 2.Soluzione semplice: file 3.Soluzione complessa: sistemi di storage
Slide 3: Cenni storici
1960 1970 1980 2000
COBOL ●CODASYL
●
C ●RDBMS
●
C++ ●OO-DB
●
Java ●NoSQL
●
Slide 4: Gli sfidanti SQLAlchemy BigTable ZODB
Slide 5: SQLAlchemy: ORM e oltre
1.ORM: semplificano l'uso di SQL
● ●
No problemi compatibilità Più sicurezza Compensazione feature Mappa oggetti su espressioni
2.Astrazione RDBMS
●
3.Non solo tabelle
●
Slide 6: SQLAlchemy: in azione
Slide 7: SQLAlchemy
Forza
1.Semplice
●
Debolezze
1.Programmazione generica difficile 2.Difficile con
●
API “scala” bene Come sviluppo Come prestazioni
2.Veloce
● ●
Definizioni schemi labili Strutture gerarchiche Normalizzazione Verticalizzazione
●
3.Flessibile
3.Scalabilità
● ●
Slide 8: SQLAlchemy: per chi
• •
Potenza (e problemi) del relazionale Ottimale se:
• • •
Strutture dati definite Collezioni omogenee Forte tipizzazione del dato
•
~ 99% casi applicativi
Slide 9: ZODB: Object DataBase
1.Object database: il ritorno del filesystem 2.Inserimento oggetti nativi Python 3.Le referenze vengono registrate 4.Dinamico 5.Pickling
Slide 10: ZODB: in azione
Slide 11: ZODB
Forza
1.Dinamismo 2. Programmazione generica e introspezione 3.Collezioni eterogenee 4.API trasparente
Debolezze
1.“Listing cartella con 10000 files” 2.No index, no search 3.Scalabilità “differente”
Slide 12: ZODB: per chi
1.Definizioni schemi labili 2.Necessità di componenti generici 3.Indicizzare non è un problema 4.Esempio
●
Content Management System
Slide 13: BigTable: distribuito
1.Problema strutture fortemente distribuite 2.Simile a RDBMS
●
Concetto di record e colonna Famiglie di colonne Consistenza “a latere”
3.Differente da RDBMS
●
4.CAP Theorem
●
Slide 14: BigTable: cosa
1.Matrice sparsa
● ●
Famiglie di colonne e colonne Righe, inserimento non atomico su intera riga (Id riga, Id colonna, timestamp) → valore Solo Cassandra
2.Matrice 3D
●
3.Matrice 4D
●
Slide 15: BigTable: con Python?
1.Hbase (BigTable classico) o Cassandra (BigTable + Dynamo) 2.Via Thrift
●
Generazione protocolli binari multilinguaggio
3.Molto diverso da concetti base presenti
Slide 16: BigTable: in azione
Slide 17: BigTable
Forza
1.Superscalabilità 2.Avaliability & Partition tolerance 3.Buon dinamismo
Debolezze
1.API non intuitiva 2.Delega consistenza
●
Fa del proprio meglio, non garantisce
3.Sforzo sviluppo applicativo
●
Tablet e località
Slide 18: BigTable: per chi
1.Google, Facebook, Yahoo 2.Data mining su grandi moli
●
Map/Reduce
3.Dati spezzati in microelementi 4.Necessità di distribuire aggressivamente
Slide 19: Conclusioni
1.Idee chiare: ORM + RDBMS 2.“robe”, “documenti”: OO-DB 3.Grandissime moli: BigTable
Slide 20: Per saperne di più
• • •
http://sqlalchemy.org/docs/ http://www.zodb.org http://www.julianbrowne.com/article/viewer/bre wers-cap-theorem http://wiki.apache.org/cassandra/DataModel http://github.com/digg/lazyboy
• •
Slide 21: Credits
1.Brueghel the Elder 2.Rob Word 3.http://www.flickr.com/photos/gilest/1