表格集算表高性能原理:揭秘纯前端百万行数据秒级响应的魔法
最新技术资源(建议收藏) 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左右。故添加计算列计算花费的时间不明显,可忽略不计)。
点击链接访问性能测试示例。
大家如果感兴趣自行按照上述地址体验即可。
拓展阅读

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
什么?前瞻断言和后瞻断言居然可以这么牛?
JavaScript 中的前瞻断言(lookahead)和后瞻断言(lookbehind)相信用过的小伙伴就知道它的威力了,在一些特定的需求场景下,可以做到四两拨千斤的作用,今天让我们来盘点一下在 JavaScript 正则表达式中这两个秘密武器吧。 前瞻断言和后瞻断言,在其他语言的正则表达式中也存在,这个特性不是 JavaScript 的专属 概念定义 不管是前瞻断言还是后瞻断言,最终目的都是寻找在指定的模式(pattern)下,这个指定模式(pattern)下前面或者后面的字符子串, 得到的结果永远是这些 前面或者后面的字符子串 而不是这个指定的模式(pattern)本身 前瞻或后瞻在匹配的时候不会实际匹配和捕获字符,只是检查某个位置前后是否符合指定条件,并不会改变正则的 lastIndex,在检查完之后,正则表达式的其他部分继续进行匹配。 前瞻断言 在中文互联网上 lookahead 被翻译成 前瞻断言、先行断言等 前瞻断言,是用于在检查后面的子串是否匹配某个模式, 前瞻断言包括正向前瞻和负向前瞻断言。 正向前瞻:X(?=pattern),如果 X 后面的子串符合 pattern...
- 下一篇
Smart Admin「高质量代码、简洁、高效、安全」的快速开发平台 v3.5 发布,新增多项功能
SmartAdmin「高质量代码、简洁、高效、安全」的快速开发平台 v3.5.0 已重磅发布,更新如下: 1、【新增】轻量级定时任务 SmartJob 2、【新增】站内信 3、【新增】个人中心 4、【新增】岗位管理 5、【优化】部门员工管理 SmartAdmin 由 河南·洛阳 1024创新实验室 坚持以 「高质量代码」为核心,「简洁、高效、安全」的中后台解决方案! 国内首个满足《网络安全》、《数据安全》、三级等保, 支持登录限制、支持接口国产加解密、支持数据加解密等一系列安全措施的开源项目。 我们开源一套漂亮的代码和一套整洁的代码规范,让大家在这浮躁的代码世界里感受到一股把代码写好的清流!同时又让开发者节省大量的时间,减少加班,快乐工作,保持谦逊,保持学习,热爱代码,更热爱生活 技术体系 前端:Vue3 + Vite5 + Vue-Router + Pinia + Ant Design Vue 4.X 移动端:uniapp (vue3版本) + uni-ui + (同时支持APP、小程序、H5) 后端:SpringBoot + Sa Token + Mybatis-plus + 多...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- SpringBoot2整合Redis,开启缓存,提高访问速度
- CentOS7,8上快速安装Gitea,搭建Git服务器
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- CentOS7设置SWAP分区,小内存服务器的救世主