Jaql is a loosely typed functional language,
with lazy evaluation. It's part of BigInsights,
IBM's Hadoop based Big Data platform.
The initial inspiration for Jaql was a JSON
Query Language that provided query processing
for semi-structured data, particularly nested
data represented using the Jaql Data Model
or JDM
The JDM is a superset of JSON, a standard
data model, that is similar to XML but much
easier to work with.
Jaql provides a complete solution environment
and integration point for all the data storage,
functions and capabilities of BigInsights;
including flexible access to data and analytics.
Jaql is the functional language that glues
it all together.
It also provides ways to reach out to external
data and services such as relational databases,
indexing services, text analytics, machine
learning and so on.
Jaql provides an elegant programming model
for developing complex and reusable queries
and transformations against JSON data structures;
even very deeply nested data structures.
As with SQL, Jaql is a declarative query language
so you focus on what you want to achieve,
not how it's done.
Under the hood, Jaql automatically exploits
the massive parallelism of MapReduce. You
don't have to worry about the complexities
of MapReduce programming.
Jaql is an extensible language. It provides
native functions and modules, that allow you
to build up packages of re-usable logic that
can be shared throughout your environment.
So, when would you choose Jaql instead of
another language?
1. Jaql is a good choice when your data is
deeply nested, representing complex relationships.
Jaql can work with arbitrarily nested data
and can even handle data that varies in structure
and content from record to record.
2. Jaql is a good choice when you need to
combine programming models because it offers
both the core Jaql syntax and you can embed
SQL within your Jaql – that's like combining
Hive and Pig together into one language
3. Jaql is a good choice when you need a modular
language that lets you write native functions.
You can parameterize and encapsulate any functionality
of the language. and then package those functions
into reusable modules to be shared across
all of your applications.
4. Jaql is also a good choice when you need
a full programming language with both flow-control
and native functions and modules. You can
develop full programs from the ground up using
JAQL without requiring the use of another
programming language to orchestrate your logic,
which is particularly important for data flows.