SlideShare a Scribd company logo
ZODB




Un database ad oggetti
 scritto in Python (e C)



                     Riccardo Lemmi
Chi siamo




Riccardo Lemmi

Antonio Tirabasso




                    Riccardo Lemmi
Tips




Se devi usare un ORM allora usa lo ZODB




                             Riccardo Lemmi
Cos'è lo ZODB
●   È un database ad oggetti
●   I dati vengono gestiti con lo stesso paradigma
    dell'applicazione:
    –   Non si è legati allo storage:
         ●   Nessun mapping
         ●   Nessun 'glue code'
    –   Codice più semplice, più robusto e più facile da
        testare



                                           Riccardo Lemmi
Cosa fornisce lo ZODB
●   Persistenza oggetti
    –   Tramite il modulo pickle
●   Supporto transazioni
    –   ACID: atomicity, consistency, isolation, durability
●   Storage alternativi
●   History/Undo
    –   Se lo storage lo supporta
●   Scalabilità: ZEO

                                             Riccardo Lemmi
Come funziona
●   L'oggetto viene serializzato tramite il modulo
    pickle e vengono aggiunte informazioni sulla
    transazione
●   ZODB si preoccupa di leggere e scrivere gli
    oggetti sullo storage
●   ZODB si occupa della gestione della cache




                                      Riccardo Lemmi
Regole
        per scrivere classi "persistenti"
●   Classi:
    –   Persistent: gestito automaticamente ma se contiene
        riferimenti a:
         ●   Integer, string, float, boolean: non si deve fare nulla
         ●   List and dict: da gestire con l'attributo _p_changed




                                                     Riccardo Lemmi
Regole
        per scrivere classi "persistenti"
●   Le classi devono ereditare da Persistent
    –   in caso contrario si generano serializzazioni multiple
●   Per serializzare un oggetto è necessario
    connetterlo con un altro oggetto persistente
    –   al limite la radice del DB
●   Fai sempre un commit delle transazioni
●   Se modifichi sotto-oggetti non-Persistent devi
    settare _p_changed a True.
●   Usa PersistentList, PersistentMapping e BTree
                                               Riccardo Lemmi
L'esempio:
l'albero genealogico




                 Riccardo Lemmi
L'esempio:
               l'albero genealogico
●   Inizializzazione zodb
●   Operazioni
    –   Creazione
    –   Cancellazione
    –   Aggiunta
    –   Undo
●   La ricerca
    –   come si fa

                                Riccardo Lemmi
Links
●   http://www.zodb.org/overview.html
●   http://faassen.n--tree.net/blog/view/weblog/2008/06/20/0




                                                Riccardo Lemmi

More Related Content

PPTX
MongoDB: Prós, Contras e Showcases.
PPTX
PDF
DB2 9.7 Overview
PPT
Presentazione 1 E Team
PPT
Db2
PDF
Desgin italiano
PPTX
Meccanismi di cambiamento strategico del Mercato del Mobile in Italia: il cas...
MongoDB: Prós, Contras e Showcases.
DB2 9.7 Overview
Presentazione 1 E Team
Db2
Desgin italiano
Meccanismi di cambiamento strategico del Mercato del Mobile in Italia: il cas...

Similar to Zodb (14)

PDF
Crogioli, alambicchi e beute: dove mettere i vostri dati.
PDF
Crogioli, alambicchi e beute, dove mettere i
PDF
zc.buildout: "Un modo estremamente civile per sviluppare un'applicazione"
PDF
Buildout
PDF
MongoDB SpringFramework Meeting september 2009
PDF
NoSql - Key Value
PDF
SCE2014 - Linked Open Data: come fare, cosa serve
PDF
Oltre il modello relazionale
PPTX
Esempio di architettura distribuita basata su PHP, CouchDB e Mobile
PDF
Schema Design
PDF
Presentazione bd2
PPT
Museo Torino - un esempio reale d'uso di NOSQL-GraphDB, Linked Data e Web Sem...
PDF
Franco Caporale Couchbase Milano
PDF
Polyglot Persistance con PostgreSQL, CouchDB, MongoDB, Redis e OrientDB
Crogioli, alambicchi e beute: dove mettere i vostri dati.
Crogioli, alambicchi e beute, dove mettere i
zc.buildout: "Un modo estremamente civile per sviluppare un'applicazione"
Buildout
MongoDB SpringFramework Meeting september 2009
NoSql - Key Value
SCE2014 - Linked Open Data: come fare, cosa serve
Oltre il modello relazionale
Esempio di architettura distribuita basata su PHP, CouchDB e Mobile
Schema Design
Presentazione bd2
Museo Torino - un esempio reale d'uso di NOSQL-GraphDB, Linked Data e Web Sem...
Franco Caporale Couchbase Milano
Polyglot Persistance con PostgreSQL, CouchDB, MongoDB, Redis e OrientDB
Ad

More from Riccardo Lemmi (6)

PDF
Deployment automation
PDF
Pycon5 creare soundscape con pyo
PDF
Introduzione a Python
PDF
Open Hardware: Arduino, un prodotto italiano
PDF
World Plone Day 2009
PDF
Workflow tecnologies
Deployment automation
Pycon5 creare soundscape con pyo
Introduzione a Python
Open Hardware: Arduino, un prodotto italiano
World Plone Day 2009
Workflow tecnologies
Ad

Zodb

  • 1. ZODB Un database ad oggetti scritto in Python (e C) Riccardo Lemmi
  • 2. Chi siamo Riccardo Lemmi Antonio Tirabasso Riccardo Lemmi
  • 3. Tips Se devi usare un ORM allora usa lo ZODB Riccardo Lemmi
  • 4. Cos'è lo ZODB ● È un database ad oggetti ● I dati vengono gestiti con lo stesso paradigma dell'applicazione: – Non si è legati allo storage: ● Nessun mapping ● Nessun 'glue code' – Codice più semplice, più robusto e più facile da testare Riccardo Lemmi
  • 5. Cosa fornisce lo ZODB ● Persistenza oggetti – Tramite il modulo pickle ● Supporto transazioni – ACID: atomicity, consistency, isolation, durability ● Storage alternativi ● History/Undo – Se lo storage lo supporta ● Scalabilità: ZEO Riccardo Lemmi
  • 6. Come funziona ● L'oggetto viene serializzato tramite il modulo pickle e vengono aggiunte informazioni sulla transazione ● ZODB si preoccupa di leggere e scrivere gli oggetti sullo storage ● ZODB si occupa della gestione della cache Riccardo Lemmi
  • 7. Regole per scrivere classi "persistenti" ● Classi: – Persistent: gestito automaticamente ma se contiene riferimenti a: ● Integer, string, float, boolean: non si deve fare nulla ● List and dict: da gestire con l'attributo _p_changed Riccardo Lemmi
  • 8. Regole per scrivere classi "persistenti" ● Le classi devono ereditare da Persistent – in caso contrario si generano serializzazioni multiple ● Per serializzare un oggetto è necessario connetterlo con un altro oggetto persistente – al limite la radice del DB ● Fai sempre un commit delle transazioni ● Se modifichi sotto-oggetti non-Persistent devi settare _p_changed a True. ● Usa PersistentList, PersistentMapping e BTree Riccardo Lemmi
  • 10. L'esempio: l'albero genealogico ● Inizializzazione zodb ● Operazioni – Creazione – Cancellazione – Aggiunta – Undo ● La ricerca – come si fa Riccardo Lemmi
  • 11. Links ● http://www.zodb.org/overview.html ● http://faassen.n--tree.net/blog/view/weblog/2008/06/20/0 Riccardo Lemmi