Skip to content
  • Emerson Faria Nobre's avatar
    Task #13711 - Database Sharding and Resharding · a079cafc
    Emerson Faria Nobre authored
    - Allow database shard shared nothing architeture with resharding
    - Configuration template in domains/default/shard.inc.php.dist
    - Frontend_Cli class to perform Shard configurations and operations
    - Sharding is added in Tinebase as a Plugin
    - Manager class is a controller that coordinates everything
    - ModOfDivision class is a Strategy to associate Shard Keys with Virtual Shards
    - Loginname class is a Strategy to allow user email address to be Shard Key
    - Filesystem classes are backends that allow all Shard control informations
      to be persisted in a filesystem folder (that must be shared between frontends)
    - Connectionconfig subpackage allows to persist DB Connection Configs
    - Association_Virtualshard_Connectionconfigkey subpackage allows to persist
      associations between Virtual Shards and DB Connection Configs
    - Persist Resharding state transitions using
      Resharding_Association_Shardkey_Connectionconfigkey subpackage
      and Resharding_Flag subpackage
    - Perform Resharding operations that copy tables contents between DBs
      using Redistributer subpackage
    - It requires multidomain enabled to work
    - Allow configuration of Shard for ActiveSync separated backend
    - Look at Tinebase/Shard/readme.txt
    
    Change-Id: I626ebe2773e440e20678fcb712b2b067228bc83c
    a079cafc