A method, comprising: storing, by a shard coordinator, a plurality of map entries; wherein each map entry, of the plurality of map entries, maps a distinct sharding key value set to a shard (260A-C) of a plurality of shards (260A-C) of a sharded database; wherein each shard (260A-C) of the plurality of shards (260A-C) comprises an independent database instance; receiving, at the shard coordinator, a first query from a client application, wherein the first query is a single-shard query and comprises a first sharding key value; in response to receiving the first query, performing: identifying a particular map entry, of the plurality of map entries, that corresponds to a sharding key value set that includes the first sharding key value; using the particular map entry to identify a target shard (260A-C), from the plurality of shards (260A-C), that corresponds to the sharding key value set that includes the first sharding key value; redirecting, by the shard coordinator, the client application to the target shard (260A-C); receiving, at the target shard (260A-C), the first query; generating a first result for the first query by using the target shard (260A-C) that corresponds to the sharding key value set that includes the first sharding key value; and sending, to the client application, a response to the first query that is based on the first result, wherein sending the response to the first query to the client application is performed directly by the target shard (260A-C) without involving the shard coordinator; sending, by the target shard (260A-C), a subset of the plurality of map entries to the client application for local caching, wherein the subset of the plurality of map entries maps a particular sharding key value set to the target shard (260A-C); receiving, by the target shard (260A-C), a second query from the client application, wherein the second query is a single-shard query and comprises a second sharding key value; wherein the second query was sent directly from the client application to the target shard (260A-C) in response to looking up the subset of the plurality of map entries in a local cache available to the client application; and wherein the second query was sent directly from the client application to the target shard (260A-C) without involving the shard coordinator. storing, by a shard coordinator, a plurality of map entries; wherein each map entry, of the plurality of map entries, maps a distinct sharding key value set to a shard (260A-C) of a plurality of shards (260A-C) of a sharded database; wherein each shard (260A-C) of the plurality of shards (260A-C) comprises an independent database instance; receiving, at the shard coordinator, a first query from a client application, wherein the first query is a single-shard query and comprises a first sharding key value; in response to receiving the first query, performing: identifying a particular map entry, of the plurality of map entries, that corresponds to a sharding key value set that includes the first sharding key value; using the particular map entry to identify a target shard (260A-C), from the plurality of shards (260A-C), that corresponds to the sharding key value set that includes the first sharding key value; redirecting, by the shard coordinator, the client application to the target shard (260A-C); receiving, at the target shard (260A-C), the first query; generating a first result for the first query by using the target shard (260A-C) that corresponds to the sharding key value set that includes the first sharding key value; and sending, to the client application, a response to the first query that is based on the first result, wherein sending the response to the first query to the client application is performed directly by the target shard (260A-C) without involving the shard coordinator; identifying a particular map entry, of the plurality of map entries, that corresponds to a sharding key value set that includes the first sharding key value; using the particular map entry to identify a target shard (260A-C), from the plurality of shards (260A-C), that corresponds to the sharding key value set that includes the first sharding key value; redirecting, by the shard coordinator, the client application to the target shard (260A-C); receiving, at the target shard (260A-C), the first query; generating a first result for the first query by using the target shard (260A-C) that corresponds to the sharding key value set that includes the first sharding key value; and sending, to the client application, a response to the first query that is based on the first result, wherein sending the response to the first query to the client application is performed directly by the target shard (260A-C) without involving the shard coordinator; sending, by the target shard (260A-C), a subset of the plurality of map entries to the client application for local caching, wherein the subset of the plurality of map entries maps a particular sharding key value set to the target shard (260A-C); receiving, by the target shard (260A-C), a second query from the client application, wherein the second query is a single-shard query and comprises a second sharding key value; wherein the second query was sent directly from the client application to the target shard (260A-C) in response to looking up the subset of the plurality of map entries in a local cache available to the client application; and wherein the second query was sent directly from the client application to the target shard (260A-C) without involving the shard coordinator.