- 论坛徽章:
- 0
|
请问在论坛里怎么计算每个帖子的点计量的??
原帖由 "powerpolly" 发表:
大家好,
neoanthropic的一篇贴子看来引起一番唇枪舌剑,两位仁兄各执一词都有一定道理,我这里也补充一下,象贴子计数、网页点击量等涉及到“大量”计数单位的问题,目前普遍采用数据库。我于是提出几个焦点..........
同意你的前提,却不同意你的结论。
1,update=select+io....|
...................................| =>;>; select==update
2,select>;>;io...............|
但是上述结论的前提是一次select同一次update比较。
有个问题:select是协议锁,可以多线;update是互斥锁,必须锁定全表、独占并安排队列。
两位老兄一直提到“现在常用”这个词语。现在常用并不一定代表了真理,只是一种不可替代的、权衡后比较有利的权宜之计罢了。
说实话,我推崇的用文本计数,不能超过几十个页面的,否则会有大量的、不可预料内存开销,这点我已经自己测试过了。我再次通读了firebird的代码,发现即便如此强悍的文件公告板系统,没有、也是不能加入帖子访问量计数:它要应付艰苦的环境(没有集群,没有分流)下的大访问量(同时在线过万)。
论坛从bbs分离出来,无所谓进步退步,各有所需。比如在教育网,水母和糊涂就只能用bbs而不能用论坛,如果你们没有维护过,根本不能理解同时在线上万人是怎样的情形。再比如网易,同时在线量也不小,但是他们不能选择telnet的bbs,因为面向社会上的网民,没有那么多人能够控制telnet。幸运的是,网易有钱,所以他们可以通过集群进行分流。
如此,问题应该这样分析:如果有一个论坛(个人性质的),访问量不大,那么数据表计数比较合适。如果是访问量很大(似乎不太可能),而且没有钱构架服务器群,那呢只好放弃计数,无论你用php还是jsp还是cgi-bbs。
我们再看怎么设计数据表计数:
默认,
select == update >;>; io
那么,不考虑io,以不影响访问有效信息(帖子)为重点,将计数的开支从访问中分离出去,也就是说我们来建立一张关联帖子id和counter的表,每次访问,相当于操作2张表,io(2)开支为io(1)*2*y(y为校正参数,1<y<2,毕竟度量张表不同于简单的累加),相对于select和update,依然可以忽略。
如此,在浏览方面,文章数据表就没有写入操作了,只有可以并发的select。而另一张计数表,则需要在每次浏览时作update操作。帖子的计数不要直接写在文章输出脚本里,而是通过inframe插入,或者js切入,如此,即便计数一时读不出来,也不会影响帖子的浏览——而这,才是需要重点保证的。
或者,我们的思路都太局限了,应该用完全不同的方式解决。
如果经典的就是不可颠覆的,那么,我们怎么能够进步呢。
如果我们站在代码前线的人都不能创新,那么国软又怎能赶英超美呢。
:) |
|