锁定老帖子 主题:这样的需求该不该用一对多设计,主要考虑性能
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2007-03-14
8844.43 写道 可以考虑把正文存在文件系统,在需要显示content的页面上用ajax直接请求该文本文件并显示
但这样好像不方便检索 。 |
|
返回顶楼 | |
发表时间:2007-03-14
引用 你说得对,之前我没有仔细看,其实发贴得内容和回复得性质是一样得,楼主原先得设计确实不合理,但是楼主后来得方案2确实还是不合理,呵呵,比较合理得做法是表得设计采用dada得方案
good idea! 还希望大家再讨论一下 1:n 中 儿子特别多 时候 还要有分页可能时, 是否还有必要配成 1:n 比如 论坛栏目 和 栏目下的主题 1个栏目下有 10000个主题, 如果配成 1:n主要从3个页面角度考虑, 1 : 显示所有栏目 2 :显示某个栏目下的主题 (带分页) 3: 删除某个栏目,(当然栏目没了,主题也不应该在存在于数据库中) 最后 :问 该不该配成 1: n ( 当然lazy=true) |
|
返回顶楼 | |
发表时间:2007-03-14
JavaFlasher 写道 dada 写道 JavaFlasher 写道 若不配成 1:n那删除栏目时,栏目下的主题就没法被级联删除,必须手工删除,这样提高了开发成本。
把栏目想象成lable比较好,栏目删除的时候主题不需要删除。 其实这只是举个例子来说明 1:n 的问题, 但 如你所说,栏目删除了,那里面的主题将不会再有链接可以被访问到,还留着有什么用呢? 主题是论坛的资源,和属于什么板块没有关系。不管你板块则么合并拆分主题总归要留着俄,你可以写一下匹配规则把符合的主题和新的板块建立关联。 |
|
返回顶楼 | |
发表时间:2007-03-14
引用 主题是论坛的资源,和属于什么板块没有关系。不管你板块则么合并拆分主题总归要留着俄,你可以写一下匹配规则把符合的主题和新的板块建立关联。
相信你这么说是对的。 我是说如果按我的要求,来设计的话。 我就想搞明白 1:n 这种情况 是取还是舍。至于实际意义倒是其次。 |
|
返回顶楼 | |
发表时间:2007-03-14
JavaFlasher 写道 引用 主题是论坛的资源,和属于什么板块没有关系。不管你板块则么合并拆分主题总归要留着俄,你可以写一下匹配规则把符合的主题和新的板块建立关联。
相信你这么说是对的。 我是说如果按我的要求,来设计的话。 我就想搞明白 1:n 这种情况 是取还是舍。至于实际意义倒是其次。 如果是我来做的话,不会用hibernate来维持关系。 |
|
返回顶楼 | |
发表时间:2007-03-14
JavaFlasher 写道 iday 写道 方案2,topic跟content可以映射为多对一的关系。这样就可以设置lazy了。
这个办法挺好,不过是不是说反了, topic和topic_content应该配成 1:n 而不是 n:1吧。 恩,是的。 |
|
返回顶楼 | |
发表时间:2007-03-15
没关系把。直接lazy=true就可以吧/。select* from一般对索引查询。跟表的大小没关系的吧
|
|
返回顶楼 | |
发表时间:2007-03-15
有一种可能是网站规模不是那么大, 现在内存很便宜, 假如所有数据在物理内存都放得下的话, 全部配成级联, 分页直接用集合方式做, 不查数据库, 会是一个运行效率最高, 开发成本最低的方案.
假设每条帖子平均占2K内存, 那么20G内存可以容纳一千万帖子, 在这个范围之内, 64G内存的服务器跑起来应该没有问题. |
|
返回顶楼 | |
发表时间:2007-03-15
complystill 写道 有一种可能是网站规模不是那么大, 现在内存很便宜, 假如所有数据在物理内存都放得下的话, 全部配成级联, 分页直接用集合方式做, 不查数据库, 会是一个运行效率最高, 开发成本最低的方案.
假设每条帖子平均占2K内存, 那么20G内存可以容纳一千万帖子, 在这个范围之内, 64G内存的服务器跑起来应该没有问题. :x 规模大的不会用这个,规模小的也出不起这个钱。 |
|
返回顶楼 | |
发表时间: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,如果反过来设置则前功尽弃适得其反。 对于一对多中多方很多的话,如果是我不会用,而只用多对一关联,毕竟将多方全部显示的情况不多,一般都会进行一些条件查询。 |
|
返回顶楼 | |