【发布时间】:2011-06-21 22:31:49
【问题描述】:
由于我们在应用程序中收集的数据的性质,有必要让用户能够搜索超过 1,000,000 行的数据,并尽可能快地在客户端接收结果。
我们尝试过各种技术,目前正在试验文档存储引擎 MongoDB。我们本质上是以我们希望在客户端显示的方式将报告数据存储在 Mongo 中。
但是,这就是我想依靠您的经验的地方。我们使用了一些报表插件,例如 datatables.net,但是当客户端请求可能匹配 100,000 多条记录的数据时,将数据传递到客户端的延迟可能需要一分钟以上才能将 JSON 从服务器导出到客户。
我曾尝试通过一次仅向客户端发送 1000 个结果来过滤结果集,但如果用户决定对列进行排序怎么办?必须再次执行整个请求,并将第一个 1000 个结果加载到客户端。
但是如果客户端选择在一个列中搜索,结果必须重新获取。当所有数据已经加载到客户端时,所有这些问题都不存在。
所以本质上我的问题是,您如何才能高效、快速地允许客户端搜索和操作大型数据集,但以一种不需要一次性发送所有结果的方式将结果交付给客户端,因此保持客户端尽可能轻量级?
我确定 MongoDB 必须有一些前端数据表类型插件,可能通过 node.js 进行直接 JSON 通信,但我找不到任何东西!
感谢您的帮助。
【问题讨论】:
-
值得注意的是,MongoDB 将对象存储在 BSON 中,因此仍然会发生向 JSON 的转换。我怀疑您看到的大部分延迟仅仅是由于必须在客户端传输和解析的数据量。
标签: javascript mongodb reporting node.js datatables