interface ShardManager (View source)

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.

Methods

void
selectGlobal()

Selects global database with global data.

void
selectShard(string $distributionValue)

Selects the shard against which the queries after this statement will be issued.

string|null
getCurrentDistributionValue()

Gets the distribution value currently used for sharding.

mixed[][]
getShards()

Gets information about the amount of shards and other details.

mixed[]
queryAll(string $sql, array $params, array $types)

Queries all shards in undefined order and return the results appended to each other. Restore the previous distribution value after execution.

Details

void selectGlobal()

Selects global database with global data.

This is the default database that is connected when no shard is selected.

Return Value

void

void selectShard(string $distributionValue)

Selects the shard against which the queries after this statement will be issued.

Parameters

string $distributionValue

Return Value

void

Exceptions

ShardingException If no value is passed as shard identifier.

string|null getCurrentDistributionValue()

Gets the distribution value currently used for sharding.

Return Value

string|null

mixed[][] getShards()

Gets information about the amount of shards and other details.

Format is implementation specific, each shard is one element and has an 'id' attribute at least.

Return Value

mixed[][]

mixed[] queryAll(string $sql, array $params, array $types)

Queries all shards in undefined order and return the results appended to each other. Restore the previous distribution value after execution.

Using {@link \Doctrine\DBAL\Connection::fetchAll} to retrieve rows internally.

Parameters

string $sql
array $params
array $types

Return Value

mixed[]