OSCON 2008 Session Proposal
by Darren Duncan, Founder, Muldis Data Systems
submitted for consideration on 2008 February 3
accepted for presenting on 2008 July 23 (Wed), 17:20-18:05, room D137/138
-----------------
Proposal Title:
Muldis D - Portable Databases At Full Power
Description (brief overview for marketing purposes):
How would you like to have a full-featured object-relational DBMS
integrated right into your development environment? One that
understands OOP, implements all of the relational operators, and
greatly shortens development time? That gets you away from the tyranny
of SQL so you can focus on what you really know? Introducing Muldis D,
an industrial strength language with fully integrated ORDBMS.
Topics:
Databases
Session Type:
45 minute conference session
Abstract:
This session introduces Muldis D, an industrial strength programming
language with fully integrated database functionality, and shows how to
use the Muldis Rosetta database access framework for Perl. The session
will focus on a few of the features that I consider the most
interesting and unique, and ways users can solve their common
database-using problems.
Muldis D provides access to the entire relational model of data,
including arbitrarily complex user-defined scalar and collection data
types, stored routines, constraints, updateable views, and updateable
system catalogs. You can select both parent and child records together
in a single query, without redundancy (child records are in collection
values in parent records). You can treat multiple databases as if they
were parts of a single database, making cross-database queries easy.
The language is cleaner and more rigorously defined than SQL, so it
should be easier to write code that is reliable, portable, easy to
understand, and is easier to auto-optimize or auto-parallelize.
Muldis Rosetta is a database access framework in native Perl 5 and Perl
6 versions (for Perl 6 it is also the *first* database tool). It
presents databases to Perl applications as shared libraries of routines
and data that can be used and updated. The normal way for Perl code to
use a database with Muldis Rosetta is to invoke the database's stored
routines (and prepared statements) as if those were Perl routines, with
data being inserted and retrieved via the routine parameters.
Muldis Rosetta is designed for strong inter-DBMS portability, and
provides a deeper abstraction than the Perl DBI, such that a Perl
application will see all DBMSs as having the same query language
(Muldis D by default), rather than them having highly-incompatible
dialects of SQL. But while most database abstractors or ORMs treat
every DBMS as a stupid data store - a strategy that can result in the
user getting fewer features and poorer performance than the original
DBMS provided - Muldis Rosetta differentiates DBMSs according to their
capability, and optimally leverages their built-in features where at
all possible, only emulating missing features in Perl as a last resort.
Unlike other tools, Muldis Rosetta features the ability to translate
SQL stored procedures (and by extension most other SQL features).
Muldis Rosetta also includes a full-featured DBMS natively in Perl, and
user queries are compiled into Perl code rather than SQL for execution;
this allows database-using projects (and Muldis Rosetta itself) to be
fully tested or demonstrated in the absence of a normal DBMS, easing
their development.
Muldis D is intended to qualify as a "D" language as defined by
"Databases, Types, and The Relational Model: The Third Manifesto"
(TTM), a formal proposal for a solid foundation for data and database
management systems, written by Christopher J. Date (who also wrote
"Database in Depth") and Hugh Darwen. Several other "D" languages
exist, including the teaching language "Tutorial D", but Muldis D is
arguably the first one that is actually practical for industrial use.
Audience Level:
Intermediate
Additional Notes:
I credit David Wheeler for writing most of the brief marketing
description in the final version of this proposal.
If actually seeing the topical projects makes a difference to your
proposal selection process, they are at
http://search.cpan.org/dist/Muldis-D/ (language spec) and
http://search.cpan.org/dist/Muldis-Rosetta/ (Perl 5 impl) respectively.
I didn't know whether to put those urls in the Abstract or not, so
they are here instead.
This session is arguably both in the Databases and Perl topics; while I
chose Databases as the single most relevant, feel free to move it over
if you have too many Databases sessions and not enough Perl sessions.
Speaker Biography:
Darren Duncan is a developer of applications and databases, has written
several CPAN modules, and participates in Perl 6 language development.
Darren's life's work is to build consumer-useable ontological database
solutions for accurately organizing and easily sharing the world's
knowledge over the long term, particularly scientific, historical, and
genealogical knowledge. Darren is interested in general information
management and epistemology.
-----------------