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.