数据源配置和使用常见问题

连接数据源时,可能遇到配置问题、性能问题、数据一致性问题等。本文介绍连接数据源和使用数据源时,遇到的常见问题及相应的解决方法。

连接问题

数据源连接失败或超时

若您在连接数据源时出现报错,请优先排查以下原因:

  1. 对于数据库类的数据源,请确保正确配置数据库白名单

    • 阿里云数据库:请在数据库白名单与安全组配置中添加指定IP地址。

    • 阿里云ECS上自建数据库:请在ECS添加安全组规则、系统防火墙和数据库白名单添加指定IP地址 。

    • 本地的自建数据库:请在该物理机的系统防火墙、网络防火墙和数据库白名单添加指定IP地址。

  2. 请确认网络类型与数据源实际类型是否一致。

    • 当填写外网地址时,网络类型请选择外网

    • 当填写内网VPC地址时,网络类型请选择内网并开启VPC访问。

  3. 数据库账号或者AccessKey ID没有需要的权限。

    • 请确保数据库用户名拥有List权限,以便获取数据表列表。

    • 请确保AccessKey ID拥有Read权限,以便访问实例。

  4. 数据代理服务连接失败,请参见数据代理请求常见问题

  5. 若以下完全正确,仍然连接超时,可能是DataV-Board10秒连接超时限制。超时问题,具体可参考性能问题

若仍连接失败,请复制完整错误信息,联系我们进行问题排查。

image

MySQL 8.0 数据库报错

在使用 MySQL 8.0 时,可能会遇到如下错误提示:

ER_NOT_SUPPORTED_AUTH_MODE: Client does not support authentication protocol requested by server; consider upgrading MySQL client

这个错误是由于 MySQL 8.0 默认使用了一种新的认证插件(caching_sha2_password),而DataV-Board不支持这种加密方式,导致无法连接到数据库。将认证插件修改为较老版本的 mysql_native_password,即可解决问题。以下是步骤:

  1. 登录MySQL数据库: 使用具有足够权限的用户(如root)登录到MySQL服务器。

    mysql -u root -p
  2. 切换认证插件: 对于需要更改的特定用户,执行以下SQL语句来更新其认证插件:

    ALTER USER 'your_username'@'host' IDENTIFIED WITH mysql_native_password BY 'your_password';
    • your_username:替换为目标用户的用户名。

    • host:替换为该用户连接到数据库的主机名(通常为localhost或%)。

    • your_password:替换为该用户的密码。

  3. 刷新权限: 确保更改立即生效,执行以下命令刷新权限:

    FLUSH PRIVILEGES;
  4. 查看插件是否更新成功。

    SELECT user, host, plugin FROM mysql. user WHERE user = 'your_username' ;

    image

  5. 退出MySQL: 完成配置更改后,退出MySQL客户端:

    EXIT;

性能问题

DataV-Board设置了数据库请求时间限制,即如果数据查询时间超过10秒,就会报请求超时的错误。

业务数据表数量太大,导致SQL查询超时

您可尝试通过以下几种方式提高查询性能:

  • 针对查询条件所使用的字段添加索引,减少扫描行数,从而加速查询。

  • 在数据库中增加定时任务,定时计算所需要的业务指标并更新结果表。组件直接查询结果表的数据,无需每次执行SQL查询获取组件数据。

  • 通过自建API 服务(需支持跨域),从而避免查询超时。

  • 通过DataV数据代理服务方式,突破系统10秒连接超时限制。

API接口内部业务调用链路较长,导致查询超时

如果读取数据源超过了DataV的超时时间,就意味着查询数据的方式较为复杂,可以通过优化查询时间的方式来处理。您可尝试通过以下3种方式提高查询性能:

  • API服务设计缓存空间,针对常用的数据进行高效缓存,减少多次调用读取耗时。

  • 优化调用链路,将可以并行调用的过程并行化处理,压缩接口总时间。

  • 增加数据中间层,将多次接口调用的中间链路复用,减少系统消耗。

具体的优化方案要结合查询本身的技术特征、业务数据的逻辑关系以及相关技术框架等来考虑和设计。

数据安全性问题

系统默认采取使用TLS加密协议,保护您的数据安全。 若您有所顾忌,可采取以下两种方式:

  • 使用DataV数据代理服务方式,无需暴露数据库的公网IP,就可以连接自建的数据库,提高数据安全性。

  • 可使用尊享版本进行本地部署,具体操作请参见产品升级

数据一致性问题

系统不缓存任何数据,每次请求均获取数据源最新数据,以保证数据一致性。

数据配置问题

当数据源添加成功后,进入画布中进行使用。您需通过数据映射、SQL语句、过滤器等各种方式将数据源数据改造成组件所支持数据结构,方可正常展示效果。

组件配置数据源时,请求报超时

当数据源添加成功,但使用时存在连接超时。可能是以下几个原因:

  • SQL语句过于复杂,导致连接超时。

    • 解决方法:建议您优化查询SQL语句,或者调整表结构来缩短查询时长。

  • 组件自动更新请求设置间隔较短,同时组件数据查询时间较长,会触发Chrome浏览器同一域名同一时间最多只能发起6HTTP请求的限制,导致后面的请求pending在浏览器中无法发送至服务端。

    • 解决方法:建议您调整自动更新请求间隔时长,或优化SQL语句来缩短数据返回时间。

配置CSV数据来源

设置CSV的首行为表头,并且表头名需要和相应图表中要求的数据结构字段名保持一致。以Echarts 柱状图为例,表头应为x坐标轴值y坐标轴值系列值

image

回调ID为数组时SQL编写

假设idList为您配置的回调ID数组。

  • 当您使用普通SQL查询时:

     select * from tb where id in (:idList)

    image

  • 当您使用数据库存储过程查询时:

    call myFunc(concat_ws(',', :idList))

    image

    说明

    myFunc为自定义的存储过程名称。

轮播列表SQL编写

通过SQL设置别名方式,将字段名设置成列字段名进行SQL查询即可。

select field1 as “列1”, filed2 as "列2", field3 as "列3" from table

image