【发布时间】:2010-07-09 10:22:07
【问题描述】:
我正在开发一个Qt GUI,用于可视化通过 TCP/IP 连接接收的“实时”数据。问题是数据到达的速度相当快(每秒几十 MB) - 即使我没有进行任何花哨的可视化,它的输入速度也比我能够想象的要快 - 我只是在 @ 中显示数据987654322@对象。
好像这还不够,GUI 还允许按下“冻结”按钮,这将暂停更新 GUI(但它会继续在后台接收数据)。一旦冻结选项被禁用,后台积累的数据就会被可视化。
我想知道的是:由于数据来得如此之快,我不可能将所有数据都保存在内存中。客户甚至可能让 GUI 整夜运行,因此会累积数千兆字节的数据。将这些数据写入磁盘的好的数据存储系统是什么?它应该具有以下属性:
- 在桌面系统上使用它应该不会太多工作
- 在末尾追加新数据应该很快。我再也不需要触摸以前写入的数据,因此不需要写入任何地方,但不需要结束。
- 应该可以随机访问数据中的记录。这是因为在我的 GUI 中滚动将需要在数据流中快速显示 N 到 N+20(或任何我的表格高度)条目。
传入的数据可以分成记录,但不幸的是记录没有固定的大小。我宁愿不对它们施加最大尺寸(至少如果不这样做就可以获得良好的性能的话,至少不会)。
也许是一些 SQL 数据库,或者像 CouchDB 这样的东西?如果有人能分享他在这种情况下的经验,那就太好了。
【问题讨论】: