I'm wondering why I really need of commitment after a c-store command;
I can understand the commit is a sort of assurance about the fact the message was actually taken in charge by the storage and the storage takes the responsibility of it, but I wonder why is not safe enough to rely on the response status?
I read some explanations about that but none convinced me all the way. As far as I understood a commit can be required or better desirable basically because you can not totally trust the system you are sending the message to.
Well it sound like: when you insert a record in a database table you need to verify if the record has really been inserted as you can't trust the database engine... doesn't look like a little odd? if I can't trust the database engine I'm going to replace it with one trustable
Anyone can give a more exhaustive interpretation of the real meaning of Storage Commitment Service?
I will try to answer your question with examples of 2 systems I have been working on in my professional life. So these are no dummy examples but practical relevant cases.
Zero footprint viewer (early 2000's, still some installations around)
When this viewer receives images, they are not copied to disk at all. Instead, they are kept in memory and directly displayed to the user. When the viewer is closed, the images are gone from the system that has received them.
C-Store success means: I have received the images, and I am able to display them.
Storage commitment is not supported by such kind of a system.
Off-site encrypted deep archive
This system has a small local "PACS server" on site with a little disk capacity used as a scratch buffer. The local "PACS server" encrypts the images and forwards them to an off-site storage center where they are written to tape. For providing bullet proof data security, the data-center is mirrored (i.e. copied to another storage center in another location which also writes them to tape). The local "PACS server" is the system to which acquisition modalities are sending their images to for the purpose of archiving.
C-Store success means: I have received the images and inserted them in a queue to the storage center
Storage commitment success means: I have received confirmation from both storage centers that the images are saved on tape. From now on, I will be responsible for safekeeping the images - you are allowed to delete your local copies.
Obviously this procedure takes hours or days (when big amounts of data are migrated: even months). Thus it is not suitable to be expressed through C-Store success, for in most cases the C-Store success of image (n-1) triggers the transfer of image n on the client's end.
This is why Storage success and Storage Commitment confirmation are quite different levels of "how safe your images are on the receiver's end".
When you talk to the vendor of the off-site archiving service, he will claim: "We take responsibility for image loss by confirming storage commitment. As the local PACS server may be damaged before the images have been transferred to the storage center, we will not take responsibility for the loss of images for which we have not confirmed the safekeeping. In other words: C-Store success does not allow you to delete your local copies."
HTH
kritzel_sw
Accepted answer by @kritzel_sw explains it all; I am adding my two cents:
1] It is recommended by IHE
Even though DICOM does not mention it as mandatory service, IHE recommends it.
If your application creates instances and send those to SCP, you should verify using Storage Commitment that all the instances were archived by SCP before deleting those from your storage.
2] As a CStore SCU, you cannot know whether SCP supports archiving
Every CStore SCP is not an archiving solution. As also mentioned in accepted answer, SUCCESS response from SCP just means "I received the data and I can do my work with this, thanks". SCU could not know whether "my work" includes "archiving".
3] CStore SUCCESS response is not guarantee of success (in practical world)
For the sake of improving performance, some SCPs send SUCCESS response before even validating and storing dataset. When the operation is finished (or may be on other thread), they validate the dataset and attempt to store it. At this stage, if validations fail or storage fail, SCP have no way to communicate back that the storage was not successful.
4] Better safe than sorry. Read this excellent article
It’s like double booking. Storage is the transaction and Storage Commitment is the reconciliation.
In fact, read all other articles by Roni.
来源:https://stackoverflow.com/questions/42220918/storage-commitment-service-why-i-really-need-a-what-is-the-real-purpose