Ajustando a Serialização

Os plug-ins DataSerializer expõem os metadados que informa ao WebSphere eXtreme Scale quais atributos ele pode e não pode usar diretamente durante a serialização, o caminho para os dados que serão serializados e o tipo de dados que é armazenado na memória. É possível otimizar a serialização do objeto e o desempenho de desserialização a fim de interagir com eficiência com a matriz de bytes.

Visão Geral

Deprecated feature A interface ObjectTransformer foi substituída pelos plug-ins DataSerializer, que podem ser usados para armazenar dados arbitrários eficientemente no WebSphere eXtreme Scale para que as APIs do produto existentes possam ser interagir de modo eficiente com seus dados.

As cópias de valores são sempre feitas, exceto quando o modo NO_COPY é usado. O mecanismo de cópia padrão que é empregado no eXtreme Scale é a serialização, que é conhecida como uma operação cara. A interface ObjectTransformer é usada nesta situação. A interface ObjectTransformer usa retornos de chamadas para o aplicativo fornecer uma implementação customizada de operações comuns e caras, como serialização de objetos e cópias detalhadas em objetos. No entanto, para obter melhor desempenho na maioria dos casos, é possível usar os plug-ins DataSerializer para serializar os objetos. Você deve usar os modos de cópia COPY_TO_BYTES ou COPY_TO_BYTES_RAW para explorar os plug-ins DataSerializer. Para obter informações adicionais, consulte Serialização Usando os Plug-ins DataSerializer.

Um aplicativo pode oferecer uma implementação da interface ObjectTransformer para um mapa, e o eXtreme Scale então delega os métodos neste objeto e confia no aplicativo para oferecer uma versão otimizada de cada método na interface. A interface ObjectTransformer é a seguinte:
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);
}
É possível associar uma interface ObjectTransformer com um BackingMap usando o seguinte código de exemplo:
ObjectGrid g = ...;
BackingMap bm = g.defineMap("PERSON");
MyObjectTransformer ot = new MyObjectTransformer();
bm.setObjectTransformer(ot);

Ajustar a Serialização e Aumento de Objetos

A serialização de objeto é normalmente a consideração mais importante de desempenho com o eXtreme Scale, que usa o mecanismo serializável padrão se um plug-in ObjectTransformer não for fornecido pelo aplicativo. Um aplicativo pode fornecer implementações de readObject e writeObject Serializáveis ou pode fazer os objetos implementarem a interface Externalizable, que é aproximadamente dez vezes mais rápida. Se os objetos no mapa não puderem ser modificados, um aplicativo poderá associar uma interface ObjectTransformer ao ObjectMap. Os métodos serialize e inflate são fornecidos para permitir que o aplicativo forneça código customizado para otimizar estas operações devido ao seu grande impacto no desempenho do sistema. O método serializa o objeto para o fluxo fornecido. O método inflate fornece um fluxo de entrada e espera que o aplicativo crie o objeto, aumente-o utilizando dados do fluxo e retorne o objeto. As implementações dos métodos serialize e inflate devem se espelhar entre si.

Os plug-ins DataSerializer substituem os plug-ins do ObjectTransformer, que são descontinuados. Para serializar os dados da forma mais eficiente, use os plug-ins DataSerializer para melhorar o desempenho na maioria dos casos. Por exemplo, se pretender usar funções, como consulta e a indexação, será possível obter vantagem imediatamente do aprimoramento de desempenho que os plug-ins do DataSerializer geram sem fazer mudanças de configuração ou programáticas para seu código do aplicativo.