论坛首页 Java企业应用论坛

这样的需求该不该用一对多设计,主要考虑性能

浏览 9810 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-03-14  
8844.43 写道
可以考虑把正文存在文件系统,在需要显示content的页面上用ajax直接请求该文本文件并显示


但这样好像不方便检索 。
0 请登录后投票
   发表时间:2007-03-14  
引用
你说得对,之前我没有仔细看,其实发贴得内容和回复得性质是一样得,楼主原先得设计确实不合理,但是楼主后来得方案2确实还是不合理,呵呵,比较合理得做法是表得设计采用dada得方案



  good idea!



还希望大家再讨论一下  1:n 中 儿子特别多 时候 还要有分页可能时, 是否还有必要配成 1:n

比如 论坛栏目 和 栏目下的主题

1个栏目下有 10000个主题, 如果配成 1:n主要从3个页面角度考虑,


1 : 显示所有栏目

2 :显示某个栏目下的主题 (带分页)

3: 删除某个栏目,(当然栏目没了,主题也不应该在存在于数据库中)


最后 :问 该不该配成 1: n  ( 当然lazy=true)
0 请登录后投票
   发表时间:2007-03-14  
JavaFlasher 写道
dada 写道
JavaFlasher 写道
若不配成 1:n那删除栏目时,栏目下的主题就没法被级联删除,必须手工删除,这样提高了开发成本。

把栏目想象成lable比较好,栏目删除的时候主题不需要删除。


其实这只是举个例子来说明 1:n 的问题, 但 如你所说,栏目删除了,那里面的主题将不会再有链接可以被访问到,还留着有什么用呢?


主题是论坛的资源,和属于什么板块没有关系。不管你板块则么合并拆分主题总归要留着俄,你可以写一下匹配规则把符合的主题和新的板块建立关联。
0 请登录后投票
   发表时间:2007-03-14  
引用
主题是论坛的资源,和属于什么板块没有关系。不管你板块则么合并拆分主题总归要留着俄,你可以写一下匹配规则把符合的主题和新的板块建立关联。


相信你这么说是对的。 


我是说如果按我的要求,来设计的话。 我就想搞明白 1:n  这种情况  是取还是舍。至于实际意义倒是其次。
0 请登录后投票
   发表时间:2007-03-14  
JavaFlasher 写道
引用
主题是论坛的资源,和属于什么板块没有关系。不管你板块则么合并拆分主题总归要留着俄,你可以写一下匹配规则把符合的主题和新的板块建立关联。


相信你这么说是对的。 


我是说如果按我的要求,来设计的话。 我就想搞明白 1:n  这种情况  是取还是舍。至于实际意义倒是其次。

如果是我来做的话,不会用hibernate来维持关系。
0 请登录后投票
   发表时间:2007-03-14  
JavaFlasher 写道
iday 写道
方案2,topic跟content可以映射为多对一的关系。这样就可以设置lazy了。


这个办法挺好,不过是不是说反了, topic和topic_content应该配成 1:n 而不是 n:1吧。

恩,是的。
0 请登录后投票
   发表时间:2007-03-15  
没关系把。直接lazy=true就可以吧/。select* from一般对索引查询。跟表的大小没关系的吧
0 请登录后投票
   发表时间:2007-03-15  
有一种可能是网站规模不是那么大, 现在内存很便宜, 假如所有数据在物理内存都放得下的话, 全部配成级联, 分页直接用集合方式做, 不查数据库, 会是一个运行效率最高, 开发成本最低的方案.

假设每条帖子平均占2K内存, 那么20G内存可以容纳一千万帖子, 在这个范围之内, 64G内存的服务器跑起来应该没有问题.
0 请登录后投票
   发表时间:2007-03-15  
complystill 写道
有一种可能是网站规模不是那么大, 现在内存很便宜, 假如所有数据在物理内存都放得下的话, 全部配成级联, 分页直接用集合方式做, 不查数据库, 会是一个运行效率最高, 开发成本最低的方案.

假设每条帖子平均占2K内存, 那么20G内存可以容纳一千万帖子, 在这个范围之内, 64G内存的服务器跑起来应该没有问题.

:x 规模大的不会用这个,规模小的也出不起这个钱。
0 请登录后投票
   发表时间:2007-03-15  
JavaFlasher 写道
iday 写道
方案2,topic跟content可以映射为多对一的关系。这样就可以设置lazy了。


这个办法挺好,不过是不是说反了, topic和topic_content应该配成 1:n 而不是 n:1吧。


对于topic跟content这种情况当然应该设成多对一,因为实际使用时总是通过topic来顺藤摸瓜取得content的,如果设成一对多,取得的content是个集合,反而增加了麻烦。
还有一个好处就是不需要额外查询数据库,通过topic本身就能知道content是否存在。
如果非要用一对一可以将content设为主,topic为从,也可实现content的lazy,如果反过来设置则前功尽弃适得其反。

对于一对多中多方很多的话,如果是我不会用,而只用多对一关联,毕竟将多方全部显示的情况不多,一般都会进行一些条件查询。
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics