背景

我们可以考虑设计一套 SQL 指标。

不过SQL指标个人感觉设计的比较好的就是类似于 grafana 这种,可以内置支持常见的数据源最好。

拓展阅读

grafana stack grafana-01-The open and composable observability and data visualization platform.

整体思路

核心能力

基础指标信息的管理。

我们开始可以实现最基础的 jdbc 类型的数据库支持。

是一套语法,还是方言支持?

最开始其实想通过一套标准的 SQL 语法,实现常见的数据源支持。

比如 Apache Calcite

这种大一统的理念其实挺好的,不过实际还是会发现,不同的 SQL 方言差别太大,这种想通过一种标准,来解决统一问题,兼容效果其实比较差。

最后还是考虑使用具体的方言,这样比较灵活一些。

更多类型的支持

后续可以根据用户的需求,引入新的数据源支持:

mysql/oracle/sql server

redis/memcache

es

mongodb

时序数据库 vm

cmdb 是一切的基石

当然,数据源有两种维护方式,一种是让用户手动配置。

另一种是将应用所有关联的数据源信息,全部放到 cmdb 中管理。

当然,这其实是一个非常难得事情。

需要长久地维护,而且必须保证数据的正确性。

权限

方便按照应用等,控制数据源的权限。

便捷

用户选择应用后,可以联动出对应的数据库信息。

一些设计细节

偏移量

执行的时候,允许指定对应的偏移量。

方便用户比如今天执行昨天的数据

下次调度的时间

让用户可以自己选择。

小结

这种要结合自身的业务,其实 jdbc 可以解决大部分的问题。

另外的可以结合多种数据源一起来解决,比如 CAT / 日志 / 普米 / ZABBIX 等等。

参考资料