美文网首页
分布式数据访问层

分布式数据访问层

作者: holysu | 来源:发表于2017-03-20 00:01 被阅读0次

一、 数据库从单击到分布式会面临的问题

思考方向: 单机的CRUD扩展到多机后面临的问题、原来依赖的单机数据库特性不在可用(自增id、事务处理...)
如:基本的sql语句select <columnName1>, <columnName2>.. from <tablename> where xx join <tablename2> on <condition> order by yy 其逻辑表分布在不同数据库不同表的时候,需要进行的各种处理

  1. 垂直、水平拆分
    a. 单机的ACID被打破,事务难搞
    b. join操作变得比较困难、外键关联
    c. 单库的自增序列生成唯一ID需要自己实现
    d. 逻辑表的查询需要跨库
  2. CAP / Base
    a. CAP
    i. Consistency 一致性
    ii. Availability 可用性
    iii. Partition-Tolerance 分区容忍性
    b. Base模型
    i. Basically Available 基本可用,允许分区失败
    ii. Soft state 软状态,接受一段时间的状态不同步
    iii. Eventally consistent 最终一致,保证最终数据的状态是一致的
  3. 分表分库后的查询
    a. 跨库join
    i. 把数据库的join分成多次数据库操作,然后在应用层合并数据
    ii. 数据冗余,把原来需要join的操作变成单表查询,需要结合具体的业务场景做冗余处理
    iii. 借助外部系统,如搜索引擎
    b. 排序、函数处理、聚合操作
    c. 非排序分页: 等比/等步长获取
    d. 排序后分页: 需要获取2倍页号的数据量

二、数据访问层的设计

分布式数据库中间件操作执行流程

主要围绕上图所示的6个步骤,除了SQL执行外其他5个步骤分布式数据访问层介入

  1. sql解析得到sql中关键信息,如表名、字段、where条件等
  2. 然后根据参数和规则处理确定目标数据源连接
    a. 固定hash算法
    b. 一致性hash算法 + 虚拟节点
    c. 映射表与规则自定义计算
  3. 一般原则是分库后尽可能避免跨库查询, 但是在必要的时候还是需要进行sql改写的,比如一些聚合查询分表后的逻辑表
  4. 数据源选择, 一写多读 / 多写多读的情况选择哪个数据库连接
  5. Sql执行
  6. 结果集返回并合并

后续深入:

  1. 分布式事务 XA、Paxos协议
  2. 使用并研究ctrip dal的实现思路
  3. 一致性hash算法实现
  4. java开源分布式数据中间件
  5. 数据库拆分案例,拆分方式以及灰度过渡处理方式

相关文章

  • 16、主从复制

    前言 大型网站为了软解大量的并发访问,除了在网站实现分布式负载均衡,远远不够。到了数据业务层、数据访问层,如果还是...

  • 分布式数据访问层

    一、 数据库从单击到分布式会面临的问题 思考方向: 单机的CRUD扩展到多机后面临的问题、原来依赖的单机数据库特性...

  • 分布式数据访问层

    关键词:拆分、事务、2PC、CAP、BASE、Paxos ZERO 持续更新 请关注:https://zorke...

  • Mysql 读写分离

    背景知识 大型网站为了软解大量的并发访问,在网站实现分布式负载均衡,但远远不够。到了数据业务层、数据访问层,如果还...

  • 主从配置,读写分离是MySQL性能优化重点

    有些大型网站为了软解大量的并发访问,除了在网站实现分布式负载均衡,远远不够。到了数据业务层、数据访问层,如果还是传...

  • MyBatis3 + Spring 实现数据库读写分离

    MyBatis3 + Spring 实现数据库读写分离 参考资料 MTDDL——美团点评分布式数据访问层中间件

  • 数据访问层

    前言 实际开发过程中,我们对数据库大多都是CRUD(增删改查),就普通的单表来说,大多sql语句都是类似的,我们需...

  • 数据访问层

    URUDORM分库分表屏蔽底层存储差异性

  • 三层架构之数据访问层

    你好,是我琉忆。 今天我们讲一讲三层架构中的数据访问层 1、数据访问层的介绍 数据访问层(Data Access ...

  • Hibernate框架

    Hibernate:基于持久层的框架(数据访问层使用) Service业务逻辑层 Dao 数据访问层 ORM(Ob...

网友评论

      本文标题:分布式数据访问层

      本文链接:https://www.haomeiwen.com/subject/zpdbwttx.html