SlideShare uma empresa Scribd logo
1 de 21
Baixar para ler offline
Crogioli, alambicchi e beute
                                              Dove mettere i vostri dati




Simone Deponti (simone.deponti@abstract.it)
Il problema della persistenza
1.Problema fondamentale dell'informatica
2.Soluzione semplice: file
3.Soluzione complessa: sistemi di storage
Cenni storici

    1960       1970    1980          2000




●COBOL     ●C          ●C++      ●Java
●CODASYL   ●RDBMS      ●OO-DB    ●NoSQL
Gli sfidanti

     SQLAlchemy


     BigTable


     ZODB
SQLAlchemy: ORM e oltre
1.ORM: semplificano l'uso di SQL
  ●   No problemi compatibilità
  ●   Più sicurezza
2.Astrazione RDBMS
  ●   Compensazione feature
3.Non solo tabelle
  ●   Mappa oggetti su espressioni
SQLAlchemy: in azione
SQLAlchemy
        Forza                   Debolezze
1.Semplice               1.Programmazione
                           generica difficile
  ●   API “scala” bene
2.Veloce                 2.Difficile con
  ●   Come sviluppo
                           ●   Definizioni schemi
                               labili
  ●   Come prestazioni     ●   Strutture gerarchiche
3.Flessibile
                         3.Scalabilità
                           ●   Normalizzazione
                           ●   Verticalizzazione
SQLAlchemy: per chi
Potenza (e problemi) del relazionale
•


Ottimale se:
•


    •   Strutture dati definite
    •   Collezioni omogenee
    •   Forte tipizzazione del dato
~ 99% casi applicativi
•
ZODB: Object DataBase
1.Object database: il ritorno del filesystem
2.Inserimento oggetti nativi Python
3.Le referenze vengono registrate
4.Dinamico
5.Pickling
ZODB: in azione
ZODB
      Forza                Debolezze
1.Dinamismo           1.“Listing cartella con
2. Programmazione       10000 files”
  generica e          2.No index, no search
  introspezione
                      3.Scalabilità
3.Collezioni            “differente”
  eterogenee
4.API trasparente
ZODB: per chi
1.Definizioni schemi labili
2.Necessità di componenti generici
3.Indicizzare non è un problema
4.Esempio
  ●   Content Management System
BigTable: distribuito
1.Problema strutture fortemente distribuite
2.Simile a RDBMS
  ●   Concetto di record e colonna
3.Differente da RDBMS
  ●   Famiglie di colonne
4.CAP Theorem
  ●   Consistenza “a latere”
BigTable: cosa
1.Matrice sparsa
  ●   Famiglie di colonne e colonne
  ●   Righe, inserimento non atomico su intera riga
2.Matrice 3D
  ●   (Id riga, Id colonna, timestamp) → valore
3.Matrice 4D
  ●   Solo Cassandra
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
BigTable: in azione
BigTable
       Forza                       Debolezze
1.Superscalabilità           1.API non intuitiva
2.Avaliability & Partition   2.Delega consistenza
  tolerance                    ●   Fa del proprio meglio,
3.Buon dinamismo                   non garantisce
                             3.Sforzo sviluppo
                               applicativo
                               ●   Tablet e località
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
Conclusioni
1.Idee chiare: ORM + RDBMS
2.“robe”, “documenti”: OO-DB
3.Grandissime moli: BigTable
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
Credits
1.Brueghel the Elder
2.Rob Word
3.http://www.flickr.com/photos/gilest/1

Mais conteúdo relacionado

Semelhante a Crogioli, alambicchi e beute: dove mettere i vostri dati.

Infinispan codemotion - Codemotion Rome 2015
Infinispan codemotion - Codemotion Rome 2015Infinispan codemotion - Codemotion Rome 2015
Infinispan codemotion - Codemotion Rome 2015Codemotion
 
JBoss Data Grid Tech Lab
JBoss Data Grid Tech LabJBoss Data Grid Tech Lab
JBoss Data Grid Tech LabUgo Landini
 
