Mike Pizzo has commenced a much needed
4-part article series covering the history of Microsoft's various
Data Access related APIs. Naturally, Part 1 covers: Open
Database Connectivity (ODBC) which is the first of a series of
purpose specific Data Access APIs.
Here is a very important excerpt:
...
And then something happened. Visual Basic became popular
as a scriptable "automation language". ODBC, being a C-style
interface, was not directly consumable from VB. However, some of
you clever folks figured out that Microsoft Access supported
executing queries against ODBC Datasources, and that Access did
support scriptable automation through its Data Access Object (DAO)
API. Voila! Now you could write applications against ODBC sources
using VB.
However, DAO went through Access's internal "Jet"
(Joint Engine Technology) database engine, which defaulted to
building local keysets for each result in order to do advanced
query processing and cursoring against the remote data. This was
fine if you needed that functionality, but significant performance
overhead and additional round trips when you didn't.
Enter the Visual Basic team who, responding to customer
demand for better performance against ODBC sources, came up with
something called Remote Data Objects (RDO). RDO implemented the
same DAO programming patterns directly against ODBC, rather than
going through Jet. RDO was extremely popular among VB developers,
but the fact that we had two different sets of automation objects
for accessing ODBC sources caused confusion.
But apparently not enough confusion, because our solution
was to introduce "ODBCDirect". Despite its name, ODBCDirect was not
a new API; it was just a mode we added to DAO that set defaults in
such a way as to avoid the overhead of building keysets and
such
...
To this very day (unfortunately!) ODBC has been maligned by the
perpetuated misunderstanding of JET's DAO layer that sits atop ODBC
providing advanced query processing (i.e. Virtual DBMS
functionality) alongside a client-side keyset cursor model
implementation.