Zodb

11

Click here to load reader

description

"Un database ad oggetti scritto in Python (e C)". Presentation of zodb used in non-zope applications. Talk done at Pycon4 (2010)

Transcript of Zodb

Page 1: Zodb

Riccardo Lemmi

ZODB

Un database ad oggetti scritto in Python (e C)

Page 2: Zodb

Riccardo Lemmi

Chi siamo

Riccardo Lemmi

Antonio Tirabasso

Page 3: Zodb

Riccardo Lemmi

Tips

Se devi usare un ORM allora usa lo ZODB

Page 4: 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

Page 5: Zodb

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

Page 6: Zodb

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

Page 7: Zodb

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

Page 8: Zodb

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

Page 9: Zodb

Riccardo Lemmi

L'esempio:l'albero genealogico

Page 10: Zodb

Riccardo Lemmi

L'esempio:l'albero genealogico

● Inizializzazione zodb● Operazioni

– Creazione

– Cancellazione

– Aggiunta

– Undo

● La ricerca– come si fa

Page 11: Zodb

Riccardo Lemmi

Links

● http://www.zodb.org/overview.html

● http://faassen.n--tree.net/blog/view/weblog/2008/06/20/0