mysql连接器

使用该连接器的模板API

连接器简介

1. 背景与问题

1.1 MySQL是什么

    MySQL官网地址是: https://www.mysql.com/  ,其特点如下:

 

  • MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。
  • MySQL是一种关系数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。
  • MySQL所使用的 SQL 语言是用于访问数据库的最常用标准化语言。MySQL 软件采用了双授权政策,分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择 MySQL 作为网站数据库。

1.2 常规使用流程

    我们在使用各种语言的驱动连接MySQL时,常规流程如下图所示:

 

虽然最终数据库是同一个,但每种语言都有对应的驱动程序,操作方式不尽相同。

1.3 面临的问题

1.3.1 开发者门槛高,有一定的学习曲线,对于快速迭代、验证型项目成本较高

目前越来越多的人参与到软件开发中,项目规模可能不大,但几乎都会涉及到数据库应用,而关系数据库MySQL就是一个非常好的选择。这些大量的开发者并不会太关心数据库原理、数据库范式等底层核心内容,他们关心的是怎么样高效地完成【增删查改】操作,越简单完成业务越好,让机器去做生活中的重复无趣操作从而提升效率。

很多项目中用户数不多,甚至只有1个(自用型),这样的情况下要求入门开发者去了解数据库原理、驱动操作就有点为难,毕竟开发出来的软件服务的是业务而不是技术。这种时候开发速度比成熟度、性能更为重要,因为成熟度和性能是可以不断优化提升的,而产品的上线时间是一个DeadLine。

1.3.2 驱动的版本管理

当项目需要连接多个版本的MySQL时(比如老系统改造,系统二次开发),此问题尤为严重,驱动包的冲突会导致开发管理成本上升。

1.3.3 多项目、多语言环境下交互复杂,代码重复率高,维护困难

 

2.解决方案

 

  • 通过易源MySQL连接器,您可以用HTTP接口操作您自己的MySQL数据库,比如增删查改等CRUD操作,也可以说您的数据库被“HTTP”化了。
  • 易源已经将一些常见SQL操作封装成API接入点,通过几步简单的配置操作,就可以在代码中通过HTTP请求使用MySQL数据库。
  • 您可以轻松摆脱语言、驱动、框架的约束,只用简单的写几句代码就可以实现对数据库的操作。
  • 在实际使用时,调用者只需要关心调用地址、输入参数、输出参数 三个元素,具体实现细节不需要关注,比如后端是MySQL还是MongoDB,是txt还是csv,只要这个后端实现了同样的调用地址、输入参数、输出参数三元素即可。这样的特性非常适合于前后端分离开发。

 

 

通常稍大的软件产品,都会划分为多个子项目(比如用户使用的前端系统、后台管理系统等)。

如果使用易源平台操作MySQL,其流程如下图所示:





易源的MySQL连接器将MySQL数据库转化为通用数据源,并可以使用http接口进行全部数据库操作,包括但不限于增、删、查、改方法。

2.1 创建表

通过HTTP接口创建表,详情操作请点此查看。

2.2 查看所有表

通过HTTP接口查看所有的数据表,详情操作请点此查看。

2.3 插入记录

通过HTTP接口插入一条记录,详情操作请点此查看。

2.4 更新记录

通过HTTP接口更新多条记录,详情操作请点此查看。

2.5 删除记录

通过HTTP接口删除记录,详情操作请点此查看。

2.6 查询列表

通过HTTP接口查询数据列表,最高返回1000条记录,详情操作请点此查看。

2.7 查询分页

通过HTTP接口查询分页记录,返回结构包含当前页、总页数、总记录数、当前页数据列表。分页虽不难,但历来都是繁琐操作(如果自己封装)使用易源的HTTP操作可以瞬间让您的程序具备分页查询功能。详情操作请点此查看。

2.8 自定义SQL语句

