wecenter学习笔记-Model读写分离

该文是wecenter学习笔记的一部分

Model读写分离

所有的具体的Model都从AWS_MODEL派生。

AWS_MODEL依赖core_db对Zend_Db的包装来支持数据库相关的功能,参照:

system/core/db.php

初始化

$this->db['master'] = Zend_Db::factory(load_class('core_config')->get('database')->driver, load_class('core_config')->get('database')->master);

切换数据库

public function setObject($db_object_name = 'master')
{
    if (isset($this->db[$db_object_name]))
    {
        Zend_Registry::set('dbAdapter', $this->db[$db_object_name]);
        Zend_Db_Table_Abstract::setDefaultAdapter($this->db[$db_object_name]);

        $this->current_db_object = $db_object_name;

        return $this->db[$db_object_name];
    }

    throw new Zend_Exception('Can\'t find this db object: ' . $db_object_name);
}

AWS_MODEL提供如下功能

  • 自动添加表前缀
  • 数据库主从切换
  • 基本CRUD
  • 事务处理
  • 脚本执行完后的数据库更新操作
  • 分页查询
  • 基本的统计 count\max\min\sum
  • quote

通过对db操作的封装,方便将所有的查询操作切换到从库,更新使用主库,从而实现读写分离对具体Model的实现者透明。


Controller访问控制实现原理←o→自动引入机制和Autoload

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,156评论 19 139
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,273评论 4 61
  • 需要原文的可以留下邮箱我给你发,这里的文章少了很多图,懒得网上粘啦 1数据库基础 1.1数据库定义 1)数据库(D...
    极简纯粹_阅读 7,565评论 0 46
  • 文 | 云吞悠扬 有些记忆在决绝的那一刻就应该尘封,有些则需要铭记终生,因为多年后回头看看,就是这些人这些事,让我...
    云吞悠扬阅读 1,599评论 39 28