RION - Raw Internet Object Notation
When exchanging data between nodes in a distributed system it is beneficial to encode that data using a fast, compact and versatile data format. RION is such data format.
A fast data format is faster to read and write (deserialize and serialize) for the communicating nodes. RION can even be traversed in its binary form if you need maximum speed.
A compact data format requires less bytes to represent the encoded data. Fewer bytes requires less network bandwidth and can thus be transferred faster across the network. A compact data format is also an advantage when reading and writing it.
A versatile data format is a data format that can be used for as many use cases as possible. This minimizes your need for finding or inventing other data formats.
RION was designed with exactly these goals in mind. In fact, we had several other design goals for RION. These are described in the text RION Design Goals.
ION Renamed to RION
RION was originally launched using the name ION - but about a year later Amazon released a similar data format also called ION. After a while we decided to rename our ION format to RION, to distinguish between the two.
Although Amazon's ION format is similar in encoding to our RION format, we do not think Amazon copied our ION format and tried to "steal" the name. Here is why: When we published our ION format the first time, someone told us that Amazon had an internal data format with the name ION. However, since Amazon had not released it, we continued with the name ION. However, about a year later Amazon released their ION format - so after some time we decided to change name to RION.
RION in IAP
IAP is a message oriented network protocol designed with about the same requirements as RION. It has to be a fast, compact and versatile network protocol that should be able to support a wide variety of use cases. We designed RION especially as a data format for IAP. Thus, all IAP messages are encoded using RION. In fact, RION is short for Raw Internet Object Notation.
To read more about IAP go to the IAP Specification.
RION Outside IAP
Being a general purpose data format, RION can be used independently of IAP. You can use RION as a data format in data files, log files, as data format for binary messages transmitted over HTTP etc.
RION can contain binary data so you can also embed other formats inside RION when necessary. For instance, an MP3 file, ZIP file, JPG file etc.
RION is a Binary Format
RION uses a binary encoding to make it faster to read and write, more compact, and to make it possible to embed binary data. RION's encoding is described in the text RION Encoding.
RION vs. Other Data Formats
RION is a data format which is similar to a binary version of JSON. In that respect RION is similar to MessagePack, CBOR and Amazon's RION but with a few minor, beneficial differences.
We have a more detailed description of how RION compares to other data formats in the text RION vs. Other Formats.
Since RION is similar in encoding to MessagePack, CBOR and Amazon's ION, we expect the read and write speeds to be comparable to that of these formats. We have made some comparisons already with Jackson's MessagePack and CBOR implementations and they confirm this expectation. You can see the results of this comparison in the text RION Performance Benchmarks.
However, RION is still different in a few areas than these data formats, and for the use cases that utilize these differences, the benefits can be big.