Why RDBMS?

A Relational Database Management System (RDBMS) can provide several important benefits to Meta:

  • Quality Assurance

    Simply using an RDBMS provides a certain amount of quality assurance:

    • No two rows of a table can be identical.

    • Each column has a defined data type.

    • Logging and other functions are automated.

    Using RDBMS schemas, however, we can go further. Specifically, we can define a data model for Meta:

    • uniqueness - the data in a set of columns can be required to be unique (e.g., for use as a "key")

    • existence - fields may be required to contain data

    • relationships - relationships can be enforced (e.g., "foreign keys" must be valid)

    These checks overlap the ones that might be performed by an XML validator. An RDBMS can thus be configured to emit valid XML.

  • Query Language

    By using an industry-standard query language (i.e., SQL), we can take advantage of well-developed technology, a large body of literature, and a large community of practitioners.

    As shown in Query Example, SQL allows information from various parts of Meta to be investigated in a clear (if somewhat verbose) manner. It can also aid Meta's selection and distribution operations.

    Note: For administrative reasons (e.g., avoiding the generation of Cartesian Products), arbitrary externally-generated queries are unlikely to be run directly on Meta's RDBMS. Rather, some mechanism will be employed that allows predefined queries to be run in a parameterized fashion.

  • Transactions

    There is a real possibility that Meta will move from a "batch" approach to a "continuous" approach, as it gets more mature. Using an RDBMS provides support for transactions (atomic events that modify more than one table) and other useful facilities.

Which RDBMS?

An RDBMS is not a simple utility; in fact, it can exceed the complexity of an operating system kernel. Consequently, the number of full-featured Open Source RDBMSs is very small. MySQL and msql , for instance, have no support for transactions. PostgreSQL (http://www.postgresql.org) has recently emerged, however, as a system that can support both object and relational capabilities. According to PostgreSQL, Inc:

PostgreSQL is a sophisticated Object-Relational DBMS, supporting almost all SQL constructs, including subselects, transactions, and user-defined types and functions. It is the most advanced open-source database available anywhere.

-- Main.RichMorin - 16 Jun 2003
Topic revision: r4 - 08 Jun 2003, WikiGuest
This site is powered by Foswiki Copyright © by the contributing authors. All material on this wiki is the property of the contributing authors.
Foswiki version v2.1.6, Release Foswiki-2.1.6, Plugin API version 2.4
Ideas, requests, problems regarding CFCL Wiki? Send us email