首页 > 其他分享 >表格集算表高性能原理:揭秘纯前端百万行数据秒级响应的魔法

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

时间:2024-07-17 09:41:11浏览次数:14  
标签:集算表 表格 数据 魔法 秒级 Table Sheet Data

最新技术资源(建议收藏)
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构建企业现金流量表

标签:集算表,表格,数据,魔法,秒级,Table,Sheet,Data
From: https://www.cnblogs.com/powertoolsteam/p/18306609

相关文章

  • Laravel数据库的魔法棒:深入探索数据库迁移(Migrations)
    Laravel数据库的魔法棒:深入探索数据库迁移(Migrations)在Laravel的世界中,数据库迁移(Migrations)是一种强大的工具,它允许开发者以版本控制的方式管理数据库结构的变化。通过迁移,你可以轻松地创建、修改或删除数据库表,同时保持代码的整洁和一致性。本文将带你深入了解Laravel数......
  • Nuxt.js头部魔法:轻松自定义页面元信息,提升用户体验
    扫描二维码关注或者微信搜一搜:编程智域前端至全栈交流与成长useHead 函数概述useHead是一个用于在Nuxt应用中自定义页面头部属性的函数。它由Unhead库提供支持,允许开发者以编程和响应式的方式设置每个页面的头部信息。useHead 函数类型useHead(meta:MaybeComputedRef<......
  • C# 10魔法手册:10步打造代码新魔术,疑问与解答并行之旅?
    ......
  • Stable Diffusion - 光影魔法,SD中的光影控制(附模型)
    今天继续分享SD中光影控制的运用和效果。光影控制体验—这次介绍的光影控制效果如下:autumnlights:秋天光景,街景与人物服装也会变成秋装springlights:春天光景,街景与人物服装也会变成春装summerlights:夏天光景,街景与人物服装也会变成夏装winterlights:冬天光景,街......
  • 【周末闲谈】Stable Diffusion会魔法的绘画师
    个人主页:【......
  • 插件魔法:深度解析Gradle插件系统的运作机制
    插件魔法:深度解析Gradle插件系统的运作机制在自动化构建的奇幻世界中,Gradle以其插件系统的强大灵活性和扩展性而著称。插件是Gradle自动化构建的基石,它们为构建过程提供了额外的能力,使得构建脚本更加简洁、功能更加丰富。本文将深入探讨Gradle插件系统的工作原理,揭示其背后......
  • 掌握构建魔法:Gradle中Groovy插件的配置秘籍
    掌握构建魔法:Gradle中Groovy插件的配置秘籍引言Gradle是一个灵活且功能强大的构建工具,它使用Groovy和Kotlin作为其构建脚本的编写语言。Groovy插件为Gradle带来了额外的便利性,使得构建脚本更加简洁和富有表现力。本文将详细介绍如何在Gradle中配置Groovy插件,并提供实际的......
  • 维度转换的艺术:Kylin Cube设计的自定义魔法
    维度转换的艺术:KylinCube设计的自定义魔法引言ApacheKylin是一款强大的大数据分析平台,它通过构建数据立方体(Cube)来加速对大数据集的查询。在Kylin的Cube设计中,维度的自定义转换是一个高级特性,允许用户根据业务需求对维度进行灵活处理。本文将深入探讨Kylin是否支持维度......
  • AI 作词:赋予音符以灵魂的魔法
    在音乐的浩瀚宇宙中,作词一直是那道璀璨星河中最神秘而迷人的部分。它将抽象的情感和思绪转化为具体的文字,与音符交织共舞,触动着人们内心深处的共鸣。而如今,AI作词的出现,犹如一场神奇的魔法,为音乐创作带来了前所未有的变革。在众多AI作词的工具中,“妙笔生词智能写歌词软件(53650......
  • Java三剑客:封装、继承、多态的魔法世界
    第一章:封装的艺术——保护你的宝藏案例分析:银行账户系统想象一下,你正在构建一个银行账户系统。每个账户都有一个余额,这个余额需要受到严格的保护,不能被随意修改。我们可以通过封装来实现这一目标。示例代码:publicclassBankAccount{privatedoublebalance;//......