| Odb. ODB è un frontone del database oggetto per Python. |
Scarica ora |
Odb. Classifica e riepilogo
- Nome editore:
- Michael Muller
- Sito web dell'editore:
- http://www.mindhog.net/~mmuller/projects/
Odb. Tag
Odb. Descrizione
ODB è un frontone del database oggetto per Python. ODB è un frontone del database oggetto per Python.Idb è un frontend a tre diversi motori di archiviazione dei dati. Uno di questi è BDB (Berkeley DB), gli altri due sono i database residenti di memoria come BDB scritto interamente in Python (e incluso con questo pacchetto - BDB e BSDDB3 sono installazioni separate). L'interfaccia è molto bdb-ish, solo molto Pulitore. ODB cerca di nascondere un sacco di Grisly Guts delle interazioni del database dall'utente. I motori "pieni" e "mem ".DB ha iniziato la sua vita come un semplice involucro attorno a Berkeley DB. Tuttavia, BDB ci ha causato molto dolore a causa dei problemi di blocco. Ci imbattummo in modo occasionalmente in eccezioni lanciati a seguito di deadlock rilevati che erano molto difficili da affrontare nel nostro ambiente - la "cosa giusta" era di tentare di nuovo la transazione, complicando la nostra logica di controllo e spesso portando a ulteriori deadlock. Più fastidiosi erano i casi in cui abbiamo trapelato le serrature. E 'stato molto difficile per noi scoprire dove venivano trapelati le serrature e abbiamo finito per eseguire il recupero del database un bel po' - non quello che vuoi per un ambiente di produzione 24 ore su 24. Quindi ad un certo punto ho deciso di provare a dare ODB Il proprio motore di database in memoria scritto completamente in Python. Ovviamente, la performance non era molto importante per noi, quindi potremmo scappare con un singolo blocco per l'intero ambiente - quindi nessun problema di deadlock. La prima incarnazione è stata chiamata "MemDb" - memorizzava il database come sequenza di logfili. Quando è stata avviata un'istanza del database, caricherebbe tutti i logfiles in memoria e ricostruire il cambio del database uno alla volta. Questo funzionava abbastanza bene mentre il motore era in esecuzione, ma come si potrebbe immaginare, il carico iniziale del carico per a Il database di qualsiasi dimensione significativa è stata completamente folle. Quindi ho aggiunto rapidamente la possibilità di checkpoint - è possibile memorizzare l'ambiente come un file di stato gigante e carica che all'avvio. Quindi leggi solo il registro dal punto in cui è stato controllato. Questo approccio era migliore, ma aveva ancora lo svantaggio di richiedere di leggere l'intero database all'avvio. Non è così male che il database vive completamente in memoria - la memoria è grande in questi giorni. Il problema deve eseguire un carico completo all'avvio. Quindi è nato il modo in cui è nata l'implementazione "piena". L'implementazione completa per il controllo del database in un file heap. Ciò consente ai BTrees interni ai nodi di carico pigro poiché sono accessibili, con conseguente tempi di avvio minimo. Questa volta, tutte le interfacce sono per lo più intercompatibili, se si codifica all'interfaccia Abstract ODB (vedere "ODB.ODBI") dovrebbe essere possibile cambiare indietro senza differenze di codifica. Se si desidera utilizzare le caratteristiche speciali del back-end "completo", utilizzare questa interfaccia in particolare: {{da odb.full import fullenv env = fullenv ('database_dir')}} Cosa c'è di nuovo in questa versione: · Un bug di confronto è stato fissato nell'elenco dei nodi senza fogli heap. · È stato aggiunto il supporto per il ripristino automatico dai file di registro.
Odb. Software correlato