技术28期:文末福利 | 一文看懂MYCAT数据库服务器
软件工程领域内所有的系统
都应该从这两个问题开始
“这是什么?“
“为什么要有这个?”
那么第一个问题——
什么是Mycat?
众所周知,系统开发中,数据库是非常重要的一个点。除了程序的本身的优化,如:SQL语句优化、代码优化,数据库的处理本身优化也是非常重要的。Mycat是一个广受好评的数据库中间件,已经在很多产品上进行使用了。小普希望通过这篇文章的介绍,大家能学会Mycat的使用。
小普看来,Mycat就是一个数据库服务器,一个中间代理,可以进行多个数据库中的表进行管理,还有sql语句操作,通过标签属性进行多个表操作。
“面对问题,拿出打破砂锅问到底的精神,先思考一番,给出自己的假设,不要着急地去找度娘,谷歌。思考过后,带着你的推断或者答案,大胆地去搜索吧!去看看别人的见解,去看看官方的描述!”
为什么要有这个——业务使用场景
1. 处理系统
小普认为现在各个管理系统层出不穷,各有千秋,但是无论怎么运作,当系统达到一个阈值的时候就要面对一个常见的问题就是海量数据的读写问题,包括一系列的数据暂存和事物数据的并发提交问题。我们按照不同的场景分为两种类型:联机事务处理(OLTP)和联机分析处理(OLAP)。
联机事务处理(OLTP)称为面向交易的处理系统,其基本特征是原始数据可以立即传送到计算中心进行处理,并在很短的时间内给出处理结果。
联机分析处理(OLAP)是指通过多维的方式对数据进行分析、查询和报表,可以同数据挖掘工具、统计分析工具配合使用,增强决策分析功能。
2. 关系型数据库和 NoSQL 数据库
针对上面两类系统有多种技术实现方案,存储部分的数据库主要分为两大类:关系型数据库与 NoSQL数据库。
关系型数据库,是建立在关系模型基础上的数据库,其借助于集合代数等数学概念和方法来处理数据库中的数据。例如主流的 oracle、DB2、MS SQL Server 和 mysql 都属于这类传统数据库。
NoSQL数据库,全称为 Not Only SQL,意思就是适用关系型数据库的时候就使用关系型数据库,不适用的时候也没有必要非使用关系型数据库不可,可以考虑使用更加合适的数据存储。主要分为临时性键值存储(memcached、Redis)、永久性键值存储(ROMA、Redis)、面向文档的数据库(MongoDB、CouchDB)、 面向列的数据库(Cassandra、HBase),每种 NoSQL 都有其特有的使用场景及优点。
概述关系,简单来说,关系型数据库就是重点在关系上,彼此之间的数据关系紧密联系;而NoSQL重点在于数据的储存,面向数据本身。
解决思路
当你明白传统关系型数据库存在先天弊端,但是NoSQL作为补充又无法替代时,这时就要着手于关系的最大的问题无法扩展和单机性能缺陷,因此借用第三方来做处理,这就可以从数据处理起始处理开始。
1. 什么是数据切分
其实数据切分简单来说就是指通过某种特定的条件,将我们存放在同一个数据库中的数据分散存放到多个数据库(主机)上面,以达到分散单台设备负载的效果。
2. 有什么类型
数据的切分(Sharding)根据其切分规则的类型,可以分为两种切分模式。一种是垂直(纵向)切分,另外一种是水平(横向)切分。直接上图:
简单来说,垂直切分就是将一张表根据数据库对应,通过配置架构分配到不同的库中,这就是分库原理。
而水平切分则是根据每一张表(业务对象),存在的公共特征属性(字段),根据一定的规则进行多表分出,这就是分表原理。
学习MySQL数据库必看:电子书下载传送门
在线SQL练习:SELECT basics/zh
SQL简易教程:SQL 教程
小普持续推出有价值的文章,关注“普适极客”👇
♥一起在技术研发的最前沿共同成长!♥