如果我们需要用到复杂的SQL语句,在易源可以预先设置。比如说一段100行的复杂SQL代码,里面嵌入变量,这些变量从客户端用HTTP传入。SQL语句和变量您都可以自由定制。您可以使用本功能完成几乎所有的MySQL操作。详情操作请点此查看。

3. 使用案例

 

 

4. 性能问题

以前是直连MySQL,现在是通过易源进行中转,您可能会对这个流程的性能提出质疑,回答如下:

 

  • 不考虑网络因素,在同一个局域网下进行压力测试,直连时程序做充分优化,易源中转比直连方式的多消耗时间<=1ms。网站或APP的响应时间在100ms-1000ms之间是可以接受的,也就是易源增加的时间是整体流程的0.01至0.001的比率,几乎可以忽略不计。这点开销,就像开车从北京到西安有1000公里,中间因为修路多走了1公里,总共由1000到1001公里,多走这1公里对全局可以忽略不计。
  • 程序直连的性能取决于数据库和客户端的优化。比如客户端程序是否使用连接池、连接参数是怎么样的,都会对测试性能产生不小的影响。而在很多情况下,客户端的程序是缺乏优化的,甚至很多程序根本不使用连接池。使用易源转发就不存在这个问题,易源默认连接池,并会动态根据繁忙情况动态调整参数,因此很多时候使用易源还会带来更高的性能。

总结:您不需要为性能担忧,对于优化得当的老鸟来说易源会慢千分之一,但对于普通开发者来说易源可能更快。

 

5. 安全问题

 

 

 

 

 

连接器功能(使用场景)

 
比起传统的API对接方式,使用连接器真正让程序员实现了配置化开发,程序员只用编写很少很少的代码,就能对接MySQL的API。
通过连接器的节点配置,在很大程度上实现了解耦合,在一定程度上实现了节点组件化。
通过连接器内嵌入的Lua代码转换功能,用户可以通过编写简单的Lua脚本在I/O参数、请求节点的选择上实现了AOP
借助showapi.com强大的日志系统,用户可以查看近期详细的调用日志,包括每日次的请求参数和返回参数,大大方便了Bug排查、问题回溯。
 
举个栗子:
 
一位名叫小J的Java程序员在一个新的项目中要用到一个新的Mysql数据库,JDBC、Hibernate或者Mybatis肯定要配置一个......
嗯,这是个大工程。
 
但通过showapi的连接器他只需创建并绑定数据源就可以开始调用了,一行代码都不用写的。
 
随着项目的增大,可能会有新的MySQL数据库加入,这时小J就得去改配置文件,并重启项目。
 
但在showapi的连接器里,一个新的数据库只是一个新的数据源, 只需要创建并绑定数据源就OK了。
 
好不容易把新的数据库加入项目,小J发现项目要用到的数据在老库中的表A中有一部分,在新库的表B中也有一部分,这时小J有两种选择,两表数据相互补充,或者通过代码控制使用哪个库。
 
但在showapi的连接器中,我们可以通过一个API配置多个节点的方法很快的解决这个问题,小J可以通过不同的连接器连接不同的数据源。在调用时还可以通过IP_hash、轮询、权重或者Lua脚本控制请求被发到哪个数据,在某个节点维护或故障时,可以通过对连接器环境变量的修改,实时下线问题节点。
 
小J在将表A的数据导入表B时发现这两个张表看似一样,但实际上有一部分字段的数据类型、字段名在两张表中是不一样的,这对小J这个数据库新手来说是个不小的麻烦,他只能在导数据时对这些数据进行修改。
 
但在shwoapi的连接器中,通过配置输出转发字段映射就可以统一字段名,非常方便。
 
如果小J发现昨天23:21分的一个请求有点问题,怎么办?如果没有日志系统只能去liunx中查找输出日志了。
 
但在showapi只要通过网站后台的查看调用日志功能,就能详细查询近期的调用日志,showapi还支持日志推送功能,用户不用登录showapi.com就能在自己的系统中看到调用日志。