Object Oriented Data AbstractionEvery Relational Database Management System (RDBMS) vendor has a different library for connecting to their RDBMS. Microsoft had the problem licked early on by creating a C abstraction called Open Database Connectivity (ODBC). Great! But then C++ and Microsoft Foundation Classes (MFC) came along, Microsoft was telling customers that "DAO is the way to go." DAO was an object library over the JET engine for Access. They later recanted and said developers should use the ODBC data abstraction under MFC . Then when COM and DCOM fell out of favor and the Active Template Library (ATL) was pushed, developers where told to use ADO. Now with the .Net CLR, were told to use yet another library; ADO.Net. Ironically, Many of the RDMS Vendors now support native API's that mostly follow the initial ODBC standard.
Microsoft will continue to push SQL Server, Oracle will push Oracle. From the Unix side, there should be a robust Data Abstraction that allows us to use any RDBMS without losing any native capabilities. You should be able to do transactioning. You should be able to do a heterogenenous joins (I'm working on that one for a future release!) You should be able to talk to different databases with the same data objects. The data objects should support inheritance to facilitate tiered architectures. That's what my Data Abstraction Library does. The links below include the documentation and a 'tarball' of the source code.
The CodeThe data abstraction library works natively for mySQL, postgreSQL and uses ODBC for everything else.
The archive is here.
The documentation starts here.
(Now using doxygen to create the documentation.)