Le plug-in DataSerializer expose les métadonnées qui indiquent à WebSphere eXtreme Scale les attributs qu'il peut et ne peut pas utiliser directement pendant la sérialisation, le chemin d'accès aux données qui seront sérialisées, ainsi que le type des données stockées en mémoire. Vous pouvez optimiser la sérialisation d'objet et les performances de l'inflation afin que vous puissiez interagir efficacement avec le tableau d'octets.
L'interface ObjectTransformer a été remplacée par les plug-in DataSerializer que vous pouvez utiliser pour stocker efficacement les données arbitraires dans WebSphere eXtreme Scale pour que les API de produit existantes puissent interagir efficacement avec vos données.
Des copies des valeurs sont toujours créées, sauf lorsque le mode NO_COPY est utilisé. Le mécanisme de copie par défaut utilisé dans eXtreme Scale est la sérialisation, qui est connue pour être une opération coûteuse. L'interface ObjectTransformer est utilisée dans cette situation. L'interface ObjectTransformer envoie des rappels à l'application pour permettre l'implémentation personnalisée d'opérations courantes et coûteuses, telles que la sérialisation d'objets et la copie complète sur des objets. Toutefois, pour améliorer les performances dans la plupart des cas, vous pouvez utiliser les plug-in DataSerializer pour sérialiser les objets. Vous devez utiliser soit le mode de copie COPY_TO_BYTES ou COPY_TO_BYTES_RAW pour exploiter les plug-in DataSerializer. Pour plus d'informations, voir Sérialisation à l'aide des plug-in DataSerializer.
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);
}
ObjectGrid g = ...;
BackingMap bm = g.defineMap("PERSON");
MyObjectTransformer ot = new MyObjectTransformer();
bm.setObjectTransformer(ot);
La sérialisation d'objets est généralement l'opération la plus coûteuse en termes de performances, de même qu'eXtreme Scale, qui utilise le mécanisme de sérialisation par défaut si un plug-in ObjectTransformer n'est pas fourni par l'application. Soit l'application fournit des implémentations des objets sérialisables readObject et writeObject, soit les objets implémentent l'interface externalisable, ce qui est environ dix fois plus rapide. Si les objets dans la mappe ne peuvent pas être vérifiés, une application peut associer une interface ObjectTransformer avec ObjectMap. Les méthodes de sérialisation et d'inflation sont proposées pour permettre à l'application de fournir un code personnalisé permettant d'optimiser ces opérations, compte tenu de leur impact important sur les performances du système. La méthode de sérialisation permet de sérialiser l'objet sur le flux fourni. La méthode d'inflation fournit le flux d'entrée et attend que l'application crée l'objet, augmente la taille de ce dernier en utilisant les données du flux et le renvoie. Les implémentations des méthodes de sérialisation et d'inflation doivent être symétriques.
Les plug-in DataSerializer remplacent les plug-in ObjectTransformer qui sont obsolètes. Pour sérialiser vos données de la façon la plus efficace, utilisez les plug-in DataSerializer pour améliorer les performances dans la plupart des cas. Par exemple, si vous souhaitez utiliser des fonctions, telles que la requête et l'indexation, vous pouvez immédiatement bénéficier de l'amélioration des performances que procurent les plug-in DataSerializer sans modifier la configuration ou effectuer des modifications à l'aide d'un programme dans le code de l'application.