博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
网站平台架构演变史(四) - 水平拆分的查询
阅读量:7082 次
发布时间:2019-06-28

本文共 759 字,大约阅读时间需要 2 分钟。

之前在讲表拆分的时候氛围垂直拆分和水平拆分

垂直拆分的查询其实不难,就是从单表变为了多表,而大部分情况下只是对主表的查询多,从表的查询会很少用到,这样的情况下关联查询不需要太多的考虑

水平拆分之前讲了大数据量的情况下根据历史时间来查询,那么今天来说另外一种,还有一只是根据主键id取模后根据这样的规则把数据均匀分布到不同的数据库表中,一般可以以2、5、10来做,那么分页的时候怎么做,用户在查询的时候是不知道你后台怎么查的,他只关心数据的显示,比如我分页显示10条,那么在后台进去查询的时候需要将"10/数据库数量=实际对应每页查询数",比如就用5好了,所有数据都是平均分布到5个不同的数据库中,那么10/5=2,分页的时候需要对这5个数据库查询,那么就是 ' limt row, 2 ',最后合并5次查询的数据来反馈给前端显示。

这是实时的做法,如果不实时,采用缓存或者搜索引擎的时候,可以分别查询一定的数据量来展示。举个栗子,哪怕分页有100多页,一般用户只看前10也,或者20页的数据,那就用20页,每页显示20条数据,20X20/5=80,那么分别同步5个库的80条数据,放入缓存或者搜索引擎中,来展示给用户,这样用户在做查询的时候就非常快,极少数情况下载20页后的数据再去数据库中查。

也许有人会问条件查询、以及排序,如果直接查询数据库的话呢么进行排序会比较难做,甚至不好做,而是用搜索引擎就能很好的解决这个问题。

其实还有一点没讲,会再写1-2篇来结束这次的架构内邀会的总结。近期实在很忙,手上两个产品都要做,抽空总结,公众号更新频率下降了十分抱歉;其中一个产品预期7月底上线,期待与大家见面!

转载于:https://www.cnblogs.com/leechenxiang/p/6834502.html

你可能感兴趣的文章
聊聊跨域
查看>>
Windows 下使用 MinGW 编译安装 (G)vim 添加 Lua 等编程语言支持
查看>>
Objective-C基本数据类型
查看>>
利用localStorage本地储存js文件
查看>>
[聊一聊系列]聊一聊百度移动端首页前端速度那些事儿
查看>>
shell script编程小结——附带实例
查看>>
在 Laravel 项目中使用 Glup 之 Laravel-Elixir
查看>>
Nginx、CGI、FastCGI、PHP-CGI、PHP-FPM处理流程
查看>>
Tornado 4.3文档翻译: web框架-RequestHandler和Application 类
查看>>
python之itertools的排列组合相关
查看>>
Docker 架构私有云的机遇和挑战
查看>>
從<琅琊榜>學 Redux
查看>>
版本控制总结
查看>>
数字证书、公私钥小记
查看>>
客户端开发流程
查看>>
[Algo] Install Dependencies 安装依赖
查看>>
FDA批准首个治疗儿童多动症的的医疗器械
查看>>
Oracle 数据库重放(Database Replay)---样例
查看>>
GPS定位系统二次开发为什么一定要选择专业的
查看>>
2019年面对全新的DDoS攻击企业需做好哪些防护措施? ...
查看>>