Daten auf dem neuesten Stand halten

Mit der Opendatasoft-Plattform ist es möglich, im selben Datenkatalog ganze statische Datensätze (die nur einmal veröffentlicht werden müssen) sowie Live-Datensätze (die regelmäßig aktualisiert werden müssen) zu bearbeiten. Es stehen zwei verschiedene Mechanismen zur Bearbeitung von Datensatzaktualisierungen zur Verfügung.

Der erste ist der Zeitplan. Er ermöglicht eine automatische Wiederveröffentlichung von Datensätzen in festgelegten Abständen. Dieser Modus ist sehr nützlich bei Datensätzen aus einer Remote-Quelle, die regelmäßig aktualisiert wird.

Der zweite Mechanismus besteht darin, Daten mit einem speziellen API-Endpunkt auf die Opendatasoft-Plattform zu pushen. Dieser Modus ist sehr nützlich, wenn die Daten direkt vom System gesendet werden können, das die Datenpunkte generiert, wie etwa ein Computerprogramm, das eine Ereignismetrik sendet bzw. ein Sensorensatz, der seine Daten sendet.

Verwenden des Zeitplan-Modus, um einen Datensatz auf dem neuesten Stand zu halten

Vorsicht

Die Verfügbarkeit dieser Funktion hängt von der Lizenz der Opendatasoft-Domain ab.

Diese Lösung ist am einfachsten zu implementieren. Sie erfordert keinerlei Entwicklung, sondern lediglich eine Remote-Quelle und ein paar Einstellungen in der Datensatzkonfiguration.

Festlegen einer Ressource

../../_images/scheduling_source-url.png

Um einen Datensatz planen zu können, muss ihre hinterlegte Ressource remote und als URL angegeben sein (http oder ftp funktionieren gut), sie darf jedoch keine hochgeladene Datei sein. Zum Hinzufügen einer solchen Ressource einfach eine URL in die URL-Eingabe hineinkopieren .

Festlegen des Zeitplanintervalls

../../_images/scheduling_tab.png

Sobald ein Datensatz mit einer Remote-Ressource gespeichert wurde, wird der Zeitplan-Tab aktiviert. Das kleinste Intervall ist die Minute, es ist jedoch nicht standardmäßig aktiviert. Bitte kontaktieren Sie den Opendatasoft-Support, falls Sie eine Zeitplanung auf Minutenebene für Ihre Domain benötigen. Sie können beliebig viele Zeitpläne hinzufügen. Sie können etwa bei Bedarf einen Datensatz so planen, dass er jeden Montagmorgen und jeden Mittwochnachmittag verarbeitet wird.

Pushen von Echtzeitdaten

Vorsicht

Die Verfügbarkeit dieser Funktion hängt von der Lizenz der Opendatasoft-Domain ab.

Bei manchen Datentypen kann es sinnvoll sein, die Daten zu pushen, anstatt nach dem eher traditionellen Modell vorzugehen (bei dem die Daten von der Plattform aus einer Ressource gepullt werden). Um diese Anforderung zu erfüllen, bietet die Opendatasoft-Plattform eine Echtzeit-Push-API. Dies ist jedoch nicht mit der Fähigkeit zur Zeitplanung einer Datensatzverarbeitung zu verwechseln. Bei der Zeitplanung pullt der Datensatz die Ressource in bestimmten Zeitabständen und verarbeitet die Daten, die diese enthält; durch die Push-API hingegen wird der Datensatz von einer Anwendung eingespeist und die Einträge werden nacheinander bei ihrem Empfang verarbeitet.

Konfigurieren des Datensatz-Schemas

../../_images/realtime_source.png

Zur Erstellung eines Echtzeit-Datensatzes navigieren Sie zunächst zu der Datensatz-Erstellungsschnittstelle. Wählen Sie hier "Echtzeit-Quelle hinzufügen" aus.

realtime resource pane

Sie werden zur Eingabe einiger Bootstrapdaten sowie zum optionalen Ausfüllen zusätzlicher Optionen aufgefordert. Die Bootstrapdaten müssen alle Felder enthalten, die durch die API gesendet werden. Bitte beachten Sie, dass die Bootstrapdaten nicht im Datensatz verwendet werden: Ihr einziger Zweck besteht darin, den Datensatz einzurichten.

