多对多关系以及多表查询优化处理 前言:这两天机器坏了,正在送修中,写个系列的大型网站架构的文章,希望对有志在互联网做出一番事业的站长朋友们一些帮助
注意:这里的大型网站架构只包括高互动性高交互性的数据型大型网站,基于大家众所周知的原因,我们就不谈新闻类和一些依靠 HTML静态化就可以实现的架构了,我们以高负载高数据交换高数据流动性的网站为例,比如海内,开心网等类似的web2
我们这里不讨论是 PHP还是 JSP或者
NET环境,我们从架构的方面去看问题,实现语言方面并不是问题,语言的优势在于实现而不是好坏,不论你选择任何语言,架构都是必须要面对的
文入正题: 首先讨论一下大型网站需要注意和考虑的问题 A
海量数据的处理
众所周知,对于一些相对小的站点来说,数据量并不是很大,select和 update就可以解决我们面对的问题,本身负载量不是很大,最多再加几个索引就可以搞定
对于大型网站,每天的数据量可能就上百万,如果一个设计不好的多对多关系,在前期是没有任何问题的,但是随着用户的增长,数据量会是几何级的增长的
在这个时候我们对于一个表的select和 update的时候(还不说多表联合查询)的成本的非常高的
数据并发的处理 在一些时候,2
0的CTO都有个尚方宝剑,就是缓存
对于缓存,在高并发高处理的时候也是个大问题
在整个应用程序下,缓存是全局共享的,然而在我们进行修改的时候就,如果两个或者多个请求同时对缓存有更新的要求的情况下,应用程序会直接的死掉
这个时候,就需要一个好的数据并发处理策略以及缓存策略
另外,就是数据库的死锁问题,也许平时我们感觉不到,死锁在高并发的情况下的出现的概率是非常高的,磁盘缓存就是一个大问题
文件存贮的问题 对于一些支持文件上传的2
0的站点,在庆幸硬盘容量越来越大的时候我们更多的应该考虑的是文件应该如何被