南瓜树数据平台——共享数据API服务平台(后端的利器,前端的神器)

本文主要是介绍南瓜树数据平台——共享数据API服务平台(后端的利器,前端的神器),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

系统目的

本文档是针对南瓜树数据管理平台的数据服务模块功能及使用说明。对第三方客户就如何使用数据平台开发API服务进行说明。

本文档可帮助:

  1. 后端开发人员快速开发数据接口服务;
  2. 不具备服务开发的前端人员也能开发自己的应用;
  3. 维护人员快速进行API服务的在线动态升级和维护
  4. 第三方公司快速实现业务接口。

建设背景

当前软件的开发流程耗时较长,从需求部门提出需求到需求上线需要一个较长的时间周期,当程序出现问题时,开发人员往往需要先定位问题,修复代码、发布程序版本;耗时长、影响业务开展。

 

系统目标

数据源接入南瓜树数据平台后,可通过编写SQL的形式快速开发数据接口服务,接口动态升级和维护;只需要简单编写sql,无需编写任何代码就能开发接口。

主要目标:

  • 实现企业统一工作流流程管理;
  • 实现企业统一数据管理;
  • 可支持多种数据源管理;
  • 可支持在线设计表单;
  • 可支持多种数据源代码生成。
  1. 总体功能概述

业务功能架构

总体业务功能架构: 

 ​​

第三方数据源接入

数据源的接入可支持二种方式:

  1. 用户自己有阿里云或者腾讯云的数据库:这是可根据用户的业务需求创建一个权限小的用户账号,用于接入数据平台进行相关数据服务API的开发;
  2. 用户无数据库,此时可联系客服进行租赁一个数据库进行使用。

 

具体接入操作:

1、进入菜单“数据服务》我的数据源”;

2、点击“新增”按钮;

3、填写接入申请表单,填写完您的数据库信息后,点击“确定”按钮,提交申请;

4、管理员审核通过后,可在列表中看到数据源的“状态”列显示为“审核通过”;此时数据源就完成了接入了。

 

 

 

数据服务APi开发

数据源接入申请通过后,就可以进行数据服务的开发,菜单:“数据服务—数据服务API”;

新增数据API

  1. 进入列表后,点击“新增”按钮,打开新增页面;
  2. 选择需要进行API开发的数据源,填写数据服务的名称,便于见名知意;
  3. 根据业务要求编写sql,sql的编写规则在3.2.2 章节中进行说明;
  4. 填写使用方式和选择状态(只有发布状态下的api才可以被调用消费);
  5. 点击确定,保存成功;完成API的新增。

 

SQL规则

 

Sql编写注意

  1. 查看相关表是否有主键、索引、是否必填;
  2. Sql编写所在的库与接口所在的库要对应;
  3. Sql中where条件中顺序序:

能确定的情况下(主键/索引)条件>等值条件>in条件>exist/is not exists 条件>日期处理条件>is null/is not null 条件

  1. 过滤数据多的字段筛选条件放where 最前边,数据量大的表放在from 的最开始。

Oracle中,Where子句中条件的顺序对性能没有影响(不管是CBO还是RBO优化器模式)不包含表的顺序。在RBO优化器模式下,表应按结果记录数从大到小的顺序从左到右来排列,因为表间连接时,最右边的表会被放到嵌套循环的最外层。最外层的循环次数越少,效率越高。

MySQL遵循最左前缀原理,当查询条件匹配联合索引的前面几列时,可以使用联合索引;否则,不会使用联合索引

  1. 对于不确定前端是否会传入的参数,必须在条件两边有中括号{};
  2. 对于传入的参数占位符名称必须和前端传入的一致,且需要在参数两边用#包住,例如:#userId#.

 

API中sql编写动态参数传入

KPI开发中,数据源类型可以分为关系数据源类型(oracle\mysql\sqlserver\crdb),键值对数据源类型(es)。

 

在编写sql过程中我们需要针对不同的数据源类型,制定了相关的规则:

1、针对关系型数据源类型,再where条件编写是:

如果是=判断,则占位符用 #  前端传入参时不需要在参数两边拼接单引号

 

如果是in方式 ,则占位符用 $,前端入参时,需要在每个参数值的两边拼接上单引号。

 

