1. A method of processing a data source query, the method comprising: receiving the data source query at a hybrid multi data source running on a computer server; creating a list of data sources, each data source in the list of data sources having a data source type selected from a group consisting of a relational data base, a nosql database, a flat file, an XML file, a representational state transfer (REST) web service, and a Simple Object Access Protocol (SOAP) web service; removing data sources from the list of data sources based on the data source type of each of the data sources in the list of data sources and data source type hints included in the data source query; removing data sources from the list of data sources based on the data source type of each of the data sources in the list of data sources and data source rules identifying preferred data source types based on features of the data source query; forming one or more query plans for processing the data source query, each query plan corresponding to a data source in the list of data sources after the removings; evaluating each of the query plans; selecting a first query plan from the query plans based on results of the evaluating; and performing the first query plan.
8. The method of claim 1 wherein: each of the query plans is associated with a respective query plan tree comprising one or more nodes; and evaluating each of the query plans comprises adding a node cost associated with a type of each of the nodes in the respective query plan tree to a query plan cost for that query plan.