[std.database]

Jonathan M Davis jmdavisProg at gmx.com
Fri Dec 2 17:14:54 PST 2011


On Friday, December 02, 2011 16:02:59 Hans Uhlig wrote:
> On 10/9/2011 2:50 AM, Jacob Carlborg wrote:
> > On 2011-10-08 19:00, Andrei Alexandrescu wrote:
> >> 1. If we build a D wrapper for ODBC, then we allow people to write
> >> code
> >> for any database that has an ODBC driver. This, assuming we commit to
> >> ODBC as D's standard database interface, would complete the project.
> >> 
> >> 2. If we want to go the route of "one std.database API with drivers
> >> for
> >> each DBMS" and consider ODBC one of several DBMSs, then we need to
> >> define our own driver architecture, write a few drivers ourselves
> >> (including probably ODBC), and hope that people will add more drivers.
> >> That's a larger project but it unties us from ODBC.
> >> 
> >> 3. If we want to go the route of "similar but not identical
> >> specialized
> >> APIs per database system" and consider ODBC again only one of the
> >> database systems, then we need to define one specialized API per DBMS
> >> and force users to essentially choose upfront what DBMS they'll use,
> >> and
> >> code for it. It's an even larger project and I don't see obvious
> >> advantages for it than less of a need for upfront design.
> >> 
> >> 
> >> Andrei
> > 
> > I would say that we declare a high level interface for database drivers.
> > std.database can use this interface to connect to all databases there
> > are drivers for.
> > 
> > We then provide driver implementations for this interface for the
> > databases we choose to support. It should also be possible for a user to
> > create his/her own driver implementation for a database we haven't yet
> > implemented or choose not to implement.
> > 
> > Driver implementations could be:
> > 
> > * MySQL/MariaDB
> > * PostgreSQL
> > * SQLite
> > * ODBC
> > * Oracle
> > * SQL Server
> > 
> > The smart thing would probably be to implement ODBC as the first
> > database driver since it would allow most of the common databases to be
> > used.
> > 
> > But I don't want ODBC to be the only driver. I have some bad experience
> > with ODBC from work. It can't handle multiple result sets and it's not
> > very good at handle invalid Unicode characters. This might not be true
> > for ODBC in general but it's a problem we have with the implementation
> > we currently use. Also, ODBC adds an extra layer between the application
> > and the database.
> 
> One thing I notice is everyone seems to only be Targeting Relational
> Databases. Any plans to support Flat, Object, Key Value, Hierarchical,
> or Network Model systems? It would be nice to have at least
> specification support for systems like membase(memcache), hbase,
> vertica, csv files, and similar systems.

Well, I wouldn't expect them to use the same API, but it's stuff like that why 
it's been suggested suggested that we make it std.sql instead of std.database.

- Jonathan M Davis


More information about the Digitalmars-d mailing list