An evaluation of the expressive power and performance of JSON-to-JSON transformation languages

University essay from KTH/Skolan för elektroteknik och datavetenskap (EECS)

Abstract: JSON-to-JSON transformation languages enable the transformation of a JSON document into another JSON document. As JSON is gradually becoming the most used interchange format on the Internet there is a need for transformation languages that can transform the data stored in JSON in order for the data to be used with other systems. The transformation can transform the document structurally, for example by altering the hierarchical structure of the document. The transformation can also transform the document textually, for example by renaming fields or altering values. None of the existing JSON-to-JSON transformation languages have become a standard (Jellife, 2017). This work evaluates the expressive power of the JSON-to-JSON transformation language Jolt. Jolt have recently been adopted by Apache and support have been introduced in some of their products. If a transformation language have expressive power that are at least equal to Nested Relational Algebra this implies that a transformation language can perform many advanced transformations. In this work  a formal model of Jolt is defined, referred to as Jolt0, in order to compare its expressive powers to Nested Relational Algebra. For that purpose, the operations of another formal model called MQuery which have been proven to have equivalent expressive power to Nested Relational Algebra are translated into Jolt0. It is shown that Jolt does not have expressive powers equivalent to Nested Relational Algebra. We further compared the performance of four JSON-to-JSON transformation languages (Jolt, Handlebars, Liquid, and XSLT 3.0) by constructing tests where the different transformation languages executed equivalent transformations. The transformations were evaluated by measuring runtime and memory usage. The study shows that XSLT 3.0 performed worst in all run time and memory usage tests. When transforming large input data XSLT 3.0 performed significantly worse than the other languages.

  AT THIS PAGE YOU CAN DOWNLOAD THE WHOLE ESSAY. (follow the link to the next page)