首页 > 其他分享 >怎样实现纯前端百万行数据秒级响应

怎样实现纯前端百万行数据秒级响应

时间:2023-04-02 23:03:31浏览次数:46  
标签:Sheet Data 前端 Manager 秒级 Table 集算表 数据 百万

前端表格控件SpreadJS 推出了新的功能集算表功能。集算表 (Table Sheet)是一个具备高性能渲染、数据绑定功能、公式计算能力的数据表格,通过全新构建的关系型数据管理器结合结构化公式,在高性能表格的基础上提供排序、筛选、样式、行列冻结、自动更新、单元格更新等功能。

 

怎样实现纯前端百万行数据秒级响应_数据

什么是集算表(Table Sheet)?

集算表是一个具有网络状行为和电子表格用户界面的快速数据绑定表的视图。

众所周知Excel的工作表(Work Sheet)是一个自由式布局,基于单元格(Cell Base)的表格,适用于一些松散式的数据布局展示,布局上来说非常灵活,但对于固定格式的大批量数据展示,不具备优势。

集算表不同于Excel的工作表,它是一个基于列(Column Base)的网状表格(Grid),适用于展示规则数据。同时它还具备了Excel工作表(Work Sheet)的用户界面和部分常见操作。并且支持Excel的部分计算功能。同时结合SpreadJS数据绑定的功能,对于大量固定格式的数据(例如数据库的表格)可以快速在前端进行展示。

集算表的特点正如它的名字的三个字:集,算,表:

l  集(Data Manager):

集的意思就是数据集记和管理。集算表在前端构建了一个叫做Data Manager的数据管理模块。该模块可以简单理解为一个前端的数据库,Data Manager负责与远端的数据中心进行通信,拉取远端的数据。在前端处理数据,例如数据表的定义,表间关系等。同时Data Manager还负责处理数据的变形,例如分组,切片,排序,过滤等。

l  算(Calculation Engine):

集算表本身基于SpreadJS网络结构化数据的计算引擎Calculation Engine。Calculation Engine定义不同的上下文计算层级,不同与SpreadJS中工作表(Work Sheet)基于单元格或者区域(Range)的计算层级,集算表(Table Sheet)的上下文层级是基于行级,组级,数据级。

同时通过Calculation Engine的计算串联,使得集算表(Table Sheet)与工作表(Work Sheet)之间可以进行数据串联。这使得计算表不是一个独立存在,它可以与工作表结合使用,相互配合以适应更多的需求。

l  表(Table Sheet):

整个Table Sheet分为三层:渲染层,数据层,功能层。

渲染层复用了工作表(Work Sheet)的渲染引擎,具备双缓冲画布等高性能的优势。

数据层直连Data Manger,无需建立数据模型,相交SpreadJS更加快速。

功能层不同于传统表格(Grid),将底层结构化数据进行改造,在支持增删改查等基本功能的基础上,还额外支持了大部分工作表(Work Sheet)的对应功能,如样式,条件格式,数据验证,计算列等。

在数据底层,保证上述功能支持的基础上,还能保证数据的结构化,而非松散的数据结构。

集算表的架构:

 

怎样实现纯前端百万行数据秒级响应_Data_02

Data Manager负责拉取远端数据,远端数据源可以是Rest API、OData、GraphQL、Local。Data Manager在拉取数据源之后会根据其中的定义构建数据表(Data Source),该表结构与数据库中的表结构类似。之后通过这些表来定义对应的数据视图(View),视图中定义了展示的结构以及计算列,关系列的添加。最终将不同的视图(View)绑定在不同的Table Sheet上。Table Sheet负责对所有的视图进行展示和操作。Calc Engine在Data Manager上工作,而非直接工作在Table Sheet上,这是为了更方便的去支持集算表与普通工作表之间的公式引用。这使得集算表与普通工作表之间产生“化学效应“,例如下面的示例:

在创建了集算表之后可以在普通的工作表中直接通过公式引入集算表的表格中的数据。这样可以做到通过集算表对数据进行展示,同时通过工作表的功能,对展示的结果进行数据分析。

 

 

 

 

怎样实现纯前端百万行数据秒级响应_Data_03

 

 

 

怎样实现纯前端百万行数据秒级响应_数据_04

 


甚至可以直接引用集算表中的数据当做数据数据源,创建数据透视表。

 

 

 


怎样实现纯前端百万行数据秒级响应_Data_05

集算表的性能:

集算表是基于Column进行数据存储,相较于基于Row的存储结构,在筛选和计算方面有很大的优势。

通过性能测试,我们可以了解到,对于100W行级别的数据,集算表

从发送请求加载数据到将表格绘制完毕总共的耗时是大约5秒钟。

 

怎样实现纯前端百万行数据秒级响应_结构化_06

筛选数据花费时间在50ms左右(Filter country == "UK")。

 

怎样实现纯前端百万行数据秒级响应_数据_07

