Wednesday, October 26, 2022

data format: Amazon Ion

 Amazon Ion

Amazon Ion is a richly-typedself-describing, hierarchical data serialization format offering interchangeable binary and text representations. The text format (a superset of JSON) is easy to read and author, supporting rapid prototyping. The binary representation is efficient to store, transmit, and skip-scan parse. The rich type system provides unambiguous semantics for long-term preservation of data which can survive multiple generations of software evolution.

Ion was built to address rapid development, decoupling, and efficiency challenges faced every day while engineering large-scale, service-oriented architectures. It has been addressing these challenges within Amazon for nearly a decade, and we believe others will benefit as well.

Available Languages: C – C# – Go – Java – JavaScript – Python – Rust
Community Supported: D – PHP
Related Projects: Ion Hash – Ion Schema
Tools: Hive SerDe


Ion (serialization format) - Wikipedia

// comments are allowed in Ion files using the double forward slash 
{
  key: "value",   // key here is a symbol, it can also be a string as in JSON
  nums: 1_000_000, // equivalent to 1000000, use of underscores with numbers is more readable
  'A float value': -31415e-4,  // key is a value that contains spaces 
  "An int value": null.int,
  annotated: age::45,     // age here is the annotation to number 45
  lists : 'hw grades'::[80, 85, 90], // any symbol can be used as an annotation 
  many_annot: I::have::many::annotations::true, // annotations are not nested, but rather, a list of annotations
  sexp: (this (is a [valid] "Ion") last::value 42) // Ion S-expressions, 
  blob_value: {{OiBTIKUgTyAASb8=}},
  clob_value: {{"a b"}}
}

No comments: