Denys writes:
> Steve Dirickson wonders:
> <<...
> Looking back over the thread, I don't see where any claims were made by
> anyone that any specific tool does or does not preserve the chronological
> sequence of chains on a sort/pack operation. ...>>
>
> Gee, I dunno, maybe your earlier statement: "Without a sort item, update
> activity alone will trash the sequence fairly quickly. A reload/repack will
> do so much more thoroughly."
>
> In all fairness though, Steve D. makes many good points.
..except about the repack :)
If the entries A, B, and C are on the same chain, and A points to B,
and B points to C, then *ANY* repacking done by Adager (and, I hope,
other tools) will preserve the linkage: A -> B -> C, *REGARDLESS* of
where A, B, and C are put in the final detail dataset. The chronology
is preserved.
What Steve may be confus about is: what happens if I *SERIALLY* read the
detail dataset...in what order will I find A, B, and C?
The answer is a simple one:
You have at best the guarantee that A, B, and C will be in ascending
addresses *IF* you wish them to be (e.g., if you packed along the
path wherein A->B->C).
You have at worst the same lack of guarantees that IMAGE *itself*
provided. I.e., when you originally DBPUT A, and later B, and later C,
forming A->B->C, IMAGE put A somewhere, B somewhere else, and C
somewhere else too ... with little or no constraints as to their
relative location. Thus, a serial read of the detail dataset
could result in C, A, and B ... or any of the other 5 possibilities!
BTW, a serial repack with Adager preserves serial relativity (ooohh...
a new phrase!) as well as chronology.
The only thing I can see happening that might have led to Steve's
incorrect statement(s) is this:
Assume that A is at entry 100, B is at entry 102, and C is at entry 101.
(And, logically, A->B->C). A serial read through the dataset will
encounter A, C, B ... note that order, it differs from the logical order!
If you repack along the path where A->B->C, the entries get moved
to somewhere sequential, for example: A at 200, B at 201, and C at 202.
Now, and only in this case, a *SERIAL* read through the dataset will
encounter A, B, C ... a different serial order than previously encountered.
However, a DBGET/chained will still properly read A->B->C, as expected.
--
Stan Sieler [log in to unmask]
http://www.allegro.com/sieler.html
|