数据访问架构
数据访问
DAO : 设计的初衷是为了尽快的获取数据,屏蔽SQL为主要目标
- 表与类的映射
- 属性与成员的映射
- SQL与函数的映射
数据访问层: 设计的初衷是为了解决分库分表,屏蔽访问实例为主要目标,中间可以增加cache,上层不需要知道是从DB里面取数据,还是从cache里面取数据
- web-server层可以通过rpc接口,像调用本地函数一样调用远端的数据
- 数据服务层,将缓存、分库分表、读写分离这样的复杂性事件放在一起处理
互联网分层架构的本质,是数据的移动
同时要获取很多分数据的时候怎么办
cache的应用
实用的数据库访问小知识
http://zhuanlan.51cto.com/art/201707/545580.htm
多对多业务的实践,好友关系链的场景
http://zhuanlan.51cto.com/art/201708/547769.htm
一对多业务的实践,例如,一个人拥有多张猫卡
http://zhuanlan.51cto.com/art/201707/544573.htm
分库基因的选取。一般都是2的n次方,方便向下兼容
分布式ID生成器
http://zhuanlan.51cto.com/art/201707/543851.htm
UID 对应 UNAME
如果是根据UID来分表,那么通过UNAME查询的时候,怎么命中呢?
uid = f(uname) 通过uname能够反向找到uid,前提的是uname肯定不能变
跨库分页的问题
据说是业界的难题。
http://zhuanlan.51cto.com/art/201702/533103.htm
由后端来决定返回多少,而不是前端指定。
数据库军规
- http://zhuanlan.51cto.com/art/201702/531410.htm
- http://zhuanlan.51cto.com/art/201702/531364.htm
- http://zhuanlan.51cto.com/art/201702/531490.htm
数据库迁移
- http://zhuanlan.51cto.com/art/201702/530555.htm
- 新增属性的方案:http://zhuanlan.51cto.com/art/201612/525140.htm