Re: Database INNOVATION - Mailing list pgsql-general

From Darren Duncan
Subject Re: Database INNOVATION
Date
Msg-id 4CBE8CD7.6010605@darrenduncan.net
Whole thread Raw
In response to Re: Database INNOVATION  (Craig Ringer <craig@postnewspapers.com.au>)
List pgsql-general
Craig Ringer wrote:
> On 20/10/10 13:12, Darren Duncan wrote:
>> Never mind JSON.  You can fix the outer joins problem and other issues
>> simply by supporting relation-valued attributes, or in other words, row
>> field values that are rowsets.
>
> You can for trees/forests yes. How would you handle more general graphs
> with cycles or bidirectional relationships, where you still want to be
> able to reconstruct them into a traversible graph client-side?
>
> There are existing graph databases for this, of course, but I've
> frequently wished to be able to use the power of SQL's query language
> and reporting facilities with my data as well as being able to extract
> it as (sub)graphs when needed. Using a graph database would usually cost
> me ACID, full SQL support, and in most cases all those goodies like
> triggers, constraints, etc as well.
>
> I think there's a real use case for using regular relational storage
> with a few SQL extensions to support returning graph-style rather than
> row-set style results. Even the SQL extensions probably aren't necesary;
> I suspect a (limited and somewhat slow) version could be done purely in
> a PL under PostgreSQL, and I've been thinking about trying to prototype one.
>
>> And recursively.  Parent records in
>> outer rowset, child records inside.  And this is all perfectly normal
>> for the relational model, and SQL's differing from this is part of how
>> SQL is crippled and not really the relational model.  I demonstrate how
>> it might be better done with my Muldis D language. -- Darren Duncan
>
> You'd really wow people if you could bang together a working JPA 2.0
> backend for that, or a dialect for an existing provider like Hibernate.
>
> Personally, I'd love to give someting like your Muldis-D query interface
> a go if it could live within PostgreSQL as a contrib module, using the
> regular Pg storage and just providing an alternative query facility.
>
> Right now, it looks like it is a perl-all-the-way system, with no
> interfaces for other languages and its own database storage system. In
> its current form a quick glance at the docs doesn't demonstrate any
> obvious advantage of using it over any of the existing well-established
> graph databases or object-relational database systems.

Muldis D is a work-in-progress.  The system is specified in terms of a
programming language of which multiple implementations could exist, essentially
the same way as SQL is.  I fully intend for it to run on Postgres, using regular
Pg storage (which may gain features along the way), and be useable both in the
manner of a PL and for general DDL/DML/queries/etc.  I agree that it is best for
the initial all-in attempt to be done as a contrib module, and I am happy that
Pg already has so much of the infrastructure in place that is needed.  The
first, Perl-all-the-way, system is just the reference implementation, but the
Pg-contrib version would likely be the first one for serious use.

If you or anyone wants to work on making this a reality, I welcome it.

-- Darren Duncan


pgsql-general by date:

Previous
From: Craig Ringer
Date:
Subject: Re: Database INNOVATION
Next
From: Joe Conway
Date:
Subject: Re: Database INNOVATION