DataSerializer プラグインは、WebSphere® eXtreme Scale に、シリアライゼーション中に直接使用できるのはどの属性で、直接使用できないのはどの属性か、シリアライズされるデータのパス、メモリーに保管されるデータのタイプを指示するメタデータを公開します。バイト配列と効率的に対話できるように、オブジェクト・シリアライゼーションおよびインフレーションのパフォーマンスを最適化できます。
ObjectTransformer インターフェースは、DataSerializer プラグインで置換されました。これを使用して、既存の製品 API がデータと効率的に対話できるように WebSphere eXtreme
Scale 内の任意のデータを効率的に格納できます。
NO_COPY モードが使用されている場合を除いて、値のコピーは常に行われます。eXtreme Scale 内で採用されているデフォルトのコピー・メカニズムはシリアライゼーションであり、これはコストのかかる操作として知られています。 ObjectTransformer インターフェースはこのような状況で使用します。ObjectTransformer インターフェースは、アプリケーションへのコールバックを使用して、通常の操作と、オブジェクト・シリアライズやオブジェクトに対するディープ・コピーなどのコストのかかる操作のカスタム実装を提供します。ただし、ほとんどの場合、パフォーマンスを向上させるために、DataSerializer プラグインを使用してオブジェクトをシリアライズできます。DataSerializer プラグインを利用するには、COPY_TO_BYTES または COPY_TO_BYTES_RAW のいずれかのコピー・モードを使用する必要があります。詳しくは、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);
オブジェクト・シリアライゼーションは、eXtreme Scale を使用した場合に通常、最も重要なパフォーマンスの考慮事項です。この eXtreme Scale は、アプリケーションで ObjectTransformer プラグインが提供されない場合に、デフォルトのシリアライズ化メカニズムを使用します。 アプリケーションは Serializable readObject と writeObject の実装を供給するか、または、Externalizable インターフェースを実装するオブジェクトを持つことができますが、後者の方が 10 倍高速です。 マップ内のオブジェクトを変更できない場合、アプリケーションは ObjectTransformer インターフェースを ObjectMap に関連付けることができます。serialize メソッドおよび inflate メソッドが提供されることにより、アプリケーションは、システムのパフォーマンスに大きく影響するこれらの操作を最適化するためのカスタム・コードを提供できます。serialize メソッドは、与えられたストリームにオブジェクトをシリアライズします。 inflate メソッドは入力ストリームを提供します。そしてアプリケーションがオブジェクトを作成し、ストリーム内のデータを使用してオブジェクトをインフレートし、最後にオブジェクトを戻すものと想定します。 serialize メソッドと inflate メソッドの実装は、相互にミラーリングする必要があります。
DataSerializer プラグインは、ObjectTransformer で置き換えられましたが、これは推奨されません。データを最も効率的な方法でシリアライズするには、DataSerializer プラグインを使用すると、ほとんどの場合でパフォーマンスが向上します。例えば、照会および索引付けなどの機能を使用しようとしている場合、DataSerializer プラグインはアプリケーション・コードに構成またはプログラムの変更を加えることなく、パフォーマンスを向上させるため、そのメリットをすぐに利用できます。