当前位置:首页 » 操作系统 » 数据库设计论坛

数据库设计论坛

发布时间: 2023-06-08 10:17:57

㈠ 用mongodb怎么设计论坛这样的数据库

有效的数据模型是为应用服务的,设计构架的关键问题是文档模型适合使用嵌入式模型(embed)还是使用引用模型(references)。
嵌入式数据模型(Embedded Data Models)
在MongoDB中,你可能将相关数据嵌入到一个单一结构或文档,这些模式通常被称为“非正规”模型,但是它充分利用了MongoDB富文档模型的有点。
嵌入式数据模型允许应用程序存储相关的信息在一条数据库记录中,这样应用程序可能需要更少的查询和更新来完成常规的操作。

㈡ 如何用mysql设计一个论坛数据库

在控制台根目录下打开sqlserver企业管理器,新建sqlserver组,根据自己的情况进行选择;然后新建sqlserver
注册,进行对sqlserver的连接。准备妥当后,下面就开始了:
首先打开数据转换服务,新建包,打开dts界面,在连接中选择数据源进行配置。再选择将要转换到的目的文件,这里我选的
textfile(destination),选择好文件的存放位置之后,我们来新建一个任务。这里我们只选择转换数据任务,将带有“选择源连接”“选择目的连接”的鼠标分别选中数据源和目的之后,我们对新生成的连接进行定义,在其属性中将源,目的,转换依次定义。
执行任务,提示成功。保存任务。然后在新建的任务上导出数据,有向导提示,其中一项选择“从源数据库复制表和视图”。
这一步已经把数据导出到目的文件中。
下一步在mysql中新建表,与将要导入的结构保持一致时,直接选取“从文本文件中提取数据,插入到数据表:”,将选项添好后,“发送”就可以了,浏览一下,数据已导入了。若要导入的表已经存在,且属性名也不同,这时就先建一个与要导入的数据相同结构的表并导入数据(按刚才的进行就可以了),然后在mysql中导出“数据和结构”,得到sql语句,将其在文本文件中编辑,利用文本编辑器的替换功能,将表名修改,列名加入,最后将其粘贴在要导入表的执行sql语句的地方,执行一下,数据便导入了。

㈢ 论坛的数据库怎么设计

常用的论坛设计方法,总结如下:
一 分割思想:
1 数据库切分:用户库、主题库、回复库
2 数据表水平切分:用户库1-n、主题库1-n、回复库1-n (比如按时间分)
3 分布式数据库:每台计算机中都有DBMS的一份完整拷贝副本,并具有自己局部的数据库,位于不同地点的许多计算机通过网络互相连接,共同组成一个完整的、全局的大型数据库。
4 论坛功能可以进行分隔,不同的服务器负责不同的功能
5 用主从数据库,master是写, slave是读
6 把内容与其它信息分开,好处就是可以让每个表的文件最小化,对数据库操作压力会减小,这样保证每张表数据量很小,操作速度会快,也可以在这里使用缓存
二 索引:
针对是否建立索引有着一定的分歧:
我觉得建立索引还是很有必要的。理由如下:
1)建立索引可以加快检索速度,对于论坛读和写的比例相差很大,用户体验当然是读多写少,所以综合考虑还是要用索引,而且是加在常用的读关键字上。
2)索引之所以会降低更新的速度,是因为更新还包括对索引的更新,从更新帖子10万左右,这句话是说,我们可能对发帖标题,发帖内容,回复标题,回复内容这4个字段做更新。需要注意的是,这四个字段并不是用来建立表连接的字段,为了优化查询速度我们不会在这四个字段上建立索引,所以从这道题目出发,我们建立的索引不会影响更新帖子的性能。只要被索引的列(例如回复表的标题ID)不被频繁更新,即使索引所在地行的其它列被频繁update,索引也不会被更新从而产生性能消耗,一张表一天30万次的索引更新,因它引起的性能消耗小到即使数据库安装在奔腾3单核CPU下都能轻松承担下来。
3)对于更新的速度慢的问题,我们有解决的方法,你提交更新了后,前台可以让程序返回一个正确结果,后台开个线程异步慢慢跟新数据库就是了,反正更新成功的前提就是假设数据库连接永远正确并处于可靠状态。在数据库和用户之间建立一个缓冲区。(如,将更新的数据放到内存中,达到一定数量的时候再统一更新数据库。假如以100条为例,一旦内存中达到100条数据量将这100条数据统一入库。减少insert操作)

三 缓冲:
读的时候的缓冲:缓存路由表
主题缓存表(这个取每个区的前面100条记录),一般来说负载最大的就是主题的第一页,所以缓存表是个小表。

另外使用hibernate,在数据库上面加了一层缓存。
生成静态页,缓存最热,最新的帖子。
对于经常更新的数据都设计成单独表 ,这样可以最大程度的利用hibernate缓存
缓存常用的数据和表,利用缓存来将经常被访问的帖子留在内存中,为每条缓存的记录添加一个访问时间,如果长时间没被访问就从缓存中删除掉,
避免内存过大,每次用户看帖的时候,首先检索缓存中时候有需要的帖子,没有的话再访问数据库,然后将数据库返回的帖子信息存储到缓存中。

