Das Backend

Dokumentation für 2.2 (in Arbeit)
Im Backend-Bereich muss zwischen den verschieden Aufgaben unterschieden werden. Für die Speicherung organisatorischer Informationen (Nutzerdaten, Klassifikationen, etc.) wird ein relationales Datenbanksystem über Hibernate verwendet. Für die Suche liefert MyCoRe Apache Lucene mit. Die Ablage der eigentlichen digitalen Objekte und deren Volltexte geschieht im Filesystem. Optional kann für Audio- und Video-Streaming ein Helix-Server angebunden werden.

Hibernate

ToDo

Lucene

ToDo

Filesystem

Das IFS2 (Internal Filesystem Version 2) ist eine neue Implementierung für die Persistenz von Metadaten, Derivaten und Dateien. IFS2 bietet gegenüber der bisherigen Persistenzschicht eine Reihe von Vorteilen, u.a. eine einfachere Struktur, die auch mit externen Werkzeugen ausserhalb von MyCoRe bearbeitbar ist, eine einfachere Möglichkeit der Datensicherung und Synchronisierung und eine gesteigerte Performance. Die Implementierung für Dateien ist derzeit noch nicht vollständig.

Zur Speicherung von Objekt-Metadaten wird IFS2 zur Zeit in der Form genutzt, dass je Projekt-ID und Objekttyp ein eigener IFS2 Metadata Store angelegt wird. In der Konfiguration muss dazu nur das Basisverzeichnis angegeben werden.

MCR.Metadata.Store.BaseDir=%MCR.datadir%/metadata

Je Projekt und Objekttyp entsteht ein separates Unterverzeichnis. Die Standardkonfiguration speichert dann z. B. die Metadaten des Objektes DocPortal_document_07910403 in der Datei %MCR.datadir%/metadata/DocPortal/document/0791/04/DocPortal_document_07910403.xml

IFS2 Stores bilden Unterverzeichnisse (Slots), um die Dateien gleichmässiger im Filesystem zu verteilen. Diese Unterverzeichnisse werden aus der ID abgeleitet, anhand des vorkonfigurieren Slot Layouts. Das Standard Slot Layout ist

			n-2-2
		
wobei n die Anzahl der Stellen in der MyCoRe Object ID - 4 ist. Bei
			MCR.Metadata.ObjectID.NumberPattern=00000000
		
ist das Standard Layout 4-2-2, achtstellige Objekt-IDs (4+2+2=8), die ersten vier Ziffern der ID bilden die erste Verzeichnisebene, die nächsten zwei Ziffern der ID bilden die zweite Verzeichnisebene unterhalb des Ordners für Projekt-ID und Objekttyp.

Es gibt verschiedene Implementierungen eines IFS2 Metadata Stores. Die einfachste und schnellste Implementierung ist

			MCR.Metadata.Store.DefaultClass=org.mycore.datamodel.ifs2.MCRMetadataStore
		
Sie bietet keine Versionierung der Metadaten, ist aber auch bei create/update/delete Operationen schnell. Eine Alternative ist
			MCR.Metadata.Store.DefaultClass=org.mycore.datamodel.ifs2.MCRVersioningMetadataStore
		
Dies ist zur Zeit die Default-Einstellung, die zusätzlich Änderungen an Metadaten-Objekten in internen Subversion Repositories versioniert. D.h. mit dieser Implementierung lassen sich Änderungen an Metadaten-Objekten verfolgen, alte und gelöschte Versionen der Metadaten wiederherstellen. Diese Implementierung ist bei Leseoperationen auf die aktuellste Version der Metadaten genau so schnell, bei create/update/delete Operationen aber deutlich langsamer.

Zur Verwaltung der Metadatenversionen werden je Projekt-ID und Objekttyp separate Subversion Repositories unterhalb eines Basisverzeichnisses angelegt:

			MCR.Metadata.Store.SVNBase=file\:///%MCR.datadir%/versions-metadata
		
Diese SVN Repositories können wie andere auch mit externen Subversion Kommandos befragt werden, aber es ist keine lokale Subversion Installation erforderlich. Die benötigte Funktionalität wird von MyCoRe mitgeliefert.

Es ist möglich, die Einstellungen zum verwendeten Store, Basisverzeichnis und Slot Layout individuell für einzelne Objekttypen und Projekt-IDs zu überschreiben.

So könnte z. B. für einen bestimmten Objekttyp (hier DocPortal document) Versionierung aktiviert werden, für andere Objekttypen aber der schnellere MCRMetadataStore:

			MCR.Metadata.Store.DefaultClass=org.mycore.datamodel.ifs2.MCRMetadataStore

			MCR.IFS2.Store.DocPortal_document.Class=org.mycore.datamodel.ifs2.MCRVersioningMetadataStore
			MCR.IFS2.Store.DocPortal_document.SlotLayout=4-2-2
			MCR.IFS2.Store.DocPortal_document.BaseDir=/path/to/metadata/store/
			MCR.IFS2.Store.DocPortal_document.SVNRepositoryURL=file:///path/to/local/svn/repository/
		

In älteren MyCoRe Versionen wurden die Metadaten der Objekte in einer Datenbanktabelle (BLOB-Spalte) gespeichert. Eine besondere Implementierung ist

			MCR.Metadata.Store.DefaultClass=org.mycore.migration20_21.datamodel.MCRMigratingXMLStore
		
Diese verhält sich wie ein MCRVersioningMetadataStore, bietet jedoch zusätzlich eine live Migration der alten Daten aus der Tabelle. Beim ersten Zugriff auf ein Objekt wird dieses ggf. aus der Datenbanktabelle gelesen und in den IFS2 Store kopiert, sofern es nicht schon dort gespeichert ist.

Streaming-Server

ToDo