Ajuste de la serialización

Los plug-ins DataSerializer exponen metadatos que indican a WebSphere eXtreme Scale qué atributos puede o no utilizar directamente durante la serialización, la vía de acceso a los datos que se serializarán y el tipo de datos que se almacena en memoria. Puede optimizar la serialización de objetos y el rendimiento de inflado de forma que pueda interactuar eficazmente con la matriz de bytes.

Visión general

Deprecated feature La interfaz ObjectTransformer ha sido sustituida por los plug-ins DataSerializer, que puede utilizar para almacenar eficientemente datos arbitrarios en WebSphere eXtreme Scale de modo que las API existentes del producto puedan interactuar eficazmente con los datos.

Siempre se realizan copias de los valores excepto cuando se utiliza la modalidad NO_COPY. El mecanismo de copia predeterminado que se emplea en eXtreme Scale es la serialización, que se sabe que es una operación costosa. La interfaz ObjectTransformer se utiliza en esta situación. La interfaz ObjectTransformer utiliza las devoluciones de llamada a la aplicación para proporcionar una implementación personalizada de las operaciones comunes y costosas como, por ejemplo, la serialización de objeto y la copia exacta de objetos. Sin embargo, para obtener un rendimiento mejorado en la mayoría de los casos, puede utilizar los plug-ins DataSerializer para serializar objetos. Debe utilizar las modalidades de copia COPY_TO_BYTES o COPY_TO_BYTES_RAW para explotar los plug-ins DataSerializer. Para obtener más información, consulte Serialización mediante plug-ins DataSerializer.

Una aplicación puede proporcionar una implementación de la interfaz ObjectTransformer en una correlación y, a continuación, eXtreme Scale delega en los métodos de este objeto y se basa en la aplicación para proporcionar una versión optimizada de cada método de la interfaz. La interfaz ObjectTransformer actúa del modo siguiente:
public interface ObjectTransformer {
    void serializeKey(Object key, ObjectOutputStream stream) throws IOException;
    void serializeValue(Object value, ObjectOutputStream stream) throws IOException;
    Object inflateKey(ObjectInputStream stream) throws IOException, ClassNotFoundException;
    Object inflateValue(ObjectInputStream stream) throws IOException, ClassNotFoundException;
    Object copyValue(Object value);
    Object copyKey(Object key);
}
Puede asociar una interfaz ObjectTransformer con una BackingMap utilizando el siguiente código de ejemplo:
ObjectGrid g = ...;
BackingMap bm = g.defineMap("PERSON");
MyObjectTransformer ot = new MyObjectTransformer();
bm.setObjectTransformer(ot);

Ajuste de la serialización e inflado de objetos

Normalmente la serialización de objetos es la consideración de rendimiento más importante con eXtreme Scale, que utiliza el mecanismo serializable predeterminado, si la aplicación no proporciona un plug-in ObjectTransformer. Una aplicación puede proporcionar implementaciones de readObject y writeObject Serializable o tener objetos que implementen la interfaz Externalizable, que es unas 10 veces más rápida. Si no se pueden modificar los objetos de la correlación, entonces una aplicación puede asociar una interfaz ObjectTransformer a la ObjectMap. Se proporcionan los métodos serialize e inflate para permitir que la aplicación proporcione código personalizado para optimizar estas operaciones, dado el gran impacto que tienen en el rendimiento del sistema. El método serialize serializa el objeto en la corriente de datos proporcionada. El método inflate proporciona la corriente de datos de entrada y espera que la aplicación cree el objeto, lo infle utilizando los datos de la corriente y devuelva el objeto. Las implementaciones de los métodos serialize e inflate deben duplicarse entre sí.

Los plug-ins DataSerializer sustituyen a los plug-ins ObjectTransformer, que están en desuso. Para serializar los datos de la forma más eficaz, utilice los plug-ins DataSerializer para mejorar el rendimiento en la mayoría de los casos. Por ejemplo, si tiene la intención de utilizar funciones, como consulta e indexación, puede aprovechar inmediatamente la mejora de rendimiento que proporcionan los plug-ins DataSerializer sin realizar cambios de configuración o programación en el código de la aplicación.