我正在使用Qt GUI来可视化通过TCP / IP连接接收的“实时”数据。问题是数据到达的速度非常快(每秒几十MB)-尽管我没有做任何花哨的可视化,但它的输入速度却比我想像的要快-我只是将数据显示在QTableView中目的。

如果这还不够,GUI还允许按下“冻结”按钮,这将暂停更新GUI(但它将继续在后台接收数据)。冻结选项一经禁用,就应该可视化已在后台累积的数据。

我想知道的是:由于数据输入非常快,因此我不可能将所有数据都保存在内存中。客户甚至可能使GUI整夜运行,因此将存储千兆字节的数据。有什么好的将此数据写入磁盘的数据存储系统?它应具有以下属性:

  • 在桌面系统上使用它应该不需要太多的工作
  • 在末尾附加新数据应该很快。我再也不需要触摸以前写入的数据,因此不需要写入任何内容,但最后也不需要写入。
  • 应该可以随机访问数据中的记录。这是因为在GUI中滚动需要在数据流中快速显示N到N + 20(或表的高度如何)条目。

  • 可以将传入的数据分为多个记录,但是不幸的是,这些记录没有固定的大小。我宁愿不要对它们施加最大大小(如果不这样做就可能获得良好的性能,至少不要这样)。

    也许是一些SQL数据库,或者像CouchDB这样的东西?如果有人可以在这种情况下分享他的经验,那就太好了。

    最佳答案

    我认为sqlite可以解决问题。好像很快。不幸的是,我没有像您这样的数据流,但是它可以用作日志记录器的后端。我有一个GUI,您可以在其中查看n,n + k个日志。

    您也可以尝试SOCI作为C++数据库访问API,似乎可以与sqlite配合使用(我目前尚未使用过,但计划使用)。

    my2c

    关于c++ - 那里有哪些具有快速附加和随机访问权限的便携式数据后端?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3211691/

    10-11 04:34
    查看更多