Spider引擎(解决分库分表的尴尬)

栏目: 编程工具 · 发布时间: 6年前

内容简介:场景1:有两个分布在不通实例上的多张不通的表,想要通过某个字段关联,做一个统计,或者想将分布在不同实例的表,合并到一个实例中来做一些查询。场景2:由于数据库容量的瓶颈或者是由于数据库访问性能的瓶颈,将一某一个大库、大表或者访问量非常大的表进行拆分,然后分布到不通的实例中。简单来说就是水平、垂直拆分的场景

场景假设

场景1:有两个分布在不通实例上的多张不通的表,想要通过某个字段关联,做一个统计,或者想将分布在不同实例的表,合并到一个实例中来做一些查询。

场景2:由于数据库容量的瓶颈或者是由于数据库访问性能的瓶颈,将一某一个大库、大表或者访问量非常大的表进行拆分,然后分布到不通的实例中。

简单来说就是水平、垂直拆分的场景

一、Spider引擎简介

1、什么是Spider引擎

Spider引擎是一个内置的支持数据分片特性的存储引擎,支持分区和XA事务,该引擎可以在服务器上建立和远程数据库表之间的链接,操作起来就像操作本地的表一样。并且对后台数据库的引擎没有任何限制。
目前spider引擎已经集成到了MariaDB中。

2、Spider架构图

Spider引擎(解决分库分表的尴尬)

3、Spider的优劣对比

优势分析
1.对业务完全透明,业务层不需要做任何的修改;对于分库和分表的操作业务层不需要关系,只需要通过spider作为代理入口,真实数据存储在哪台设备上,spider代理会自动进行路由。
2.方便横向扩展,能解决单台 mysql 的性能和存储瓶颈3
3.对后端的数据库引擎没有限制
4.实现垂直拆分和水平拆分功能,针对分表支持此哈希,范围,列表等算法
5.完全兼容mysql协议

劣势分析
1.Spider本身不支持缓存和全文搜索,只能在后端数据库实现全文搜索
2.Spider无法备份数据,只能对后端数据库做物理备份
3.Spider本身是单点的,无法做灾备,只能通过VIP方式自己实现啊
4.由于业务与数据库之间多了一层spider,在性能上多少会有些损耗

二、Spider的使用场景解析

1、垂直分表的场景和解析

Spider引擎(解决分库分表的尴尬)

从上图可以看出,spider后面接4台DB server,可以将不通功能的表分布到后端不通的DB server中,比如user_info的表专门存放在HostA中,user_msg表存放在了HostB中,user_detail表存放在了HostC中,user_log表存放在了HostD中。在图中的红色部分,当我们执行红色部分的 SQL 的时候,spider会通过user_info表的映射关系以及HostA的IP映射关系,将查询user_info表的请求都转发到HostA上,HostA查询完成后再将结果发给spider服务器,spider再转发给客户端

2、水平分表的场景和解析

Spider引擎(解决分库分表的尴尬)

spider支持多种水平分表的模式,目前支持hash分表(hash)、范围分表(range)、列表分表(list),我这里用range来说明水平分表的工作原理。从上图中可以看出spider对user_info表针对id进行了分区,将0~100000的记录存储在了HostA,100000~200000的记录存储在了HostB,200000~300000的记录存储在了HostC,300000~400000的记录存储在了HostD。当用户访问user_info的某条或者多条记录的时候,spider会根据分区的情况,对相关的记录落在某台或者多台DB server上,再进行转发。比如select * from user_info where id=1这个SQL,spider在收到这个请求后,会跟进分区情况选择对应的DB server进行转发。这里会将该请求转发到HostA中。HostA处理完成后,再将结果返回给spider server,spider再将结果转发给发起请求的客户端。

三、Spider引擎实战

1、安装

从spider 10.0.0.4版本开始,spider引擎就集成到了MariaDB中,集成后安装就非常的简单,安装步骤如下:

1、安装mariaDB到spider server以及后端多台DB server上;

    安装方法非常简单,请参考:https://mariadb.com/kb/en/mariadb/getting-installing-and-upgrading-mariadb/

2、安装spider引擎到spider server上(后端的DB server不需要安装spider引擎)

    mysql -uroot -p < install_spider.sql
    
    或者登录mysql后执行
    
    source /path/install_spider.sql
    
    备注:install_spider.sql在share目录下面
    
    这个命令所做的事情如下:
    
    创建spider相关的系统表
    
    spider_link_failed_log
    
    spider_link_mon_servers
    
    spider_tables
    
    spider_xa
    
    spider_xa_failed_log
    
    spider_xa_member
    
    创建spider相关的表结构
    
    加载spider引擎

2、使用

未完待续~~~

原文~


以上所述就是小编给大家介绍的《Spider引擎(解决分库分表的尴尬)》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

图形程序开发人员指南

图形程序开发人员指南

Michael Abrash / 前导工作室 / 机械工业出版社 / 1998 / 128

Michael Abrash's classic Graphics Programming Black Book is a compilation of Michael's previous writings on assembly language and graphics programming (including from his "Graphics Programming" column......一起来看看 《图形程序开发人员指南》 这本书的介绍吧!

SHA 加密
SHA 加密

SHA 加密工具

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具