Full-featured truly relational DBMS in Perl
Version: 0.4.0Muldis::DB is a full-featured truly relational DBMS in Perl.
License: Perl Artistic License
Operating System: Linux
The Muldis DB DBMS framework is a powerful but elegant system, which makes it easy to create and use relational databases in a very reliable, portable, and efficient way. This "DB" file provides a 10,000 mile view of the Muldis DB framework as a whole, and the detail documentation for each component is included with that component. The distribution containing this "DB" file is the Muldis DB core distribution.
Loosely speaking, the Muldis DB framework at large is like the Perl DBI framework at large, so if you know how to use the Perl DBI to work with databases, it should be easy enough to apply that knowledge to using Muldis DB to work with databases. Like the Perl DBI, Muldis DB has separately distributable core, implementation, and extension distributions. Like an implementation ("driver") of the Perl DBI, an implementation ("engine") of Muldis DB works according to the command design pattern; its API is very minimalistic and mainly serves to process arbitrary "commands" through a single routine or three. Unlike the Perl DBI, which takes commands in some dialect of SQL, which changes based on the implementation in use, Muldis DB takes commands in the Muldis D language, which has just one dialect shared by all implementations. See the separate all-documentation distribution Language::MuldisD for the formal definition of the Muldis D language which Muldis DB is based on.
The minimal core of the Muldis DB framework, the one component that probably every program would use, is the Muldis::DB::Interface file. It defines a small set of roles/classes that comprise a common API (that processes Perl Hosted Abstract Muldis D commands) for Muldis DB implementations to do and which applications invoke, called the Muldis DB Native Interface (or MDBNI). For the most part, Interface just defines shims and it can only be used when they are subclassed by an implementation. In the Perl DBI framework analogy, Interface corresponds to the DBI module itself. An implementation is called a Muldis DB Engine or Engine.
Thanks largely to the use of Muldis D as its command language, MDBNI is rigorously defined, such that there should be no ambiguity when trying to invoke or implement it, and so an application written to it should behave identically no matter which conforming Engine is in use.
The maximal core of the Muldis DB framework, everything else of substance in the same distribution as the minimal core (and this "DB" file), comprises 2 additional components. The first is Muldis::DB::Engine::Example, a self-contained and pure-Perl reference implementation of Muldis DB. The second is Muldis::DB::Validator, a common comprehensive test suite for Muldis DB implementations. Together, these components make it possible for the Muldis DB core distribution to be completely testable on its own. It is therefore also feasible for an application to use Muldis DB in isolation from further framework components, though doing so isn't recommended for production use since Example is kept simple on purpose and doesn't scale well.
Muldis DB, by way of using the Muldis D language, incorporates a complete and uncompromising implementation of "The Third Manifesto" (TTM), a formal proposal by Christopher J. Date and Hugh Darwen for a solid foundation for data and database management systems (DBMSs); like Edgar 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. Muldis D is a high-level programming language which is computationally complete (and industrial strength) and has fully integrated database functionality; it satisfies TTM's definition of a "D" language. The main web site for TTM is http://www.thethirdmanifesto.com/, and its authors have also written several books and papers and taught classes on the subject over the last 35+ years, along with Codd himself (some are listed in the separately distributed Language::MuldisD::SeeAlso documentation file). Note that the Muldis DB documentation will be focusing mainly on how Muldis DB itself works, and will not spend much time in providing rationale; you can read TTM itself and various other external documentation for much of that.