写的时候的缓冲:数据库和用户之间建立缓存,将更新的数据放在内存中,异步操作的。所有的写贴操作 放到一个队列然后批量执行插入数据库操作。

预估计的缓冲:假如用户第一次打开某标题,那将此标题的相关的前100条数据缓存到客户断。这样避开对数据库的直接查询,减少数据库压力。
四 代码优化
1尽量避免表的连接约束通过代码来实现约束 例如用户id的验证在用户登录时验证这样就可以把帖子表的用户id外键去掉这样就成了单表操作、查询 而连接可以通过触发来实现这样最多是查询了3个表而不是连接中的笛卡尔笛卡尔积 回复表的查询限定每次查询的记录数例如限定10条其它的通过点击触发来操作"注代码优化容易出现bug 原因有些开发工具本身有优化"
五 数据库性能调优
尽量用硬件来代替软件优化 原则就是能用硬件的尽量用硬件 比如磁盘阵列 RAID0 有条件用RAID10 加大内存 .避免小表上建索引 对论坛来说数据帖子和回复不是很重要 可以定期删除一些垃圾帖子 楼主说的几百万条记录的论坛对现在的数据库管理系统和计算机来说永不着刻意的优化,定期维护打包备份数据库就可以了
提高速度的关键:
1.建立合理的索引并在查询时充分利用;
2.避免使用关联,这样避免整表扫描;使用关联不如多次使用主键查询来的快;
3.一些处理的功能尽可能放到内存中来做,比如组织主题和回复;
4.海量缓存(使用静态页面也是个不错的做法)
5 定期对表进行转储

㈣ 做论坛对于视频文件如何储存,数据库库如何设计

1、正常创一个文件信息表,主键,文件名,文件真实名,文件存储路径,文件类型,关晌如册橡枣联表id,上传时间。

2、存在数据库中的肯定是文件的存储路径。取得时候就是通过路径去取。

3、你上传视频文件,数据库保存文件名字,路径

4、全部转换宴宏成二进制,存到数据库中,或者存为url

㈤ 网上论坛的数据库设计

:(1)论坛可以分为多个版块,如C#版块、C++版块、Java版块等,注册用户可以在版块中发帖和跟贴。版块的数量和名称尚未确定。
(2)每个注册用户拥有一定数量的可用分和专家分,不区分是在哪个版块的分数。
(3)每个用户注册时自动得到可用分3000分,发帖时可以设定这个帖子的分数是多少,分数从可用分中扣除。
(4)每次发帖可以设置的分数最大值为100。
(5)用户每天第一次登录时自动增加可用分20分,当天重复登录不再增加可用分。
(6)发帖人问题得到满意答复后结帖,结帖时根据跟贴用户的回答,由发帖人决定给予的分数,跟贴人得到的分数记入其专家分。
(7)发帖人在这个帖子中给予跟贴人的分数总和不能超过发帖时设定的分数。
(8)发帖人不可以给自己专家分。
(9)用户根据专家分的多少确定其用户等级,如刚登录时专家分为0分,为初级用户;得到200分后为一级用户;500分后为二级用户……。用户等级的名称及分数段尚未确定。
(10)系统有超级用户、大版主、分版版主三种管理员,超级用户系统初始化时设定。
(11)每个注册用户都可以申请分版版主,申请后由注册用户投票,投票期为30天,支持票数达到最近30天登录过的用户数的10%以上,且反对票数不超过总投票数的30%,并由大版主或超级用户审核后,获得分版版主资格。
(12)超级用户可以指定大版主,大版主不一定是分版版主,大版主可以有多名。
(13)每个版的分版版主可以有多名,版主可以删除违反版规的帖子,帖子删除后,发帖人发帖时扣除的可用分不再恢复;如果删除的帖子已经结帖,跟贴人得到的专家分要扣除。
(14)对于分版版主无故删除帖子的行为,用户可以向大版主投诉,由大版主决定删除是否违规;如果确属违规删除,则恢复以删除的帖子,并恢复分数。
(15)对于投诉严重的分版版主,

热点内容
手机wap网站源码 发布:2024-05-05 22:27:44 浏览:258
python修改文件某一行 发布:2024-05-05 22:18:22 浏览:457
md5加密64 发布:2024-05-05 21:59:30 浏览:527
259pp页面访问升级 发布:2024-05-05 21:47:51 浏览:89
迅雷阻止上传 发布:2024-05-05 21:26:19 浏览:914
数据库运维题 发布:2024-05-05 21:21:47 浏览:962
RM魔塔编程 发布:2024-05-05 21:21:47 浏览:286
matlab获取文件夹 发布:2024-05-05 21:12:24 浏览:291
一根式算法 发布:2024-05-05 21:12:23 浏览:956
php无刷新 发布:2024-05-05 21:08:11 浏览:982