Sie können die DataSerializer-Plug-ins
verwenden, um optimierte Serialisierungsmethoden (Serializer) zum Speichern
von Java-Objekten und anderen Daten im Binärformat im Grid zu schreiben.
Außerdem stellt das Plug-in Methoden bereit, die Sie verwenden können, um Attribute in den
Binärdaten abzufragen, ohne das gesamte Datenobjekt deserialisieren zu müssen.
Zu den DataSerializer-Plug-ins gehören drei Haupt-Plug-ins und mehrere
optionale Mix-in-Schnittstellen. Das Plug-in "MapSerializerPlugin"
enthält Metadaten zur Beziehung zwischen einer Map und anderen Maps.
Außerdem enthält es eine Referenz auf ein KeySerializerPlugin
und ein ValueSerializerPlugin. Die Serializer-Plug-ins für Schlüssel und Werte
enthalten Metadaten und Serialisierungscode, der für die Interaktion mit den entsprechenden
Schlüssel- und Wertdaten für eine Map zuständig ist. Ein MapSerializerPlugin-Plug-in
muss einen Schlüssel- und/oder einen Wert-Serializer enthalten.
Das Plug-in "KeySerializerPlugin" enthält Methoden und Metadaten für die Serialisierung,
Deserialisierung und Introspektion von Schlüsseln.
Das Plug-in "ValueSerializer" enthält Methoden und Metadaten für die Serialisierung,
Deserialisierung und Introspektion von Werten.
Beide Schnittstellen haben unterschiedliche Anforderungen. Einzelheiten zu den verfügbaren Methoden
in den DataSerializer-Plug-ins finden Sie in der API-Dokumentation zum Paket "com.ibm.websphere.objectgrid.plugins.io".
- Plug-in "MapSerializerPlugin"
- Das Plug-in "MapSerializerPlugin" ist der Haupt-Plug-in-Punkt für die Schnittstelle "BackingMap"
und enthält zwei verschachtelte Plug-ins: KeySerializerPlugin
und ValueSerializerPlugin. Da eXtreme Scale weder verschachtelte noch verbundene
Plug-ins unterstützt, greift das Plug-in "BasicMapSerializerPlugin"
künstlich auf diese verschachtelten Plug-ins zu.
Wenn Sie diese Plug-ins mit dem OSGi-Framework verwenden, ist das Plug-in "MapSerializerPlugin" der einzige Proxy.
Verschachtelte Plug-ins dürfen nicht in anderen abhängigen Plug-ins wie Ladeprogrammen zwischengespeichert werden,
sofern diese Plug-ins nicht auch für Lebenszyklusereignisse von BackingMaps empfangsbereit sind. Dieser Punkt
ist wichtig, wenn Sie in einem OSGi-Framework arbeiten, weil Referenzen auf diese Plug-ins weiterhin aktualisiert werden können.
- Plugin "KeySerializerPlugin"
- Das Plug-in "KeySerializerPlugin" erweitert die Schnittstelle "DataSerializer" und enthält weitere
Mix-in-Schnittstellen und Metadaten die den Schlüssel beschreiben.
Verwenden Sie dieses Plug-in für die Serialisierung und Deserialisierung von um Schlüsseldatenobjekten und Attributen.
- Plug-in "ValueSerializerPlugin"
- Das Plug-in "ValueSerializerPlugin" erweitert die Schnittstelle "DataSerializer", stellt aber keine weiteren Methoden
bereit.
Verwenden Sie dieses Plug-in für die Serialisierung und Deserialisierung von Wertdatenobjekten und Attributen.
Optionale und Mix-in-Schnittstellen
Optionale
und Mix-in-Schnittstellen bieten ein erweitertes Leistungsspektrum, wie z. B.:
- Optimistische Versionssteuerung
- Die Schnittstelle "Versionable" ermöglicht dem Plug-in "ValueSerializerPlugin" die Versionsprüfung und die Durchführung
von Versionsaktualisierungen, wenn optimistisches Sperren verwendet wird.
Wenn keine Versionssteuerung implementiert und optimistisches Sperren aktiviert ist,
ist die Version
die vollständige serialisierte Form des Datenobjektwerts.
- Nicht auf Hash-Codes basierendes Routing
- Die Schnittstelle "Partitionable" ermöglicht KeySerializerPlugin-Implementierungen, Anforderungen an explizite
Partitionen weiterzuleiten.
Dies ist äquivalent zur Schnittstelle
"PartitionableKey", wenn diese mit der API "ObjectMap" ohne KeySerializerPlugin verwendet wird.
Ohne dieses Feature wird der Schlüssel basierend auf dem generierten Hash-Code an die Partition weitergeleitet.
- Schnittstelle "UserReadable (toString)"
- Die Schnittstelle "UserReadable (toString)"
ermöglicht allen DataSerializer-Implementierungen, eine
alternative Methode für die Anzeige von Daten in Protokolldateien und Debuggern bereitzustellen.
Mit dieser Funktionalität können Sie sensible Daten wie Kennwörter verdecken.
Wenn DataSerializer-Implementierungen diese Schnittstelle nicht
implementieren, kann die Laufzeitumgebung toString() direkt im Objekt
aufrufen oder gegebenenfalls alternative Darstellungen einschließen.
- Unterstützung der Weiterentwicklung
- Die Schnittstelle "Mergeable" kann in Implementierungen des Plug-ins "ValueSerializerPlugin"
implementiert werden, um die Interoperabilität mehrerer Versionen von Objekten zu unterstützen, wenn es verschiedene
DataSerializer-Versionen gibt, die Daten im Grid während der Lebensdauer aktualisieren.
Die Methoden "Mergeable" ermöglichen dem Plug-in "DataSerializer", alle Daten
beizubehalten, die ansonsten nicht verstanden werden.