Distributed application developers face two fundamental technical challenges related to data access. First, developers rarely have the opportunity to start from scratch. Most applications need to access existing data. This data can be stored in a variety of formats. Some data might be kept in database management systems (DBMSs); other data might be kept in less structured forms. There are many DBMSs on the market, from mainframe databases such as Information Management Systems (IMS) and DB2, to server databases such as Oracle and Microsoft SQL Server, to desktop databases such as Microsoft Access and Paradox. Even within a single company, multiple DBMSs might be in use. Non-DBMS data can be stored in text files, indexed sequential access method (ISAM) files, spreadsheets, e-mail messages, or any other type of application-specific file. Somehow, the distributed application developer must integrate these disparate data sources into a unified view for the application user.
A second challenge is that by their very nature, distributed applications involve accessing remote data sources. The person who wants to use an application to look at some data is, in most cases, using a different machine than the one(s) on which the data is stored. Thus, it's important to have efficient mechanisms for accessing remote data, to minimize network traffic generated by the application. This requirement becomes increasingly important as applications scale to reach thousands or millions of users, many of whom are connected via expensive wide area network (WAN) connections or slow modem connections.
MDAC addresses both these issues. MDAC is a set of run-time components for accessing structured and unstructured data, based on the Microsoft strategy of universal data access (UDA). These components are described in the following table. One of the primary goals of the run-time components is to provide efficient access to remote data.
|ActiveX Data Objects (ADO)||Application-level programming interface to data|
|Remote Data Service (RDS)||Client-side caching engine; formerly known as Advanced Data Connector (ADC)|
|Microsoft OLE DB provider for Open Database Connectivity (ODBC)||Access provider for ODBC databases, via OLE DB|
|ODBC driver manager||The DLL that implements the ODBC API and directs calls to the appropriate ODBC drivers|
|ODBC drivers||Database drivers for SQL Server, Access, and Oracle|