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.