Methods, systems, and computer program products for accessing data where
the data store provider is abstracted from both the data manipulation language
used to access the data and the schema that describes the data. A received request
structured in accordance with the data manipulation language is represented in
an intermediate form. From the intermediate representation, a native request for
any of one or more data store providers may be produced. Before being returned
to the requester, a native response from data store provider may be formatted so
that it is structured in accordance with the data manipulation language used for
the request. A given request received by one computer system may cause a procedure
to be generated for accessing the data store provider. When a later request is
received by second computer system, the previously generated stored procedure may
be reused if applicable.