Vous pouvez utiliser les plug-in DataSerializer pour écrire
des sérialiseurs optimisés pour stocker les objets Java
et d'autres données binaires dans la grille. Le plug-in fournit également des méthodes que vous
pouvez utiliser pour rechercher des attributs dans les données binaires sans avoir à augmenter
l'ensemble de l'objet données.
Les plug-in DataSerializer incluent trois plug-in principaux et plusieurs interfaces intégrées mixtes optionnelles. Le
plug-in MapSerializerPlugin contient des métadonnées sur la relation entre une mappe et d'autres mappes.
Il contient également un référence à un plug-in KeySerializerPlugin et à un plug-in ValueSerializerPlugin.
Les plug-in de sérialiseur de clé et de valeur contiennent des métadonnées et du code de sérialisation responsable de l'interaction avec les données key et value d'une mappe. Un plug-in MapSerializerPlugin doit contenir l'un des sérialiseurs de clé et de valeur ou les deux sérialiseurs.
Le
plug-in KeySerializerPlugin fournit des méthodes et des métadonnées pour la sérialisation, l'inflation et l'introspection des clés. Le
plug-in ValueSerializer fournit des méthodes et des métadonnées pour la sérialisation, l'inflation et l'introspection des clés. Les deux interfaces ont des exigences différentes. Pour plus d'informations sur les méthodes disponibles dans les plug-in DataSerializer, voir la documentation d'API du module com.ibm.websphere.objectgrid.plugins.io.
- Plug-in MapSerializerPlugin
- MapSerializerPlugin est le point de plug-in principal vers l'interface BackingMap et il contient deux plug-in imbriqués : KeySerializerPlugin et ValueSerializerPlugin. Comme eXtreme Scale ne prend pas en charge les plug-in imbriqués ou connectés, le plug-in accède à ces plug-in imbriqués de manière artificielle. Lorsque vous utilisez ces plug-in avec l'infrastructure OSGi, le seul proxy est le plug-in MapSerializerPlugin.
Tous les plug-in imbriqués ne doivent pas être mis en cache dans d'autres plug-in dépendants, tels que des chargeurs, sauf si ces plug-in écoutent également les événements de cycle de vie de BackingMap. Ce point est important lors de l'exécution dans une infrastructure OSGi, car les références à ces plug-in peuvent continuer à être régénérées.
- Plug-in KeySerializerPlugin
- Le plug-in KeySerializerPlugin étend l'interface DataSerializer et inclut d'autres interfaces mixtes intégrées et les métadonnées qui décrivent la clé. Utilisez ce plug-in pour sérialiser et étendre les objets et les attributs de données de clés.
- Plug-in ValueSerializerPlugin
- Le plug-in ValueSerializerPlugin étend l'interface DataSerializer, mais n'expose pas d'autres méthodes. Utilisez ce plug-in pour sérialiser et étendre les objets et les attributs de données de valeur.
Interfaces facultatives et intégrées mixtes
Les interfaces facultatives et intégrées mixtes fournissent des fonctions supplémentaires, telles que :
- Gestion optimiste des versions
- L'interface versionnable permet au plug-in ValueSerializerPlugin de vérifier et de mettre à jour les versions lors de l'utilisation du verrouillage optimiste. Si la gestion optimiste des versions n'est pas incluse et que le verrouillage optimiste est activé, la version est la forme sérialisée complète de la valeur d'objet données.
- Routage non-hashCode-based
- L'interface partitionnable permet aux implémentations KeySerializerPlugin de router les demandes vers des partitions explicites. Elle est équivalente à l'interface PartitionableKey lorsqu'elle est utilisée avec l'API ObjectMap dans plug-in KeySerializerPlugin. Sans cette fonction, la clé est routée vers la partition enfonction du code de hachage résultant.
- Interface UserReadable (toString)
- Cette interface permet à toutes les implémentations DataSerializer de fournit une méthode alternative pour afficher les données dans les fichiers journaux et les débogueurs. Avec cette fonction, vous pouvez masquer les données confidentielles, telles que les mots de passe. Si les implémentations DataSerializer n'implémentent pas cette interface, l'environnement d'exécution pourrait appeler toString() directement sur l'objet ou inclure des représentations alternatives, si nécessaire.
- Support d'évolution
- L'interface Mergeable peut être implémentée dans les implémentations de plug-in ValueSerializerPlugin pour permettre l'interopérabilité entre plusieurs versions des objets lorsque plusieurs versions DataSerializer différentes mettent à jour les données dans la grille pendant sa durée de vie. Les
méthodes Mergeable permettent au plug-in DataSerializer de conserver des données qu'il peut autrement ne pas comprendre.