2、针对ES数据源,在where条件编写时,只能使用占位符$ ,es不是关系型数据源,不支持 # 的方式:

如果是=判断,则需要用对应的:字段.keyword = $param$ ,前端传入参数需要拼接单引号

如果是 in 方式,则需要用:字段.keyword in($param$),前端入参时,需要再每个参数的两边拼接上单引号

3、针对ES的模糊查询方式:

如果是=判断,则需要用对应的:字段=$param$,前端传入参数需要拼接单引号

如果是in方式,则需要用:字段 in($param$),前端入参时,需要在每个参数的两边拼接上单引号。

 

对于能确定的参数是必传的,则需要把该参数两边的大括号“}”去掉,避免前端做压测还是其他测试时不传参数进来,从而导致我们进行全表扫描增大业务库或中台数据库的访问压力。

 

 

具体使用说明

 

1.1 、针对关系型数据源类型,再where条件编写是:

如果是  = 判断  ; 则占位符用 #  前端传入参时不需要在参数两边拼接单引号:

如果是  in 方式  ; 则占位符用 $   前端入参时,需要在每个参数的两边拼接上单引号。

 

1.2、 针对ES数据源,在where条件编写时,只能使用占位符 $ , es不是关系型数据源,不支持 # 的方式:

如果是 = 判断,则需要用  字段.keyword = $param$  前端传入参数需要拼接单引号;

如果是 in 方式,则需要用 字段.keyword in($param$),前端入参时,需要再每个参数的两边拼接上单引号。

 

3、针对ES的模糊查询方式:

如果是 = 判断,则需要用对应的 字段 = $param$  前端传入参数需要拼接单引号

如果是 in 方式,则需要用  字段 in($param$)    前端入参时,需要在每个参数的两边拼接上单引号

 

 

API服务验证

 

验证方式

服务编写完成后,需要进行测试验证,平台支持以list或者map的形式进行数据的返回。可根据业务的需求进行响应的选择:

序号

返回格式

调用方式

说明

1

List

http://qxsdcloud.com:18083/data/getMessageList

以数组的形式返回

2

Map

http://qxsdcloud.com:18083/data/getMessageRow

以键值对的形式返回

入参

服务编写完成后,必须传入三个参数,其中,param参数中需要把传入的参数进行封装成键值对的形式传入

序号

参数名称

说明

示例

1

ApiCode

API编码,在数据服务API列表中可获取

9129bde5e705402fb61f93176f8fbf01

2

requestDev

请求设备,用户自定义

custom

3

param

参数封装后的json串

{“userId”:1}

 

List返回结果:

Map返回结果

 

 

请求日志

在菜单“数据服务—api日志”菜单中,可以查看到请求的日志明细,可根据日志来分析:

  1. 接口的请求频率;
  2. 前端传入的参数情况;
  3. 接口的报错信息

 

 

  1. 试用

产品在2020年已上线第一版,截至到2021年6月14日;已完成基础功能;现诚邀各行业人员加入试用。

试用地址:http://qxsdcloud.com:18081/

 

 

 

 

这篇关于南瓜树数据平台——共享数据API服务平台(后端的利器,前端的神器)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/768083

相关文章

Vue3 的 shallowRef 和 shallowReactive:优化性能

大家对 Vue3 的 ref 和 reactive 都很熟悉,那么对 shallowRef 和 shallowReactive 是否了解呢? 在编程和数据结构中,“shallow”(浅层)通常指对数据结构的最外层进行操作,而不递归地处理其内部或嵌套的数据。这种处理方式关注的是数据结构的第一层属性或元素,而忽略更深层次的嵌套内容。 1. 浅层与深层的对比 1.1 浅层(Shallow) 定义

流媒体平台/视频监控/安防视频汇聚EasyCVR播放暂停后视频画面黑屏是什么原因?

