ZODB: Objektorientierte Datenbank für Python

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Einführung in ZODB: Die objektorientierte Datenbank für Python

Die meisten modernen Datenbanken erfordern die Umwandlung von Python-Objekten in Strings, Tabellen oder JSON, bevor sie gespeichert werden können. Das verkompliziert die Anwendungsarchitektur und erfordert zusätzlichen Code. ZODB – die objektorientierte Datenbank – löst dieses Problem, indem sie Python-Objekte direkt „wie sie sind“ speichert.

ZODB (Zope Object Database) ist eine transparente, native objektorientierte Datenbank, die vollständig in Python implementiert ist. Sie benötigt kein Schema, verwendet kein SQL, unterstützt Transaktionen und ermöglicht die direkte Arbeit mit Objekten wie mit normalen Variablen.

Geschichte und Ursprung von ZODB

ZODB wurde in den 1990er Jahren im Rahmen des Zope-Projekts der Zope Corporation für das Web-Framework Zope entwickelt. Die Bibliothek wurde als Lösung für die Speicherung von Python-Objekten konzipiert, ohne sie in relationale Strukturen umwandeln zu müssen. Nach über 25 Jahren Entwicklung hat sich ZODB als zuverlässige Lösung für die Objektspeicherung in Python-Anwendungen etabliert.

Hauptvorteile von ZODB

ZODB bietet eine Reihe einzigartiger Vorteile gegenüber traditionellen Datenbanken:

Transparente Objektarbeit

Objekte werden automatisch gespeichert und geladen, ohne dass zusätzlicher Code für Serialisierung und Deserialisierung erforderlich ist.

Kein Schema erforderlich

ZODB erfordert keine vorherige Definition eines Datenschemas. Die Struktur der Objekte kann sich dynamisch ändern.

Transaktionsunterstützung

Unterstützt ACID-Transaktionen und gewährleistet so Zuverlässigkeit und Datenkonsistenz.

Automatische Speicherverwaltung

ZODB verwaltet das Laden und Entladen von Objekten aus dem Speicher, was besonders bei großen Datenbanken wichtig ist.

Installation und Konfiguration von ZODB

Basisinstallation

Installation über pip:

pip install ZODB

Erweiterte Installation

Für zusätzliche Funktionen empfiehlt sich die Installation des Pakets mit Abhängigkeiten:

pip install ZODB[persistent]

Zusätzliche Pakete

Für den Mehrbenutzermodus:

pip install ZEO

Für die Arbeit mit BTrees (effiziente Datenstrukturen):

pip install BTrees

Architektur von ZODB

Hauptkomponenten

ZODB besteht aus mehreren Schlüsselkomponenten:

  • Storage – die Datenspeicherschicht (FileStorage, DemoStorage, u.a.)
  • DB – das Datenbank-Interface
  • Connection – die Verbindung zu Objekten
  • Transaction – das Modul zur Transaktionsverwaltung
  • Persistent – die Basisklasse für persistente Objekte

Funktionsweise der objektorientierten Datenbank

ZODB arbeitet nach folgenden Prinzipien:

  1. Objektserialisierung: Verwendet eine modifizierte Version von pickle zum Speichern von Objekten
  2. Änderungsverfolgung: Verfolgt automatisch Änderungen an Objekten
  3. Lazy Loading: Objekte werden nur bei Bedarf aus der Datenbank geladen
  4. Referenzverwaltung: Unterstützt Verweise zwischen Objekten

Erstellung und Verwendung von Objekten

Die Basisklasse Persistent

Alle Objekte, die gespeichert werden sollen, müssen von der Klasse Persistent erben:

from persistent import Persistent

class Person(Persistent):
    def __init__(self, name, age=None):
        self.name = name
        self.age = age
        self.created_at = datetime.datetime.now()
    
    def set_age(self, age):
        self.age = age
        self._p_changed = True  # Änderung explizit markieren

Erstellung zusammengesetzter Objekte

Empfehlungen