|
|
1.1 ! root 1: \chapter {Replicating Updates} ! 2: \label {des-first} ! 3: \label {dist-update} ! 4: ! 5: ! 6: \section {Basic Update Approach} ! 7: \label {edb-ros} ! 8: ! 9: QUIPU 5.0 supports a simple automatic update ! 10: mechanism. ! 11: This allows for copying of Entry Data Blocks, ! 12: but with a simple check to ensure that only new information is copied. ! 13: Slave copies are obtained by use of a new remote operation. ! 14: The argument to the operation is the name of the Entry, and the ! 15: version number of the copy of the Entry Data Block held ! 16: locally. ! 17: A FULL copy of the Entry Data Block is returned if this version ! 18: is out of date. ! 19: In the DSA's entry, there is a list of Entry Data Blocks for which the DSA ! 20: has master or slave copies, and the DSA which it gets updates from. ! 21: For each Entry Data Block, there is the list of DSAs which pull the Entry ! 22: Data Block, and for slave copies, which DSA the update should come from. ! 23: It is assumed that this operation will be invoked sufficiently ! 24: often for it to be acceptable to consider the slave data as ! 25: ``official''. ! 26: For the type of usage being considered, this probably means several ! 27: times per day. ! 28: Within QUIPU, this operation will be added to a new protocol, which will ! 29: also contain the DSP ASEs \footnote{In QUIPU 5.0, getEDB is implemented ! 30: withing the DAP.}. ! 31: The operation is specified in Figure~\ref{getedb-py}. ! 32: ! 33: \tagrind {getedb}{EDB Access Operation}{getedb-py} ! 34: \clearpage ! 35: ! 36: Note that a DSA receiving a GetEDB operation, should check the associated ! 37: EDBInfo, to ensure that the DSA in question is allowed to pull a copy of ! 38: this EDB. ! 39: ! 40: The operation may be used to determine which version of the EDB is currently ! 41: master. This might be used when a query with dontUseCopy arrives, in order ! 42: to determine whether slave information is accurate. This would be a big ! 43: performance win for search and list operations, due to potnetila reduction ! 44: in information transferred. ! 45: ! 46: \section {Reliable ROS} ! 47: ! 48: This mechanism will be implemented in QUIPU 6.0. ! 49: ! 50: ! 51: Before we can explain the more sophisticated update approach, a new service ! 52: is described. This is ! 53: {\em Reliable ROS} ! 54: Reliable ROS has the following characteristics. ! 55: ! 56: \begin {itemize} ! 57: \item The operation should be expected to succeed (errors will require human ! 58: intervention, and so must be rare) ! 59: \item The operation may be applied to many systems (multicast) ! 60: \end {itemize} ! 61: ! 62: The argument is defined in Figure~\ref{reliableros-py} ! 63: ! 64: \tagrind [hb]{reliableros}{Reliable ROS}{reliableros-py} ! 65: ! 66: This argument identifies a ROS operation argument. ! 67: ! 68: Reliable ROS is only applicable to operations where the result is not in ! 69: doubt. ! 70: An operation is applied, and the result discarded. ! 71: Any error is assumed to be catastrophic, and should be flagged as an ! 72: operator error. ! 73: ! 74: In the QUIPU Directory, Reliable ROS operations will be applied to one or ! 75: more Entry Data Blocks, and the list is made explicit. ! 76: If one or more of the version numbers is wrong, the update is assumed to ! 77: have arrived out of sequence. ! 78: It will therefore be backed off for a temporary period, so that it can ! 79: be applied later when the missing update has been applied. ! 80: After a certain period, catastrophic loss can be assumed, and operator ! 81: intervention summoned. ! 82: ! 83: Reliable ROS is a multicast service. ! 84: Thus it may be used to apply updates to multiple DSAs. ! 85: This is achieved by basing it over the X.400 (1984 or 1988) P1 service ! 86: \cite{CCITT.MHS.84} \cite{CCITT.X411.84}. ! 87: Every DSA has an associated O/R address, which is naturally managed by ! 88: the QUIPU directory service. ! 89: Local delivery complying to the previous paragraph must be supported. ! 90: This goes beyond the basic X.400 services, as it implies UA ability to ! 91: perform temporary rejects on the basis of content. ! 92: This is straightforward to provide for a co-resident UA. ! 93: Atomic submission of multiple updates is achieved in a straightforward ! 94: manner, as this is a basic X.400 service. ! 95: ! 96: This approach may seem a little strange at first sight. ! 97: However, building a reliable spooling system needed for update is a ! 98: non-trivial exercise. ! 99: It is preferable to utilise other exising systems which can ! 100: already provide this service. ! 101: Modularity is one of the major benefits of OSI. ! 102: ! 103: \section {Incremental Update} ! 104: ! 105: This aspect will be implemented in QUIPU 6.0. ! 106: ! 107: The QUIPU update mechanism is fully general, except that modifyRDN cannot ! 108: be applied to non-leaf entries. This is because of the difficulty with ! 109: controlling references in other DSAs. ! 110: That is, all the the OSI Directory restrictions, except the one mentioned, are ! 111: lifted. ! 112: To achieve the effect of modifyRDN, the new tree must be created (as a copy of the ! 113: old one), and then the old one deleted. ! 114: The modfyRDN restriction means that all updates apply to a single Entry Data ! 115: Block. ! 116: ! 117: In basic terms, the update operation is now straightforward. Navigation to ! 118: the correct DSA occurs as for the QUIPU Name Service. The only distinction ! 119: is that the Master DSA must be selected, rather than picking a convenient ! 120: copy. The Master DSA will hold a copy of the Entry Data Block in memory. ! 121: The validity of the update in terms of the Directory Standards and Access ! 122: Control can be checked. The DSA will then use Reliable ROS to submit this ! 123: update to all of the entries which access it by GetEntryDataBlock. That is, ! 124: the same distribution hierarchy is used for both forms of update. Each ! 125: update will include the DSA generating the update (i.e. itself), and thus ! 126: avoid the problems of immediate disk synchronisation. ! 127: The Message Handling System deals with the reliable multicast. ! 128: ! 129: \section {Subtree Update} ! 130: ! 131: Currently, all EDBs must be dealt with explictly. It seems useful to extend ! 132: the current model to allow propogation of full subtrees. This is ! 133: particularly true where an EDB has a relatively small child EDB. ! 134: This will be added in QUIPU 6.0. ! 135: ! 136: \section {Spot Shadowing} ! 137: ! 138: This mechanism will be implemented in QUIPU 6.0. ! 139: ! 140: The basic QUIPU model assumes that sibling entries are held together. This ! 141: has been extended to allow for cross references and subordinate references. ! 142: These will lead to skeleton entries, which are pointers to other DSAs (which ! 143: will not be QUIPU). It seems desirable to automatically pull copies of such ! 144: entries in order to giver reasonable performance for searching. The ! 145: mechanism of ``spot shadowing'' will be used. As there is no mechanism for ! 146: supporting this properly, copies of the entry will simply be read across at ! 147: reasonable intervals. This is likely to be needed only for the first two ! 148: levels of the tree. Note that only one QUIPU DSA need perform this for a ! 149: given spot shadow. This can then be propagated to other QUIPU DSAs using ! 150: the superior private mechanisms. ! 151: ! 152: This approach can also be viewed as a system maintained cache.
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.