7.1. Supported Databases

If you've used the .NET Framework before, you should be familiar with the concept of a Data Provider. The .NET Framework offers several types of this sort of class, each used to access data that's stored in SQL Server, Oracle, and data sources exposed using OLE DB and ODBC. Third-party alternatives are provided as well, so that .NET developers have a few options to choose from.

ActiveRecord is an Object-Relational Mapper and works at a higher level of abstraction than ADO.NET. For a database to be supported by ActiveRecord, two components are required: a driver and an adapter. The driver is typically a Ruby extension written at least partially in C, which exposes an API for storing and retrieving data from a given RDBMS (Relational Database Management System).

The adapter is comprised of Ruby code that's required to inform ActiveRecord about the specifics of the database system at hand. For example, the adapter specifies how to map ActiveRecord data types like string or datetime with their actual SQL representation. ActiveRecord doesn't really know anything about the driver either, so it's the adapter that ultimately calls the driver to execute a certain query.

Due to their nature, drivers are installed by the developers and aren't shipped with ActiveRecord or Rails. This is true for any database system. In Chapter 1, for example, you obtained the SQLite3 driver by installing the sqlite3-ruby gem. When it comes to the adapters though, you're looking at ...

Get Ruby on Rails® for Microsoft Developers now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.