如何处理巨大的桌子?

Posted

技术标签:

【中文标题】如何处理巨大的桌子?【英文标题】:How to handle huge table? 【发布时间】:2011-02-12 10:14:35 【问题描述】:

我想向用户显示一个包含约 500,000 行的表格。 表格应该基于文件计算(即表格在开始时是已知的,并且不会改变)。 我猜从内存性能的角度来看,构建这个表的 html 文本并不是一个好主意。 那么如何建立这样的表呢?

我希望用户能够使用垂直滚动条滚动表格。是否可以仅动态构建表格的可见部分?我担心会因此而延误。

使用服务器端编程而不是 javascript 是不是更好?

我不限于任何服务器端编程语言,所以任何建议都将不胜感激!

【问题讨论】:

50 万行听起来不是很有用 - 通常当我有这么大的数据集时,我会尝试找到对数据进行分组和汇总的方法(我无法阅读 500,000数据),通常我在 Excel 或其他应用程序中执行此操作。用户如何在您的数据集中找到任何内容?您能给他们发送一个 CSV 文件或某种摘要报告吗? 查看这个类似的问题以获得一些好的解决方案 - ***.com/questions/2402953/… 【参考方案1】:

在哪里使用 ajax 的经典示例。

将 javascript 与服务器端脚本结合使用。

【讨论】:

【参考方案2】:

将前 250 行发送给用户,当他向下滚动时,可能会超过第 200 行,获取接下来的 250 行,追加到表格等等。

这是一种 (ui) 设计模式,称为“Infinite scroll”。

【讨论】:

【参考方案3】:

这确实是服务器端分页的一个案例,我会说,可能与 Ajax 结合使用。一个有 500.000 行的 HTML 表格会让很多浏览器崩溃。

您没有指定使用哪种服务器端技术。如果您更新您的问题,我相信人们将能够给您一些指示。

【讨论】:

【参考方案4】:

一次向用户显示 500,000 行是个坏主意。考虑其他选项:

允许用户以 CSV 格式下载文件 显示分页(仍然不是很有用) 提供过滤机制(按日期等)以允许用户仅查看他们需要的数据

如果用户真的需要一次查看所有数据,那么在浏览器中查看是最糟糕的方法之一 - 他们应该使用专门用于查看数据的工具,比如Tableau。

【讨论】:

+1, 500000 行对于人类来说太多了。充其量只是让他们自欺欺人地认为他们已经看到了不错的数据样本。另一个 +1 提到分页也不是一个好的答案 支持这一点:如果用户对数据足够关心,只看每一行一秒钟,他们将需要 5 多天才能到达底部。他们很可能对特定的行感兴趣(然后添加分页和过滤机制,想想 Google 搜索结果)或聚合数据(想想 Wolfram Alpha 图表和数字)。 我不会争论 - 提供这么多信息肯定看起来很愚蠢。但是,提问者并没有问这是否是一个好主意。事实上,我们的客户甚至不会考虑不支持至少 100000 行的解决方案。这就是他们的业务几十年来的运作方式,他们不愿意改变这一点。【参考方案5】:

是否可以仅动态构建表格的可见部分?

如果你构建一个“假”滚动(例如jquery slider),你可以检索部分表格而不是整个表格。

【讨论】:

【参考方案6】:

试试这个: 集群化.js 轻松显示大型数据集的小插件 https://clusterize.js.org/

【讨论】:

以上是关于如何处理巨大的桌子?的主要内容,如果未能解决你的问题,请参考以下文章

如何处理高并发?

在 C# 中,如何处理具有多个线程/任务但有条件的大型文本文件?

cast函数非常消耗内存,如何处理呢?

如何处理带有斜线的 Laravel Eloquent “WHERE”查询? (Laravel 5.3)

如何处理亚马逊ec2的时钟漂移?

c# FileSystemWatcher如何处理多个文件?