Manager

Der Storage-Manager kümmert sich um das Lesen, Schreiben, Löschen und Auffinden von Objekten in den definierten Datenspeichern. Er verwaltet die Konfigurationen der Datenspeicher und routet die Anfragen der Geschäftslogig an die entsprechenden Storage-Provider weiter.

Der Manager greift dabei auf zwei unterschiedliche System zu. Zum einen den Objektspeicher und zum anderen einen Indexer. In klassischen relationalen Datenbanksystemen sind diese beiden Einheiten in einem Produkt zusammengefasst.

Note

Das Designziel von Alvine ist die beste Lösung für den entsprechenden Anwendungsfall einzusetzen.

Objektspeicher

Die Objektspeicher definieren, welche Klasse in welchem System abgespeichert werden sollen. So kann für jede Klasse die optimale Strategie gewählt werden. Session-Daten lassen sich gut in Redis speichern und für Bilddaten ist Riak eine gute Wahl.

Der Standardspeicher ist das Dateisystem. Für jedes Objekt wird eine temporäre Datei im Verzeichnis /alvine/cache/ im temporäre Verzeichnis des Systems angelegt.

Note

Aus Performancegründen, sollte dieses Verhalten in der Konfiguration oder der abgeleiteten Klasse auf ein performanteres System umgestellt werden.

Indexierung

Der Zugriff auf den Objektspeicher erfolgt ausnamslos über die UUID1 des Objektes. Aus diesem Grund muss für die Suche nach Objekten ein gesondertes System betrieben werden. Hier kann ein Suchlösung wie Solr oder ElasticSearch zum Einsatz kommen.

1

Ein Universally Unique Identifier (UUID) ist ein Standard für Identifikatoren.

Konfiguration

Die Konfiguration des \Alvine\Persistence\Manager kann über Eigenschaften (Properties) erfolgen. Ein Beispiel kann folgendermaßen aussehen:

# DEFAULT-Definition f\u00fcr die Speicherung von Objektekten
application.persistence.default.class=\Alvine\Persistence\Provider\MongoDB\DataObject
application.persistence.default.uri={ENV:MONGODB_URI}

# Index
application.storageindex.default.class=\Alvine\Persistence\Provider\Solr\IndexObserver
application.storageindex.default.finder=\Alvine\Persistence\Provider\Solr\IndexFinder
application.storageindex.default.uri={ENV:SOLR_URI}

Jeder Handler (Storage und Indexer) besitzen noch eigene Eigenschaften zur Definition von Zugangsdaten, Pfaden und weiteren Optionen. Diese können den entsprechenden Komponenten entnommen werden.

Die Makros {ENV:SOLR_URI} und {ENV:MONGODB_URI} werden dabei durch die Werte der Environmentvariabeln SOLR_URI und MONGODB_URI ersetzt.

Objektspeicher

EigenschaftBeschreibungBeispiel
application.persistence.default.referenceName der Klasse, für die diese Regelung gilt\Alvine\Security\Authentication\User
application.persistence.default.className der Klasse, die für das Speichern des Objektes zu verwenden ist.\Alvine\Persistence\Provider\File\DataObject

Indexierung

EigenschaftBeschreibungBeispiel
application.storageindex.default.className der Klasse, die die Indexierung übernimmt\Alvine\Persistence\Provider\Solr\IndexObserver
application.storageindex.default.finderName der Klasse, die für die Suche zuständig ist\Alvine\Persistence\Provider\Solr\IndexFinder