Download - Zodb
![Page 1: Zodb](https://reader037.vdocuments.pub/reader037/viewer/2022100507/558a491cd8b42aa2368b4726/html5/thumbnails/1.jpg)
Riccardo Lemmi
ZODB
Un database ad oggetti scritto in Python (e C)
![Page 2: Zodb](https://reader037.vdocuments.pub/reader037/viewer/2022100507/558a491cd8b42aa2368b4726/html5/thumbnails/2.jpg)
Riccardo Lemmi
Chi siamo
Riccardo Lemmi
Antonio Tirabasso
![Page 3: Zodb](https://reader037.vdocuments.pub/reader037/viewer/2022100507/558a491cd8b42aa2368b4726/html5/thumbnails/3.jpg)
Riccardo Lemmi
Tips
Se devi usare un ORM allora usa lo ZODB
![Page 4: Zodb](https://reader037.vdocuments.pub/reader037/viewer/2022100507/558a491cd8b42aa2368b4726/html5/thumbnails/4.jpg)
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](https://reader037.vdocuments.pub/reader037/viewer/2022100507/558a491cd8b42aa2368b4726/html5/thumbnails/5.jpg)
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](https://reader037.vdocuments.pub/reader037/viewer/2022100507/558a491cd8b42aa2368b4726/html5/thumbnails/6.jpg)
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](https://reader037.vdocuments.pub/reader037/viewer/2022100507/558a491cd8b42aa2368b4726/html5/thumbnails/7.jpg)
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](https://reader037.vdocuments.pub/reader037/viewer/2022100507/558a491cd8b42aa2368b4726/html5/thumbnails/8.jpg)
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](https://reader037.vdocuments.pub/reader037/viewer/2022100507/558a491cd8b42aa2368b4726/html5/thumbnails/9.jpg)
Riccardo Lemmi
L'esempio:l'albero genealogico
![Page 10: Zodb](https://reader037.vdocuments.pub/reader037/viewer/2022100507/558a491cd8b42aa2368b4726/html5/thumbnails/10.jpg)
Riccardo Lemmi
L'esempio:l'albero genealogico
● Inizializzazione zodb● Operazioni
– Creazione
– Cancellazione
– Aggiunta
– Undo
● La ricerca– come si fa
![Page 11: Zodb](https://reader037.vdocuments.pub/reader037/viewer/2022100507/558a491cd8b42aa2368b4726/html5/thumbnails/11.jpg)
Riccardo Lemmi
Links
● http://www.zodb.org/overview.html
● http://faassen.n--tree.net/blog/view/weblog/2008/06/20/0