我正在使用Qt GUI来可视化通过TCP / IP连接接收的“实时”数据。问题是数据到达的速度非常快(每秒几十MB)-尽管我没有做任何花哨的可视化,但它的输入速度却比我想像的要快-我只是将数据显示在QTableView中目的。
如果这还不够,GUI还允许按下“冻结”按钮,这将暂停更新GUI(但它将继续在后台接收数据)。冻结选项一经禁用,就应该可视化已在后台累积的数据。
我想知道的是:由于数据输入非常快,因此我不可能将所有数据都保存在内存中。客户甚至可能使GUI整夜运行,因此将存储千兆字节的数据。有什么好的将此数据写入磁盘的数据存储系统?它应具有以下属性:
可以将传入的数据分为多个记录,但是不幸的是,这些记录没有固定的大小。我宁愿不要对它们施加最大大小(如果不这样做就可能获得良好的性能,至少不要这样)。
也许是一些SQL数据库,或者像CouchDB这样的东西?如果有人可以在这种情况下分享他的经验,那就太好了。
最佳答案
我认为sqlite可以解决问题。好像很快。不幸的是,我没有像您这样的数据流,但是它可以用作日志记录器的后端。我有一个GUI,您可以在其中查看n,n + k个日志。
您也可以尝试SOCI作为C++数据库访问API,似乎可以与sqlite配合使用(我目前尚未使用过,但计划使用)。
my2c
关于c++ - 那里有哪些具有快速附加和随机访问权限的便携式数据后端?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3211691/