\PhalApi_DB_NotORM

PhalApi_DB_NotORM 分布式的DB存储

基于NotORM的数据库操作,支持分布式

  • 可定义每个表的存储路由和规则,匹配顺序: 自定义区间匹配 -> 自定义缺省匹配 -> 默认区间匹配 -> 默认缺省匹配
  • 底层依赖NotORM实现数据库的操作


使用示例:

     //需要提供以下格式的DB配置
     $config = array(
       //可用的DB服务器集群
      'servers' => array(
         'db_demo' => array(
             'host'      => 'localhost',             //数据库域名
             'name'      => 'phalapi',               //数据库名字
             'user'      => 'root',                  //数据库用户名
             'password'  => '',                     //数据库密码
             'port'      => '3306',                 //数据库端口
             'charset'   => 'UTF8',                  //数据库字符集
         ),
      ),

       //自定义表的存储路由
      'tables' => array(
          '__default__' => array(                                            //默认
              'prefix' => 'tbl_',
              'key' => 'id',
              'map' => array(
                  array('db' => 'db_demo'),                                  //默认缺省
                  array('start' => 0, 'end' => 2, 'db' => 'db_demo'),        //默认区间
              ),
          ),
          'demo' => array(                                                   //自定义
              'prefix' => 'tbl_',
              'key' => 'id',
              'map' => array(
                  array('db' => 'db_demo'),                                  //自定义缺省
                  array('start' => 0, 'end' => 2, 'db' => 'db_demo'),        //定义区间
              ),
          ),
      ),
     );

     $notorm = new PhalApi_DB_NotORM($config);

     //根据ID对3取模的映射获取数据
     $rs = $notorm->demo_0->select('*')->where('id', 10)->fetch();
     $rs = $notorm->demo_1->select('*')->where('id', 11)->fetch();

Summary

Methods
Properties
Constants
__construct()
__get()
__set()
disconnect()
keepPrimaryKeyIndex()
beginTransaction()
commit()
rollback()
$
No constants found
createNotormKey()
parseName()
getDBRouter()
getPdo()
createPDOBy()
$_notorms
$_pdos
$_configs
$debug
$isKeepPrimaryKeyIndex
N/A
No private methods found
No private properties found
N/A

Properties

$

$ : string

table_name 数据库表名

Type

string

$_notorms

$_notorms : \NotORM

Type

\NotORM — NotORM的实例池

$_pdos

$_pdos : \PDO

Type

\PDO — PDO连接池,统一管理,避免重复连接

$_configs

$_configs : array

Type

array — 数据库配置

$debug

$debug : boolean

Type

boolean — 是否开启调试模式,调试模式下会输出全部执行的SQL语句和对应消耗的时间

$isKeepPrimaryKeyIndex

$isKeepPrimaryKeyIndex : boolean

Type

boolean — 是否保持原来数据库结果集中以主键为KEY的返回方式(默认不使用)

Methods

__construct()

__construct(array  $configs, boolean  $debug = FALSE) 

Parameters

array $configs

数据库配置

boolean $debug

是否开启调试模式

__get()

__get(  $name) 

Parameters

$name

__set()

__set(  $name,   $value) 

Parameters

$name
$value

disconnect()

disconnect() 

断开数据库链接

keepPrimaryKeyIndex()

keepPrimaryKeyIndex() 

为历史修改埋单:保持原来数据库结果集中以主键为KEY的返回方式

  • PhalSpi 1.3.1 及以下版本才需要用到此切换动作
  • 涉及影响的数据库操作有:fetchAll()/fetchRows()等

@return PhalApi_DB_NotORM

beginTransaction()

beginTransaction(string  $whichDB) : NULL

开启数据库事务

Parameters

string $whichDB

指定数据库标识

Returns

NULL

commit()

commit(string  $whichDB) : NULL

提交数据库事务

Parameters

string $whichDB

指定数据库标识

Returns

NULL

rollback()

rollback(string  $whichDB) : NULL

回滚数据库事务

Parameters

string $whichDB

指定数据库标识

Returns

NULL

createNotormKey()

createNotormKey(  $tableName) 

Parameters

$tableName

parseName()

parseName(string  $name) 

解析分布式表名 表名 + ['_' + 数字后缀],如:user_0, user_1, .

.. user_100

Parameters

string $name

getDBRouter()

getDBRouter(string  $tableName, string  $suffix) : array

获取分布式数据库路由

Parameters

string $tableName

数据库表名

string $suffix

分布式下的表后缀

Throws

\PhalApi_Exception_InternalServerError

Returns

array —

数据库配置

getPdo()

getPdo(string  $dbKey) : \PDO

获取 PDO连接

Parameters

string $dbKey

数据库表名唯一KEY

Returns

\PDO

createPDOBy()

createPDOBy(array  $dbCfg) : \PDO

针对MySQL的PDO链接,如果需要采用其他数据库,可重载此函数

Parameters

array $dbCfg

数据库配置

Returns

\PDO