SlideShare ist ein Scribd-Unternehmen logo
1 von 11
Downloaden Sie, um offline zu lesen
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

Weitere ähnliche Inhalte

Mehr von Riccardo Lemmi

Pycon5 creare soundscape con pyo
Pycon5 creare soundscape con pyoPycon5 creare soundscape con pyo
Pycon5 creare soundscape con pyoRiccardo Lemmi
 
Open Hardware: Arduino, un prodotto italiano
Open Hardware: Arduino, un prodotto italianoOpen Hardware: Arduino, un prodotto italiano
Open Hardware: Arduino, un prodotto italianoRiccardo Lemmi
 

Mehr von Riccardo Lemmi (7)

Deployment automation
Deployment automationDeployment automation
Deployment automation
 
Pycon5 creare soundscape con pyo
Pycon5 creare soundscape con pyoPycon5 creare soundscape con pyo
Pycon5 creare soundscape con pyo
 
Introduzione a Python
Introduzione a PythonIntroduzione a Python
Introduzione a Python
 
Open Hardware: Arduino, un prodotto italiano
Open Hardware: Arduino, un prodotto italianoOpen Hardware: Arduino, un prodotto italiano
Open Hardware: Arduino, un prodotto italiano
 
World Plone Day 2009
World Plone Day 2009World Plone Day 2009
World Plone Day 2009
 
Workflow tecnologies
Workflow tecnologiesWorkflow tecnologies
Workflow tecnologies
 
Buildout
BuildoutBuildout
Buildout
 

Kürzlich hochgeladen

Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...Associazione Digital Days
 
Programma Biennale Tecnologia 2024 Torino
Programma Biennale Tecnologia 2024 TorinoProgramma Biennale Tecnologia 2024 Torino
Programma Biennale Tecnologia 2024 TorinoQuotidiano Piemontese
 
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”Associazione Digital Days
 
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...Associazione Digital Days
 
Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...
Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...
Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...Associazione Digital Days
 
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...Associazione Digital Days
 
Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...
Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...
Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...Associazione Digital Days
 
Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...
Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...
Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...Associazione Digital Days
 
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...Associazione Digital Days
 

Kürzlich hochgeladen (9)

Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...
 
Programma Biennale Tecnologia 2024 Torino
Programma Biennale Tecnologia 2024 TorinoProgramma Biennale Tecnologia 2024 Torino
Programma Biennale Tecnologia 2024 Torino
 
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”
 
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...
 
Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...
Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...
Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...
 
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...
 
Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...
Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...
Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...
 
Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...
Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...
Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...
 
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...
 

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