Data Modeling for objects that are used to interact with the Space has the following features:
- Space Object ID - When a new object is inserted into the Space, it embeds a unique ID (called the UID). The UID can be generated explicitly by the client using a unique value generated by the application business logic. or using a sequencer running within the Space.
- Annotation-based metadata - The XAP API supports class and properties decorations with PONOs. These can be specified via annotations on the Space class source itself. You can define common behavior for all class instances, and specific behavior for class fields.
- XML-based metadata - Class and properties decorations for PONOs can be specified via an external XML file, accompanied by the class byte code files located within the JAR/WAR. You can define common behavior for all class instances, and specific behavior for class fields.
- Property storage type - To reduce the memory footprint of the objects stored in a Space, different storage types can be defined for individual properties of a Space class. Object properties can be assigned a storage type decoration, which determines how it is serialized and stored in the Space.
- Type discovery - When querying the space (read/take/notify), the Space returns the results to the Space proxy in an internal type-neutral format, which the Space proxy automatically converts back to the relevant user objects. You can control this data type discovery.
- Routing in partitioned Spaces - A partitioned Space can perform Space operations against multiple Spaces from a single proxy transparently. The primary goal of the partitioned Space is to provide unlimited In-Memory Space storage size, and group objects into the same partition to speed up performance. The initial intention is to write data into the partitioned Space, and route query operations based on the template data. In order to accomplish that, a routing property can be defined on the entry type.