OPC UAs generic information model is a USP and differentiates it from other standards and protocols. While it is great for live-data discovery, streaming and analysis, I have not yet found a "proper" architecture to save and store UA-data. While I know that Historical Access is specified, I have not yet seen anyone use it in production. I also figure that historizising OPC UA servers would not scale well as NoSQL databases. Also the whole design of historizising nodes would probably be new to developers due to its inherent unique properties. On the other hand, storing OPC UA data in relational databases would nullify the advantages from the data model since RDBMs are unfit to model complex relations.
Is there an alternative between these two approaches that I am not seeing? How do you guys preserve semantic structures in databases?
It is not clear what your issues are.
A few thoughts:
1) How you store the information model is not related to how you store the historical data. You could use different databases.
2) SQL DBs can and do store the complex relations represented in an UA information model
3) NoSQL DB is a generic term that captures many different types of storage. Some of them (ordered key-value stores) should be very suitable for accessing via the OPC UA History APIs.
4) The UA information model should be well suited for a NoSQL graph database. It is not clear what the issue is.