大量のgpsデータといくつかの追加情報をデータベースに保存し、レポートやその他の頻繁ではないタスクのためにそれにアクセスするタスクがあります。
GPSデバイスからメッセージを受信すると、フィールドの数が変化する可能性があります。例えば
メッセージ1:DeviceId LatLonスピードコース
DIO1ADC1メッセージ2:DeviceIdLatコースDIO2IsAlarmOn
メッセージ3:DeviceId LatLon高さコースDIO2IsAlarmOnなど最大20〜30フィールド
さまざまなデバイスベンダー、さまざまなプロトコルなど、フィールドの数を統一する方法はありません。また、データベースのサイズと、できるだけ多くのdbベンダーをサポートする必要があるという問題もあります(NHibernateが使用されます)。
だから私はそのようにメッセージを保存することを思いついた:
Table1-Tracks
PK-TrackId
TrackStartTime
TrackEndTime
FirstMessageIndex(stores MessageId)
LastMessageIndex(stores MessageId)
DeviceId(FKではない)
表2-メッセージ
PK-MessageIdTimeStampFirstDataIndex (stores
DataId
)
LastDataIndex(stores DataId)
表3-MessageDataPK
-DataIddouble
Data
short DataType
すべてのインデックスはhiloで割り当てられます。Nhibernateが3000+kメッセージの認証を迅速に処理できるようにクエリを調整しました(バッハも使用されます)。パフォーマンスATMに満足しています。しかし、50GB以上または100GB以上のサイズでどのように機能するかはわかりません。
私の問題とストレージ設計全体に関するヒントやヒントに非常に感謝します=)
ありがとう、Alexey
PS。私の英語をお詫びします=)