When Configuration Management is enabled for DNG, if we baseline it, it will copy everything to store in database?
![]()
jane zhou (106●10●68)
| asked Jun 23 '17, 10:03 a.m.
retagged Jan 18 '18, 12:57 a.m. by Minakshi Jaint (511●3) I am working on DNG 6.0.3.
When Configuration Management is enabled for DNG, if we baseline it, it will copy everything to store it in database?
One of our DNG expert declared that when you baseline a component, i.e. create snapshot, DNG database will copy all artifacts in that component at that moment to database.
Suppose you have a component with 10000 artifacts, then as long as you baseline it, it will generate another 10000 artifacts. So if you have 10 baselines, then you created 10*10000 artifacts. So it will eat your memory occupied very quickly to make your component explode.
So we have to make artifacts numbers in one component very small, i.e. decompose all artifacts into lots of component to avoid such thing happen.
But I am wondering whether IBM will manage database with version control in that way? For git as version control, it will not control baseline that way. Any reason Why IBM do copy things as resource is unlimited?
Thanks!
|
Accepted answer
![]() Creating a baseline or stream does not copy artifacts. Each artifact has a concept resource - a base, if you like. When you modify the artifact, you create a new versioned resource, which is really a small amount of metadata that also points to the concept resource. Your streams and baselines list the particular version to include for each concept resource - a set of RDF triples. Creating a new stream or baseline does not change the artifact in any way. When you create a baseline from a stream, it lists all artifact versions current for that stream - the baseline is a set of RDF triples. When you create a new stream from a baseline, that new stream lists all the same artifact versions from the baseline as a set of RDF triples - and then you can start modifying them to create new versions.
jane zhou selected this answer as the correct answer
Comments Hi Kathryn,
Thanks for your detailed explanation!
Now, I understand the way that how DNG manage baseline and stream. So basically, creating baseline or new stream from baseline will not introduce any copy artifacts operations. And for RDF triples, can we consider it as only changes related to artifact, but not simply copy everything in an artifact?
Thanks!
Best Regards,
Jane Zhou
Hi Jane, sounds like you've got it! I can't say exactly what is in the RDF triples since I didn't write the code :) but I know that we don't copy artifacts, and the intention is to maximize reuse. And do check the deployment wiki for more information about sizing. Good luck!
|
3 other answers
![]() Hi Daniel,
Thanks for your reply!
I have read document here
It mentioned A baseline is a repository object, consists of one or more change sets. Delivering or accepting a baseline effectively delivers or accepts all of the change sets in it.
So from physical storage point of view, a baseline only includes reference to a package of change sets, right? it will not copy all artifacts and save it into baseline object, right?
Say, you have initial baseline, say baseline_initial, which include reference to change sets for you creating initial artifacts. and you create baseline_day1, and it only include reference of change sets you did AFTER initial baseline and reference to initial baseline.
So, when you want to switch you configuration to baseline_day1, you just need read from baseline_day1, and fetch change sets in baseline_initial and change sets in baseline_day1 to restore all contents in day1
From physical storage point of view, for baseline object created, it only include changes between current baseline and previous baseline and reference to the previous baseline. It will not copy all change sets from the beginning that you create the first baseline into any baseline, because it is not efficient at all.
I am wondering from implementation point of view, how IBM implement baseline, because it will impact our decision on how to manage components, if every baseline include all change sets, it will cause memory limitation issue very quickly.
And May I ask how to do test to check memory after baseline is created on RDNG server? We think we need to do some test as verification.
Thanks!
Best Regards,
Jane Zhou
Comments Hi Jane,
Hi Kathryn,
Thanks for your reply!
Please see my reply as follows. since it is out of limitation.
Thanks!
Best regards,
Jane Zhou
|
![]() Hi Kathryn,
Thanks for your reply!
So suppose we have 1000 artifacts in DNG, then when you baseline it, you will record reference to these 1000 artifacts? or you will copy the content of 1000 artifacts at that moment into your baseline physically? say, artifact A, when you baseline it as baseline_1, the content is "ABC". and when next time you baseline it as baseline_2, the content is "ABCD". then if you want to switch back to baseline_1. how can you restore it to find the reference of artifact with"ABC" , it is stored independently somewhere in your memory with label as baseline_1? So, although you have artifact A, but in fact, you have many copies of artifacts inside the database.
And for stream, if you create a new stream on a baseline, you will not do copy work as well, for baseline, it is list of artifacts reference, if you want to change any artifacts on that steam, and baseline it, basically, you create a new artifacts with changes. then later you can refer to it. So baseline will make more artifacts generated. If you change 1000 artifacts, 1000 artifacts will be generated internally for later reference, which, I think it is not a good way to manage memory.
Thanks!
Best Regards,
Jane Zhou
|
Your answer
Dashboards and work items are no longer publicly available, so some links may be invalid. We now provide similar information through other means. Learn more here.