On Wed, 06 Apr 2011 05:38:02 +0900, Christian Manning <cmanning...@gmail.com> wrote:

Hello all,

This is the second draft and a lot of changes have been made. Hopefully it's a better overall proposal and I look forward to anybody's feedback :)
---------------------------------

Synopsis
--------
An API for databases is a common component of many languages' standard library, though Phobos currently lacks this. This project will remedy this by providing such an API and also begin to utilise it with interfaces for some Database Management Systems (DBMS). I believe this will benefit the D community greatly and will help bring attention and developers to the language.

Details
-------
Piotr Szturmaj has began working on DDB [1] which has a PostgreSQL clietn written in D as well as some database neutral features such as the DBRow type for storing rows from a database. Piotr and I have agreed to collaborate such that DDB will continue with Piotr at the helm, and I will begin implementing other DBMS clients based around his work. Once there is another implementation, work will then begin on extracting a common interface which will form the API.
For example:

module database;

interface DBConnection {
     //method definitions for connecting to databases go here.
}

Then in an implementation of MySQL:

module mysql;

import database;

class Connection : DBConnection {
     //implement defined methods tailoring to MySQL.
}

Exactly what will go in to these interfaces will depend on the differences between the DBMSs, but they all share many things. The API should also be developed in conjunction with the D community to minimise any fallout of decisions made.

The DBMSs I plan to implement are MySQL and SQLite. Unlike PostgreSQL, MySQL doesn't seem to have a long-term and stable client-server protocol. As a result of this I will be wrapping around the MySQL C API (v5.1) to bring it to D. SQLite will also undergo the same process. Because of this, these clients are not likely to get into Phobos and so, if the API does then these will be an external package.

If this project is completely successful, there will be a database API and at least three DBMS clients ready for use in D applications. The minimum amount of functionality for this to be considered successful would be an API that is mostly utilised by the PostgreSql and MySQL clients. In this scenario there will still be two usable clients, however, perhaps the API is not totally complete and neither is the SQLite client.
[snip]
References
----------
[1] https://github.com/pszturmaj/ddb http://pszturmaj.github.com/ddb/db.html


Hmm.. In what way is your new module different from DDBI?
What's the new features?


Masahiro

Reply via email to