ShardManager
in
Sharding Manager gives access to APIs to implementing sharding on top of Doctrine\DBAL\Connection instances.
For simplicity and developer ease-of-use (and understanding) the sharding API only covers single shard queries, no fan-out support. It is primarily suited for multi-tenant applications.
The assumption about sharding here is that a distribution value can be found that gives access to all the necessary data for all use-cases. Switching between shards should be done with caution, especially if lazy loading is implemented. Any query is always executed against the last shard that was selected. If a query is created for a shard Y but then a shard X is selected when its actually executed you will hit the wrong shard.
Tags
Table of Contents
- getCurrentDistributionValue() : string
- Gets the distribution value currently used for sharding.
- getShards() : array<string|int, mixed>
- Gets information about the amount of shards and other details.
- queryAll() : array<string|int, mixed>
- Queries all shards in undefined order and return the results appended to each other. Restore the previous distribution value after execution.
- selectGlobal() : void
- Selects global database with global data.
- selectShard() : void
- Selects the shard against which the queries after this statement will be issued.
Methods
getCurrentDistributionValue()
Gets the distribution value currently used for sharding.
public
getCurrentDistributionValue() : string
Return values
string —getShards()
Gets information about the amount of shards and other details.
public
getShards() : array<string|int, mixed>
Format is implementation specific, each shard is one element and has an 'id' attribute at least.
Return values
array<string|int, mixed> —queryAll()
Queries all shards in undefined order and return the results appended to each other. Restore the previous distribution value after execution.
public
queryAll(string $sql, array<string|int, mixed> $params, array<string|int, mixed> $types) : array<string|int, mixed>
Parameters
- $sql : string
- $params : array<string|int, mixed>
- $types : array<string|int, mixed>
Return values
array<string|int, mixed> —selectGlobal()
Selects global database with global data.
public
selectGlobal() : void
This is the default database that is connected when no shard is selected.
Return values
void —selectShard()
Selects the shard against which the queries after this statement will be issued.
public
selectShard(string $distributionValue) : void
Parameters
- $distributionValue : string