首页 > 试题广场 > 假设有一个博客系统,数据库存储采用MySQL,用户数量为10
[问答题]
假设有一个博客系统,数据库存储采用MySQL,用户数量为1000万,预计文章总数为10亿,每天有至少10万的更新量,每天访问量为5000万,对数据库的读写操作的比例超过10:1,你如何设计该系统以确保系统高效、稳定的运行? 
提示:可以从数据库设计、系统框架、及网络架构方面进行描述,可以自由发挥。
1.增加***
2.两套数据库,一个为主数据库,一个为更新数据库,其中更新数据库作为保存近N(1,2,3)天更新数据,写入后放进***,并增加lease及时淘汰不常访问的记录,同时后台定期合并到主数据库。
3.数据读取时,***->更新数据库->主数据库
4.主数据库中将元信息(如用户信息)与文章实际内容分开,对每篇文章内容计算热度权重,做主键之一,然后分表。

发表于 2015-05-23 00:59:05 回复(0)
可以设置缓存
发表于 2015-05-20 20:07:57 回复(0)
web->backend->*** & database

博客系统的特点:1.热点数据很明显(精华文章,推荐文章,最新博文) 2.文章的修改频率底 3. 时效性很明显 
数据库:按照题目的意思,用户平均文章数100,根据用户做文章的水平切分是比较好的选择,加上不同板块,标签什么的,切分维度选择比较多。需要有多个集群来存储不同板块的数据,切分是为了保证文章的读取速度。至于每个表存储多少文章数量,取决于文章的最大限制,是否将长博文和短博文分离。切分的程度决定了上层应用的复杂度。
系统:第一个问题就是热点数据,缓存可以一定程度上解决热点数据的读取问题,同时也要面对热点数据如何维护,如何避免缓存失效等问题。面临数据库层的拆分,系统层需要解决快速定位,聚合,分离读写等问题。

发表于 2015-01-04 17:10:46 回复(0)