title: Query Abstraction Layer
text: # Query Abstraction Layer
  
  QAL is an open-source development project that aims to create a collection of libraries for mixing, moving, merging, substituting and transforming data; also in some cases, such as MongoDB, schemas.
  
  ## Description
  
  Sources and destinations include different database backends, file formats like .csv, XML and spreadsheets. Even untidy HTML web pages can be used as both a source and destination.
  
  For SQL/RDBMS backends, it has a database abstraction layer that supports basic connectivity to Postgres, MySQL / MariaDB, IBM Db2, Oracle and MS SQL Server. It uses XML formats (the SQL schema is self-generated) for representation of queries, transformation and merging, making it all processable by scripts.
  
  With regards to SQL, QAL uses a subset of SQL features and data types, which while obviously not complete however is sufficient for most usages. It is however easy to instead use backend-specific SQL when the queries do not have to be backend-agnostic.
  
  It is currently distributed as a Python Library (.egg) and a Debian package file (.deb).
  
  It is related to the Optimal BPM (Business Process Management) project. The Optimal BPM SourceForge project used to be DAL/QAL.
  
  