Visión general de la programación del serializador

Puede utilizar los plug-ins DataSerializer para grabar serializadores optimizados a fin de almacenar objetos Java y otros datos en formato binario en la cuadrícula. El plug-in también proporciona métodos que puede utilizar para consultar atributos en los datos binarios sin necesidad de que el objeto de datos entero se infle.

Los plug-ins DataSerializer incluyen tres plug-ins principales y varias interfaces mixin opcionales. El plug-in MapSerializerPlugin incluye metadatos acerca de la relación entre una correlación y otras correlaciones. También incluye una referencia a un KeySerializerPlugin y ValueSerializerPlugin. Los plug-ins de serializador de clave y valor incluyen metadatos y código de serialización responsables de interactuar con los respectivos datos de clave y valor para una correlación. Un plug-in MapSerializerPlugin debe incluir uno o ambos serializadores de clave y valor.

El plug-in KeySerializerPlugin proporciona métodos y metadatos para serializar, inflar y examinar claves. El plug-in ValueSerializer proporciona métodos y metadatos para serializar, inflar y examinar claves. Ambas interfaces tienen requisitos diferentes. Para obtener información detallada sobre los métodos que están disponibles en los plug-ins DataSerializer, consulte la documentación de API para el paquete com.ibm.websphere.objectgrid.plugins.io.

Plug-in MapSerializerPlugin
MapSerializerPlugin es el punto de plug-in principal en la interfaz BackingMap e incluye dos plug-ins anidados: los plug-ins KeySerializerPlugin y ValueSerializerPlugin. Puesto que eXtreme Scale no soporta plug-ins anidados o conectados, el plug-in BasicMapSerializerPlugin accede de forma artificial a estos plug-ins anidados. Cuando se utilizan estos plug-ins con la infraestructura OSGi, el único proxy es el plug-in MapSerializerPlugin. Ninguno de los plug-ins anidados se debe almacenar en memoria caché en otros plug-ins dependientes como, por ejemplo, cargadores, a menos que estos plug-ins también estén a la escucha de sucesos del ciclo de vida de BackingMap. Esto es importante cuando se ejecuta en una infraestructura OSGi, porque las referencias a esos plug-ins se pueden continuar renovándose.
Plug-in KeySerializerPlugin
El plug-in KeySerializerPlugin amplía la interfaz DataSerializer e incluye otras interfaces mixin y metadatos que describen la clave. Utilice este plug-in para serializar e inflar objetos y atributos de datos de clave.
Plug-in ValueSerializerPlugin
El plug-in ValueSerializerPlugin amplía la interfaz DataSerializer, pero no expone métodos adicionales. Utilice este plug-in para serializar e inflar objetos y atributos de datos de valores.

Interfaces mixin opcionales

Las interfaces mixin opcionales proporcionan prestaciones adicionales, por ejemplo:
Mantenimiento de versiones optimista
La interfaz versionable permite que el plug-in ValueSerializerPlugin maneje la comprobación de versión y las actualizaciones de versión cuando se utiliza el bloqueo optimista. Si no se implementa el mantenimiento de versiones y se habilita el bloqueo optimista, la versión es la forma serializada entera del valor de objeto de datos.
Direccionamiento no basado en hashCode
La interfaz particionable permite que las implementaciones de KeySerializerPlugin direccionen las solicitudes a particiones explícitas. Esto es equivalente a la interfaz PartitionableKey, cuando se utiliza con la API ObjectMap sin un KeySerializerPlugin. Sin esta característica, la clave se direcciona a la partición en función del código hash resultante.
Interfaz UserReadable (toString)
La interfaz UserReadable (toString) permite que todas las implementaciones de DataSerializer proporcionen un método alternativo para visualizar datos en los archivos de registro y los depuradores. Con esta posibilidad, se pueden ocultar los datos confidenciales como por ejemplo contraseñas. Si las implementaciones de DataSerializer no implementan esta interfaz, es posible que el entorno de ejecución llame directamente a toString() en el objeto o incluya representaciones alternativas, si es apropiado.
Soporte de la evolución
La interfaz Mergeable se puede implementar en las implementaciones de plug-in ValueSerializerPlugin para permitir la interoperatividad entre varias versiones de objetos cuando hay diferentes versiones DataSerializer actualizando datos en la cuadrícula durante su tiempo de vida. Los métodos Mergeable permiten que el plug-in DataSerializer retenga los datos que de otra manera no podría entender.