GemFire PDX Serialization
GemFire’s Portable Data eXchange (PDX) is a cross-language data format that can reduce the cost of distributing and serializing your objects.
GemFire C++ PDX serialization:
Is interoperable with other languages by GemFire – no need to program a Java-side implementation
Reduces deserialization overhead by providing direct field access on servers of serialized data, without full deserialization. Stores data in named fields that you can access individually, to avoid the cost of deserializing the entire data object
For greater control, you can specify individual treatment for domain objects using the
When you create a
PdxSerializable object, GemFire stores the object’s type
information in a central registry. The information is passed between peers, between clients and
servers, and between distributed systems.
When using PDX serialization, clients automatically pass registry information to servers when they store a
PdxSerializable object. Clients can run queries and functions against the data in the servers
without the servers needing to know anything about the stored objects. One client can store data on
the server to be retrieved by another client, with the server never needing to know the object
type. This means you can code your C++ clients to manage data using Java servers without having to
create Java implementations of your C++ domain objects.
The access methods for
PdxSerializable objects allow you to examine specific fields of your
domain object without deserializing the entire object. This can reduce
deserialization costs significantly. Client C++ apps can run queries and execute functions against
the objects in the server caches without deserializing the entire object on the server side. The
query engine automatically recognizes PDX objects and uses only the fields it needs.
Clients can execute Java functions on server data that only access parts of the domain objects by using
Likewise, peers can access just the fields needed from the serialized object, keeping the object stored in the cache in serialized form.
You can use GemFire delta propagation with PDX serialization.
See the following sections for details on implementing PDX serialization: