1.应用场景

涉及到数据指标复用场景,都可以使用指标系统,
目前整体采用数据仓库设计思路,通过SQL或脚本输入,输出API。
已经应用于大屏、简报、门户组件等开发。

2.技术架构

3.对接规范

3.1 ETL系统支持写入数据源

类型 数据源 Reader(读) Writer(写)
RDBMS 关系型数据库 MySQL
Oracle
OceanBase
SQLServer
PostgreSQL
DRDS
阿里云数仓数据存储 ODPS
ADS
OSS
OCS
NoSQL数据存储 OTS
Hbase0.94
Hbase1.1
Phoenix4.x
Phoenix5.x
MongoDB
Hive
Cassandra
无结构化数据存储 TxtFile
FTP
HDFS
Elasticsearch
时间序列数据库 OpenTSDB
TSDB

3.2 指标系统支持存储数据库

存储类型 版本 说明
mysql 8.X
oracle .X
postgres .X
sqlserver .X
db2 .X
clickHouse .X
mongodb .X

3.2 指标系统编写脚本规范

支持SQL和groovy语法

SQL基本语法:

//统计
return db.count("select count(1) from user");

//单条记录查询,返回对象
return db.findOne("select * from user where id = #{id}");

//多条记录查询,返回LIST
return db.find("select * from user");

//插入,返回自增ID
return db.insert("insert into user(name) values(#{name})");

//更新,返回更新数量
return db.update("update user set name=#{name} where id = #{id}");

//删除,返回移除数量
return db.remove("delete from user where id = #{id}");

//指定数据源
return db.findOne("select * from user where id = #{id}","mysql");

//自动分页
return db.pager("select * from user")

//手动分页
total = db.count("select count(1) from user");
list = db.find("select * from user limit #{index},#{pageSize}");
return Pager.build(total,list);

//缓存操作-1.默认使用linkhashmap lru实现,单位毫秒。2.如需自定义集成redis等分布式缓存参考实现类IDBCache。3.缓存只支持.find() 方法
db.cache("cache-key1",3000).find("select * from user limit 1");
db.cacheClear("cache-key1");

//数据库批量操作
def params = [
    ["name":"a","sex":1],
    ["name":"b","sex":2]
]
sql = '''sql
insert into user(name,sex) values(:name,:sex)
'''
db.batchUpdate(sql,params)

参数来源于HTTP入参,和执行脚本的上下文,当变量名重复时,优先上下文变量,就近获取

#{varName} :自动识别参数类型,int,string,list进行处理
${varName} :原始状态输出,会导致sql注入问题,用于入参为关键字
?{condition,express} :对condition条件进行判断,如果值为true,则将express部分保留,否则丢弃。condition值为, ‘ ‘ , NULL , [ ] 空时,将得到false。condition部份允许接收完整的groovy语法

3.3 指标系统接口输出规范

{
    "code":"200",
    "action":"/open/test/2022022502",
    "msg":"succeed",
    "data":[

    ]
}

例子:

{
    "code":"200",
    "action":"/open/test/2022022502",
    "msg":"succeed",
    "data":[
        {
            "name":"1",
            "parkId":"1"
        }
    ]
}
文档更新时间: 2022-05-19 17:20   作者:曾小虎