- CURRENT IMPLEMENTATIONS OF MULDIS D
- PROSPECTIVE IMPLEMENTATIONS OF MULDIS D
- FURTHER DOCUMENTATION
- INFORMATION SOURCES
- SOME FULLY TTM/D RELATED DBMS PROJECTS
- SOME PARTIALLY TTM/D RELATED DBMS PROJECTS
- SOME SQL-BASED DBMS PROJECTS
- SOME OTHER DBMS PROJECTS
- LICENSE AND COPYRIGHT
- TRADEMARK POLICY
Muldis::D::SeeAlso - External resources that you really ought to look at
This document is Muldis::D::SeeAlso version 0.200.1.
This document is a central location within the Muldis::D distribution where any important recommendations of or links to external resources go. This includes both resources that were helpful in making Muldis D, as well as resources that are or could be related to Muldis D.
These externally distributed projects are full or partial implementations of the Muldis D language.
- Muldis D Reference Engine for Perl 5 - Muldis::D::RefEng
This is the first full implementation of Muldis D that is intended for production use, written in Perl 5 by Muldis Data Systems, Inc., and licensed under the GNU LGPL version 3 or later. It is a full-fledged language implementation intended to be used in the same manner as "perl" itself, where a "muldisdre" binary exists that is used to compile or run Muldis D Plain Text source code ("foo.mdpt" files). Alternately, its bulk is a Perl 5 module that lets Muldis D be used directly by Perl 5 programs as a sub-language in the same manner as the Perl DBI module; moreover, users would typically specify Muldis D code in a Hosted Data format consisting of native Perl 5 data structures.
- Set::Relation for Perl 5 - Set::Relation
Set::Relation provides a simple Perl-native facility for an application to organize and process information using the relational model of data, without having to employ a separate DBMS, and without having to employ a whole separate language (such as Muldis::D::RefEng does). Rather, it is integrated a lot more into the Perl way of doing things, and you use it much like a Perl array or hash, or like some other third-party Set:: modules available for Perl. This is a standalone Perl 5 object class that represents a Muldis D relation value, and its methods implement all the Muldis D relational operators. It is intended for production use, is written by Muldis Data Systems, Inc., and is licensed under the GNU LGPL version 3 or later.
- Set::Relation for Perl 6
This is the Perl 6 version of the same-named Perl 5 module. This version as it currently exists is actually a lot older than the Perl 5 one, and the Perl 5 one is a rewrite of it. In the near future, the current Perl 5 module may be ported to Perl 6 again to replace it, unless there's no point in the face of a more useful Muldis::D::RefEng port.
These externally distributed projects are full or partial implementations of the Muldis D language.
- Muldis D Reference Engine for Not Quite Perl
The Muldis D Reference Engine would also be ported to Not Quite Perl (NQP), the same language that Rakudo Perl 6 is written in, and this would be the most effective way to run Muldis D Plain Text on all the backends/VMs that Not Quite Perl supports, including Parrot, the JVM, and MoarVM. As NQP is specifically designed for writing other languages in, this would let Muldis D operate closer to the metal than an implementation over Perl or another typical high-level language would, while at the same time still saving a lot of the work that would be involved in writing it in C. In any event, as the Muldis D Reference Engine is largely bootstrapped, most of it being written in Muldis D itself, each port involves relatively little manual translation to just get it working.
- Muldis D Reference Engine for Other Languages
The Muldis D Reference Engine would also be ported to a variety of other general purpose languages, giving them the same benefits that Perl 5 programs have, and making Muldis D more universal.
Please see the separately distributed Muldis::D::Manual distribution for Pod files with a potentially large collection of examples, tutorials, FAQs, and so on that help people learn how to employ Muldis D and its implementations for the things they need to do. In particular, there should be a lot of help given for people migrating from other systems that use different paradigms than Muldis D does, for example SQL-using systems.
While making the Muldis D language, the following resources were found to be particularly useful:
This is the Hugh Darwen's and Chris Date (C.J. Date)'s home on the web for "The Third Manifesto" (TTM), their formal proposal for a solid foundation for data and database management systems (DBMSs); like Edgar Codd (E.F. Codd)'s original papers, TTM can be seen as an abstract blueprint for the design of a DBMS and the language interface to such a DBMS. It consists in essence of a rigorous set of principles, stated in the form of a series of prescriptions and proscriptions, that the authors require adherence to on the part of a hypothetical database programming language that they call D.
The proposal would avoid 'Object-Relational Impedance Mismatch' between object-oriented programming languages and RDBMSs by fully supporting all the capabilities of the relational model. The main objective of The Third Manifesto, besides being theoretically sound and avoiding arbitrary restrictions and pragmatic debasement of the relational model, is to make a simple, restricted and precise definition of the role of object orientation in database management systems emphasizing the few valid ideas from object modeling that are orthogonal to relational modeling.
Muldis D has officially incorporated this blueprint into its own design, and implements its principles without compromise, and so it is a concrete language that qualifies as a D. The TTM web site contains various useful documents and links on the subject, some being specified further below.
- Databases, Types, and The Relational Model: The Third Manifesto
Chris Date (C.J. Date), Hugh Darwen - "Databases, Types, and The Relational Model: The Third Manifesto, 3rd edition, Addison-Wesley, 2006 (ISBN: 0-321-39942-0)"; see http://www.aw-bc.com/catalog/academic/product/0,1144,0321399420,00.html.
This is the thicker, college level textbook about The Third Manifesto, and it is the most central of the authors' publications, able to stand alone and present nearly everything important. It includes an informal overview of both the relational model and a theory of types, a reference section with the 15-page Manifesto proper and a grammar for a teaching language based on its principles called Tutorial D, a larger section which explains and rationalizes the parts of the Manifesto, and sections that do likewise for type inheritance what the earlier sections do with the Manifesto proper.
- Database Explorations: Essays on The Third Manifesto and Related Topics
Chris Date (C.J. Date), Hugh Darwen - "Database Explorations: Essays on The Third Manifesto and Related Topics, 1st edition, Trafford, 2010 July (ISBN: 9781426937231)"; see http://bookstore.trafford.com/Products/SKU-000177853/Database-Explorations.aspx.
This book is a followup to the prior-mentioned 2006 one and contains both an updated version of the Manifesto itself and also a collection of both new and updated writings by the authors that are related.
Of particular interest for Muldis D, Database Explorations cites by name the DBMS prototype Muldis Rosetta, and its user language Muldis D, and their author Darren Duncan; chapter 26, "An Approach Using Relation Valued Attributes", is all about discussing Muldis D's canonical means to represent missing information, which is with empty RVAs. This is the very first time that Muldis D or its author or related projects have ever been recognized in an actual printed-on-paper book.
Note that the web site for The Third Manifesto, mentioned above, has reproduced several chapters and appendices from this book. Chapter 1 (http://www.dcs.warwick.ac.uk/~hugh/TTM/DBE-Chapter01.pdf) is the 15-page Manifesto proper; chapter 19 (http://www.dcs.warwick.ac.uk/~hugh/TTM/DBE-Chapter19.pdf) is the 9-page "Inheritance Model" which extends the former. Chapter 11 (http://www.dcs.warwick.ac.uk/~hugh/TTM/DBE-Chapter11.pdf) gives the complete grammar of "Tutorial D".
- Database in Depth: Relational Theory for Practitioners
Chris Date (C.J. Date) - "Database in Depth: Relational Theory for Practitioners, 1st edition, Oreilly, 2005 (ISBN: 0-596-10012-4)"; see http://www.oreilly.com/catalog/databaseid/.
This is the first printed book that Muldis D's author had read fully, which is related to The Third Manifesto, and it was their main introduction. It explains in an easy to follow matter just what the relational data model really is, a solid and provable logical system, and partially contrasts with SQL's distorted view of it. While being easy to follow, the book is written towards people that are already database professionals, and doesn't go into the basics that we should already know.
Edgar Codd (E.F. Codd) - "A Relational Model of Data for Large Shared Data Banks"
Reprinted from Communications of the ACM, Vol. 13, No. 6, June 1970, pp. 377-387. Copyright © 1970, Association for Computing Machinery, Inc.
This is the second famous 1969/1970 publication that first presented a relational model of data to the world, which is the basis for the modern database industry.
This web page of Whitemarsh Information Systems Corporation, run by one of the people on the SQL standard drafting community, has copies of the official SQL:2008, SQL:2003 and SQL:1999 specification documents, and other related helpful documents about SQL, in PDF format. For example, http://www.wiscorp.com/sql200n.zip (warning, large file) has "documents which will likely be the documents that represent the SQL 2008 Standard".
TODO: Newest is http://www.wiscorp.com/sql20nn.zip for 2011 Jan 3.
Unicode Standard official documentation.
The Wikipedia article on the relational data model, and related topics.
The Wikipedia article on Tuple calculus, a basis of the relational model.
The Wikipedia article on logical connectives, which explains the 16 dyadic boolean logic operations and symbols.
Another explanation of the 16 dyadic boolean logic operations and symbols.
Also, the vendor documentation for various relational and/or SQL databases such as MySQL and SQLite were regularly consulted, and various other sites.
Besides the Muldis::D::RefEng framework, other projects exist which attempt to implement The Third Manifesto fully and without compromise (that lack anti-TTM features), though their current implementations may be incomplete and/or in development. None of these use 'SQL' as their native language.
These software projects are released under a free and open source license, as Muldis::D::RefEng is, so you have the freedom to use the software for any purpose, to examine the project source code, change it, and redistribute it:
- Rel - http://reldb.org
Rel is a relational database server, written by Dave Voorhis (
email@example.com), that implements Date and Darwen's "Tutorial D" language mainly "by the book". It is written in Java (version 1.5) and is operating-system independent. It is licensed under the GNU GPL.
- DuroDBMS - http://duro.sourceforge.net/
DuroDBMS is a relational database library, written by René Hartmann (
firstname.lastname@example.org). It is written in C (with a Tcl interface), is implemented on top of the Berkeley DB database library, and runs on all POSIX/Unix-like and 32-bit Windows operating systems. It is licensed under the GNU GPL.
- Dee - http://www.quicksort.co.uk/
Dee is an implementation of D (built on the relational algebra operators) as an extension to Python, written by Greg Gaughan (
email@example.com). It is written in Python and is operating-system independent. It is licensed under the GNU GPL.
These software projects are released with access to the project source code but lack permissions on use, modification, or redistribution that are essential to qualify as free and open source software; some are available at zero cost:
- FlipDB - http://www.flipdb.com/
FlipDB is a relational database management system written by Paul Mansour (
firstname.lastname@example.org). Pending a full implementation of the relational algebra, FlipDB uses a simple but powerful query technique that simulates relation-valued attributes and obviates the need for outer join (or any explicit join). The author is using Date's and Darwen's work as a guide, and his intention is to not violate any of the principles set forth in TTM, if not to implement all of Tutorial D. It is written in Dyalog APL, in a functional style with no loops or control structures, and runs only on 32-bit Windows operating systems. It is available under a shared source agreement for personal use and study.
These software projects are released without access to the project source code or permission to change them, though some are available at zero cost:
Opus is a command-line relational database development system, written by David Cauz (
email@example.com) and Paul Church, that implements its own "Opus" language (that has the syntactic style of C). It is written in C and only runs on Windows. (Link no longer available.)
These project designs were made for academic purposes and don't include implementations:
- Db ("D flat") - http://web.onetel.com/~hughdarwen/TheThirdManifesto/REAL.pdf
This is a final year project by UMIST student Peter Nicol.
Some DBMS exist which desire to support TTM principles but still justify themselves to provide features that are anti-TTM. They may or may not use a SQL dialect as their command language.
- Genezzo - http://www.genezzo.com/
Genezzo is a micro kernel style enterprise-strength SQL database server, written mainly by Jeffrey Cohen (
firstname.lastname@example.org), currently under construction. It is written in a hybrid of C and Perl 5, and runs on any operating system. It is licensed under the GNU GPL.
- Dataphor - http://www.alphora.com/
Dataphor is a TTM-inspired commercial database application development tool set, owned by Alphora (a division of Softwise, Inc.), that implements its own "D4" language. While TTM conformant in many other respects, Alphora found it necessary to support SQL-style nulls. It is written to the .Net platform and only runs on Windows. It is implemented using a federated server that employs various other database engines for storage.
- Teradata - http://www.teradata.com/
Teradata is a commercial DBMS that, as far as the developers know, is the only SQL-DBMS that supports and/or defaults to set semantics. They also support, but don't encourage the use of, a mode that supports bag semantics. Bindings for many programming languages exist, including for Perl 5.
Many DBMS exist which do not expressly support TTM principles and/or actively embrace anti-TTM features. Many of those use a SQL dialect as their primary or only interface; a relative few are listed here.
- SQLite - http://www.sqlite.org/
SQLite is a small library that implements a fully transactional file-based SQL database engine, written mainly by D. Richard Hipp (Hwaci - Applied Software Research). It is written in C (with creator-bundled Tcl bindings) and runs on any operating system, being particularly suited for embedded devices. It is committed to the public domain and can be used in any other license of program. Bindings for many programming languages exist, including for Perl 5.
- PostgreSQL - http://www.postgresql.org/
PostgreSQL is a powerful SQL database server, owned by the PostgreSQL Global Development Group. It is written in C and runs on any operating system. It is licensed under a BSD-like license, specifically the license of the University of California. Bindings for many programming languages exist, including for Perl 5.
- MySQL - http://www.mysql.com/
MySQL is a multi-engine SQL database server, owned by MySQL AB. It is written in C and runs on any operating system. It is dual-licensed under the GNU GPL (at no cost) and under a proprietary license (for a fee). Bindings for many programming languages exist, including for Perl 5.
- Firebird - http://www.firebirdsql.org/
Firebird is a mature SQL database server, forked from the open sources of InterBase by Inprise/Borland; portions are owned by Inprise/Borland and members of the Firbird Foundation. It is written in C++ (newer version) and runs on any operating system. Portions are licensed under various Mozilla-Public-like licenses, specifically the Interbase Public License and the Initial Developer's Public License. Bindings for many programming languages exist, including for Perl 5.
- Oracle - http://www.oracle.com/database/
- Sybase - http://www.sybase.com/
- SQL Server - http://www.microsoft.com/sql/
- Informix - http://www.ibm.com/software/data/informix/
- DB2 - http://www.ibm.com/software/data/db2/
- OpenBase - http://www.openbase.com/
- FrontBase - http://www.frontbase.com/
Many DBMS exist that are neither TTM/D-based nor primarily SQL based; a relative few are listed here.
- Berkeley DB - http://www.sleepycat.com/
Darren Duncan (
This file is part of the formal specification of the Muldis D language.
Muldis D is Copyright © 2002-2015, Muldis Data Systems, Inc.
See the LICENSE AND COPYRIGHT of Muldis::D for details.
The TRADEMARK POLICY in Muldis::D applies to this file too.
The ACKNOWLEDGEMENTS in Muldis::D apply to this file too.