Datatype and Attribute Serializer Configuration
JanusGraph supports a number of classes for attribute values on
properties. JanusGraph efficiently serializes primitives, primitive
arrays and Geoshape, UUID, Date, ObjectNode and ArrayNode.
JanusGraph supports serializing arbitrary objects as attribute values,
but these require custom serializers to be defined.
To configure a custom attribute class with a custom serializer, follow these steps:
-
Implement a custom
AttributeSerializerfor the custom attribute class -
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:
-
attributes.custom.attribute[X].attribute-class = [Full attribute class name] -
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
Custom Object Serialization
JanusGraph supports arbitrary objects as property attributes and can serialize such objects to disk. For this default serializer to work for a custom class, the following conditions must be fulfilled:
-
The class must implement AttributeSerializer
-
The class must have a no-argument constructor
-
The class must implement the
equals(Object)method
The last requirement is needed because JanusGraph will test both serialization and deserialization of a custom class before persisting data to disk.