Zodb

1,379 views
1,264 views

Published on

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

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,379
On SlideShare
0
From Embeds
0
Number of Embeds
9
Actions
Shares
0
Downloads
6
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Zodb

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

×