问题 JavaScript中建议的外部JSON对象的最大大小


我有大量的数据要排序和查询,我不能依赖互联网连接。理想情况下,我想将我的整个数据集存储为JSON对象(目前大约17MB,但可能会大得多)并使用类似jLinq或SQLike来查询它,而不是必须输出大量较小的文件。

我有兴趣使用JavaScript(特别是jQuery)查找外部getJSON调用的最大推荐文件大小。 1MB,20MB,100MB?关于这个问题的信息很少。有关查询大型数据集客户端的信息很少见。

任何有关该主题的信息将不胜感激。


12870
2018-03-28 17:26


起源

这一切都发生在当地?您是在浏览器环境中,还是使用node.js或类似的东西?我的猜测是,这将高度依赖于客户端机器中可用的内存......这种方法的最大问题可能是解析,因为您可能需要将整个JSON字符串加载到内存中以便解析它。 - nrabinowitz
所有客户端,本地,在浏览器环境中。不能依赖他们安装和运行jode.js。 - S16
请注意,您将遇到的第一个问题是加载文件 - 通常,浏览器安全设置不允许您使用AJAX加载本地文件,即使是从本地HTML页面也是如此。您可以通过将其作为脚本加载到JSONP或文档中来解决此问题 <head>。 - nrabinowitz


答案:


您最大的问题可能是加载时间,因为它必须将它从一串JSON转换为实际的JavaScript对象。另一个大问题是整个数据集将在页面的内存中。我不熟悉使用100MB +数据的任何页面。

我制造了一个 jsfiddle测试大型JSON字符串的加载性能。看起来只需要大约500毫秒来解析一个~20MB的JSON字符串(在Core i7机器上),而在Chrome中它使用的内存比JSON字符串基本为空时多80MB。所以100MB可能需要几秒钟才能加载并使用400MB +的内存。

这不会解决这两个问题,但您考虑过使用 SQL.js?它是SQLite的JavaScript实现。它应该更容易查询数据。


10
2018-03-30 21:02