数据访问

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

由后端来决定返回多少,而不是前端指定。

数据库军规

数据库迁移

微服务的拆分