we are looking to the optimal way to detect changes in Data Archive, if an operator changes the value manually. What are the options?
Thank you for the hint.
You would be interested in a data pipe. See PIDataPipe for some help. I would avoid the older GetUpdateEvents ;method that is shown in most examples, and instead use the GetObserverEvents method. You may search on PI Square by searching on "data pipe" or "datapipe" or "GetObserverEvents".
thank you very much for your reply. I see that Observer pattern is a prefered way because of performance. However, we need to listen to the updates of all existing points in the system (~5000 points). Do you have any idea how to evaluate footprint that this may put on the production server?Thank you!
There is no once-size-fits-all answers to that question. If you have lots of cores and plenty of RAM, this should not be a problem. I have seen people subscribe to over 100_000 tags. How fast do the tags normally update? If there are sub-second tags, then this would be a concern. Since you are worried about an Operator changing a value, it sounds like they are manual data entry tags, or at least slow to update tags. If you query for changes every minute, do you expect to see all 5000 tags update values at least once, maybe more than once, or do you expect a fraction, like 20% or 1000 tags update? IN GENERAL, I don't see a problem with 5000 tags but until you program it, try it, and test it, you will not know the answer that works for your specific environment.
I agree with Rick here that the only sure way to know if this works well is to test it. With manually updating data and only 5k tags, I doubt PI Update Manager would struggle to send the snapshot updates. To answer your question, you can monitor this subsystem using a command line utility (pilistupd) discussed here:
Keep in mind that if you are having a bottleneck issue at the PI Update Manager level and there is plenty of resources to spare on the Data Archive (RAM and CPU), you can always add an additional subscriber from the same app by doing so from a different thread.
Retrieving data ...