# 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/MariaDB driver at runtime to talk to a MySQL/MariaDB 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/MariaDB 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.