Annotation of 43BSDReno/contrib/isode-beta/doc/quipu/update.tex, revision 1.1

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.

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.