# Database Abstraction Layers

Rather than using a native database API, most applications are written using a database abstraction layer that loads a database-specific driver at runtime.

For example, a PHP app might be written to use PDO and be configured to load a MySQL driver at runtime to talk to a MySQL database.

SQL Relay currently provides drivers for ADO.NET, Perl DBI, Python DB-API, PHP PDO and ODBC. JDBC is also supported via the JDBC-ODBC bridge.

The same PHP app could be configured to load the SQL Relay driver to talk to MySQL via SQL Relay.

Programming guides with sample code and API references are available for each database abstraction layer:

> Guides: ADO.NET Perl DBO, Python DB-API, PHP PDO, ODBC, JDBC

> References: ADO.NET, Perl DBI, Python DB-API

The native SQL Relay client API is actually a database abstraction layer as well. A program written using the native SQL Relay client API can talk to any database supported by SQL Relay.