A system for providing access to a sharded database , comprising: an application server or database environment including a computer , the computer including a processor and configured to implement a database driver and a connection pool , wherein the application server or database environment provides access to a database having a plurality of shards by which data is stored and presented, and wherein the database is associated with: the database driver , and the connection pool which creates and maintains a pool of connections for use with the database, wherein the connection pool is configured to use a shard director to create a new connection in response to a connection request including shard key information received from a client application to access the database , wherein the connection pool and database driver operate together to provide access by client applications to data stored at the database, using the connections; wherein a shard topology is updated at the database driver as the new connection is created, wherein the shard topology caches shard key ranges to a location of each shard within the database, for use in processing connection requests; and wherein the database driver is configured to enable the client application to access the database as part of a subsequent connection request including the shard key information, including determining a location of an appropriate shard within the database , using the shard topology, and providing direct access by the client application to the appropriate shard of the database bypassing the shard director . an application server or database environment including a computer , the computer including a processor and configured to implement a database driver and a connection pool , wherein the application server or database environment provides access to a database having a plurality of shards by which data is stored and presented, and wherein the database is associated with: the database driver , and the connection pool which creates and maintains a pool of connections for use with the database, wherein the connection pool is configured to use a shard director to create a new connection in response to a connection request including shard key information received from a client application to access the database , wherein the connection pool and database driver operate together to provide access by client applications to data stored at the database, using the connections; the database driver , and the connection pool which creates and maintains a pool of connections for use with the database, wherein the connection pool is configured to use a shard director to create a new connection in response to a connection request including shard key information received from a client application to access the database , wherein the connection pool and database driver operate together to provide access by client applications to data stored at the database, using the connections; wherein a shard topology is updated at the database driver as the new connection is created, wherein the shard topology caches shard key ranges to a location of each shard within the database, for use in processing connection requests; and wherein the database driver is configured to enable the client application to access the database as part of a subsequent connection request including the shard key information, including determining a location of an appropriate shard within the database , using the shard topology, and providing direct access by the client application to the appropriate shard of the database bypassing the shard director . <EOS>