Skip to content

Konzepte

Architektur

koala besteht aus mehreren separaten Prozessen (rot) und Middleware-Komponenten (blau). arc

Middleware

Data Management (DB)

Interne Datenbank. Enthält Asset-Metadaten, Daten zu Ingest-/Retrieve-Vorgängen, Datetypen, Schemata und Nutzerdaten. Verwendet wird: mysql

Message Queue (MQ)

Die Message Queue wird verwendet um asynchron Ingest- und Retrieve-Anfragen den Loader-/Retriever-Applikationen zur Verfügung zu stellen. Verwendet wird: RabbitMQ

Archival Storage

Primärer Datenspeicher für die Asset-Archivdaten (Bitstream preservation). koala unterstützt IBM Spectrum Protect (SP) und das Dateisystem als Implementierung.

Cache

Speichert Informationen über die laufenden Applikationen und wird als Zwischenspeicher für flüchtige Daten wie Statistiken verwendet. Verwendet wird: redis

Applikationen

Scheduler

Überwacht das Upload-Verzeichnis auf neue Dateien (SIPs) und speichert die gesammelten Informationen in der Message Queue zur weiteren Verarbeitung durch die Loader/Retriever. Pro koala-System kann nur ein scheduler gleichzeitig aktiv sein.

Loader

Zur Erhöhung des Durchsatzes können mehrere Loader gleichzeitg betrieben werden. Ein Loader verbindet sich mit der Message Queue und bearbeitet jeweils ein SIP. Es wird eine Reihe von Prozessschritten durchlaufen u. a. nachfolgend:

  • Entpacken
  • Validierung der Dateien und Metadaten
  • Überprüfung von Checksummen
  • Speicherung der Metadaten in der internen Datenbank und der Archivdaten im primären Datenspeicher

Der Status des Ingest-Prozesses wird kontinuierlich aktualisiert und kann über das Dashboard oder die API verfolgt werden.

Proxy

Ein "reverse proxy" der für SSL-/TLS-Terminierung und die Bereitstellung von statischen Inhaltsdaten zuständig ist.

Web

Die Web-Applikation stellt die HTTP-API und die Admin-Oberfläche bereit.

Retriever

Zur Erhöhung des Durchsatzes können mehrere Retriever gleichzeitg betrieben werden. Ein Retriever verbindet sich mit der Message Queue und bearbeitet jeweils eine Anfrage. Der Retriever verbindet sich mit dem primären Datenspeicher, ruft dieses ab und konvertiert es in ein DIP. Dieses wird über den Proxy zum Herunterladen bereitgestellt.

Der Status des Retrieve-Prozesses wird kontinuierlich aktualisiert und kann über das Dashboard oder die API verfolgt werden.

Purger

Überwacht das Download-Verzeichnis. Sobald ein definierter Schwellwert überschritten ist werden alte DIPs abgeräumt.

Statistics

Erstellt Statistiken auf Basis der internen Datenbank und speichert diese im Cache.

Prozesse

Ingest

ingest

Der Ingest-Prozess ist als eine Reihe von Zuständen modelliert die nacheinander durchlaufen werden und entweder in dem Zustand "done", "error" oder "fatal" enden. Der Zustand "done" steht hierbei für die erfolgreiche Abarbeitung und garantiert dem Klienten, dass das AIP im "Archival Storage" konsistent gespeichert ist. Jede Abarbeitung eines SIPs wird als Transaktion behandelt. Dies hat zur Folge, dass ein abgebrochener Ingest-Vorgang zu einem "Rollback" führt, um das Auftreten von Inkonsistenzen zu vermeiden. Im Zustand "error" wird die Rollback-Aktion von der loader Applikation ausgeführt; Führte der Ingest-Vorgang zu einem Absturz, wird die Rollback-Aktion vom purger ausgeführt und der loader so lange beim Starten blockiert bis diese Aktion abgeschlossen ist.

Retrieve

retrieve

Sobald ein Klient ein spezifisches Paket anfordert ruft der retriever die Daten aus dem "Archival Storage" ab, baut ein DIP-Paket und legt dieses HTTP-abrufbar im Download-Verzeichnis bereit. Das Paket wird so lange zur Verfügung gestellt, bis ein definierter oberer Schwellwert (typischerweise 70% Dateisystem-Kapazität) überschritten ist. Anschließend entfernt der purger alte Pakete bis ein unterer Schwellwert erreicht ist.

Authentifizierung

koala unterstützt die Authentifizierungsmechanismen "local" und "remote". Nach Möglichkeit sollte "remote" für Nutzer und "local" für Funktionskonten verwendet werden.

Local

Lokale Konten sind in der internen Datenbank mit gehashten und gesalzenen Passwörtern gespeichert.

Remote

Bei der "remote"-Authentifizierung gibt es die Möglichkeit LDAP oder Single Sign-On via OpenID Connect zu verwenden. Siehe hierzu: Configuration.

Um einem Konto Zugriff zu gewähren, muss dieses zunächst als lokales Konten angelegt und entsprechende Rechte zugewiesen werden. Siehe hierzu: Permissions.

Berechtigungen

koala stellt eine Reihe von Berechtigungen zur Verfügung die den Zugriff auf verschiedene APIs und Funktionen der Webseite einschränken. Berechtigungen können beim Erstellen oder Editieren von Konten angepasst werden.

Die folgenden Berechtigungen sind verfügbar:

  • admin - Gewährt den Zugriff auf alle Funktionen der Webseite
  • monitor - Gewährt den Zugriff auf das Dashboard
  • api - Gewährt den Zugriff auf alle API-Funktionen
  • api_restricted - Gewährt den Zugriff auf alle API-Funktionen außer der Löschung von Archivdaten.

Administrative Webseite

Abfragen eines Ingest-Status

ingest-status

Anzeige des Ingest-Status für ein SIP

ingest-status-result

Konfiguration der akzeptierten Dateitypen

filetypes

Auditierungsereignisse: Zeigt u. a. An- und Abmeldevorgänge, Löschen von Archivdaten, Editieren von Konten, etc.

audit

Konfiguration der XML-Schemavalidierung

collections

Konfiguration der Nutzerkonten und Berechtigungen

users