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 |
-
Ein Universally Unique Identifier (UUID) ist ein Standard für Identifikatoren. ↩