Chapter 30. Datatype and Attribute Serializer Configuration

Titan supports a number of classes for attribute values on properties. Titan efficiently serializes primitives, primitive arrays, Date, ArrayList and HashMap. By default, Titan allows arbitrary objects as attribute values on properties, but those use default serializer which have significant overhead and may not be as efficient.

Table 30.1. Serialization Configuration Options

OptionDescriptionValueDefaultModifiable

attributes.allow-all

If enabled, arbitrary objects can be used as attributes on properties otherwise only pre-configured and configured attributes are allowed

true or false

true

No


To configure a custom attribute class with a custom serializer, follow these steps:

  1. Implement a custom AttributeSerializer for the custom attribute class
  2. Add the following configuration options where [X] is the custom attribute id that must be larger than all attribute ids for already configured custom attributes:

    1. attributes.custom.attribute[X].attribute-class = [Full attribute class name]
    2. attributes.custom.attribute[X].serializer-class = [Full serializer class name]

For example, suppose we want to register a special integer attribute class called SpecialInt and have implemented a custom serializer SpecialIntSerializer that implements AttributeSerializer. We already have 9 custom attributes configured in the configuration file, so we would add the following lines

attributes.custom.attribute10.attribute-class = com.example.SpecialInt
attributes.custom.attribute10.serializer-class = com.example.SpecialIntSerializer

30.1. Custom Object Serialization

Titan supports arbitrary objects as property attributes and uses Kryo’s default serializers to serialize such objects to disk. For this default serializer to work for a custom class, the following two conditions must be fulfilled:

  • The class must have a no-argument constructor
  • The class must implement the equals(Object) method

The second requirement is Titan specific because Titan will test both serialization and deserialization of a custom class before persisting data to disk.