表格集算表高性能原理:揭秘纯前端百万行数据秒级响应的魔法

news/2024/11/15 22:23:31/文章来源:https://www.cnblogs.com/powertoolsteam/p/18306609

最新技术资源(建议收藏)
https://www.grapecity.com.cn/resources/

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

什么是集算表(Table Sheet)?

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

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

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

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

  • 集(Data Manager):

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

  • 算(Calculation Engine):

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

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

  • 表(Table Sheet):

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

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

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

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

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

集算表的架构:

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

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

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

集算表的性能:

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

通过性能测试,我们可以了解到,对于100W行级别的数据,集算表从发送请求加载数据到将表格绘制完毕总共的耗时是大约5秒钟。

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

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

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

点击链接访问性能测试示例。

大家如果感兴趣自行按照上述地址体验即可。

拓展阅读

React + Springboot + Quartz,从0实现Excel报表自动化

电子表格也能做购物车?简单三步就能实现

使用纯前端类Excel表格控件SpreadJS构建企业现金流量表

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/745069.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

eclipse免安装版64位 2018版本

前言Eclipse 是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括Java开发工具(Java Development Kit,JDK)。虽然大多数用户很乐于将 Eclipse 当作 Jav…

Iceberg v2表写入和微批治理冲突,如何保证治理准确性

一、背景 微批治理任务分多个job治理一张表,还有一个Flink程序每5分钟一次写入iceberg表,如治理任务划分了20个job治理一张表,在治理期间存在新的数据更新,如何保证治理准确性 二、猜想待验证 1、治理和写入时快照和文件变化snapshot_id manifest_file 备注

Fastjson的payload收集

收集了网络上的多种payload,方便进行fuzz测试What 无第三方依赖 收集了网络上的多种payload,方便进行fuzz测试 提供了自动替换payload的功能,一次性为所有payload插入rmi地址/dnslog Help --list:以清单的形式打印,方便作为字典进行fuzz --address:服务器地址(无需rmi:/…

DBeaver安装教程(开发人员和数据库管理员通用数据库管理工具)

前言 DBeaver 是一个通用的数据库管理工具和 SQL 客户端,支持 MySQL, PostgreSQL, Oracle, DB2, MSSQL, Sybase, Mimer, HSQLDB, Derby, 以及其他兼容 JDBC 的数据库。DBeaver 提供一个图形界面用来查看数据库结构、执行SQL查询和脚本,浏览和导出数据,处理BLOB/CLOB 数据,修…

一分钟解决CLIENT_PLUGIN_AUTH is required. IDEA连接数据库时报错

CLIENT_PLUGIN_AUTH is required. IDEA连接数据库时报错 ​ 今天楼主在导入java项目时在连接数据库时IDEA报的错误为CLIENT_PLUGIN_AUTH is required. ​ 报错如下图:经过多方排查,发现是之前下载过其他数据库,导致系统服务里已经启动了一个MySql服务​ 已经安装过小蜜蜂数据…

如何通过成熟的外发平台,实现文档安全外发管理?

文档安全外发管理是企业信息安全管理的重要组成部分,它涉及到企业向外发送的文件,需要进行严格的控制和管理,防止敏感或机密信息的泄露。以下是一些关键考虑因素: 文件外发的挑战:企业在文件外发时面临的主要挑战包括非法复制、恶意篡改和误操作,这些都可能导致信息泄露或…

瓦特对蒸汽机的六次重大改进

来源|机械传奇 作者|陶嗣巍 千呼万唤始出来,英雄瓦特先生终于粉墨登场!在此之前,他的前辈们已经给他打下了良好的基础,但也留下了诸多棘手的问题。接下来,就看他如何解决这些问题了! 一、 瓦特先生身世坎坷,他父母共育有8个孩子,但先于瓦特出生的5个孩子全部早夭,而瓦…

如何落地实际场景,解决跨境传输共性需求?免费白皮书可下载!

在全球化的背景下,海外市场对于数据驱动的产品和服务的需求不断增加,各行业数据跨境传输也日趋频繁,在这种前景下,越来越多的企业寻求更深度的跨国业务及合作,因此,企业数据跨境流动也成为了势不可挡的趋势。 企业数据跨境流动可以分为国外数据入境及国内企业数据出海: …

Python自动化:10行代码免费解锁抖音、快手、小红书平台资源,无水印视频一键下载

Python自动化:10行代码免费解锁抖音、快手、小红书平台资源,无水印视频一键下载 原创 丹心向阳 数海丹心 2024年06月19日 07:30 山东 摘要: 抖音、快手、小红书作为国内顶尖的短视频和娱乐平台,汇聚了巨大的流量和丰富的创意内容。对于自媒体从业人员而言,这些平台上的灵感…

线上问题总结-获取不到连接池(logback 配置+代码问题)

原文链接出错问题复盘 1、问题回顾早上 6:00 多开始报警,数据库连接池获取不到连接,日志的报错如下:org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.PersistenceException: ### Error querying database. Cause: org.spri…

linux: 使用 setfacl 命令管理文件访问控制列表

linux: 使用 setfacl 命令管理文件访问控制列表 原创 王义杰 AI学者王义杰 2024年07月12日 21:25 广东 听全文在Linux系统中,管理文件和目录的权限通常通过传统的chmod命令来设置。然而,随着系统复杂度的增加,有时需要更灵活的权限管理方式。此时,setfacl命令提供了强大的功…

更改类的属性类型后发现的坑org.apache.ibatis.type.TypeException: Could not set parameters for mapping

背景 本次将一个类的属性从Integer改成String,上线后发现有这种报错org.apache.ibatis.type.TypeException: Could not set parameters for mappingorg.apache.ibatis.type.TypeException: Could not set parameters for mapping: ParameterMapping{property=brandName, mode=…