Verwenden der Push-URL

../../_images/realtime_pushurl.png

Sobald Ihr Datensatz mit den korrekten Echtzeit-Ressourceneinstellungen gespeichert ist, erscheint ein URL-Pfad mit einem Push-API-Schlüssel. Dieser Pfad ist Ihrer Domain-Basis-URL angehängt. Die Plattform muss die Daten nach ihrer Veröffentlichung an diesen Pfad senden. Wie bei den Bootstrapdaten müssen die Daten im JSON-Format gesendet werden, entweder als einzelnes JSON-Objekt für einen einzelnen Eintrag, oder als Array aus JSON-Objekten, um mehrere Einträge auf einmal zu pushen.

table view with a single record with value "Hello World!" in the "message" field

Nachfolgend ein Minimalbeispiel einer API-Verwendung für einen Datensatz mit einem einzigen Feld namens "Nachricht", das Curl verwendet:

curl -XPOST <DOMAIN_URL>/api/push/1.0/<DATASET_ID>/<RESSOURCE_ID>/push/?pushkey=<PUSH_API_KEY> -d'{"message":"Hello World!"}'

Nachfolgend ein Minimalbeispiel mit demselben Datensatz, den das Array-Formular zum gleichzeitigen Versenden mehrerer Einträge verwendet:

curl -XPOST <DOMAIN_URL>/api/push/1.0/<DATASET_ID>/<RESSOURCE_ID>/push/?pushkey=<PUSH_API_KEY> -d'[{"message":"¡Hola Mundo!"},{"message":"Hallo Welt!"}]'

Wenn die Einträge korrekt empfangen wurden, antwortet der Server mit folgender Nachricht.

{
    "status": "OK"
}

Falls bei dem Versuch, einen Eintrag zu pushen, ein Fehler auftritt, wird dieser Fehler in der Antwort angegeben.

Pushen eines Felds oder einer Typ-Datei

Um ein Feld vom Typ Bild zu pushen, muss ein JSON-Objekt mit dem Base64-kodierten Content und dem MIME-Typ der Datei gesendet werden.

{
    "image_field": {
        "content": "BASE64 data",
        "content-type": "image/jpg"
    }
}

Aktualisieren von Daten durch Definieren eines eindeutigen Schlüssels

table view with 2 records containing respectively 978-0060589462 and 978-2862744506 as isbn and 3 and 5 as number_of_copies