No sql introduzione. Corso Sistemi Informativi Politecnico di Milano 12-11-2013
No sql introduzione. Corso Sistemi Informativi Politecnico di Milano 12-11-2013No sql introduzione. Corso Sistemi Informativi Politecnico di Milano 12-11-2013
No sql introduzione. Corso Sistemi Informativi Politecnico di Milano 12-11-2013Myti S.r.l.
 
Polyglot Persistance con PostgreSQL, CouchDB, MongoDB, Redis e OrientDB
Polyglot Persistance con PostgreSQL, CouchDB, MongoDB, Redis e OrientDBPolyglot Persistance con PostgreSQL, CouchDB, MongoDB, Redis e OrientDB
Polyglot Persistance con PostgreSQL, CouchDB, MongoDB, Redis e OrientDBSteve Maraspin
 
Dynamic Schema e Schemaless Tables
Dynamic Schema e Schemaless TablesDynamic Schema e Schemaless Tables
Dynamic Schema e Schemaless TablesDavide Mauri
 
C#, imparare a programmare e sopravvivere
C#, imparare a programmare e sopravvivereC#, imparare a programmare e sopravvivere
C#, imparare a programmare e sopravvivereMatteo Valoriani
 
Come l’Open Source può essere alla base di un business di successo: il caso H...
Come l’Open Source può essere alla base di un business di successo: il caso H...Come l’Open Source può essere alla base di un business di successo: il caso H...
Come l’Open Source può essere alla base di un business di successo: il caso H...MariaDB plc
 
Entity Framework 4.0 vs NHibernate
Entity Framework 4.0 vs NHibernateEntity Framework 4.0 vs NHibernate
Entity Framework 4.0 vs NHibernateManuel Scapolan
 
Presentazione mongo torino
Presentazione mongo torinoPresentazione mongo torino
Presentazione mongo torinoCSP Scarl
 
Archeo foss 2012 slides 1
Archeo foss 2012 slides 1Archeo foss 2012 slides 1
Archeo foss 2012 slides 1CSP Scarl
 
May 2010 - Infinispan
May 2010 - InfinispanMay 2010 - Infinispan
May 2010 - InfinispanJBug Italy
 
MongoDB SpringFramework Meeting september 2009
MongoDB SpringFramework Meeting september 2009MongoDB SpringFramework Meeting september 2009
MongoDB SpringFramework Meeting september 2009Massimiliano Dessì
 
MongoDB Scala Roma SpringFramework Meeting2009
MongoDB Scala Roma SpringFramework Meeting2009MongoDB Scala Roma SpringFramework Meeting2009
MongoDB Scala Roma SpringFramework Meeting2009Massimiliano Dessì
 
MongoDb and Scala SpringFramework Meeting
MongoDb and Scala SpringFramework MeetingMongoDb and Scala SpringFramework Meeting
MongoDb and Scala SpringFramework Meetingguest67beeb9
 
Fast data platforms - Hadoop User Group (Italy)
Fast data platforms  - Hadoop User Group (Italy)Fast data platforms  - Hadoop User Group (Italy)
Fast data platforms - Hadoop User Group (Italy)Andrea Gioia
 

Semelhante a Crogioli, alambicchi e beute: dove mettere i vostri dati. (20)

Data grid
Data gridData grid
Data grid
 
Infinispan codemotion - Codemotion Rome 2015
Infinispan codemotion - Codemotion Rome 2015Infinispan codemotion - Codemotion Rome 2015
Infinispan codemotion - Codemotion Rome 2015
 
JBoss Data Grid Tech Lab
JBoss Data Grid Tech LabJBoss Data Grid Tech Lab
JBoss Data Grid Tech Lab
 
Presentazione bd2
Presentazione bd2Presentazione bd2
Presentazione bd2
 
No sql introduzione. Corso Sistemi Informativi Politecnico di Milano 12-11-2013
No sql introduzione. Corso Sistemi Informativi Politecnico di Milano 12-11-2013No sql introduzione. Corso Sistemi Informativi Politecnico di Milano 12-11-2013
No sql introduzione. Corso Sistemi Informativi Politecnico di Milano 12-11-2013
 