100W行数据排序花费时间在5S左右(Sort birthday == "Ascending")。

 

怎样实现纯前端百万行数据秒级响应_结构化_08

对100W行数据添加计算列,对每行数据进行计算,花费时间不明显(总计时间4807ms,但该事件包含了数据加载,绘制的总时间,对比之前的测试结果基本在4800ms左右。故添加计算列计算花费的时间不明显,可忽略不计)。

 

怎样实现纯前端百万行数据秒级响应_Data_09

如果想要了解更多SpreadJS产品特性或者查看性能测试示例,可访问下方地址。

https://en.onboarding.grapecitydev.com/spreadjs/feature-demo/web/tableSheet/performance.html



作者:葡萄城技术开发团队发布




标签:Sheet,Data,前端,Manager,秒级,Table,集算表,数据,百万
From: https://blog.51cto.com/powertoolsteam/6165243

相关文章

  • Java学习笔记(十三) 前端基础2
    Ajax介绍概念:AsynchronousJavaScriptAndXML,异步的JavaScript和XML作用:数据交换:通过Ajax可以给服务器发送请求,并获取服务器响应的数据异步交互:可以在不重新加载整个页面的情况下,与服务器交换数据并更新部分网页的技术,如:搜索联想,用户名是否可用的校验等......
  • Java学习笔记(十二) 前端基础1
    Web前端基础初识web前端网页由哪些部分组成?文字图片音频视频超链接等我们看到的网页,背后的本质是什么?程序员写的前端代码前端的代码是如何转换成用户眼中的网页的?通过浏览器转化(解析和渲染)成用户看到的网页浏览器中对代码进行解析渲染的部分,称为浏......
  • 前端通过Swagger生成相关接口文件
    1.Swagger 多分组在很多大型系统中,为了方便对接口进行归类,往往使用了 Swagger 多分组功能,这样会使系统的接口散落在多个 swagger.json 中。将SpecificationDocumentSettings属性的EnableAllGroups设置为true。启用之后在 Swagger 导航栏顶部下拉分组将出现......
  • springmvc中前端调用controller方法路径问题
          以前学习springmvc时没有理解前端访问controller中方法路径问题,做项目时刚好遇到,百度了一下没有找到想要的答案,后来突然就顿悟了。。。。。,虽然很基础但还是记录了一下,大佬请见谅。controller中主要用@RequestMapping注解来定义访问路径,一般定义一个类加载路径......
  • springmvc中前端调用controller方法路径问题
          以前学习springmvc时没有理解前端访问controller中方法路径问题,做项目时刚好遇到,百度了一下没有找到想要的答案,后来突然就顿悟了。。。。。,虽然很基础但还是记录了一下,大佬请见谅。controller中主要用@RequestMapping注解来定义访问路径,一般定义一个类加载路径......
  • 《前端构建工具(webpack&vite)- 李立超》笔记
    1.构建工具简介1.1模块化最初我们都使用script标签来引入js,但当一个页面引入的js文件越来越多时,就产生了几个难以避免的问题:全局变量污染。变量重名。js之间的依赖关系复杂,无法保证顺序。而模块化规范就是为解决以上问题,模块内部的变量实现了在其他模块内共享。而且可以......
  • mp雪花算法生成的id到前端丢失精度问题
    mp生成的id是Long型18位,但是js处理到16位就四舍五入了,解决办法就是在服务器转成字符串传给前端  WebMvcConfig要继承WebMvcConfigurationSupport,重写里面的extendMessageConverters方法@OverrideprotectedvoidextendMessageConverters(List<HttpMessageConv......
  • 项目一众筹网06_01_【权限控制】角色和权限分配、Admin分配Role、Role分配Auth、前端j
    系列文章目录众筹网文章目录系列文章目录01-角色和权限分配-引入02-Admin分配Role-目标和思路03Admin分配Role创建中间表有些表是不需要实体类的自然也就不需要做逆向工程04-Admin分配Role-前往分配页面-handler方法05-Admin分配Role-前往分配页面-Service方法和SQL06-Admin分......
  • 渡一教育_Java每日一练:建立Statement的作用是什么、前端Console.log( Boolean(‘‘))
    系列文章目录文章目录系列文章目录题目1java部分建立Statement的作用是什么(答案在最后公布)题目1-答案==解析====答案==题目2前端js部分==答案==题目3前端js部分如下代码输出的是什么答案和解析如下==解析==题目4如果希望1监听TCP端口为9000,服务端应该怎样创建socket题目答......
  • 项目一众筹网04_4_角色维护删除_单条删除和批量删除怎么实现_确认提示,,你真的要删除吗_
    角色维护删除系列文章目录文章目录角色维护删除系列文章目录22-删除-目标和思路(下一篇)单条删除和批量删除怎么实现批量删除和单条删除合成一套思路图23-后端==在这里我们就@RequestBody和@ResponseBody都用到了==24-前端-打开模态框25-前端-执行删除如何判断代码是否是动态生成的前......