There won't be any sharing violations.
End-users are reading/consulting documents from memory.
Publisher is reading documents from disk, and even then there won't be any conflict since the publisher works in stages (read & reload source document, NOT user document, save to temporary file, lock user document and write temporary file over user document)
Whether QVS and QDS run on the same or or a different machine makes no difference.
Thank you so much for your quick response.
If publisher is reloading to QVD file and user QVW reads from same QVD , is it same result ?
So publisher execute so many tasks in the same time in minutes, it is near real time environments.
When customers perform specific analysis, QVW reads the data from the QVD in real time.
In this case, is there no lock for QVD ?
No that's a different ball game.
When trying to read and write a single QVD at the exact same time, one of the applications (QVWs) will inevitably fail. That's why in enterprise production environments, such phases are serialized. For example, a three step data flow would look like:
- Extract every table from the data source (RDBMS) and create QVDs = ODS
- Read single or multiple source QVDs and create combined or aggregated data QVDs = QDS
- Reload all documents (QVWs) that have their QVDs renewed = Report
The publisher will chain these tasks in order 1-2-3 and will only start the next task if the previous one has successfully run to the end No need to lock things.
If you run QVD creation jobs in parallel, use task dependencies to let the next phase start only when the last of the QVD creation tasks has finished.