网站流最日志分析--数据可视化--动态加载数据--数据格式排序问题剖析 | 学习笔记

简介: 快速学习网站流最日志分析--数据可视化--动态加载数据--数据格式排序问题剖析

开发者学堂课程【大数据分析之企业级网站流量运营分析系统开发实战(第五阶段):网站流最日志分析--数据可视化--动态加载数据--数据格式排序问题剖析】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/697/detail/12258


网站流最日志分析--数据可视化--动态加载数据--数据格式排序问题剖析

如何动态的去从数据库加载数据返回到前端,让这些图形表格能够有数据展示?

image.png

以这个图形为例,这个叫做最近七天日平均 PV 量,通过这个 title 可以知道最近七天的平均量大概会是一个柱状图或是一个直线图。 X轴表示的是每一天,Y轴表示的是每一天对应的批量形成一个高低起伏的状况。

问题在于现在这个图形是 loading 的状态,因为没有数据。那么该怎么去突破它呢?

这时不妨按一下浏览器的开发模式,之后再去重新加载这个页面,可以发现当中现在有三个请求包处于 404 单薄平面,PV 量,而这这三个请求正好对应页面上三个没有数据的图形,这些图形背后的知识点大同小异,都是一样的逻辑。

下面重点看一个,比如最近七天的访问量。可以发现在这个加载页面的时候它会发起一个请求,这个请求背后包含的就是向后台去查询数据,返回到前端。接下来就带着这个请求来到页面上,打开开发工具。

现在的首页叫做 index jsp 。在当中可以去查找一下或者是搜索一下,这当中写了很多的代码,有些是页面样式之类。

找到最近七天平均 pv 量:

会是一个什么样的图形?整个可视化开发当中,最大的工作量就是前后端数据的一个问题,下面来画图看一下:

image.png

mychart

.setoption({

title :{

text :'"最近7天日平均PV量

subtext:'动态数据'

},

tooltip:{}, legend :{

data :['日平均Pv量']},

xAxis :{

data : []},

yAxis :{}, series :[ {

name :'日平均PV量', type :'bar', data :[]

});} ]

//loading 动画

myChart.showLoading();//异步加载数据

回到代码动态距离可以发现 title 就是最近七天日平均 pv。下面的 X 轴和 Y 轴现在数据都是空的,而且是一个数组,意味着当前没有数据,它显示 showloading,表示没有数据。什么时候才会把 showloading 的数据屏蔽掉呢?

这个请求就是在页面上刚才发现的请求,叫做 avgpvnum, 意味着这个请求就是向后端动态的加载数据的。当这个请求成功之后把数据做一个回调填充,可以发现 X 轴往里面填,往 y 里面填,也就是说这个异步请求的方法,保证了从后台拿到数据填充到里面的 X 轴和 Y 轴上,然后把 loading 这个动画隐藏掉就可以搞定。

接下来来剖析一下数据格式问题。在前端 XY 轴,它需要的是两个数组,那前端数据需要什么格式比较好?

下面简单画个图:

image.png

这时候后端数据是什么样子呢?这里就涉及到开发的第一个问题。

1. 在规划中重点考虑前后端数据格式问题,那么前端 echarts 往往

需要的都是  js 格式的数据。

后端查询返回的数据格式是多条数据历史的集合。

当然也有其他的数据。前端是 js 格式的数据,后端是去从数据库做一个查询,当前只有一天的数据,那么下面就来模拟一下。打开参考资料。

在这里有一个叫做 sql 的文件夹,里面就是刚才三个表对应的数据,执行这三个数据。

image.png

接下来初始化数据库,打开代码来确认我们所创建的数据库的配置叫什么。

打开 property,配置文件叫做 sqoopdb,因此直接来创建这个数据库。

需要这个 sql 做执行,这里以一个表为例,其他大家可以来灵活的自己来练习。

选择这个数据库叫 sql 文件,点击开始,执行。

执行之后,点刷新,可以发现当前就多了一个表,这个表当中记录的就是模拟的数据,叫做每天的平均pv量:

image.png

来到画板剖析一下,后端的数据格式长的是这个样子。通过查询第七天返回应该是什么格式,可以看到现子操作 mysql 数据库,甚至会创建一个嘉宾跟这个数据库表保持一致,是不是那么一个对象当中有 ID 属性,日期属性和 avg 属性,然后每一条每个对象表示一条记录,记录查询返回的是一个集合里面封装的对象。

image.png

所以后端如果不出意外返回的是历史的集合,里面放的是一个对象,

那么这时必须要做前后端数据格式的转换,是前端迎合后端还是后端迎合前端?

前端使用的是 js,按照它的规范不管怎么查必须要把数据转成 js 扔到前台就可以。所以说这里涉及到前后端数据格式转换问题。

通常是画在后端的时候把数据转成阶层返回到前端,把这个集合做一个便利,把每个月的日期拿出来做一个日期数组,把 Pvg 拿出来做一个 PV 数,然后把它传递到前台就可以了,这也是我们在实际开发中遇到的最大的问题。

也可以往大了说,整个 echarts 数据可视化报表当中大量的工作量就在这个数据格式转换的问题。因为后端查询出来数据,可能是一个表,可能是多个表,可能是不同的数据,但是数据不管长什么样一定要去迎合前端的数据格式,这是第一个要考虑的叫做数据格式问题。

2. 数据排序问题

保证查询返回前端数据是有序的 往往跟时间的顺序相关

第二个问题,刚才画图的时候,看 201812012020304,如果这里面数据是一号、四号、三号、二号、九号、七号,如果是乱序,这时候在柱状图上,或者折线图展示的就不是有规律的波澜。

