Google Firestore ist eine cloudbasierte NoSQL-Datenbank von Firebase, die für die Speicherung von JSON-Dokumenten entwickelt wurde. Sie eignet sich hervorragend für skalierbare Echtzeitanwendungen. Allerdings ist die direkte Arbeit mit Firestore über google-cloud-firestore nicht immer komfortabel, besonders wenn man an einen objektorientierten Ansatz und typisierten Code gewöhnt ist.
FireO – ein ORM für Google Firestore – ist eine Python-Bibliothek, die die Arbeit mit Firestore vereinfacht, indem sie eine an gängige ORMs erinnernde Schnittstelle bereitstellt. Modelle, Felder, Validierung und Beziehungen – all das ist jetzt auch in der Firebase-Welt verfügbar.
Was ist FireO und warum sollte man es nutzen?
FireO (Firebase ORM) ist ein objektrelationales Mapping für Google Firestore, geschrieben in Python. Die Bibliothek ermöglicht es Entwicklern, mit Firestore wie mit einer traditionellen relationalen Datenbank zu arbeiten, indem sie Klassen und Objekte anstelle von direkten API-Abfragen verwendet.
Die wichtigsten Vorteile von FireO:
- Einfachheit: Intuitiver Syntax, ähnlich wie bei Django ORM
- Feldtypisierung: Strenge Typisierung mit automatischer Validierung
- Datenvalidierung: Integrierte Prüfung der Daten vor dem Speichern
- Beziehungsunterstützung: Arbeit mit Referenzfeldern und verschachtelten Strukturen
- Automatische Metadatenverwaltung: Automatische Erstellung von Zeitstempeln
- Migrationen: Vereinfachte Verwaltung der Datenstruktur
Installation und Einrichtung von FireO
Bibliothek installieren
pip install fireo
Authentifizierung einrichten
Für die Arbeit mit Firestore muss die Authentifizierung über ein Service-Konto eingerichtet werden:
- Erstellen Sie ein Service-Konto in der Firebase-Konsole
- Laden Sie den JSON-Schlüssel herunter
- Geben Sie den Pfad zum Schlüssel in der Umgebungsvariable an:
export GOOGLE_APPLICATION_CREDENTIALS="pfad/zu/ihrem-schluessel.json"
Alternative Verbindungseinrichtung
from fireo import connection
# Verbindung über eine Datei
connection(from_file="pfad/zu/serviceAccountKey.json")
# Verbindung über eine Umgebungsvariable
connection()
Grundlagen von Firestore und dem dokumentenorientierten Modell
Datenstruktur in Firestore
Firestore speichert Daten in der folgenden Hierarchie:
- Datenbank → Sammlungen → Dokumente → Felder
- Dokumente können Untersammlungen enthalten
- Felder können verschiedene Typen haben: Zeichenketten, Zahlen, Arrays, Objekte usw.
Besonderheiten des NoSQL-Ansatzes
Firestore ist eine schemafreie Datenbank, was bedeutet:
- Dokumente in einer Sammlung können unterschiedliche Felder haben
- Die Struktur muss nicht im Voraus definiert werden
- Flexibilität bei der Änderung der Datenstruktur
FireO fügt dieser Flexibilität eine Ebene von Struktur und Validierung hinzu.
Modelle in FireO erstellen
Basis-Modell
from fireo.models import Model
from fireo.fields import TextField, NumberField, BooleanField
class User(Model):
name = TextField(required=True, max_length=100)
age = NumberField(required=True)
is_active = BooleanField(default=True)
class Meta:
collection_name = "users" # Optional, standardmäßig wird der Klassenname verwendet
Erweitertes Modell mit Validierung
from fireo.fields import EmailField, DateTimeField, ListField
from datetime import datetime
class Profile(Model):
user_id = TextField(required=True)
email = EmailField(required=True)
created_at = DateTimeField(default=datetime.now)
tags = ListField Auch in der Bibliothek
Konfiguration von Node.js-Anwendungen: Die besten Tools und Ansätze
gRPC für JavaScript (Node.js): Bibliotheken und Codebeispiele
Arbeiten mit Excel in C# (.NET): Bibliotheken EPPlus, ClosedXML und NPOI