Polyglot Persistance con PostgreSQL, CouchDB, MongoDB, Redis e OrientDB
Polyglot Persistance con PostgreSQL, CouchDB, MongoDB, Redis e OrientDBPolyglot Persistance con PostgreSQL, CouchDB, MongoDB, Redis e OrientDB
Polyglot Persistance con PostgreSQL, CouchDB, MongoDB, Redis e OrientDB
 
Dynamic Schema e Schemaless Tables
Dynamic Schema e Schemaless TablesDynamic Schema e Schemaless Tables
Dynamic Schema e Schemaless Tables
 
C#, imparare a programmare e sopravvivere
C#, imparare a programmare e sopravvivereC#, imparare a programmare e sopravvivere
C#, imparare a programmare e sopravvivere
 
Come l’Open Source può essere alla base di un business di successo: il caso H...
Come l’Open Source può essere alla base di un business di successo: il caso H...Come l’Open Source può essere alla base di un business di successo: il caso H...
Come l’Open Source può essere alla base di un business di successo: il caso H...
 
Entity Framework 4.0 vs NHibernate
Entity Framework 4.0 vs NHibernateEntity Framework 4.0 vs NHibernate
Entity Framework 4.0 vs NHibernate
 
Presentazione mongo torino
Presentazione mongo torinoPresentazione mongo torino
Presentazione mongo torino
 
Archeo foss 2012 slides 1
Archeo foss 2012 slides 1Archeo foss 2012 slides 1
Archeo foss 2012 slides 1
 
Infinispan
InfinispanInfinispan
Infinispan
 
May 2010 - Infinispan
May 2010 - InfinispanMay 2010 - Infinispan
May 2010 - Infinispan
 
No Sql Intro
No Sql IntroNo Sql Intro
No Sql Intro
 
MongoDB SpringFramework Meeting september 2009
MongoDB SpringFramework Meeting september 2009MongoDB SpringFramework Meeting september 2009
MongoDB SpringFramework Meeting september 2009
 
MongoDB Scala Roma SpringFramework Meeting2009
MongoDB Scala Roma SpringFramework Meeting2009MongoDB Scala Roma SpringFramework Meeting2009
MongoDB Scala Roma SpringFramework Meeting2009
 
MongoDb and Scala SpringFramework Meeting
MongoDb and Scala SpringFramework MeetingMongoDb and Scala SpringFramework Meeting
MongoDb and Scala SpringFramework Meeting
 
Fast data platforms - Hadoop User Group (Italy)
Fast data platforms  - Hadoop User Group (Italy)Fast data platforms  - Hadoop User Group (Italy)
Fast data platforms - Hadoop User Group (Italy)
 
Fast data platforms - Hadoop User Group (Italy)
Fast data platforms - Hadoop User Group (Italy)Fast data platforms - Hadoop User Group (Italy)
Fast data platforms - Hadoop User Group (Italy)
 

Mais de PyCon Italia

zc.buildout: "Un modo estremamente civile per sviluppare un'applicazione"
zc.buildout: "Un modo estremamente civile per sviluppare un'applicazione"zc.buildout: "Un modo estremamente civile per sviluppare un'applicazione"
zc.buildout: "Un modo estremamente civile per sviluppare un'applicazione"PyCon Italia
 
Python in the browser
Python in the browserPython in the browser
Python in the browserPyCon Italia
 
PyPy 1.2: snakes never crawled so fast
PyPy 1.2: snakes never crawled so fastPyPy 1.2: snakes never crawled so fast
PyPy 1.2: snakes never crawled so fastPyCon Italia
 
PyCuda: Come sfruttare la potenza delle schede video nelle applicazioni python
PyCuda: Come sfruttare la potenza delle schede video nelle applicazioni pythonPyCuda: Come sfruttare la potenza delle schede video nelle applicazioni python
PyCuda: Come sfruttare la potenza delle schede video nelle applicazioni pythonPyCon Italia
 
OpenERP e l'arte della gestione aziendale con Python
OpenERP e l'arte della gestione aziendale con PythonOpenERP e l'arte della gestione aziendale con Python
OpenERP e l'arte della gestione aziendale con PythonPyCon Italia
 
