PHPackages                             iborodikhin/pshard - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. iborodikhin/pshard

ActiveLibrary

iborodikhin/pshard
==================

Simple sharding library for PDO.

1131PHP

Since Mar 7Pushed 10y ago1 watchersCompare

[ Source](https://github.com/iborodikhin/pshard)[ Packagist](https://packagist.org/packages/iborodikhin/pshard)[ RSS](/packages/iborodikhin-pshard/feed)WikiDiscussions master Synced 1mo ago

READMEChangelogDependenciesVersions (1)Used By (0)

PShard
======

[](#pshard)

[![Build Status](https://camo.githubusercontent.com/ed125b114c10aa64aea94bb49a0084dae9a260bcb752815e1129de97bccb06df/68747470733a2f2f7472617669732d63692e6f72672f69626f726f64696b68696e2f7073686172642e706e673f6272616e63683d6d6173746572)](https://travis-ci.org/iborodikhin/pshard)

Shards data between multiple virtual shards and multiple real shards using PDO.

Usage
-----

[](#usage)

1. Create tables with data:

    ```
    CREATE TABLE real_shard (
        'id' INT(10) NOT NULL AUTO_INCREMENT,
        'name' VARCHAR(50) NOT NULL,
        'dsn' VARCHAR(50) NOT NULL,
        'username' VARCHAR(50) NOT NULL DEFAULT '',
        'password' VARCHAR(200) NOT NULL DEFAULT '',
        'options' VARCHAR(1000) NOT NULL DEFAULT '',
        PRIMARY KEY ('id'),
        UNIQUE KEY 'name' ('name')
    ) ENGINE=InnoDB;
    INSERT INTO real_shard VALUES (NULL, 'real_shard1', 'mysql:host=1.2.3.4;dbname=shard', 'user', 'pAsSwOrD', '{json_encoded_options_list}');

    CREATE TABLE virtual_shard (
        'id' INT(10) NOT NULL AUTO_INCREMENT,
        'virtual' VARCHAR(50) NOT NULL,
        'real' VARCHAR(50) NOT NULL,
        PRIMARY KEY ('id),
        UNIQUE KEY 'virtual_real' ('virtual', 'real')
    ) ENGINE=InnoDB;
    INSERT INTO virtual_shard VALUES (NULL, 'virtual_shard1', 'real_shard1');
    INSERT INTO virtual_shard VALUES (NULL, 'virtual_shard2', 'real_shard1');
    ...
    INSERT INTO virtual_shard VALUES (NULL, 'virtual_shardN', 'real_shard1');

    ```
2. Create PDO instance for database containing shards map:

    ```
