>
> ***************
> Things that are absolutely necessary for semi-structured query languages
> **************
>
> 1.Conditionals, typeswitches
>
> In schema-less data, we never know what we’ll find. We HAVE to be able to
> branch based on what we find in the data while searching.
>
> 2. Functions and recursive functions
>
> While dealing with nested, pre-aggregated data, we need to navigate
> structures on unknown depth, and for this we really need functions
> and recursive functions.
>
> 3. Error management: try/catch
In this list I forgot something really important for any kind of query language
for semi-strcutured data;
4. A battery of implicit type conversions.
Data being of unexpected shape and type, we can never be sure that the data
operations get at runtime is what you expected when you wrote the query.
Defining those is an **ART** (with capitals:-), because one need to make a
compromise between:
- not being too strict, otherwise everything ends up in an error
- not being too lax ("anything goes" kind of thing), because you introduce
errors in the resulting data
- making sure that the implicit type conversion are done such that you can
STILL use indexes (if you index a value as an integer and at runtime it gets
converted and
used as string in an equality… are you still able to use the index !?)
-usability and symmetry ; such implicit conversions happen in a variety of
places (function calls, equality, arithmetics, groupby, sort, etc, etc) and you
have to make sure that
they are kind of symmetrical and obey the “principle of least surprise” and
also allow optimizability, aka expression rewriting
At least 25% of the design of XQuery has spent in the design of this battery of
implicit type conversions.
I think the result is decent. I am not ware of any major mistake, that I wish
we would have done better, or differently. But everything was design by trail,
design, implementation, usage, error,
designe, implementation, etc, etc. That’s why it took an eternity to design
them, and for XQuery to get standardized.
I honestly don’t wish even my worst enemy to start this process from scratch,
and I wish the NoSQL community would have learned from what we’ve done.
Wishful thinking on Saturday morning, best regards
Dana
_______________________________________________
[email protected]
http://x-query.com/mailman/listinfo/talk