New and improved: Coming changes to the unittest module
 	 New and improved: Coming changes to the unittest module 	 New and improved: Coming changes to the unittest module
New and improved: Coming changes to the unittest modulePyCon Italia
 
Monitoraggio del Traffico di Rete Usando Python ed ntop
Monitoraggio del Traffico di Rete Usando Python ed ntopMonitoraggio del Traffico di Rete Usando Python ed ntop
Monitoraggio del Traffico di Rete Usando Python ed ntopPyCon Italia
 
Jython for embedded software validation
Jython for embedded software validationJython for embedded software validation
Jython for embedded software validationPyCon Italia
 
Foxgame introduzione all'apprendimento automatico
Foxgame introduzione all'apprendimento automaticoFoxgame introduzione all'apprendimento automatico
Foxgame introduzione all'apprendimento automaticoPyCon Italia
 
Django è pronto per l'Enterprise
Django è pronto per l'EnterpriseDjango è pronto per l'Enterprise
Django è pronto per l'EnterprisePyCon Italia
 
Comet web applications with Python, Django & Orbited
Comet web applications with Python, Django & OrbitedComet web applications with Python, Django & Orbited
Comet web applications with Python, Django & OrbitedPyCon Italia
 
Cleanup and new optimizations in WPython 1.1
Cleanup and new optimizations in WPython 1.1Cleanup and new optimizations in WPython 1.1
Cleanup and new optimizations in WPython 1.1PyCon Italia
 

Mais de PyCon Italia (13)

zc.buildout: "Un modo estremamente civile per sviluppare un'applicazione"
zc.buildout: "Un modo estremamente civile per sviluppare un'applicazione"zc.buildout: "Un modo estremamente civile per sviluppare un'applicazione"
zc.buildout: "Un modo estremamente civile per sviluppare un'applicazione"
 
Python in the browser
Python in the browserPython in the browser
Python in the browser
 
PyPy 1.2: snakes never crawled so fast
PyPy 1.2: snakes never crawled so fastPyPy 1.2: snakes never crawled so fast
PyPy 1.2: snakes never crawled so fast
 
PyCuda: Come sfruttare la potenza delle schede video nelle applicazioni python
PyCuda: Come sfruttare la potenza delle schede video nelle applicazioni pythonPyCuda: Come sfruttare la potenza delle schede video nelle applicazioni python
PyCuda: Come sfruttare la potenza delle schede video nelle applicazioni python
 
OpenERP e l'arte della gestione aziendale con Python
OpenERP e l'arte della gestione aziendale con PythonOpenERP e l'arte della gestione aziendale con Python
OpenERP e l'arte della gestione aziendale con Python
 
New and improved: Coming changes to the unittest module
 	 New and improved: Coming changes to the unittest module 	 New and improved: Coming changes to the unittest module
New and improved: Coming changes to the unittest module
 
Monitoraggio del Traffico di Rete Usando Python ed ntop
Monitoraggio del Traffico di Rete Usando Python ed ntopMonitoraggio del Traffico di Rete Usando Python ed ntop
Monitoraggio del Traffico di Rete Usando Python ed ntop
 
Jython for embedded software validation
Jython for embedded software validationJython for embedded software validation
Jython for embedded software validation
 
Foxgame introduzione all'apprendimento automatico
Foxgame introduzione all'apprendimento automaticoFoxgame introduzione all'apprendimento automatico
Foxgame introduzione all'apprendimento automatico
 
Effective EC2
Effective EC2Effective EC2
Effective EC2
 
Django è pronto per l'Enterprise
Django è pronto per l'EnterpriseDjango è pronto per l'Enterprise
Django è pronto per l'Enterprise
 
Comet web applications with Python, Django & Orbited
Comet web applications with Python, Django & OrbitedComet web applications with Python, Django & Orbited
Comet web applications with Python, Django & Orbited
 
Cleanup and new optimizations in WPython 1.1
Cleanup and new optimizations in WPython 1.1Cleanup and new optimizations in WPython 1.1
Cleanup and new optimizations in WPython 1.1
 

Crogioli, alambicchi e beute: dove mettere i vostri dati.