A client programming model with abstraction hides from an underlying
client application or application program interface (API) the details of
where each element of data is located, and which copy of the data is
resident on an available server and associated databases. The model wraps
a database, such as a virtual database, and provides data-dependent and
application-dependent routing, failover, and operational administration.