截止目前,元数据的工作完成了一些阶段性的内容,当然还有非常多的需要细化的东西,从优先级层面来说,可以暂时放一放。
现在迫切需要的是一些能用起来的功能,比如结合业务场景的基础操作,类似初始化,备份恢复等等。实在是太基础了,以至于自己都有些没太上心,结果慢慢发现进度拖下来了。所以最近还得多加加班,把这些进度提一提。
基础的工作其实不是空白,想基本的SQL查询,SQL执行计划之类的,功能其实很早就做了。只是还没有铺开来用,另外就是还有一些系统化的东西没到位,比如脚本管理。
比如下面的元数据部分就是平台后面要扩展支持的基础,这个部分花了一些时间做基础构建和实现。
脚本管理的内容之前写过两篇,供参考。
web脚本编辑器ACE Editor 在这个阶段,也收获了一些经验,所以准备把这部分的内容做扎实一些,同时有些内容会延伸一下。
我会从脚本管理和工具管理两个大的维度来说。
脚本管理是基础功能,需要实现的功能就如同任务调度一样,是一个通用的入口
先说一些边界,脚本管理中的脚本是不能直接执行的,所有的任务都是不支持命令,最细粒度就是脚本。
从功能划分上,大体有下面的几个方面:
1)脚本内容管理:Python,shell,Java,SQL等
2)执行方式:本地和远程(服务器端执行脚本,客户端,中控端)
3)参数管理:脚本配置支持多个参数,对参数个数和参数格式需要全面支持。
4)脚本需要一个基本的介绍和用法说明
5)需要制定脚本的规范和标准,对命名规范和脚本内容做一个基本的审核
6)设定脚本域的概念,即脚本是全局可用,还是只限于特定的需求可用
7)脚本编辑器:ACE Editor, Monca都是不错的选择,需要简单调研和对比一下,找到一个最适合的方案,从我的角度来看,收到VS code的影响,我更倾向于是Monca了。
工具管理是在脚本管理的基础上的扩展,脚本管理其实就类似于积木的转配和组合,更希望是做成一个工具箱的方式。可以做各种接入和适配,然后根据我们的需求在指定的场景中完成指定的任务。
1.接入层,需要首先考虑接入层的配置和实现,比如我要连接到系统,连接到数据库,这就是两个接入类型,对于每个类型都有不同的实现。
1)连接系统,对于不同的实现方式,都期望做成一个接入层,类似于工厂模式。
Paramiko
Ansible
websocket
2)连接到数据库,不同的数据库,只要我输入指定的信息,就返回给我一个数据库连接。
Pymysql
Mysqldb
redis
2.系统层
系统的调用,比如查看资源状态,可以使用命令的方式或者第三方库的方式,比如psutil的使用,或者用脚本来实现一些复杂的定制工作等。
3.数据库层
数据库层级的调用,比如SQL语句,举一个例子,比如查看数据库的基本信息,那么无论是shell,Python都是接入层的实现,我们在这里关注的是SQL层的逻辑。
这里主要是一些基本的操作,比如查看数据库的基本信息,得到DDL信息,得到从库的信息等等,都是通过脚本(这里的主要核心就是SQL逻辑)的方式来实现。