One embodiment of the present invention provides a system that efficiently
propagates changes in hierarchically organized data to remotely cached
copies of the data. The system operates by receiving changes to the data
located on the server, and applying the changes to the data on the server.
These changes are propagated to remotely cached copies of the data on a
client in response to an event on a server, and independently of events on
the client, by (1) determining differences between the current version of
the data at the server and an older copy of the data at the client, which
the server has stored locally; (2) using the differences to construct an
update for the copy of the data, which may include node insertion and node
deletion operations for hierarchically organized nodes in the data; and
(3) sending the update to the client where the update is applied to the
copy of the data to produce an updated copy of the data. According to one
aspect of the present invention, the act of determining differences, and
the act of using the differences to construct the update both take place
during a single pass through the data. According to another aspect of the
present invention, the update for the copy of the data may include node
copy, node move, node collapse, node split, node swap and node update
operations.
Één belichaming van de onderhavige uitvinding verstrekt een systeem dat efficiënt veranderingen in hiërarchisch georganiseerde gegevens aan ver caching exemplaren van de gegevens verspreidt. Het systeem werkt door veranderingen in de gevestigde te ontvangen gegevens over de server, en de veranderingen in de gegevens toe te passen over de server. Deze veranderingen worden verspreid in ver caching exemplaren van de gegevens over een cliënt in antwoord op een gebeurtenis over een server, en onafhankelijk van gebeurtenissen over de cliënt, door (1) bepalende verschillen tussen de huidige versie van de gegevens bij de server en een ouder exemplaar van de gegevens bij de cliënt, die de server plaatselijk heeft opgeslagen; (2) gebruikend de verschillen om een update voor het exemplaar van de gegevens te construeren, die knooptoevoeging en van de knoopschrapping verrichtingen voor hiërarchisch georganiseerde knopen in de gegevens kunnen omvatten; en (3) verzendend de update naar de cliënt waar de update op het exemplaar van de gegevens wordt toegepast om een bijgewerkt exemplaar van de gegevens te veroorzaken. Volgens één aspect van de onderhavige uitvinding, de handeling van het bepalen van verschillen, en de handeling van het gebruiken van de verschillen om de update allebei te construeren vind tijdens één enkele pas plaats door de gegevens. Volgens een ander aspect van de onderhavige uitvinding, kan de update voor het exemplaar van de gegevens knoopexemplaar, knoopbeweging, knoopinstorting, knoopspleet, knoopruilmiddel en de verrichtingen van de knoopupdate omvatten.