Re: Imperative Query Languages

From: Jason Dusek <jason(dot)dusek(at)gmail(dot)com>
To: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
Cc: "pgsql-general(at)postgresql(dot)org" <pgsql-general(at)postgresql(dot)org>
Subject: Re: Imperative Query Languages
Date: 2017-07-05 06:42:13
Message-ID: CAO3NbwNaZFuQGTWKWLqPzLM4DruOGGCjxmYz7Yd8cVUuXP7b6Q@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

On Tue, 4 Jul 2017 at 23:01 Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> wrote:

> I'm pretty sure that that is the model that relational databases (and the
> SQL language in particular) replaced, back in the 70s or so. Look up
> "network" databases (eg CODASYL) and "hierarchical" DBs (eg IMS) for some
> ancient history here. Yeah, you can do it like that, but it's seriously
> painful to develop and maintain. People were more excited about spending
> human effort to save machine cycles forty years ago than they are today.

Network database programming is, indeed, imperative; but as I understand it
there was not much of a planning layer -- the program was the plan. In C#,
one has LINQ; and in Scala and Haskell, monadic comprehensions; and even in
Python one can overload iteration to allow a translation of imperative
syntax to declarative syntax. The goal with these features, is generally to
present a familiar interface to an unfamiliar semantics.

If we imagine network databases have one layer:

Imperative Plan

And SQL databases have two:

Declarative Query -> Imperative Plan

It seems reasonable to say, LINQ, &al. have three:

Imperative Syntax -> Declarative Query -> Imperative Plan

Fortress is rather the same, since it translates imperative to functional
to assembly.

Kind Regards,
Jason

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Chris Travers 2017-07-05 06:47:18 Re: Strange case of database bloat
Previous Message Chris Travers 2017-07-05 06:41:15 Re: Imperative Query Languages