如何处理巨大的桌子?
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# 中,如何处理具有多个线程/任务但有条件的大型文本文件?