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

怎样,实现,前端,百万,数据,响应 · 浏览次数 : 541

小编点评

## Set Calculation Table Feature in SpreadJS This article introduces the new **Set Calculation Table** feature in SpreadJS, a high-performance data binding table that offers numerous features for building and managing data tables. **What is the Set Calculation Table?** The Set Calculation Table is a powerful data visualization component that combines the high performance of rendering with data binding functionality, formula calculation, and comprehensive data management capabilities. This table provides various features such as sorting, filtering, styling, column freezing, automatic updates, cell updates, and more. **Key Features:** * **High Performance Rendering:** Uses a network-based structure to render data with high performance, even for large datasets. * **Data Binding:** Connects seamlessly to the backend data source, eliminating the need to build data models. * **Flexibility:** Supports both column-based and row-based data storage, allowing you to choose the optimal structure for your data. * **Formula Calculation:** Includes a built-in calculation engine that defines various context-aware calculation layers for complex data transformations. * **Data Management:** Provides comprehensive data management with support for data loading, transformation, and view creation. **Benefits of using the Set Calculation Table:** * **Rapid Data Display:** Quickly render large datasets with ease using the high-performance rendering engine. * **Flexible Data Management:** Manage data with ease using various data sources and transformations. * **Advanced Data Calculation:** Perform complex calculations directly within the table using the built-in calculation engine. * **Data Security:** Ensure data integrity and security with comprehensive data management features. **Performance:** * For 100W rows, the Set Calculation Table performs data loading, rendering, and sorting operations in approximately 5 seconds. * Filter, sort, and add calculation columns take less than 50ms, 100W data sort takes 5S, and the calculation column addition takes around 4800ms. **Learn More:** * For more detailed performance benchmarks and examples, check out the official documentation: * Performance Demo: Set Calculation Table: https://en.onboarding.grapecitydev.com/spreadjs/feature-demo/web/tableSheet/performance.html

正文

本文由葡萄城技术团队于博客园原创并首发
转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。 

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

 

什么是集算表(Table Sheet)?

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

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

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

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

集(Data Manager):

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

算(Calculation Engine):

集算表本身基于SpreadJS网络结构化数据的计算引擎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左右。故添加计算列计算花费的时间不明显,可忽略不计)。

 

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

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

与怎样实现纯前端百万行数据秒级响应相似的内容:

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

本文由葡萄城技术团队于博客园原创并首发转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。 前端表格控件SpreadJS 推出了新的功能集算表功能。集算表 (Table Sheet)是一个具备高性能渲染、数据绑定功能、公式计算能力的数据表格,通过全新构建的关系型

表格集算表高性能原理——怎样实现纯前端百万行数据秒级响应

> 本文由葡萄城技术团队于博客园原创并首发 > 转载请注明出处:[葡萄城官网](https://www.grapecity.com.cn/ "葡萄城官网"),葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。 集算表 (Table Sheet)是一个具备高性能渲染、数据绑定功能、公式计算

前端:异地登录!!!

哈喽,大家好 !今天来聊一聊前端怎么实现异地登录提示!!! 在数字化时代,账户安全是每个用户和开发者都不容忽视的问题。 异地登录提示是一种安全措施,用于提醒用户他们的账户可能在不同的位置被访问。 这通常涉及到检测登录行为的异常,比如IP地址的变化,并在检测到异常时通知用户。 用户登录记录的重要性 首

前端怎么解决跨域问题

前端跨域问题的解决方案通常涉及几种不同的方法,每种方法都有其特定的应用场景和优缺点。以下是一些常见的前端跨域解决方案: JSONP(JSON with Padding) 原理:利用

Vue3学习(二十四)- 文档页面功能开发

写在前面 这部分真的感觉超级难,其实也不能说难,主要是真的想不到这个思路应该这么做,或者说他好厉害,他怎么知道该这么设计实现。 说下难点吧,我觉得后天逻辑还好,主要是前端部分真的需要点花点时间来思考,比如布局、交互设计的实现等等。 文档页面功能开发 1、任务拆解 增加文档页面,首页点击电子书时,跳转

WPF使用事件聚合器,实现任意页面跨页通信

前言:最近几天有好几个小伙伴玩WPF,遇到不同页面,不知道要怎么传递消息。于是,我今天就来演示一个事件聚合器的玩法,采用prism框架来实现。作为福利,内容附带了主页面打开对话框时候直接通过参数传递消息的一个小例子,具体请自行围观。 以下内容,创建wpf项目以及引用prism和实现依赖注入等细节,可

彻底理解闭包实现原理

前言 闭包对于一个长期写 Java 的开发者来说估计鲜有耳闻,我在写 Python 和 Go 之前也是没怎么了解,光这名字感觉就有点"神秘莫测",这篇文章的主要目的就是从编译器的角度来分析闭包,彻底搞懂闭包的实现原理。 函数一等公民 一门语言在实现闭包之前首先要具有的特性就是:First class

图解B树及C#实现(2)数据的读取及遍历

前言 本文为系列文章 B树的定义及数据的插入 数据的读取及遍历(本文) 数据的删除 前一篇文章为大家介绍了 B树 的基本概念及其插入算法。本文将基于前一篇的内容,为大家介绍插入到 B树 中的数据该怎么读取及遍历, 本文的代码基于前一篇文章的代码,已经实现的功能可能会被省略,只介绍新增的功能。 在本文

Go-Zero技能提升:深度探究goctl的妙用,轻松应对微服务开发挑战!(三)

前言 有位同学在群里说:“Go-Zero官方文档太简洁了,对小白有点不友好。好奇你们是怎么学习的?项目是怎么封装的?有什么提高开发效率的技巧吗?”。 来来来,这期内容给你安排上,先教你goctl的妙用! 前两篇文章分享了 Go-Zero微服务快速入门和最佳实践(一) 和 Go-Zero从0到1实现微

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

在我们的项目当中,经常需要添加一些选择界面,让用户直观地进行交互,比如耗材、办公用品、设计稿或者其它可以选择的内容。 在线商城的商品目录和购物车无疑是一种大家都很熟悉的交互方式,但是在实际开发中,我们可能会遇到以下几个问题: 怎么及时响应产品的需求,快速实现功能上线? 怎样实现灵活变更模板,把数据、