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.

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.

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.

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

Eigenschaft Beschreibung Beispiel
application.persistence.default.reference Name der Klasse, für die diese Regelung gilt AlvineSecurityAuthenticationUser
application.persistence.default.class Name der Klasse, die für das Speichern des Objektes zu verwenden ist. AlvinePersistenceProviderFileDataObject

Indexierung

Eigenschaft Beschreibung Beispiel
application.storageindex.default.class Name der Klasse, die die Indexierung übernimmt AlvinePersistenceProviderSolrIndexObserver
application.storageindex.default.finder Name der Klasse, die für die Suche zuständig ist AlvinePersistenceProviderSolrIndexFinder

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