2016-06-17 39 views
-1

私の現在のアプリケーションでは、毎秒2000フレーム以上のデータを受信します。それぞれに1024(チャネル)* 32ビットのデータが含まれています。データベースやCSVファイルに保存する方法が必要です。このアプリケーションは1日365日稼働することはありません。唯一の目的は、いくつかの集積回路をテストすることです(おそらく数分間実行するでしょう)。大量のデータをデータベースに保存する最も効率的な方法

私は現在、データを表示するためにQTフレームワークを使用していますが、データベース機能も備えています。おそらくqt + sqliteを使用しています...

どのようにこのような問題を管理しますか? column = 1(フレーム番号)+ NUMBER OF CHANNELのテーブルを、フレームと同じ行にする必要がありますか?私は単に列= 1(フレーム番号)+ 1(チャネル番号)+ 1チャネル値のテーブルを行う必要がありますか?

CSVファイルでの書き込みは高速で効率的ですか?データを書き込む時間が増えるほど(CSVやトラフとデータベースとのやりとりのいずれか)、グラフが遅れます。私はこれをシンプルに保つために努力していますが、それでも効率的です。 (マルチスレッド、セマフォ、ミューテックスの回避)私はいくつかのリアルタイムの制約がある、グラフはリアルタイムである必要があります。すべてのXフレーム(おそらく25フレームごと)はグラフが更新されますが、すべてのデータ入力時に、それを何らかのファイルまたはデータベースに記録する必要があります。

+0

実際にデータをリアルタイムで処理する必要がありますか?いくつかの素早いデータを取得し、出力を視覚化しようとしているようです。私は単純なCSVファイルをMicrosoft Excelに挿入することをお勧めしたいと思います。そこから、テストのための一回限りのソリューションをプログラミングすることなく、データをフィルタリング/操作/表示するために必要なDBのような機能がすべて手に入ります。 ファイルを書き込むための簡単な例です。 [https://forum.qt.io/topic/16586/how-to-write-csv-file-in-qt/2][1] –

+0

私は本当にリアルタイムで表示する必要があります、テストされたデバイスが私たちがそれとやり取りするときに何が起こるかを直接見ることができるセンサーです。私はデータを記録する必要があるので、さらに分析を行うことができます。グラフのようなヒートマップで可視化されたデータ。値は色、チャネルは垂直、フレーム番号は水平です。 – user1115057

+0

フレームをバイナリ形式でログファイルにストリーミングするのが最も速い方法です。その後、約8Mb/sで書き込む必要があります。これはHDDでもうまくいきます。 – Slava

答えて

-1

データストリームをリアルタイムで視覚化する必要があるが、ミューテックスの実装方法やデータの表現方法が不明な場合は、サードパーティのツールにもっと頼る必要があると思います。私はあなたのデータを1つのCSVファイル/チャンネルを使って書いて、それを別の場所に表示することをお勧めします。 Microsoft Excelは、データをフィルタリング/表示するのに本当に強力です。CSVファイルをインポートするのは簡単です。グラフをファイルにリンクして手動で出力を更新することもできますが、求めている〜80Hzのリフレッシュレートを得ることはできません.1/60th Hzのようなものです。

私はすばらしいGoogle検索を行い、必要なものを提供するようなこのライブグラフツールを見つけました。 QTアプリケーションはCSVファイルを書き込んで定期的に保存し、ライブグラフに表示することができます。

live-graph

関連する問題