视频智能分析/视频监控/安防监控综合管理系统EasyCVR视频汇聚融合平台,是TSINGSEE青犀视频垂直深耕音视频流媒体技术、AI智能技术领域的杰出成果。该平台以其强大的视频处理、汇聚与融合能力,在构建全栈视频监控系统中展现出了独特的优势。视频监控管理系统EasyCVR平台内置了强大的视频解码、转码、压缩等技术,能够处理多种视频流格式,并以多种格式(RTMP、RTSP、HTTP-FLV、WebS

大模型研发全揭秘:客服工单数据标注的完整攻略

在人工智能(AI)领域,数据标注是模型训练过程中至关重要的一步。无论你是新手还是有经验的从业者,掌握数据标注的技术细节和常见问题的解决方案都能为你的AI项目增添不少价值。在电信运营商的客服系统中,工单数据是客户问题和解决方案的重要记录。通过对这些工单数据进行有效标注,不仅能够帮助提升客服自动化系统的智能化水平,还能优化客户服务流程,提高客户满意度。本文将详细介绍如何在电信运营商客服工单的背景下进行

基于MySQL Binlog的Elasticsearch数据同步实践

一、为什么要做 随着马蜂窝的逐渐发展,我们的业务数据越来越多,单纯使用 MySQL 已经不能满足我们的数据查询需求,例如对于商品、订单等数据的多维度检索。 使用 Elasticsearch 存储业务数据可以很好的解决我们业务中的搜索需求。而数据进行异构存储后,随之而来的就是数据同步的问题。 二、现有方法及问题 对于数据同步,我们目前的解决方案是建立数据中间表。把需要检索的业务数据,统一放到一张M

这15个Vue指令,让你的项目开发爽到爆

1. V-Hotkey 仓库地址: github.com/Dafrok/v-ho… Demo: 戳这里 https://dafrok.github.io/v-hotkey 安装: npm install --save v-hotkey 这个指令可以给组件绑定一个或多个快捷键。你想要通过按下 Escape 键后隐藏某个组件,按住 Control 和回车键再显示它吗?小菜一碟: <template

关于数据埋点,你需要了解这些基本知识

产品汪每天都在和数据打交道,你知道数据来自哪里吗? 移动app端内的用户行为数据大多来自埋点,了解一些埋点知识,能和数据分析师、技术侃大山,参与到前期的数据采集,更重要是让最终的埋点数据能为我所用,否则可怜巴巴等上几个月是常有的事。   埋点类型 根据埋点方式,可以区分为: 手动埋点半自动埋点全自动埋点 秉承“任何事物都有两面性”的道理:自动程度高的,能解决通用统计,便于统一化管理,但个性化定

【 html+css 绚丽Loading 】000046 三才归元阵

前言:哈喽,大家好,今天给大家分享html+css 绚丽Loading!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏+关注哦 💕 目录 📚一、效果📚二、信息💡1.简介:💡2.外观描述:💡3.使用方式:💡4.战斗方式:💡5.提升:💡6.传说: 📚三、源代码,上代码,可以直接复制使用🎥效果🗂️目录✍️

使用SecondaryNameNode恢复NameNode的数据

1)需求: NameNode进程挂了并且存储的数据也丢失了,如何恢复NameNode 此种方式恢复的数据可能存在小部分数据的丢失。 2)故障模拟 (1)kill -9 NameNode进程 [lytfly@hadoop102 current]$ kill -9 19886 (2)删除NameNode存储的数据(/opt/module/hadoop-3.1.4/data/tmp/dfs/na

异构存储(冷热数据分离)

异构存储主要解决不同的数据,存储在不同类型的硬盘中,达到最佳性能的问题。 异构存储Shell操作 (1)查看当前有哪些存储策略可以用 [lytfly@hadoop102 hadoop-3.1.4]$ hdfs storagepolicies -listPolicies (2)为指定路径(数据存储目录)设置指定的存储策略 hdfs storagepolicies -setStoragePo

Hadoop集群数据均衡之磁盘间数据均衡

生产环境,由于硬盘空间不足,往往需要增加一块硬盘。刚加载的硬盘没有数据时,可以执行磁盘数据均衡命令。(Hadoop3.x新特性) plan后面带的节点的名字必须是已经存在的,并且是需要均衡的节点。 如果节点不存在,会报如下错误: 如果节点只有一个硬盘的话,不会创建均衡计划: (1)生成均衡计划 hdfs diskbalancer -plan hadoop102 (2)执行均衡计划 hd