用户
 找回密码
 入住 CI 中国社区
搜索
楼主: spt119
收起左侧

[优化] 使用XML缓存减低数据库的读取次数和服务器压力

  [复制链接]
 楼主| 发表于 2011-8-3 22:32:07 | 显示全部楼层
本帖最后由 spt119 于 2011-8-4 15:30 编辑

非常感谢楼上各位“大大”的热情回帖,谢谢。
写这篇文章的初衷,只是阐述一下一种使用XML缓存数据库的方式,并以此减少数据库的读取次数。当然,这种方案也是我目前在开发的一个具体项目中经过反复考虑后最终确定的。
之所以要选择使用XML,而不是JSON,有很大一部分原因是“兼顾”程序的运行环境和整体设计。
首先,程序运行的web服务器和数据库服务器(群)是分开存放的。而且,这个程序要在若干网格节点上“同步”。数据库之间的“同步”有很多方式,当面向“松散管理”的使用环境和带宽较为宽裕的网络环境,XML方式最终被我确定成是“首选”方式。(教育网上)
第二,在这个程序中,PHP作为整体软件系统的“前台”,“后台”是java(当然,java也是用mysql,而没有使用oracle)。PHP与JAVA之间也有一定数量的数据交换,需要有一种PHP和JAVA之间交互的渠道,这是我选择XML的第二个原因。
第三,使用XML缓存的数据,基本变化不大,而且表中数据基本不会超过200条。
最后,也是设计该类缓存的目的。
我想通过一种较为妥善的,后续维护开发量较少的,能兼顾各节点数据库同步,能在PHP和JAVA之间快速交换的方法,当然,也有出于其他目的考虑,比如能直观化监视所生成的XML文件内容(JSON生成的是十六禁止ANSI编码,不escape“翻译”看不懂),呵呵。所以,最后选用了XML。就好比选“交集”,选取“最大公约数”。
目前已经开发完成的代码,在我的测试服务器上(CentOS 5,RAID 0+1)上,监视XML的效率个人感觉还可以接受(Rational下压力测试,模拟2000并发点击率),当然,各位大大们提到的JSON方式是我未来的开发过程中我会再仔细考虑的。谢谢大家的热情回答,谢谢。
 楼主| 发表于 2011-8-3 22:48:36 | 显示全部楼层
BruceWolf“合适的时候用合适的技术是才是‘合理’的”!
在我个人看来,有很多所谓的“技术”问题,深究起来就已经超出的技术本身,而是一种“哲学”层面的思考。为此我专门从图书馆借了一些大学的哲学教材(暂时还不敢去看哲学家的著作,汗!!也很后悔上学时哲学、政经之类的课程基本不去),一些一直纠结的取舍就这样被最终“趟”了过来。
感谢saturn的一些意见,还有,您的stblog是我研究CI的开始。谢谢您的开源代码。
发表于 2011-8-4 21:29:51 | 显示全部楼层
spt119 发表于 2011-8-3 22:32
非常感谢楼上各位“大大”的热情回帖,谢谢。
写这篇文章的初衷,只是阐述一下一种使用XML缓存数据库的方式 ...

如果你基于这个原因使用xml就完全跟我的观点吻合了。
发表于 2011-8-16 10:11:45 | 显示全部楼层
顶了
发表于 2011-8-22 15:47:05 | 显示全部楼层
$this->load->driver('cache');
CI的cache从来不用的吗?一个配置,就能在四种缓存中自由切换从来不用的吗?
Memcach、APC、file、Dummy这都是浮云?
发表于 2011-9-6 10:54:15 | 显示全部楼层
其实这样做效果不见得多么好,你的数据写入文件中首先你的数据就很明显的外漏,在就是这样做你不如直接用memcached 而且mysql在进行 查询的时候会先读取查询缓存的 ,缓存到文件好处就在于不用就等待mysql的执行时间。我建议用数据缓存处理这样 效果很好。
发表于 2011-9-6 11:04:39 | 显示全部楼层
loadinger 发表于 2011-8-22 15:47
$this->load->driver('cache');
CI的cache从来不用的吗?一个配置,就能在四种缓存中自由切换从来不用的吗 ...

我想知道缓存这东西如何开启并使用,在 config 中有缓存的配置项,如果设置为 true 是否已经开启了呢?
发表于 2011-9-9 15:49:30 | 显示全部楼层
幽蓝冰魄 发表于 2011-9-6 11:04
我想知道缓存这东西如何开启并使用,在 config 中有缓存的配置项,如果设置为 true 是否已经开启了呢? ...

看文档吧。很详细的。我有一个项目就用的ci缓存的file cache.还好啊。不过缓存这个,得用合适。需要的缓存,不需要,一定不要缓存。还有就是缓存不像数据库这样完全靠得住。很可能停个电,就没了。同步机制要考虑的。
发表于 2011-9-16 13:59:47 | 显示全部楼层
  

非常实用!而且,讲解的很透彻很好!
发表于 2011-10-25 10:47:29 | 显示全部楼层
既然是一个不会经常修改的页面的,数据也是相对固定的,用静态化不是比写成XML来的跟方便嘛?操作XML还不是IO操作吗?

本版积分规则