One or more non-transitory computer-readable media storing one or more sequences of instructions which, when executed by one or more computing devices, cause:
- receiving a first input defining organization of one or more first universal data elements;
- generating a first universal schema that defines how one or more first universal data elements are organized and includes a first specialized plug-in reference to a first specialized plug-in and a first specialized data store reference to a first specialized data store, wherein the first specialized plug-in defines how the one or more first universal data elements are organized in the first specialized data store;
- receiving a second input defining how one or more second universal data elements are organized;
- generating a second universal schema that defines how the one or more second universal data elements are organized and includes a second specialized plug-in reference to a second specialized plug-in and a second specialized data store reference to a second specialized data store, wherein the second specialized plug-in defines how the one or more second universal data elements are organized in the second specialized data store;
- receiving, from a first computer, a first request directed to data in the first specialized data store and the second specialized data store, wherein the first request comprises one or more first parameters based on the first universal schema and one or more second parameters based on the second universal schema;
- determining to use the first specialized plug-in based on the first specialized plug-in reference to the first specialized plug-in in the first universal schema;
- determining the use the second specialized plug-in based on the second specialized plug-in reference to the second specialized plug-in in the second universal schema;
- transforming the first request using the first specialized plug-in associated with the first universal schema to produce a first specialized query based on the one or more first parameters and the first universal schema;
- transforming the first request using the second specialized plug-in associated with the second universal schema to produce a second specialized query based on the one or more second parameters and the second universal schema;
- sending the first specialized query to the first specialized data store to execute the first specialized query in response to determining that the first universal schema includes the first specialized data store reference to the first specialized data store;
- sending the second specialized query to the second specialized data store to execute the second specialized query in response to determining that the second universal schema includes the second specialized data store reference to the first specialized data store;
- receiving a first specialized result set from the first specialized data store;
- receiving a second specialized result set for the second specialized data store;
- sending, to the first computer, a result set based on the first specialized result set and the second specialized result set.