`
- 浏览:
82616 次
- 性别:
- 来自:
北京
-
http://www.iteye.com/topic/364016?page=5
ak478288:
简单用户表 tb_user:
userid , username
用户详细信息表 tb_userinfo
userid , email , homepage , phone , address
把用户信息分开的目的就是保证经常查询的数据在一张表,其它信息放到另一张表
论坛主题表 tb_bbs
bbsid , userid , title , ip , repleycount , replyuserid , createtime , lastreplytime
论坛内容标 tb_bbs_content (此表可按照bbsid进行分表存储)
bbsid , content;
论坛回复表 tb_bbs_reply (此表可按照bbsid进行分表存储)
replyid , bbsid , userid , content , replytime , ip
说说我设计的想法 :
论坛使用最多的功能为以下几个
一个话题列表页面,例如
select count(*) from tb_bbs; 查询数量,用来分页
select * from tb_bbs order by lastreplytime desc limit ?,?;
在列表中一般会显示发帖人的基本信息,例如username
在这里一般会使用以下的查询方式:
select * from tb_user u , tb_bbs b where u.userid=b.userid order by lastreplytime desc limit ?,?;
如果连表操作压力大的情况下,可以直接使用
select * from tb_bbs order by lastreplytime desc limit ?,?;
对于用户信心可以根据userid去缓存中取数据,这样避免的与tb_bbs表的关联查询
一个话题单页
对内容分表,可看具体情况而定,例如
bbsid是数字
bbs_content根据bbsid末位进行分表
分为
bbs_content0 ,
bbs_content1 ,
bbs_content2 ,
bbs_content3 ,
bbs_content4 ,
bbs_content5 ,
bbs_content6 ,
bbs_content7 ,
bbs_content8 ,
bbs_content9
tb_bbs_reply可以分为
tb_bbs_reply0 ,
tb_bbs_reply1 ,
tb_bbs_reply2 ,
tb_bbs_reply3 ,
tb_bbs_reply4 ,
tb_bbs_reply5 ,
tb_bbs_reply6 ,
tb_bbs_reply7 ,
tb_bbs_reply8 ,
tb_bbs_reply9 ,
例如bbsid=5687
select * from tb_bbs where bbsid=5687
//去缓存中取bbs_content相应内容,如果没有就根据算法
int tableIdx=modTable(5687);
//tableIdx=7
select * from tb_bbs_content7 where bbsid=5687;
select * from tb_bbs_reply7 where bbsid=5687 order by replyid asc limit ?,?
用户信息从缓存中取或者
select * from tb_bbs_reply7 r tb_user u,where bbsid=5687 adn r.userid=u.userid order by replyid asc limit ?,?
基本的使用场景是这个样子.
里面所有对于分表的思想就是,尽量让表文件大小达到最小化,
把内容与其它信息分开的好处就是可以让每个表的文件最小化,对数据库操作压力会减小.
这样保证每张表数据量很小,操作速度会快,而且可以搭配缓存,把内容根据情况进行缓存,可以尽量很少访问表数据
对于高访问量,不能只依赖于数据库,还要配合缓存的使用,我在上述例子中使用的缓存只是做法一种,也许还有更好的
对于上述分表方式也可以适用于分库操作,这样就降低了数据库单库的压力,把压力分散到各个机器
我的做法就是尽量避免表关联
再就是对于sql语句尽量都保证索引有效,不能索引的sql,尽量采用能索引的高效方式解决
有不妥的地方请指正
////////
z494627:
提高速度的关键:
1.建立索引并在查询时充分利用;
2.避免使用关联,这样避免整表扫描;使用关联不如多次使用主键查询来的快;
3.一些处理的功能尽可能放到内存中来做,比如组织主题和回复;
4.使用静态页面也是个不错的做法;
///////
jiyanliang 写道
JE的好像是两张表:主题表和回复表,而且定义了他们之间的关系,然后是使用了大量的缓存。缓存对于设计论坛系统还是有很大优势的。另外Robbin还说了,为了更好的使用缓存,还可以把回复的内容单独提取出来作为一个表。^_^
忘了是robbin是这样说的还是这样设计的。
这是延续了hibernate二级缓存的思想, 对于经常更新的数据都设计成单独表
这样可以最大程度的利用hibernate缓存
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/zou274/archive/2009/04/18/4091036.aspx
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
在给出的部分内容中,可以看到采用了E-R(实体-关系)模型进行数据库设计。E-R图清晰地表示了实体(如用户、版块、帖子和回帖)及其之间的关系。通过Power Designer这样的工具,可以方便地绘制概念数据模型(CDM),...
2. **标准化系统设计**:确保数据库设计符合行业标准,便于管理和维护。 3. **预留异常区域**:为特殊情况下的数据存储留出专门区域,增强系统的灵活性和可靠性。 4. **最小化表空间冲突**:合理规划表空间,减少因...
### 大型数据库设计的关键问题与解决方案 在大型数据库的设计过程中,经常会遇到各种挑战和问题。这些问题如果处理不当,将直接影响到系统的性能、稳定性和可维护性。本文将重点探讨在设计大型数据库时常见的问题,...
大型网站数据库设计sql,下载运行即可使用参考,完美注释,清晰字段名
4. **数据库设计**:根据企业人事管理的需求,你需要学习如何进行关系数据库设计,包括实体-关系模型(E-R模型)、范式理论(1NF、2NF、3NF等)以及数据库规范化。 5. **事务与并发控制**:Oracle提供了事务管理和...
"大型数据库设计方案" 大型数据库设计方案是指为了解决大型互联网应用中的海量数据存储和访问问题所采用的解决方案。该方案主要涉及到分布式数据库设计、负载均衡技术、数据库读写分离等方面。 一、负载均衡技术 ...
### 大型SNS网站数据库设计精要 在构建大型社交网络服务(SNS)时,数据库设计是至关重要的环节,直接影响着系统的可扩展性、性能和成本效益。本文将深入探讨大型SNS网站数据库设计的关键要素,包括数据库选型、...
大型数据库设计原则大型数据库设计原则
本讲座重点介绍了数据库设计的基本原理和步骤,旨在为工学领域的大型实用数据库技术提供指导。 首先,数据库设计的概述强调了其重要性,指出数据库设计不仅涉及技术层面,更关乎管理和基础数据的处理。数据库设计的...
本文档对大型数据库课程设计火车站票务管理系统的设计报告进行了详细的介绍,涵盖了需求分析、面向对象分析和设计、逻辑结构设计、数据库物理结构设计、数据库完整性设计等方面的内容,为读者提供了一个较为全面的...
1. **需求分析**:在设计数据库系统之前,首先需要进行需求分析,了解电子商城的业务流程和数据需求,这是数据库设计的基础。 2. **ER模型**:实体-关系模型(ER模型)是一种用于数据建模的方法,它将现实世界中的...
【大型数据库指南及常见数据库设计题目】是一门针对计算机专业学生的实践课程,旨在深化学生对大型数据库理论和实践知识的理解,提升他们利用数据库解决实际问题的能力。这门课程设计是基于《powerbuilder & SQL ...
《大型数据库》课程设计题库.pdf《大型数据库》课程设计题库.pdf《大型数据库》课程设计题库.pdf《大型数据库》课程设计题库.pdf《大型数据库》课程设计题库.pdf《大型数据库》课程设计题库.pdf《大型数据库》课程...
### 大型数据库设计优化技巧 #### 数据库设计与优化的重要性 在当今信息化时代,数据库作为数据管理和存储的核心,其设计与优化对于确保系统稳定性和提高数据处理效率至关重要。尤其在大型系统中,数据库设计的...
在数据库设计方面,通常采用ORACLE并行服务器和集群系统,以增强系统的稳定性和处理能力。数据库物理结构的设计是核心环节,它包括表及索引的物理存储规划、表空间分配、回滚段、redo log files的设定,以及备份与...
【大型数据库课程设计】是高等教育中一门重要的实践性课程,旨在让学生掌握大型数据库的设计、实施和管理技能。在这个课程设计中,学生需要完成一系列任务,包括但不限于选题、需求分析、概念结构设计、逻辑结构设计...
实体关系图(E-R 图)是数据库设计中的关键工具,用于表示实体、属性和关系,帮助我们清晰地理解数据模型。 2.4.2 静态数据及其数据字典 静态数据是指在系统运行过程中不常变化的数据,需要定义其数据类型、长度、...
**在线音乐网站数据库设计** **第一章 引言** 1.1 编写目的 本文档旨在详细阐述在线音乐网站的数据库结构模型设计,为系统开发人员、测试人员、运维人员提供清晰的指导,确保数据库的高效运行和后期维护。通过这份...