首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > 其他数据库 >

以用户替中心的SNS站点数据库设计及实现

2012-06-27 
以用户为中心的SNS站点数据库设计及实现?????DbMysql 继承自Db,? AdvModel,ViewModel,RelationModel继承自

以用户为中心的SNS站点数据库设计及实现

?

?

?

?

?

DbMysql 继承自Db,? AdvModel,ViewModel,RelationModel继承自Model类,Model类调用DB类进行具体的数据库操作

比如查询所有用户操作

?

具体cache实现类继承自cache类

使用如下

自定义model类? DistrictModel 继承自 MetaModel , MetaModel继承自Model , 在MetaModel类中实现缓存调用

?

?<?php //+---------------------------------- // | WoShiMaiJia Projcet // +---------------------------------- // | Copyright (c) 2010 http://woshimaijia.com All rights reserved. //+---------------------------------- // | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 ) //+---------------------------------- // | Author: xinqiyang <517577550@qq.com> //+---------------------------------- /** ?* 元数据基类 ?* 提供了缓存操作功能及基本的CRUD操作功能 ?* @author xinqiyang ?* ?*/class MetaModel extends Model { ???//缓存实例 ???protected $cache; ???/** ????* 返回一个缓存操作实例 ????*/???function _initialize() ???{ ?????//如果未设置则设置缓存实例 ?????if(!isset($this->cache)) ?????{ ????????$this->cache= Cache::getInstance('Memcache'); ?????} ???} ??????/** ????* 删除缓存 ????* @param$cachename 缓存名称 ????*/???protected function rm($cachename) ???{ ?????$this->cache->rm($cachename); ???} } ?>

?

这里以城市表信息的memcache缓存为例来实现缓存的获取及调用

?

?<?php class DistrictModel extends MetaModel { ??????/** ????* 获取省市区 ????* TODO:现在先用文件缓存,部署memcache后用 内存缓存就好了 ????*/???public function getDistrict() ???{ ?????//获得数据 ?????if(!$this->cache->get('district')) ?????{ ?????????//写入cache,5000多条的时候就挂掉了,数据不能超过1M ?????????$this->cache->set('district',$this->where('level=2 or id in (1,2,9,22)')- >select(),0,-1); ????????} ?????return $this->cache->get('district'); ????} } ?>

?

调用过程,在调用过程中,先创建cache实例,在进行调用,缓存数据,如果缓存数据则直接读取数据

4 结语

本文主要是从大家设计过程中常见的问题进行讨论,对于数据库设计方面还存在很多的不足,大家是否在项目中也是自己设计的呢?

如果是的话,希望大家能够多提出意见

<script type="text/javascript"></script>

热点排行