本来是逐渐递增的,又变成逐渐递减的甚至变成乱七八糟的,因此这里出现一个问题叫做数据排序,这个问题非常重要,尤其涉及到折线柱状,最近几天这种日期的基本上是按照时间的一个过程。

以上就是我们从理论上来推导进行前后端数据格式进行动态加载之后需要考虑的问题,一个是数据格式问题,一个是数据排序的问题。

相关实践学习
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
相关文章
|
3月前
|
SQL 人工智能 监控
SLS Copilot 实践:基于 SLS 灵活构建 LLM 应用的数据基础设施
本文将分享我们在构建 SLS SQL Copilot 过程中的工程实践,展示如何基于阿里云 SLS 打造一套完整的 LLM 应用数据基础设施。
774 60
|
3月前
|
数据采集 运维 监控
不重启、不重写、不停机:SLS 软删除如何实现真正的“无感数据急救”?
SLS 全新推出的「软删除」功能,以接近索引查询的性能,解决了数据应急删除与脏数据治理的痛点。2 分钟掌握这一数据管理神器。
253 30
|
4月前
|
存储 缓存 Apache
StarRocks+Paimon 落地阿里日志采集:万亿级实时数据秒级查询
A+流量分析平台是阿里集团统一的全域流量数据分析平台,致力于通过埋点、采集、计算构建流量数据闭环,助力业务提升流量转化。面对万亿级日志数据带来的写入与查询挑战,平台采用Flink+Paimon+StarRocks技术方案,实现高吞吐写入与秒级查询,优化存储成本与扩展性,提升日志分析效率。
553 1
|
4月前
|
存储 关系型数据库 数据库
【赵渝强老师】PostgreSQL数据库的WAL日志与数据写入的过程
PostgreSQL中的WAL(预写日志)是保证数据完整性的关键技术。在数据修改前,系统会先将日志写入WAL,确保宕机时可通过日志恢复数据。它减少了磁盘I/O,提升了性能,并支持手动切换日志文件。WAL文件默认存储在pg_wal目录下,采用16进制命名规则。此外,PostgreSQL提供pg_waldump工具解析日志内容。
412 0
|
XML 安全 Java
【日志框架整合】Slf4j、Log4j、Log4j2、Logback配置模板
本文介绍了Java日志框架的基本概念和使用方法,重点讨论了SLF4J、Log4j、Logback和Log4j2之间的关系及其性能对比。SLF4J作为一个日志抽象层,允许开发者使用统一的日志接口,而Log4j、Logback和Log4j2则是具体的日志实现框架。Log4j2在性能上优于Logback,推荐在新项目中使用。文章还详细说明了如何在Spring Boot项目中配置Log4j2和Logback,以及如何使用Lombok简化日志记录。最后,提供了一些日志配置的最佳实践,包括滚动日志、统一日志格式和提高日志性能的方法。
3809 31
【日志框架整合】Slf4j、Log4j、Log4j2、Logback配置模板
|
7月前
|
监控 容灾 算法
阿里云 SLS 多云日志接入最佳实践:链路、成本与高可用性优化
本文探讨了如何高效、经济且可靠地将海外应用与基础设施日志统一采集至阿里云日志服务(SLS),解决全球化业务扩展中的关键挑战。重点介绍了高性能日志采集Agent(iLogtail/LoongCollector)在海外场景的应用,推荐使用LoongCollector以获得更优的稳定性和网络容错能力。同时分析了多种网络接入方案,包括公网直连、全球加速优化、阿里云内网及专线/CEN/VPN接入等,并提供了成本优化策略和多目标发送配置指导,帮助企业构建稳定、低成本、高可用的全球日志系统。
834 54
|
监控 安全 Apache
什么是Apache日志?为什么Apache日志分析很重要?
Apache是全球广泛使用的Web服务器软件,支持超过30%的活跃网站。它通过接收和处理HTTP请求,与后端服务器通信,返回响应并记录日志,确保网页请求的快速准确处理。Apache日志分为访问日志和错误日志,对提升用户体验、保障安全及优化性能至关重要。EventLog Analyzer等工具可有效管理和分析这些日志,增强Web服务的安全性和可靠性。
376 9
|
10月前
|
存储 SQL 关系型数据库
MySQL日志详解——日志分类、二进制日志bin log、回滚日志undo log、重做日志redo log
MySQL日志详解——日志分类、二进制日志bin log、回滚日志undo log、重做日志redo log、原理、写入过程;binlog与redolog区别、update语句的执行流程、两阶段提交、主从复制、三种日志的使用场景;查询日志、慢查询日志、错误日志等其他几类日志
835 35
MySQL日志详解——日志分类、二进制日志bin log、回滚日志undo log、重做日志redo log
|
10月前
|
存储 缓存 关系型数据库
图解MySQL【日志】——Redo Log
Redo Log(重做日志)是数据库中用于记录数据页修改的物理日志,确保事务的持久性和一致性。其主要作用包括崩溃恢复、提高性能和保证事务一致性。Redo Log 通过先写日志的方式,在内存中缓存修改操作,并在适当时候刷入磁盘,减少随机写入带来的性能损耗。WAL(Write-Ahead Logging)技术的核心思想是先将修改操作记录到日志文件中,再择机写入磁盘,从而实现高效且安全的数据持久化。Redo Log 的持久化过程涉及 Redo Log Buffer 和不同刷盘时机的控制参数(如 `innodb_flush_log_at_trx_commit`),以平衡性能与数据安全性。
489 5
图解MySQL【日志】——Redo Log