In manchen Fällen ist es sinnvoll, die bestehenden Einträge zu aktualisieren, anstatt immer wieder neue zu pushen. Ein Beispiel hierfür ist etwa ein Datensatz, der die Anzahl der verfügbaren Ausgaben für jedes Buch in einer städtischen Bibliothek verfolgt. Angenommen, wir haben einen solchen Datensatz mit zwei Feldern: isbn`, steht für ISBN die Nummer des Buchs, und Anzahl_Ausgaben, das die Anzahl der momentan in der Bibliothek verfügbaren Ausgaben verfolgt.

../../_images/realtime_unique-id.png

Zum Konfigurieren eines solchen Systems mit der Opendatasoft-Plattform müssen die Felder, die als eindeutiger Schlüssel verwendet werden sollen, als solche gekennzeichnet sein. In unserem Beispiel wäre der eindeutige Schlüssel die ISBN, da die übrigen Daten mit einzelnen Büchern verbunden sind und diese Bücher durch die ISBN gekennzeichnet sind. Dies kann in der Bearbeitungsansicht in dem Menü geschehen, das aufgeht, wenn auf die Konfigurationsschaltfläche geklickt wird. Mehrere Felder können als eindeutige Schlüssel eingerichtet werden. Wenn dann nach dem Speichern und Veröffentlichen ein neuer Eintrag gepusht wird, dessen Schlüsselwert dem eines bestehenden Eintrags entspricht, überschreibt der neue den alten Eintrag.

[
    {
        "isbn": "978-0060589462",
        "number_of_copies": 3
    }, {
        "isbn": "978-2862744506",
        "number_of_copies": 5
    }
]

Wenn nun jemand eine Ausgabe von "Zen and the Art of Motorcycle Maintenance" ausleiht und Sie den folgenden Eintrag pushen, haben Sie immer noch zwei Einträge, wobei der erste mit dem neuen Wert aktualisiert wurde.

{
    "isbn": "978-0060589462",
    "number_of_copies": 2
}
table view with 2 records containing respectively 978-0060589462 and 978-2862744506 as isbn and 2 and 5 as number_of_copies

Löschen von Daten

Zwei verschiedene Einstiegspunkte ermöglichen das Löschen gepushter Einträge. Der eine verwendet Eintragswerte und der andere die Eintrags-ID.

Verwenden der Eintragswerte

Zum Löschen eines Eintrags bei bekannten Eintragsfeldwerten POSTEN Sie den Eintrag, als würden Sie ihn zum ersten Mal hinzufügen, ersetzen Sie dabei jedoch /push/ durch /delete/ in der Push-URL. Falls Ihr Push-URL-Pfad /api/push/1.0/<DATASET_ID>/<RESSOURCE_ID>/push/?pushkey=<PUSH_API_KEY> lautet, verwenden Sie stattdessen /api/push/1.0/<DATASET_ID>/<RESSOURCE_ID>/delete/?pushkey=<PUSH_API_KEY>. Es folgt ein Minimalbeispiel der Löschung eines Eintrags, den wir zuvor gepusht hatten.

curl -XPOST <DOMAIN_URL>/api/push/1.0/<DATASET_ID>/<RESSOURCE_ID>/delete/?pushkey=<PUSH_API_KEY> -d'{"message":"Hello World!"}'

Verwendung der Eintrags-ID

Wenn Sie die Eintrags-ID des Eintrags kennen, den Sie löschen möchten, führen Sie einfach eine GET-Anfrage an die URL aus, die Sie beim Ersetzen von /push/ durch /<RECORD_ID>/delete/ in der Push-URL erhalten. Es folgt ein Minimalbeispiel hierfür.

curl -XGET <DOMAIN_URL>/api/push/1.0/<DATASET_ID>/<RESSOURCE_ID>/<RECORD_ID>/delete/?pushkey=<PUSH_API_KEY>

Benachrichtigung bei Inaktivität

../../_images/realtime_alerting.png

Wenn ein System oft Daten zur Plattform pushen soll, möchten Sie eventuell benachrichtigt werden, wenn die Plattform innerhalb einer gewissen Zeit keinen Eintrag mehr empfängt. Um benachrichtigt zu werden, können Sie die "Warn"-Option in der Quell-Konfiguration aktivieren und einen Zeitschwellenwert in Minuten festlegen. Sobald die Zeitdauer, während der kein Eintrag empfangen wurde, den Schwellenwert überschreitet, erhalten Sie eine E-Mail.

Aufheben der Veröffentlichung und Deaktivierung der API

../../_images/realtime_disable-button.png

Vorsicht beim Aufheben der Veröffentlichung Ihres Datensatzes. Dabei werden bestehende Einträge nicht für die nächste Veröffentlichung des Datensatzes gespeichert. Wenn Sie es vermeiden möchten, neue Daten zu erhalten, sollten Sie stattdessen auf die Schaltfläche "Push deaktivieren" in den Ressourceneinstellungen klicken. So verhindern Sie die Verwendung der Push-API. Dies hat jedoch keinerlei Auswirkung auf die bestehenden Daten. Wenn Daten gepusht werden, während der Push in der Ressource deaktiviert ist, können keine Daten hinzugefügt werden, und Sie erhalten eine Fehlermeldung.

Wiederherstellung

../../_images/realtime_recovery.png

Bei Datenverlust, etwa wenn die Veröffentlichung des Datensatzes aufgehoben oder ein Prozessor falsch konfiguriert wurde, besteht die Möglichkeit, die verlorenen Einträge wiederherzustellen. Dafür muss die Wiederherstellungsoption vor dem Pushen der Einträge auf die Plattform aktiviert worden sein.

../../_images/realtime_recovery-button.png

Wenn die Wiederherstellung aktiviert ist, wird jeder darauf folgende Eintrag gesichert und lässt sich wiederherstellen. Um Backup-fähige Einträge wiederherzustellen, kann die Schaltfläche "Daten wiederherstellen" auf der Quell-Konfigurationsseite verwendet werden.