# 数据中心技术对接文档 存储数据中心技术对接相关的各种文档 # paas后管对接starrocks指南 ### 1. 架构 [![数据中心对接starrocks架构图.jpg](https://book.e-buy.com/uploads/images/gallery/2023-05/scaled-1680-/starrocks.jpg)](https://book.e-buy.com/uploads/images/gallery/2023-05/starrocks.jpg) 所有后管切换starrocks后端开发不需要改任何代码,通过透传到paas-micro-datacenter-admin直接查询数据。后端开发人员只需要编写对应的数据查询sql,配置到数据中心数据库中。 ### 2. 功能介绍 #### 2.1 配置表介绍 1. data_search_interface 数据查询接口表(主表) [![data_search_interface](https://book.e-buy.com/uploads/images/gallery/2023-05/scaled-1680-/image-1684203086331.png)](https://book.e-buy.com/uploads/images/gallery/2023-05/image-1684203086331.png) 2. data_search_item 数据查询明细子表(明细查询中存在子查询时需要) [![data_search_item](https://book.e-buy.com/uploads/images/gallery/2023-05/scaled-1680-/image-1684203146477.png)](https://book.e-buy.com/uploads/images/gallery/2023-05/image-1684203146477.png) #### 2.2 配置说明 主表配置说明 ``` sql select t.ticket_id, t.ticket_name, t.brand_id, t.brand_name from paas_micro_ecoupon.ecoupon_ticket t join paas_micro_ecoupon.ecoupon_sale_channel s on t.sale_channel_id = s.sale_channel_id where t.sale_channel_id > @*saleChannelId and ( t.brand_id = @brandIds_0 or t.brand_id = @brandIds_1 ) and t.ticket_name like @ticketName ``` [![sql配置说明](https://book.e-buy.com/uploads/images/gallery/2023-05/scaled-1680-/image-1684204266929.png)](https://book.e-buy.com/uploads/images/gallery/2023-05/image-1684204266929.png) 说明: 1. 多表查询直接使用join,要非常清楚使用inner join还是 left join。inner join 是两边数据都存在才会有记录,left join只要左表存在就会有记录。 2. 所有编写的sql中表名都需要加上库名,例如:paas_micro_ecoupon.ebuy_ecoupon_code。 3. sql编写语法与nutz语法一致,唯独就是如果希望条件里面的参数需要必填 需要使用@*。 4. 所有sql中where后面的条件参数值获取流程为:首先判断请求参数content中是否有searchConditions,如果有这个对象,所有参数从这个对象中获取,如果searchConditions这个对象不存在,直接从content中获取。注意:只要请求参数中有searchConditions,所有参数都会从searchConditions中获取,所以参数不能一部分放到searchConditions,一部分直接放到content中。未找到视为参数未传输,如果是必填参数将会报错。 5. 如果条件参数是数组,sql中使用”@参数名_数组索引”,参见上面截图说明。 6. 数据配置中的intf_action为sql查询的唯一标识,建议与原来es查询时的action值保持一致,唯一索引不能重复。 7. 当sql中条件没有传参数值,系统会自动将整个条件替换为true。 8. appId参数,如果sql中有app_id = @appId,appId参数不用显示传值,系统会自动从RpcRequest中获取appId 9. 主表可以用来配置列表查询sql,也可以配置明细查询sql,区别在于后续调用的查询接口不同,同时明细sql会自动加上“limit 1”。 10. sql条件不支持between and,支持in,in的书写格式为 "brandId in (@brandId)"。 11. 配置的sql会自动刷新,测试环境为1分钟。 12. 所有配置的sql请先将sql格式化后再压缩后再存入数据库,格式化后@*中间会产生空格需要手动删除空格,附sql压缩及格式化工具地址:https://www.toolscat.com/format/sql
[![](https://book.e-buy.com/uploads/images/gallery/2023-12/scaled-1680-/image-1702976743610.png)](https://book.e-buy.com/uploads/images/gallery/2023-12/image-1702976743610.png) 上面sql请求及返回事例: ``` json { "uuid": "20230516-nzumknyqpmirkvmjodmpgbkvlkhlwl53", "appId": "7458433922654696", "action": "_dataSearch", "timestamp": 1680142763, "signType": "sha256", "sign": "2234549905748620", "content": { "pageNumber": 1, "pageSize": 20, "intfAction": "queryEcouponTicket", "saleChannelId": 1, "brandIds": [1458,1148] }, "lang": "zh_CN" } ``` 执行的sql [![执行sql截图](https://book.e-buy.com/uploads/images/gallery/2023-05/scaled-1680-/image-1684204785284.png)](https://book.e-buy.com/uploads/images/gallery/2023-05/image-1684204785284.png) 子表配置说明: 子表是用来配置明细查询时还有子查询的情况,例如券明细查询,除了显示券明细以外还需要显示券的生命周期列表,这时候就可以将券生命周期列表sql配置到子表中,查询的数据会会同主表查询数据一同返回。 事例: ``` sql SELECT * FROM paas_micro_ecoupon.ebuy_ecoupon_code WHERE code_id = @codeId --主表 SELECT * FROM paas_micro_ecoupon.ebuy_ecoupon_code_update WHERE code_id = @codeId --子表 ``` * 上面两条sql中,第一条为主表,@codeId参数会从请求上送的参数中获取值。而第二条sql的codeId参数会从主表查询结果的json中获取值。 * 子表配置是还需要配置一个json_key字段,json_key字段的值会作为key放入返回结果的json中去。 请求参数: ``` json { "uuid": "20230516-ojvfvgcweuelcohkhcfzmfydrytigoru", "appId": "2873492170393134", "action": "_dataDetail", "timestamp": 1684141840, "signType": "sha256", "sign": "2534751707490756", "content": { "codeId": "f729c9e95c654b2f87127e98236e28f0", "intfAction": "getEcouponCodeDetail" }, "lang": "zh_CN" } ``` 返回结果 ``` json { "uuid": "20230516-ojvfvgcweuelcohkhcfzmfydrytigoru", "action": "_dataDetail", "content": { "userInfo": {}, "updateDate": "2023-05-14 08:00:07", "codeSecret": "10032806704005215057", "activateDate": "20230514", "orderId": "51b54e332fd64fc584008cec8d3144bb", "activateInfo": { "activateDate": "2023-05-14 08:00:06", "activateTime": "2023-05-14 08:00:06" }, "codeSearch": "10092305142760000026", "uuid": "20230514-58ae8755c139455892909e98e26278ba", "outerOrderId": "SI6QtqLT", "codeId": "f729c9e95c654b2f87127e98236e28f0", "operationList": [ { "codeId": "f729c9e95c654b2f87127e98236e28f0", "orderId": "51b54e332fd64fc584008cec8d3144bb", "outerOrderId": "SI6QtqLT", "outerOrderItemId": "tA7zoVzl", "ticketId": 10000300000053, "ticketName": "医疗补贴权益券", "brandId": 4049, "brandName": "乐乐茶", "codeMask": "100***5057", "codeSecret": "10032806704005215057", "codeSearch": "10092305142760000026", "useTimes": 1, "verifyTimes": 0, "validStart": "2023-05-14 00:00:00", "validEnd": "2023-06-18 23:59:59", "codeStatus": "00", "activateInfo": { "activateDate": "2023-05-14 08:00:06", "activateTime": "2023-05-14 08:00:06" }, "userInfo": {}, "tenancyId": 58, "tenancyName": "乐乐茶", "partnersAppId": "ebuywha102420109", "status": "0", "createBy": "paas-gateway", "createDate": "2023-05-14 08:00:07", "updateBy": "paas-gateway", "updateDate": "2023-05-14 08:00:07", "appId": "ebuye7eb3a0ac617", "uuid": "20230514-58ae8755c139455892909e98e26278ba", "productId": 3261, "activateDate": "20230514", "activateTime": "20230514080006" } ], "tenancyName": "乐乐茶", "updateBy": "paas-gateway", "outerOrderItemId": "tA7zoVzl", "appId": "ebuye7eb3a0ac617", "createDate": "2023-05-14 08:00:07", "brandName": "乐乐茶", "productId": 3261, "validStart": "2023-05-14 00:00:00", "activateTime": "20230514080006", "codeStatus": "00", "verifyTimes": 0, "tenancyId": 58, "createBy": "paas-gateway", "brandId": 4049, "validEnd": "2023-06-18 23:59:59", "codeMask": "100***5057", "partnersAppId": "ebuywha102420109", "ticketId": 10000300000053, "ticketName": "医疗补贴权益券", "useTimes": 1, "status": "0" }, "success": true, "errorCode": "", "errorMessage": "", "timestamp": 1684205810109, "signType": "sha256", "sign": "8efa67f2f6e466f27a94ee6759ee7e32a022d90d216825647ab58852a67d49ff" } ``` [![配置jsonkey截图](https://book.e-buy.com/uploads/images/gallery/2023-05/scaled-1680-/image-1684205950611.png)](https://book.e-buy.com/uploads/images/gallery/2023-05/image-1684205950611.png) #### 2.3 接口说明 1. 数据查询分页接口 https://apimock.e-buychina.com/project/663/interface/api/35867 2. 数据查询明细接口 https://apimock.e-buychina.com/project/663/interface/api/35896 3. 数据查询列表接口 https://apimock.e-buychina.com/project/663/interface/api/35909 3. 前端使用透传地址查询:例如: * https://dev-paas-app-adminecoupon.e-buy.com/paas/app/adminecoupon/datacenter/dataSearch * https://dev-paas-app-adminecoupon.e-buy.com/paas/app/adminecoupon/datacenter/dataItem #### 2.4 starrocks sql编写规范 1. 无论是列表查询还是明细查询,所有sql select 字段中不允许出现 *, 请大家将具体需要显示的字段列出来。 2. 翻页查询: * 翻页查询所有的查询条件只能使用主表中的字段作为条件筛选; * 翻页查询select语句中前两列,第一列为主表主键;第二列为主表order by的排序列; * 除主表以外其他关系表统一使用left join关联; * 查询语句中不允许使用 group by。 * 自动sql优化功能需要在data_search_interface表中optimize_enable字段设置为Y [![翻页查询规范图列](https://book.e-buy.com/uploads/images/gallery/2023-06/scaled-1680-/image-1685694949692.png)](https://book.e-buy.com/uploads/images/gallery/2023-06/image-1685694949692.png) 自动优化后的sql [![自动优化的结果](https://book.e-buy.com/uploads/images/gallery/2023-06/scaled-1680-/image-1686122207244.png)](https://book.e-buy.com/uploads/images/gallery/2023-06/image-1686122207244.png)