Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Thin clients need a standardized way to serialize data for Table and Key-Value APIs. In 2.x, we used the same Ignite binary format that was used for server communication and data storage. However, in 3.x there are different formats for data storage and transmission (TODO: links), and those formats are not meant to be used by thin clients.

Description

Requirements

The goal is to find an existing serialization format that satisfies the following requirements:

  • Binary (as opposed to text, like JSON, for performance reasons)
  • Supports nested object graphs
  • Supports primitives, not only objects (for example, integer or Guid value can be serialized independently)
  • Schemaless: any object of any type can be written without prior set up
  • Can work without classes ("binary mode" in terms of 2.x): servers should be able to inspect the structure in serialized form
  • Extensible (can add custom types)
  • Well-supported implementations in all languages of interest (Java, C#, C++, Python, JavaScript, PHP)
  • Fast and compact

Comparison

NameComments
MessagePack
Protobuf

Avro


Thrift

Risks and Assumptions

// Describe project risks, such as API or binary compatibility issues, major protocol changes, etc.TODO: ?

Discussion Links

// Links to discussions on the devlist, if applicable.TODO

Reference Links

// Links to various reference documents, if applicable.TODO

Tickets

Jira
serverASF JIRA
columnskey,summary,type,created,updated,due,assignee,reporter,priority,status,resolution
maximumIssues20
jqlQuerylabels=iep-75
serverId5aa69414-a9e9-3523-82ec-879b028fb15b