MQTTを介してデバイスが通信できるアプリケーションがあります。 2つ(またはそれ以上のデバイス)が対になっている場合、それらはセッションにある(セッションIDを持つ)データベース内のMQTTセッション - パフォーマーを作る方法?
トピックは、例えば次のとおり
{'phase': 'start', 'othervars': 'examplevar'}
ようなペイロードを持つ
session/<session-id>/<sender-id>/phase
すべてのセッションは、次の形式でmySQLデータベースにログインします。
| id | session-id | センダ | トピック(例:phase)| ペイロード |エントリタイム| ...
ここで、セッション全体を取得したいときは、session-idでクエリできます。
私はこのようになります達成したいもう一つのビュー:
は| セッションID(別名)| 開始時刻 | 終了時刻 | duration | 成功 |
成功はブール値です。現在のセッションで、ペイロードに 'phase': 'success'があるエントリがある場合はtrueです。それ以外の場合は成功しません。
ここでは、このクエリが非常に遅いという問題があります。毎回私はそれにアクセスしたいが、それが成功した場合は、時間計算と共に各セッションについて計算しなければならない。
この情報を計算して別のテーブルに入れるには、セッションの最後にスクリプトを作成する必要がありますか?私がこのソリューションで持っている問題は、重複したデータがあることです。
これをインデックスで高速化できますか?それとも、私は最初から巨大なデザインミスをしましたか?
ありがとうございます。
セッションIDは複数のセッションの複数の行を含むため、一意ではありません –