ES2341245T3 - Control granular de un sistema de autorizacion de la informacion replicada por limitacion y sin limitacion. - Google Patents

Control granular de un sistema de autorizacion de la informacion replicada por limitacion y sin limitacion. Download PDF

Info

Publication number
ES2341245T3
ES2341245T3 ES04102757T ES04102757T ES2341245T3 ES 2341245 T3 ES2341245 T3 ES 2341245T3 ES 04102757 T ES04102757 T ES 04102757T ES 04102757 T ES04102757 T ES 04102757T ES 2341245 T3 ES2341245 T3 ES 2341245T3
Authority
ES
Spain
Prior art keywords
resource
resources
machine
metadata
limit value
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
ES04102757T
Other languages
English (en)
Inventor
Dan Teodosiu
Nikolaj S. Bjorner
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Application granted granted Critical
Publication of ES2341245T3 publication Critical patent/ES2341245T3/es
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/16Protection against loss of memory contents
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file systems
    • G06F16/184Distributed file systems implemented as replicated file system
    • G06F16/1844Management specifically adapted to replicated file systems
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99951File or database maintenance
    • Y10S707/99952Coherency, e.g. same view to multiple users
    • Y10S707/99954Version management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Document Processing Apparatus (AREA)
  • Hardware Redundancy (AREA)
  • Glass Compositions (AREA)
  • Devices For Checking Fares Or Tickets At Control Points (AREA)
  • Storage Device Security (AREA)

Abstract

Un procedimiento implementado por computadora para reproducir recursos, en el que cada recurso está asociado con unos metadatos (830) y un contenido (825), incluyendo cada metadato uno o más campos que son actualizados siempre que el contenido del recurso asociado es modificado y un valor límite (835) independiente de cualquier cambio local efectuado en el contenido, siendo cada valor límite un valor asignado al recurso respectivo y utilizado en la resolución de conflictos de actualización, comprendiendo el procedimiento: determinar (610 - 625) si un primer recurso (822) que reside en una primera máquina (110, 181, 201, 301, 501, 805) debe ser utilizado para actualizar un segundo recurso (822) que reside en una segunda máquina (110, 181, 202, 302, 502, 805) mediante la comparación del valor límite del primer recurso con el valor límite del segundo recurso; y si el valor límite del primer recurso tiene una prioridad más alta que el valor límite del segundo recurso, actualizar (630) el segundo recurso a partir del primer recurso.

Description

Control granular de un sistema de autorización de la información replicada por limitación y sin limitación.
Campo de la invención
La presente invención se refiere, en general, al campo de los dispositivos informáticos y, más concretamente, a los sistemas de replicación de recursos.
Antecedentes
Los sistemas de replicación multimaster oportunistas permiten cambios sin restricciones del contenido replicado de cualquier máquina que participa en un conjunto de reproducciones determinado. Estos cambios potencialmente conflictivos se concilian bajo el control del sistema de replicación utilizando unos criterios de reproducción de conflictos que definen, para cada situación conflictiva, qué cambio conflictivo tiene prioridad respecto de otros. En el pasado, los criterios principales de resolución de conflictos utilizados han sido el tiempo físico o lógico del cambio, teniendo prioridad el cambio más reciente respecto de todos los demás.
Sin embargo, existe una pluralidad de supuestos en los que los usuarios o las aplicaciones pueden desear contar con vías adicionales para controlar qué actualización concurrente tiene prioridad respecto de las demás y, a la inversa, qué actualizaciones deben ceder la prioridad. Lo que se necesita es un procedimiento y un sistema flexibles para controlar qué contenido tiene prioridad y es replicado.
El sistema Oracle8i Replication - Release 8.1.5, febrero 1999, se refiere a la replicación en sistemas de bases de datos distribuidas. Cuando dos transacciones que proceden de sitios diferentes actualizan la misma fila aproximadamente al mismo tiempo, puede producirse un conflicto de actualizaciones. El sitio de recepción detecta un conflicto de actualizaciones si hay alguna diferencia entre los antiguos valores de la fila replicada, esto es, el valor antes de la modificación y los valores actuales de la misma fila en el sitio de recepción. Hay procedimientos de resolución de conflictos preconstruidas que pueden emplearse para resolver conflictos que incluyen los procedimientos del valor de marcado temporal primero y último, los grupos de prioridad y la prioridad de sitios. El procedimiento de marcado temporal más temprano aplica los cambios procedentes del sitio con el marcado temporal más temprano y el procedimiento de marcado temporal más tardío aplica a los cambios procedentes del sitio con el tiempo de marcado temporal más tardío. Los grupos prioritarios permiten la asignación de un nivel de prioridad para cada valor posible de una columna concreta. Si se detecta un conflicto, la tabla cuya columna de "prioridad" tiene un valor menor es actualizada utilizando los datos procedentes de la tabla del valor prioritario más alto. La prioridad de sitios es una forma especializada de los grupos prioritarios. Para detectar y resolver el conflicto de actualizaciones para una fila, el sitio de propagación debe enviar una determinada cantidad de datos acerca de las nueva y antigua versiones de la fila hasta el sitio de recepción. La cantidad de datos que debe ser comunicada puede reducirse mediante el envío de los valores antiguos solo si se necesitan para detectar y resolver conflictos, así como los nuevos valores de cada columna actualizada de cada grupo de columnas.
El sistema Oracle&i - Replication Management API Reference - Release 2 (8.1.6), diciembre 1999, es una descripción de la API de gestión de reproducciones que explica la forma en la que pueden implementarse los procedimientos de resolución de conflictos.
Sumario
Constituye un objetivo de la presente invención reducir la sobrecarga de la red en los sistemas de replicación de recursos.
Este objetivo se consigue mediante el objeto de las reivindicaciones independientes.
En las reivindicaciones dependientes se exponen formas de realización de la invención.
Se proporciona un procedimiento y un sistema para controlar qué contenido consigue prioridad cuando se reproduce. Un conjunto de reproducciones está compuesto por un conjunto de recursos. Cada recurso está asociado con datos de recursos y metadatos de recursos. Los datos de recursos, en el caso de archivos, incluye los contenidos y los atributos de los archivos, mientras que los metadatos de recursos incluyen los atributos adicionales que son relevantes para negociar la sincronización durante la replicación. Un campo suplementario denominado "valor límite" es añadido a los metadatos asociado con cada recurso. Durante la sincronización, se comparan los valores límite. El recurso con un valor límite más alto incluye el contenido que está controlando y que consigue ser replicado. Si los valores límite son iguales (y mayores que un valor determinado), el recurso de control se determina en base a otros
metadatos.
Los valores límite son independientes de los datos locales respecto del contenido. Esto es, aunque un cambio local de contenido pueda afectar a otros metadatos (por ejemplo un marcado temporal, un valor de reloj o de otro tipo), el cambio local de contenido no afecta al valor límite a menos que se indique lo contrario.
En un aspecto de la invención, un recurso puede tener un valor límite que indique que el recurso no está limitado. Si un recurso no está limitado, ello indica que el recurso no debe ser transmitido desde la máquina sobre la cual el recurso está almacenado. Cuando un recurso contendiente es recibido con vistas a su sincronización, un recurso que no está limitado pueden (y es sustituido durante la sincronización) frente a los recursos que están limitados.
En otro aspecto de la invención, solo se transmiten las diferencias entre recursos en una máquina con un recurso ganador y una máquina de contenido perdedor. Por ejemplo, unos metadatos de recurso pueden ser transmitidos sin transmitir el contenido de los recursos. Otro ejemplo puede ser que las diferencias en el contenido de los recursos pueden ser transmitidas durante la sincronización.
Otras ventajas se pondrán de manifiesto a partir de la descripción detallada subsecuente tomada en combinación con los dibujos, en los cuales:
\vskip1.000000\baselineskip
Breve descripción de los dibujos
La Figura 1 es un diagrama de bloques que representa un sistema informático dentro del cual puede ser incorporada la presente invención;
la Fig. 2 es un diagrama de bloques que representa un sistema de replicación de recursos que incluye dos máquinas que reproducen recursos de acuerdo con diversos aspectos de la invención;
la Fig. 3 es un diagrama de bloques que representa un sistema en el cual dos máquinas intentan conciliar un recurso incluido en ambas de acuerdo con diversos aspectos de la invención;
la Fig. 4 muestra algunos datos de recursos ejemplares y unos metadatos que pueden ser utilizados destinados a una máquina de las Figs. 2 y 3 de acuerdo con diversos aspectos de la invención;
la Fig. 5 muestra algunos datos de recursos ejemplares y unos metadatos que pueden ser utilizados de acuerdo con algunos aspectos de la invención;
la Fig. 6 es un diagrama de flujo de datos que representa genéricamente unas etapas ejemplares que pueden producirse para sincronizar un recurso entre dos máquinas de acuerdo con diversos aspectos de la invención;
la Fig. 7 es un diagrama de flujo de datos que representa genéricamente unas etapas ejemplares que pueden producirse para llevar a cabo una salvaguardia sin autoridad de acuerdo con diversos aspectos de la invención; y
la Fig. 8 es un diagrama de bloques que representa una máquina ejemplar configurada para operar en un sistema de replicación de recursos de acuerdo con diversos aspectos de la invención.
\vskip1.000000\baselineskip
Descripción detallada Entorno operativo ejemplar
La Figura 1 ilustra un ejemplo de un entorno de sistema informático apropiado 100 sobre el cual puede ser implementada la invención. El entorno de sistema informático 100 es solo un ejemplo de un entorno informático apropiado y no pretende dar a atender limitación alguna acerca del alcance o el uso o la funcionalidad de la invención. Tampoco el entorno informático 100 debe ser interpretado como dependiente o condicionado con respecto a uno cualquiera o a una combinación de los componentes ilustrados en el entorno operativo ejemplar 100.
La invención es operativa con otros entornos o configuraciones de sistemas informáticos de propósito general o de propósito especial. Ejemplos de sistemas, entornos y/o configuraciones informáticas sobradamente conocidas que pueden resultar apropiados para su uso con la invención incluyen, pero no se limitan a, computadoras personales, computadoras de servidor, dispositivos manuales o portátiles, sistemas de microprocesador, sistemas basados en microcontrolador, descodificadores, dispositivos electrónicos programables por los consumidores, PCs de red, minicomputadoras, computadoras centrales, entornos informáticos distribuidos que incluyan cualquiera de los sistemas o dispositivos expuestos, y similares.
La invención puede ser descrita en el contexto general de las instrucciones ejecutables por computadora, como por ejemplo módulos de programa, que son ejecutados por una computadora. En general, los módulos de programas incluyen rutinas programas, objetos, componentes, estructuras de datos, etc., los cuales ejecutan tareas concretas o implementan tipos de datos abstractos concretos. La invención puede así mismo llevarse a la práctica en entornos informáticos distribuidos donde las tareas sean llevadas a cabo mediante dispositivos de procesamiento distantes que estén unidos por medio de una red de comunicaciones. En un entorno informático distribuido, los módulos de programas pueden estar situados en medios de almacenaje informático tanto locales como distantes, incluyendo dispositivos de almacenaje de memoria.
Con referencia a la Figura 1, un sistema ejemplar para la implementación de la invención incluye un dispositivo informático de propósito general bajo la forma de una computadora 110. Los componentes de la computadora 110 pueden incluir, pero no se limitan a, una unidad de procesamiento 120, una memoria 130 del sistema y un bus 121 del sistema que acopla diversos componentes del sistema, incluyendo la memoria del sistema, a la unidad de procesamiento 120. El bus 121 del sistema puede ser cualquiera de los diversos tipos de estructuras de bus incluyendo un bus de memoria o un controlador de memoria, un bus periférico y un bus local que utilice una cualquiera entre una diversidad de arquitecturas de bus. A modo de ejemplo, y no de limitación, dichas estructuras incluyen el bus de la Arquitectura Estándar del Sector Informático (ISA), el bus de la Arquitectura Microcanal (MCA), el bus de la ISA Ampliada (EISA), el bus VESA local, y el bus de Interconexión de Componentes Periféricos (PCI) también conocido como bus Mezzanine.
La computadora 110 incluye típicamente una diversidad de medios legibles por computadora. Los medios legibles por computadora pueden ser cualquier medio disponible al que se pueda acceder mediante la computadora 110 e incluyen medios volátiles y no volátiles, y medios cambiables y no cambiables. A modo de ejemplo, y no de limitación, los medios legibles por computadora pueden comprender medios de almacenamiento por computadoras y medios de comunicación. Los medios de almacenamiento por computadoras incluyen medios volátiles y no volátiles, medios cambiables y no cambiables implementados en cualquier procedimiento o tecnología para el almacenamiento de información, como por ejemplo instrucciones legibles por computadora, estructura de datos, módulos de programa, u otros datos. Los medios de almacenamiento por computadoras incluyen, pero no se limitan a, la RAM, la ROM, la EEPROM, la memoria flash u otra tecnología de memoria, el CD-ROM, los discos versátiles digitales (DVD) u otro almacenamiento de discos ópticos, casetes magnéticos, cinta magnética, almacenamiento de discos magnéticos u otros dispositivos de almacenamiento magnético, o cualquier otro medio que pueda ser utilizado para almacenar la información deseada y a la que pueda accederse mediante la computadora 110. Los medios de comunicación típicamente incorporan instrucciones legibles por computadora, estructuras de datos, módulos de programas, u otros datos en una señal de datos modulada, como por ejemplo una onda portadora u otro mecanismo de transporte e incluyen cualquier medio de suministro de información. El término señal de datos modulada significa una señal que presenta una o más de sus características ajustadas o cambiadas de tal manera que codifiquen información en la señal. A modo de ejemplo, y no de limitación, los medios de comunicación incluyen medios cableados, como por ejemplo una red cableada o una conexión cableada de punto a punto, o medios inalámbricos, como por ejemplo medios infrarrojos, de RF, acústicos y otros medios inalámbricos. Así mismo, pueden incluirse dentro del alcance de los medios legibles por computadora, combinaciones de cualquiera de los medios anteriormente referidos.
La memoria 130 del sistema incluye unos medios de almacenamiento informáticos bajo la forma de una memoria volátil y/o no volátil, como por ejemplo una memoria de solo lectura (ROM) 131 y una memoria de acceso aleatorio (RAM) 132. Un sistema de entrada/salida básico 133 (BIOS), que contiene las rutinas básicas que ayudan a transferir información entre los elementos existentes dentro de la computadora 110, como por ejemplo durante la puesta en marcha, están típicamente almacenados en la ROM 131. La RAM 132 típicamente contiene datos y/o módulos de programas a los que se puede acceder de forma inmediata y/o sobre los cuales en la actualidad se opera mediante la unidad de procesamiento 120. A modo de ejemplo, y no de limitación, la Figura 1 ilustra un sistema operativo 134, unos programas de aplicación 135, otros módulos de programa 136 y unos datos de programa 137.
La computadora 110 puede así mismo incluir otros medios de almacenamiento por computadora cambiables/no cambiables, volátiles/no volátiles. Solo a modo de ejemplo, la Figura 1 ilustra una unidad de disco duro 140 que lee a partir de o escribe sobre unos medios magnéticos no cambiables, no volátiles, una unidad de disco magnético 151 que lee a partir de o escribe sobre un disco magnético cambiable, no volátil 152, y una unidad de disco óptico 155 que lee a partir de o escribe sobre un disco óptico cambiable, no volátil 156, como por ejemplo un CD-ROM u otro medio óptico. Otros medios de almacenamiento por computadora cambiables/no cambiables, volátiles/no volátiles que pueden ser utilizados en entornos operativos ejemplares incluyen, pero no se limitan a, casetes de cintas magnéticas, tarjetas de memoria flash, discos versátiles digitales, cintas de vídeo digitales, RAM de estado sólido, ROM de estado sólido y similares. La unidad de disco duro 141 está típicamente conectada al bus del sistema 121 a través de una interfaz de memoria no cambiable, como por ejemplo la interfaz 140 y la unidad de disco magnético 151 y la unidad de disco óptico 155 están típicamente conectados al bus de sistema 121 mediante un interfaz de memoria cambiable como por ejemplo la interfaz 150.
Las unidades de disco y sus medios de almacenamiento por computadora asociados, expuestos anteriormente e ilustrados en la Figura 1, proporcionan el almacenamiento de las instrucciones legibles por computadora, de las estructuras de datos, de los módulos de programas, y de otros datos destinados a la computadora 110. En la Figura 1, por ejemplo, la unidad de disco duro 141 se ilustra almacenando el sistema operativo 144, los programas de aplicación 145, otros módulos de programas 146 y los datos de programas 147. Nótese que estos componentes pueden ser, o bien los mismos o diferentes del sistema operativo 134, de los programas de aplicación 135, de otros módulos de programa 136 y de los datos de programa 137. Al sistema operativo 144, a los programas de aplicación 145, a los otros módulos de programas 146, y a los datos de programas 147 se les otorgan en la presente memoria números diferentes para ilustrar que, como mínimo, son copias diferentes. Un usuario puede introducir comandos e información en la computadora 20 a través de dispositivos de entrada, como por ejemplo un teclado 162 y un dispositivo de señalización 161, habitualmente designado como ratón, una bola o una tableta táctil. Otros dispositivos de entrada (no mostrados) pueden incluir un micrófono, una palanca de mando, una tableta de juegos, una antena parabólica, un escáner, una pantalla táctil de un PC portátil u otra tableta de escritura, o elemento similar. Estos y otros dispositivos de entrada están a menudo conectados a la unidad de procesamiento 120 a través de una interfaz de entrada de usuario 160 que está acoplada al bus del sistema, pero puede estar conectada a otras estructuras de interfaz y bus, como por ejemplo a un puerto paralelo, a un puerto de juegos o a un bus serie universal (USP). Un monitor 191 u otro dispositivo de visualización está así mismo conectado al bus 121 del sistema por medio de una interfaz, como por ejemplo una interfaz de vídeo 190. Además del monitor, puede incluirse también unas computadoras u otros dispositivos de salida periféricos, como por ejemplo unos altavoces 197 y una impresora 196, los cuales pueden estar conectados a través de una interfaz periférica de salida 190.
La computadora 110 puede operar en un entorno de conexión a red utilizando conexiones lógicas con una o más computadoras distantes, como por ejemplo una computadora distante 180. La computadora distante 180 puede ser una computadora personal, un servidor, un encaminador, un PC de red, un dispositivo homólogo u otro nodo de red común, y típicamente incluye muchos o todos los elementos descritos anteriormente con relación a la computadora 110, aunque solo se ha ilustrado en la Figura 1 un dispositivo de almacenamiento de memoria 181. Las conexiones lógicas representadas en la Figura 1 incluye una red de área local (LAN) 171 y una red de área amplia (WAN) 173, pero pueden así mismo incluir otras redes. Dichos entornos de conexión a red son habituales en oficinas, redes informáticas de ámbito corporativo, intranet e Internet.
Cuando se utiliza en un entorno de conexión a una LAN, la computadora 110 es conectada a la LAN 171 a través de una interfaz o adaptador de red 170. Cuando es utilizada en un entorno de conexión a una WAN, la computadora 110 típicamente incluye un módem 172 u otro medio para establecer comunicaciones a través de la WAN 173, como por ejemplo Internet. El módem 172, el cual puede ser interno o externo, puede estar conectado al bus 121 del sistema por medio de la interfaz de entrada de usuario 160 o de otro mecanismo apropiado. En un entorno de conexión a red, los módulos de programa representados con respecto a la computadora 110, o porciones de éstos, pueden ser almacenados en el dispositivo de almacenamiento de memoria distante. A modo de ejemplo, y no de limitación, la Figura 1 ilustra unos programas de aplicación a distancia 185 que reside en el dispositivo de memoria 181. Debe apreciarse que las conexiones de red mostradas son ejemplares y que pueden ser utilizados otros medios de establecer un enlace de comunicaciones entre las computadoras.
\vskip1.000000\baselineskip
Control de actualizaciones con replicación de recursos
La Fig. 2 es un diagrama de bloques que representa un sistema de replicación de recursos que incluye dos máquinas que reproducen recursos de acuerdo con diversos aspectos de la invención. Las máquinas 201 y 202 reproducen el recurso A y lo actualizan simultáneamente desde el contexto incorporado x al contexto incorporado y, u, o z. Los contenidos x, y, u, y z pueden corresponder, por ejemplo a números y relojes de secuencia de versiones diferentes para el recurso A.
El término "máquina" no se limita simplemente a una máquina física. Por el contrario, una sola máquina física puede incluir múltiples máquinas virtuales. La replicación de una máquina a otra máquina, tal y como se utiliza en la presente memoria, implica la replicación de uno o más miembros del mismo conjunto de reproducciones de una máquina, virtual o física, a otra máquina, virtual o física. Una sola máquina física puede incluir múltiples miembros del mismo conjunto de reproducciones. De esta forma, los miembros de replicación de un conjunto de reproducciones pueden comportar la sincronización de los miembros de una sola máquina física que incluya dos o más miembros del mismo conjunto de reproducciones.
Un sistema de replicación típicamente mantendrá dos conjuntos relacionados de datos con cada recurso: los datos de recursos y los metadatos de recursos. En sistemas de replicación que incluyan almacenamientos de datos basados en archivos designados de un sistema de archivos, los datos de recursos pueden incluir el contenido de los archivos, así como cualquier atributo de archivo que esté almacenado en el sistema de archivos en asociación con el contenido de los archivos. Los atributos de los archivos pueden incluir listas de control de acceso (ACLs), tiempos de creación/modificación y otros datos asociados con un archivo. En sistemas de aplicación que incluyan almacenamiento de datos no basados en archivos designados en un sistema de archivos (por ejemplo, aquellos en los cuales los recursos están almacenados en una base de datos o en un almacén de datos basado en objetos), son almacenados los datos de recursos apropiados al almacén de datos. A lo largo del presente documento, los sistemas de replicación basados en archivos de un sistema de archivos son a menudo utilizados con fines de ilustración, pero debe advertirse que cualquier almacén de datos capaz de almacenar un contenido puede ser utilizado sin apartarse del alcance de la presente invención.
Los metadatos de los recursos comprenden un conjunto de atributos adicionales que son relevantes para negociar la sincronización durante la replicación. Para cada recurso, los metadatos de recursos puede incluir un identificador globalmente único (GUID), si el recurso ha sido borrado, un número de secuencia de versión junto con la autoría de un cambio, un valor de reloj para reflejar el tiempo en el que se produjo un cambio, y otros cambios, como por ejemplo un compendio que resuma los valores de los datos de recurso y puede incluir unas signaturas para el contenido de los recursos. Un compendio puede ser utilizado para establecer una comparación rápida para soslayar la transferencia de datos durante la sincronización de la replicación, por ejemplo. Si un recurso situado en una máquina de destino es sincronizado con un contenido situado en una máquina de fuente (por ejemplo tal y como se indica mediante un compendio), la sobrecarga de la red puede reducirse al mínimo precisamente mediante la transmisión de los metadatos de los recursos, sin transmitir los propios datos de los recursos. La transmisión de los metadatos de los recursos se lleva a cabo para que la máquina de destino pueda reflejar los metadatos incluidos en la máquina de origen en sus actividades de replicación subsecuentes. Esto puede permitir que la máquina de destino, por ejemplo, se convierta en una máquina de origen en una actividad de replicación subsecuente. Los metadatos de los recursos pueden ser almacenados con o separados de los datos de los recursos sin apartarse del alcance de la invención.
En general, en los sistemas distribuidos de área amplia, no es factible adoptar una sincronización de reloj a un nivel muy granular. Ello impide que los sistemas de replicación utilicen un reloj global para determinar los ganadores de las actualizaciones y creaciones concurrentes. Los reproductores típicamente utilizan relojes distribuidos lógicos que son marcados sobre los metadatos para el contenido distribuido. Un reloj lógico es incrementado cuando un contenido es actualizado, por posición a ser sobrescrito por el reloj local físico del tiempo de cambio. El reloj lógico de esta forma respeta la causalidad: las actualizaciones del mismo contenido son marcadas con valores de reloj en continuo aumento. El valor de reloj de A:x de la Fig. 2 puede, por ejemplo, ser cuatro ("4"). El sistema de replicación asegura entonces que los valores de reloj asociados con A:y y A:z son mayores de cuatro. La relación entre esos valores de reloj es arbitraria. Los valores pueden o pueden no ser idénticos, en cuanto son asignados de forma independiente (por ejemplo, la máquina 201 asigna el valor de reloj para A:y mientras la máquina 202 asigna el valor de reloj para A:z).
En la sincronización de replicación normal, los valores de reloj pueden ser utilizados para determinar el ganador de un conflicto en base a una estrategia de resolución de conflictos de victorias del último escritor. Los datos con el valor de reloj más alto pueden indicar unos datos más recientes que los datos replicados con valores de reloj menores. La estrategia de las victorias del último escrito es congruente con los relojes lógicos, en cuanto preservan la causalidad.
De acuerdo con un aspecto de la presente invención, los metadatos de los recursos son aumentados con un campo numérico llama "valor límite". Un valor límite puede ser asignado a cada recurso o a una porción del mismo. Los valores límite son utilizados durante la resolución de conflictos, en conjunción con los demás metadatos, de acuerdo con un conjunto de reglas definidas a continuación.
En una forma de realización de la invención, de acuerdo con las reglas, los valores límite son inicializados ya sea a cero o a uno. Un valor de cero indica que el recurso no debe ser enviado o hacerse visible (por medio del mecanismo de replicación) a otra máquina. Un valor de uno indica que el recurso puede ser replicado y hecho visible a otras máquinas. Un recurso que tiene un valor límite de cero puede ser considerado un recurso esclavo, mientras que un recurso que tiene un valor límite de uno puede ser considerado como un recurso maestro.
Si durante un actividad de replicación entre dos máquinas, un recurso (por ejemplo un recurso A) existente en una de las máquinas (por ejemplo, la máquina 201) tiene un valor límite más alto que el mismo recurso existente en otra máquina (por ejemplo, la máquina 202, el recurso que tiene el valor límite más alto es replicado sobre la máquina con el recurso que tiene el valor límite más bajo. En otras palabras, el recurso con el valor límite más alto gana (y es replicado), con independencia de que existan otros metadatos del recurso.
Al reproducir un recurso que ya existe en dos máquinas pero que es diferente, pueden utilizarse mecanismos que intenten propagar el número menor de datos posible para sincronizar el recurso. Por ejemplo, en lugar de enviar todos los datos asociados con el recurso, el sistema de replicación puede determinar qué datos del recurso existentes en la máquina de envío son diferentes de los datos del recurso existentes en la máquina de retención y enviar una o más diferencias o deltas para actualizar el recurso sobre la máquina de recepción.
Si durante una actividad de replicación, los valores límite son los mismos y mayores de cero, entonces el recurso que gana (y que es replicado) depende de los otros metadatos de recurso asociados con cada recurso. En otras palabras, cuando los valores límite son los mismos, la replicación avanza de acuerdo con las reglas normales asociadas con la replicación.
De esta manera, los valores límite proporcionan un control de grano fino en el proceso de resolución de conflictos, dado que obtienen la prioridad en la resolución de conflictos. Esto es, cuando los metadatos de dos recursos son comparados, el recurso con el valor límite más alto obtiene la prioridad. Otros atributos, como por ejemplo los relojes lógicos, son comparados solo cuando los límites son iguales.
Los valores límite pueden tener similares propiedades a los relojes lógicos, dado que en una implementación pueden solo ser incrementados, o repuestos a cero. Por ejemplo, un valor límite puede ser incrementado cuando un usuario o un proceso da instrucciones al sistema de replicación para que lo haga. Esto a veces se designa como "limitación del recurso" ["fencing the resource"] o simplemente "limitación" ["fencing"]. Un incremento del valor límite es independiente de las actualizaciones sobre los datos de los recursos. Los incrementos del límite se hacen visibles (por ejemplo, son transmitidos en metadatos) mediante replicación. Dado que la limitación no es una operación frecuente, puede utilizarse una representación íntegra del tiempo completo de la tarea para incrementar un límite hasta el máximo de (el valor límite actual más uno) y (el tiempo del reloj de pared actual).
Un valor límite puede ser repuesto a cero cuando un usuario o un proceso da instrucciones al sistema de replicación para que lo haga. Esto a veces se designa como "sin limitación del recurso" ["unfencing the resource"] o simplemente "sin limitación" ["unfencing"]. Los recursos de modo esclavo con límite retirado (esto es, cuyos valores límite han sido repuestos a cero) no pueden ser replicados en cualquier otra máquina fuera de la máquina que los contiene. Esto impide que un recurso del modo esclavo resulte externamente visible. Por tanto, las reposiciones de los valores límite no se hacen visibles mediante replicación.
Excepto para la limitación y la retirada del límite. Los valores límite permanecen constantes durante la replicación. En particular, un valor límite positivo no cambia cuando los datos de los recursos son actualizados o cuando el reloj lógico cambia. Los valores límite valorados en cero tampoco deben cambiar en cuanto a las actualizaciones del contenido para las máquinas esclavas.
Debe advertirse que la limitación de un recurso de una máquina permite forzar la replicación de dicho recurso con independencia de las actualizaciones concurrentes al recurso existentes en otros miembros del conjunto de reproducciones. Debe así mismo advertirse que la retirada del límite de un recurso permite que se fuerce a que cualquier otro recurso replicado consiga la prioridad respecto de uno local (no limitado) e impide que el recurso no limitado se reproduzca.
Los límites pueden disponerse sobre un recurso existente por medio de una interfaz de programación de aplicaciones (API) del sistema de replicación que limite los recursos seleccionados. Así mismo, los límites pueden establecerse sobre unos recursos futuros mediante la exposición de una API que limite los recursos que se adapten a parámetros específicos, (como por ejemplo los nombres y atributos de los recursos) cuando estos recursos resulten visibles en el sistema de replicación. El control de la futura limitación y retirada del límite puede así mismo disponerse mediante adherencia especificadora: la creación de recursos indirectamente relacionados, de forma que los recursos sometidos a un directorio limitado/no limitado puedan heredar el valor límite en base a la política establecida sobre el
padre.
La no limitación proporciona así mismo una forma granular de controlar el comportamiento maestro o esclavo de socias de replicación. El establecimiento de un límite sobre unos recursos seleccionados convierte de manera efectiva a una máquina en una maestra de esa versión del contenido (hasta que el contenido sea actualizado por primera vez). Los recursos seleccionados no limitados hacen que una máquina se comporte como esclava con respecto al contenido asociado con los recursos seleccionados.
Debe advertirse que la limitación y la retirada del límite pueden ser utilizados en una pluralidad de áreas que incluyen la restauración de la salvaguardia, la replicación fuera de banda, el mejoramiento a una versión más novedosa del reproductor, y la provisión del control del administrador.
Una máquina que incluya un recurso no limitado (por ejemplo, con un valor límite de cero) puede elegir la modificación del valor límite de los recursos no limitados en un valor de los recursos limitados (por ejemplo, uno) para un recurso que esté actualizado localmente sobre el esclavo. Esto puede efectuarse, por ejemplo, para hacer visible la actualización.
La Fig. 3 es un diagrama de bloques que representa un sistema en el cual dos máquinas intentan conciliar un recurso incluido en ambas de acuerdo con diversos aspectos de la invención. En la Fig. 3 cada máquina tiene su propia versión del recurso y el recurso tiene el mismo nombre o identificador. Al final de la conciliación, el objetivo es conseguir un recurso replicado que incorpore, ya sea el contenido de x o el contenido de y. En el sistema mostrado en la Fig. 3, el contenido x de la máquina 301 gana al contenido y de la máquina 302. Esto puede ocurrir, por ejemplo, si un valor de límite es más alto para el recurso A sobre la máquina 301 o a través de la comparación de otros metadatos de
recursos.
La Fig. 4 muestra algunos de los datos y metadatos de recursos ejemplares que podrían ser utilizados para A:x de las Figs. 2 y 3 de acuerdo con diversos aspectos de la invención. Los metadatos de recursos incluyen un valor límite de 1, un valor de reloj, un GUID, un miembro de replicación que creó el cambio, y la compilación. Los datos de recurso incluyen un nombre del recurso, los datos mismos, un tiempo de creación, un tiempo de modificación, y otros atributos de los datos de recursos.
La Fig. 5 muestra algunos datos y metadatos de recursos ejemplares que pueden ser utilizados con diversos aspectos de la invención, relacionados con la sincronización mostrada en la Fig. 3. El contenido existente en la máquina 501 (por ejemplo, x) gana al contenido existente en la máquina 502 (por ejemplo, y) y, sería, por tanto, replicado sobre la máquina 502 porque el valor límite para el recurso asociado con x (esto es, 1056603359) es mayor que el valor límite para el recurso asociado con y (esto es, 1). Nótese que, con arreglo a los procedimientos de replicación convencionales, y ganaría a x debido a un tiempo de reloj de actualización mayor.
La Fig. 6 es un diagrama de flujo de datos que representa genéricamente las etapas ejemplares que pueden producirse para sincronizar un recurso entre dos máquinas de acuerdo con diversos aspectos de la presente invención. El proceso empieza en el bloque 605.
En el bloque 610, una determinación acerca de si al menos uno de los valores de límite indica que el recurso debe ser propagado. Ambos valores de límite pueden disponerse en un estado limitado (por ejemplo, cero). En este caso, el recurso no debe ser propagado. Si uno de los valores de límite se dispone sobre un valor limitado (por ejemplo, 1 o mayor), entonces el recurso debe ser propagado si se necesita para sincronizar los dos recursos.
En el bloque 615 si el recurso debe ser propagado, procesar las ramificaciones hasta el bloqueo 620, en otro caso, procesar las ramificaciones hasta el bloque 635. En el bloque 620 se efectúa una determinación acerca de sí los valores de límite son iguales. Si es así, procesar las ramificaciones hasta el bloque 625 donde son utilizados otros metadatos para determinar la forma de propagar el recurso. En el bloque 627, el recurso o una porción de éste (por ejemplo, los metadatos, el valor límite, las diferencias del contenido, y similares) son propagados desde la máquina que fue determinada en el bloque 625.
Si los valores límite no son iguales en el bloque 620, procesar las ramificaciones hasta el bloque 630. En el bloque 630, el recurso o una porción de éste (por ejemplo, los metadatos, el valor límite, las diferencias de contenido, y similares) son propagadas desde la máquina que tiene el valor límite más alto para el recurso hasta la máquina que tiene el valor límite más bajo para el recurso. En el bloque 635, el procesamiento finaliza.
Los que siguen son algunos escenarios ejemplares en los cuales pueden utilizarse determinados aspectos de la presente invención.
Restaurar la salvaguardia sin autoridad: cuando los datos resultan corrompidos o se pierden, un usuario que gestiona un miembro de un sistema de recursos replicados puede borrar el miembro y pedir la obtención de todos los datos asociados con el miembro por medio del sistema de replicación de recursos. Cuando un miembro es relativamente grande en relación con la anchura de banda de un enlace que conecta el miembro al sistema de replicación de recursos, este curso de acción puede tardar demasiado tiempo o costar demasiado. Utilizando un aspecto de la invención, sin embargo, el usuario puede restaurar los recursos de un miembro a partir de una salvaguardia. El usuario puede entonces retirar el límite de los recursos existentes en la salvaguardia (por ejemplo, disponer el valor límite en 0) y permitir que el sistema de replicación de recursos actualice los recursos que están desfasados. En este caso, el contenido restaurado actúa precisamente como un "contenido caché" que, dada la lógica apropiada, puede ser utilizado por el reproductor para evitar la transferencia del contenido sobre un enlace lento (por ejemplo "a través del alambre"), manteniendo de esta forma el tráfico de sincronización inicial que sucede a una restauración de salvaguardia restringida a los metadatos y los datos de los recursos que necesitan ser actualizados. Después de la sincronización, cualquier recurso restante que tenga un valor límite igual a 0 puede ser borrado o puede disponer su valor límite en 1 para permitirles que se reproduzcan.
Copia fuera de banda: nuevos miembros de un conjunto de reproducciones pueden potencialmente incluir una gran cantidad de datos. Para facilitar una transferencia más rápida y/o menos costosa los nuevos miembros pueden ser enviados a través de un canal que tenga un coste menor y/o un servicio más rápido para el usuario. Por ejemplo, los nuevos miembros pueden ser copiados en un disco duro o quemados en CD-ROMs o en DVD-ROMs y enviados por la noche. Tras la copia de los nuevos miembros hasta el sistema en el sitio distante, pueden retirárseles el límite de acuerdo con lo descrito con anterioridad con respecto a la restauración de salvaguardia sin autoridad. La retirada del límite de los nuevos miembros se lleva a cabo para evitar la transferencia del contenido copiado sobre el sitio distante hasta los otros sitios.
Restaurar la salvaguardia con autoridad: un usuario puede desear restaurar desde una salvaguardia y propagar el contenido restaurado a todos los sistemas existentes en los sistemas de recursos replicados. Para hacer esto, el usuario puede restaurar los recursos en un sistema y a continuación limitar los recursos que el usuario desea pro-
pagar.
Escenarios ad hoc: un usuario puede desear forzar una versión específica de un conjunto de recursos para reproducir y conseguir la prioridad respecto de cualquier otro contenido conflictivo existente en un conjunto de reproducciones. Esto pude llevarse a cabo limitando el conjunto de recursos.
Sincronización inicial: la sincronización inicial es un caso especial de copia fuera de banda. Al establecer o mejorar un sistema replicado, un usuario puede designar una máquina como suplemento (esto es, contener el contenido que debe ser replicado en las demás máquinas) y designar a las otras máquinas como esclavas (esto es, recibir el contenido de la maestra). Para hacer esto, el usuario puede limitar el recurso dispuesto sobre la maestra para que tenga un valor límite inicial de 1 y retirar el límite de los recursos existentes sobre las esclavas con un valor límite de 0. Un recurso que nace sobre una esclava después de su inicialización puede ser limitada con 1, de forma que será replicado. Dado que un recurso esclavo no limitado no es replicado, no es necesario sincronizar metadatos adicionales para dicho recurso cuando pierde contra un recurso de conflicto de nombres respecto de la maestra.
La Fig. 7 es un diafragma de flujo de datos que representa genéricamente unas etapas ejemplares que pueden producirse para llevar a cabo una restauración de salvaguardia sin autoridad de acuerdo con diversos aspectos de la invención. Los datos existentes en un miembro son borrados o corrompidos (bloque 710). El administrador restaura a partir de una salvaguardia (bloque 715). El administrador marca los datos restaurados como no limitados (bloque 720). La sincronización se produce tal y como se representa en el bloque 725. El administrador borra o marca los recursos restantes con un valor límite de 1 (bloque 730), y el proceso termina (bloque 735).
La Fig. 7 se ofrece como un ejemplo para las etapas que pueden producirse en la salvaguardia sin autoridad descritas anteriormente. Debe advertirse que las demás aplicaciones referidas con anterioridad han sido también descritas con el suficiente detalle para reducir fácilmente los diagramas de flujo de datos. Debe así mismo entenderse que pueden efectuarse otras muchas variantes de las etapas de la Fig. 7 o de las aplicaciones descritas con anterioridad sin apartarse del espíritu o el alcance de la presente invención.
\newpage
La Fig. 8 es un diagrama de bloques que representa una máquina configurada para operar en un sistema de replicación de recursos de acuerdo con diversos aspectos de la invención. La máquina 805 incluye un mecanismo de actualización 810 y unos recursos 822, y un mecanismo de comunicaciones 840.
El mecanismo de actualización 810 incluye una lógica 815 de comparación de límites que es utilizada para comparar los valores límite y determinar si los recursos deben ser propagados desde la máquina 805 o si los recursos deben ser visibles a otras máquinas. La lógica 815 de comparación de límites puede así mismo ser utilizada para determinar la forma en que los valores límite deben ser actualizados en el supuesto de una operación de limitación o de la corrupción o supresión de una reconstrucción subsecuente de los metadatos de recurso 830 (de acuerdo con lo descrito con mayor detalle más adelante).
La otra lógica 820 de resolución de conflictos de los metadatos incluye una lógica utilizada para determinar qué recurso gana (y debe ser propagado), en el caso de que los valores límite de los recursos sean equivalentes. En la aplicación de la otra lógica 820 de resolución de conflictos de los metadatos, el mecanismo de actualización 810 puede acceder a los datos existentes en los metadatos de recursos 830 y/o a los datos de recursos 825 para determinar si un recurso (o una porción de éste) debe ser propagado hasta o recibido desde otra máquina.
Los recursos 822 incluyen los datos de recursos 825 y los metadatos de recursos 830. La distinción entre datos de recursos y metadatos de recursos fue descrita con anterioridad con referencia a la Fig. 2. Aunque se muestra en la misma caja, los datos de recursos 825 pueden ser almacenados en un almacén separado con respecto a los metadatos de recursos 830.
El mecanismo de comunicaciones 840 permite que el mecanismo de actualización 810 comunique con otros mecanismos de actualizacion (no mostrados) situados en otras máquinas. Conjuntamente, los mecanismos de actualización determinan qué recursos deben ser sincronizados y cómo puede producirse la sincronización. El mecanismo de sincronizaciones 840 puede ser una interfaz o adaptador de red 170, un módem 172 o cualquier otro medio para establecer comunicaciones de acuerdo con lo descrito con la Fig. 1.
Debe advertirse que otras variantes de la máquina mostrada en la Fig. 8 pueden ser implementadas sin apartarse del alcance de la invención.
En una forma de realización de la invención, hay tres valores límite iniciales: -1, 0 y 1. El -1 toma el papel de 0 expuesto (esto es, el valor límite) y 0 puede indicar que el recurso puede ser replicado siempre que no haya otro recurso con un valor límite que sea 1 o mayor de 1. Una utilidad de esta extensión consiste en el manejo de la pérdida de los metadatos de replicación. Por ejemplo, un reproductor de recursos puede mantener los metadatos en un almacén separado del almacén utilizado para almacenar los datos de recursos. Así, los metadatados y los datos de recursos (esto es, el contenido) pueden fallar de manera independiente. Durante una reconstrucción, una máquina que haya perdido sus metadatos puede inicialmente limitar su recurso con un valor de -1, dado que no sabe si ese recurso fue ya replicado o se acaba de crear localmente (y, por consiguiente, no es conocido de otras máquinas del conjunto de reproducciones). El cambio prematuro del valor límite de -1 a 1 podría tener el efecto de reintroducir el contenido viciado de nuevo en la red en cuanto el contenido procedente de máquinas más actualizadas pero desconectadas pueden ser sobrescrito. El cambio de límite de -1 a 0 por otro lado, puede permitir que dicho contenido sea reintroducido hasta el punto en el que algún otro participante pueda determinar que está anticuado. Nótese que 0, 1 y 2 (o algún otro esquema de numeración) pueden ser utilizados en lugar de si se desean solo números enteros positivos desplazando cada valor descrito con anterioridad.
Otra forma de realización adicional de la presente invención utiliza -\infty y 0 como posibles valores límite iniciales. En funcionamiento, el valor límite de -\infty sustituye al 0 (esto es, es el valor no limitado) mientras que el 0 sustituye al 1 (esto es, indica que el recurso debe ser replicado). Así mismo, otros valores límite negativos (por ejemplo, -1, -2, -3, ..., -n) pueden ser utilizados para indicar recursos que pueden ser replicados. Dichos valores límite perderían contra los recursos limitados con valores más altos. Una utilidad de esta generalización incluye escenarios en los que la disponibilidad de recursos nuevos es más importante que el uso de la anchura de banda durante una restauración. A cada una de las máquinas se le puede asignar un valor límite diferente (por ejemplo, -1, - 2, ..., -n) que se utilice sobre los recursos iniciales. La ordenación otorga prioridad a una máquina líder que utiliza el límite -1, aunque el contenido no conflictivo procedente de todas las máquinas es inmediatamente disponible.
Otra aplicación de la presente representación incluye la reducción de los valores límite cada vez que una máquina recupera o reconstruye sus metadatos en respuesta a la corrupción o pérdida de los metadatos. Un valor heurístico de esta aplicación es que cada vez que la máquina reconstruye sus metadatos es probable que los datos de recursos almacenados en la máquina resulten cada vez menos fiables y/o actualizados. Mediante este mecanismo, el contenido existente en las máquinas que reconstruyen sus metadatos de modo menos frecuente se considera menos fiable y gana a través de los valores límite frente al contenido de las máquinas que reconstruyen sus metadatos de manera más frecuente.
Debe advertirse que los valores límite descritos con anterioridad son valores límite lógicos que pueden ser implementados en cualquier diversidad de valores límite físicos. Por ejemplo, los valores límite pueden ser físicamente representados como números enteros sin signo, números con puntos flotantes, valores de bits, o cualquier otro tipo de esquema de numeración sin apartarse del alcance de la invención.
Como puede apreciarse a partir de la descripción detallada precedente, se proporciona un procedimiento y un sistema mejorados para el control granular sobre la información de replicación. Aunque la invención es susceptible de diversas modificaciones y construcciones alternativas, determinadas formas de realización ilustradas de la misma se muestran en los dibujos y han sido descritas anteriormente con detalle. Debe entenderse, sin embargo, que no hay intención de limitar la invención a las formas específicas divulgadas, sino que, por el contrario, lo que es amparar todas las modificaciones, construcciones alternativas y equivalentes que se incluyan en el alcance de la invención.

Claims (33)

1. Un procedimiento implementado por computadora para reproducir recursos, en el que cada recurso está asociado con unos metadatos (830) y un contenido (825), incluyendo cada metadato uno o más campos que son actualizados siempre que el contenido del recurso asociado es modificado y un valor límite (835) independiente de cualquier cambio local efectuado en el contenido, siendo cada valor límite un valor asignado al recurso respectivo y utilizado en la resolución de conflictos de actualización, comprendiendo el procedimiento:
determinar (610 - 625) si un primer recurso (822) que reside en una primera máquina (110, 181, 201, 301, 501, 805) debe ser utilizado para actualizar un segundo recurso (822) que reside en una segunda máquina (110, 181, 202, 302, 502, 805) mediante la comparación del valor límite del primer recurso con el valor límite del segundo recurso; y
si el valor límite del primer recurso tiene una prioridad más alta que el valor límite del segundo recurso, actualizar (630) el segundo recurso a partir del primer recurso.
\vskip1.000000\baselineskip
2. El procedimiento de la reivindicación 1, que comprende así mismo la etapa de, si los valores límite de los primero y segundo recursos son equivalentes, determinar (625) qué máquina actualizará la otra en base a metadatos distintos de los valores límite.
3. El procedimiento de la reivindicación 2, en el que los demás metadatos comprenden un reloj lógico que indica la última vez que el contenido correspondiente fue actualizado.
4. El procedimiento de la reivindicación 3, en el que un valor límite indica que su correspondiente recurso puede ser propagado a otras máquinas hasta que otro recurso con un valor límite más alto se sitúe sobre otra máquina.
5. El procedimiento de una de las reivindicaciones 1 a 4, en el que los metadatos asociados con el primer recurso son almacenados en una estructura de datos separada de su correspondiente recurso.
6. El procedimiento de la reivindicación 5, que comprende así mismo la etapa de, si la estructura de datos está corrompida o borrada (710), reconstruir (715) la estructura de datos y reducir el valor límite asociado con el primer recurso.
7. El procedimiento de la reivindicación 6, que comprende así mismo la etapa de reconstruir la estructura de datos una pluralidad de veces y reducir el valor límite asociado con el primer recurso cada vez que la estructura de datos es reconstruida.
8. El procedimiento de la reivindicación 7, que comprende así mismo la etapa de, si el valor límite del segundo recurso tiene una prioridad más alta que el valor límite del primer recurso, actualizar (630) el primer recurso a partir del segundo recurso.
9. El procedimiento de las reivindicaciones 1 a 8, que comprende así mismo la etapa de recuperar los metadatos de los primero y segundo recursos, siendo los primero y segundo recursos versiones de un mismo recurso replicado sobre una pluralidad de máquinas (110, 181, 201, 202, 301, 302, 501, 502, 805) que incluyen las primera y segunda máquinas, teniendo el recurso unos metadatos y un contenido que reside en cada máquina sobre la cual se reproduce el recurso.
10. El procedimiento de una de las reivindicaciones 1 a 9, en el que el los metadatos son almacenados en un almacén (130, 141, 152, 156, 181) separados del contenido.
11. El procedimiento de una de las reivindicaciones 1 a 10, en el que la etapa de actualizar el segundo recurso comprende determinar una o más diferencias entre el contenido existente en las primera y segunda máquinas y transmitir las una o más diferencias.
12. El procedimiento de una de las reivindicaciones 1 a 10, en el que la etapa de actualizar el segundo recurso comprende transmitir solo los metadatos.
13. El procedimiento de la reivindicación 12, en el que el contenido existente en las primera y segunda máquinas es el mismo.
14. El procedimiento de una de las reivindicaciones 1 a 13, en el que el contenido comprende datos de archivos y atributos de archivos.
15. El procedimiento de una de las reivindicaciones 1 a 14, en el que cada metadato existente en cada máquina comprende un compendio que resume un recurso.
16. El procedimiento de la reivindicación 15, que comprende así mismo la etapa de comparar los compendios de los metadatos existentes en las máquinas y soslayar la actualización si los compendios son equivalentes.
17. El procedimiento de una de las reivindicaciones 1 a 16, en el que la etapa de actualizar el segundo recurso comprende actualizar el segundo valor límite para que sea igual al primer valor límite.
18. El procedimiento de una de las reivindicaciones 1 a 17, que comprende así mismo la etapa de, si los valores límite son equivalentes, comparar (625) otros datos de los metadatos para determinar si los contenidos deben ser actualizados.
19. El procedimiento de una de las reivindicaciones 1 a 18, en el que a cada valor límite se le asigna una porción o unas porciones de su recurso respectivo.
20. El procedimiento de una de las reivindicaciones 1 a 19, en el que el contenido con un cierto valor límite es invisible a otras máquinas.
21. El procedimiento de una de las reivindicaciones 1 a 20, que comprende así mismo la etapa de fijar uno de los valores límite en un máximo de [este valor + 1] y [un tiempo de reloj] de la máquina sobre la cual reside el recurso que incluye el valor límite.
22. El procedimiento de una de las reivindicaciones 1 a 21, que comprende también la etapa de mantener el mismo cada valor límite cuando el contenido asociado con el valor límite cambia.
23. El procedimiento de la reivindicación 1, que comprende así mismo las etapas de:
cargar (715) el primer recurso sobre la primera máquina;
marcar (720) el primer recurso con el correspondiente valor límite; y
sincronizar (725) al menos una porción del segundo recurso con el primer recurso existente en la segunda máquina.
\vskip1.000000\baselineskip
24. El procedimiento de la reivindicación 23, que comprende así mismo después de la sincronización de al menos una porción del primer recurso marcar (730) la porción restante del primer recurso con un valor límite que indique que el primer recurso puede ser transmitido a partir de la primera máquina para actualizar los recursos existentes en cualquier otra máquina.
25. El procedimiento de las reivindicaciones 23 o 24, que comprende así mismo, después de sincronizar la al menos una porción del primer recurso, borrar (730) la porción restante del primer recurso.
26. El procedimiento de una de las reivindicaciones 23 a 25, en el que el primer recurso es cargado a partir de una salvaguardia.
27. El procedimiento de una de las reivindicaciones 23 a 25, en el que el primer recurso es cargado a partir de una copia del primer recurso enviada a partir de otra máquina.
28. El procedimiento de una de las reivindicaciones 23 a 27, que comprende así mismo marcar el segundo recurso existente en la segunda máquina con un valor límite correspondiente que indique que el segundo recurso debe ser sincronizado durante la sincronización.
29. El procedimiento de una de las reivindicaciones 23 a 28, que comprende así mismo cambiar una porción del primer recurso y macar la porción cargada con un valor límite (835) que indique que la porción cambiada debe ser sincronizada durante la sincronización.
30. Un medio legible por computadora que almacena unas instrucciones ejecutables por computadora que, cuando se llevan a cabo mediante un procesador, hacen que el procesador lleve a cabo el procedimiento de una de las reivindicaciones 1 a 29.
31. Un sistema para reproducir recursos, que comprende:
una primera máquina (110, 181, 201, 301, 501, 805) que presenta un primer conjunto de recursos (822); y
una segunda máquina (110, 181, 202, 302, 502, 805) que presenta un segundo conjunto de recursos (822),
en el que cada recurso existente en cada máquina está asociado con unos metadatos (830) y un contenido (825), incluyendo cada metadato uno o más campos que son actualizados siempre que el contenido del recurso asociado sea modificado y un valor límite (835) independiente de cualquier cambio efectuado en el contenido, siendo cada valor límite un valor asignado al recurso respectivo y utilizado en la resolución de conflictos de actualización, estando la primera y segunda maquinas configuradas para:
comunicar información relativa a los recursos contenidos por ambos; y
actualizar cada recurso que está desfasado de acuerdo con la siguiente prioridad:
si un valor límite de un recurso del primer conjunto de recursos tiene una prioridad más alta que el valor límite de un correspondiente recurso del segundo conjunto de recursos, actualizar el recurso del segundo conjunto de recursos con el recurso del primer conjunto de recursos; en otro caso
actualizar el recurso existente en las máquinas en base a metadatos distintos de los valores límite.
\vskip1.000000\baselineskip
32. El sistema de la reivindicación 31, en el que el primer conjunto de recursos es cargado a partir de una salvaguardia y sus valores límite se establecen para provocar que el primer conjunto de recursos tenga prioridad sobre cualquier otro conjunto de recursos, de tal manera que cualquier otro conjunto de recursos existente en cualquier otra máquina que se corresponda con el conjunto de recursos se actualice a partir del primer conjunto de recursos.
33. El sistema de las reivindicaciones 31 o 32, en el que los valores límite del primer conjunto de recursos son marcados para que tengan prioridad respecto de los correspondientes recursos de las demás máquinas, de manera que los correspondientes recursos sean actualizados a partir del primer conjunto de recursos.
ES04102757T 2003-07-10 2004-06-16 Control granular de un sistema de autorizacion de la informacion replicada por limitacion y sin limitacion. Expired - Lifetime ES2341245T3 (es)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US48662703P 2003-07-10 2003-07-10
US486627P 2003-07-10
US10/733,459 US7660833B2 (en) 2003-07-10 2003-12-10 Granular control over the authority of replicated information via fencing and unfencing
US733459 2003-12-10

Publications (1)

Publication Number Publication Date
ES2341245T3 true ES2341245T3 (es) 2010-06-17

Family

ID=33479336

Family Applications (1)

Application Number Title Priority Date Filing Date
ES04102757T Expired - Lifetime ES2341245T3 (es) 2003-07-10 2004-06-16 Control granular de un sistema de autorizacion de la informacion replicada por limitacion y sin limitacion.

Country Status (13)

Country Link
US (1) US7660833B2 (es)
EP (1) EP1498814B1 (es)
JP (2) JP5192635B2 (es)
KR (1) KR101109257B1 (es)
CN (1) CN100410874C (es)
AT (1) ATE463789T1 (es)
AU (1) AU2004202863B2 (es)
BR (1) BRPI0402702A (es)
CA (1) CA2472528A1 (es)
DE (1) DE602004026389D1 (es)
ES (1) ES2341245T3 (es)
MX (1) MXPA04006721A (es)
RU (1) RU2372649C2 (es)

Families Citing this family (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7506007B2 (en) * 2003-03-03 2009-03-17 Microsoft Corporation Interval vector based knowledge synchronization for resource versioning
US7660833B2 (en) 2003-07-10 2010-02-09 Microsoft Corporation Granular control over the authority of replicated information via fencing and unfencing
US7529811B2 (en) * 2003-08-21 2009-05-05 Microsoft Corporation Systems and methods for the implementation of a core schema for providing a top-level structure for organizing units of information manageable by a hardware/software interface system
US7590643B2 (en) 2003-08-21 2009-09-15 Microsoft Corporation Systems and methods for extensions and inheritance for units of information manageable by a hardware/software interface system
US8166101B2 (en) * 2003-08-21 2012-04-24 Microsoft Corporation Systems and methods for the implementation of a synchronization schemas for units of information manageable by a hardware/software interface system
US8238696B2 (en) * 2003-08-21 2012-08-07 Microsoft Corporation Systems and methods for the implementation of a digital images schema for organizing units of information manageable by a hardware/software interface system
US7401104B2 (en) * 2003-08-21 2008-07-15 Microsoft Corporation Systems and methods for synchronizing computer systems through an intermediary file system share or device
US7720890B2 (en) * 2005-02-22 2010-05-18 Microsoft Corporation Ghosted synchronization
US7620668B2 (en) * 2005-05-06 2009-11-17 Microsoft Corporation Authoritative and non-authoritative restore
US7490300B2 (en) * 2005-08-12 2009-02-10 Microsoft Corporation Copying and updating files
US7536419B2 (en) * 2005-11-15 2009-05-19 Microsoft Corporation Slave replica member
US7788223B2 (en) * 2005-12-05 2010-08-31 Microsoft Corporation Resource freshness and replication
US7650389B2 (en) * 2006-02-01 2010-01-19 Subhashis Mohanty Wireless system and method for managing logical documents
US7640247B2 (en) * 2006-02-06 2009-12-29 Microsoft Corporation Distributed namespace aggregation
US7620721B2 (en) * 2006-02-28 2009-11-17 Microsoft Corporation Pre-existing content replication
US7552148B2 (en) * 2006-02-28 2009-06-23 Microsoft Corporation Shutdown recovery
TWI305619B (en) * 2006-05-12 2009-01-21 Qisda Corp State synchronization systems and methods
TW200743028A (en) * 2006-05-12 2007-11-16 Benq Corp State synchronization apparatuses and methods
TWI320534B (en) * 2006-06-23 2010-02-11 Qisda Corp State synchronization systems and methods
US8150800B2 (en) * 2007-03-28 2012-04-03 Netapp, Inc. Advanced clock synchronization technique
US8239479B2 (en) 2007-06-22 2012-08-07 Microsoft Corporation Server-assisted and peer-to-peer synchronization
US7991740B2 (en) * 2008-03-04 2011-08-02 Apple Inc. Synchronization server process
US8099571B1 (en) 2008-08-06 2012-01-17 Netapp, Inc. Logical block replication with deduplication
US8321380B1 (en) 2009-04-30 2012-11-27 Netapp, Inc. Unordered idempotent replication operations
US8655848B1 (en) 2009-04-30 2014-02-18 Netapp, Inc. Unordered idempotent logical replication operations
US8671072B1 (en) 2009-09-14 2014-03-11 Netapp, Inc. System and method for hijacking inodes based on replication operations received in an arbitrary order
US8799367B1 (en) 2009-10-30 2014-08-05 Netapp, Inc. Using logical block addresses with generation numbers as data fingerprints for network deduplication
US8473690B1 (en) 2009-10-30 2013-06-25 Netapp, Inc. Using logical block addresses with generation numbers as data fingerprints to provide cache coherency
JP5445177B2 (ja) * 2010-01-28 2014-03-19 富士通株式会社 確定クロック判定プログラム及び方法、並びにノード装置
US8914421B2 (en) * 2010-02-11 2014-12-16 Telefonaktiebolaget L M Ericsson (Publ) Data management at a directory database
US8930320B2 (en) * 2011-09-30 2015-01-06 Accenture Global Services Limited Distributed computing backup and recovery system
US10747776B2 (en) 2012-12-04 2020-08-18 International Business Machines Corporation Replication control using eventually consistent meta-data
WO2015072220A1 (ja) * 2013-11-14 2015-05-21 ソニー株式会社 情報処理装置、情報処理方法および記憶媒体
JP6337605B2 (ja) * 2014-05-14 2018-06-06 コニカミノルタ株式会社 更新管理装置、画像形成装置、更新管理装置の制御プログラム、および画像形成装置の制御プログラム
CN105791357A (zh) * 2014-12-24 2016-07-20 金蝶软件(中国)有限公司 Erp多机集群系统中的文件同步方法及系统
US10339111B2 (en) 2016-04-29 2019-07-02 Netapp Inc. Cloned virtual machine disk replication
US10846183B2 (en) * 2018-06-11 2020-11-24 Dell Products, L.P. Method and apparatus for ensuring data integrity in a storage cluster with the use of NVDIMM
US11177012B1 (en) * 2020-06-24 2021-11-16 Western Digital Technologies, Inc. Fast copy through controller
US12373459B2 (en) * 2023-07-27 2025-07-29 Sap Se Change-aware snapshot replication

Family Cites Families (46)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE68924061T2 (de) * 1989-05-12 1996-04-18 Ibm Versionskontrolle in einem Datenverarbeitungssystem.
JP2614361B2 (ja) * 1990-11-29 1997-05-28 沖電気工業株式会社 ファイル内容変更方法
GB2263797B (en) * 1992-01-31 1996-04-03 Plessey Telecomm Object orientated system
JPH05250239A (ja) * 1992-03-10 1993-09-28 Sharp Corp コンピュータネットワークシステム
CA2120381C (en) * 1993-04-05 2005-07-26 Gregory Barton Vatt Distributed multi-outlet paging
US5701462A (en) 1993-12-29 1997-12-23 Microsoft Corporation Distributed file system providing a unified name space with efficient name resolution
US5486826A (en) 1994-05-19 1996-01-23 Ps Venture 1 Llc Method and apparatus for iterative compression of digital data
US5784615A (en) * 1994-12-13 1998-07-21 Microsoft Corporation Computer system messaging architecture
US5765171A (en) 1995-12-29 1998-06-09 Lucent Technologies Inc. Maintaining consistency of database replicas
US5806074A (en) * 1996-03-19 1998-09-08 Oracle Corporation Configurable conflict resolution in a computer implemented distributed database
US5953662A (en) * 1996-04-30 1999-09-14 Ericsson, Inc. Dual home location registers in a mobile radio system
US5787262A (en) * 1996-06-26 1998-07-28 Microsoft Corporation System and method for distributed conflict resolution between data objects replicated across a computer network
US5832514A (en) * 1996-06-26 1998-11-03 Microsoft Corporation System and method for discovery based data recovery in a store and forward replication process
US6412017B1 (en) 1996-07-01 2002-06-25 Microsoft Corporation Urgent replication facility
US5787247A (en) * 1996-07-12 1998-07-28 Microsoft Corporation Replica administration without data loss in a store and forward replication enterprise
JPH10289142A (ja) * 1997-04-16 1998-10-27 Kokusai Electric Co Ltd ネットワークのファイル更新システム
US6098079A (en) * 1998-04-02 2000-08-01 Mitsubishi Electric Information Technology Center America, Inc. (Ita) File version reconciliation using hash codes
JP3501968B2 (ja) * 1998-05-18 2004-03-02 シャープ株式会社 データベース管理装置、および、そのプログラムが記録された記録媒体
US6976093B2 (en) 1998-05-29 2005-12-13 Yahoo! Inc. Web server content replication
US6317754B1 (en) * 1998-07-03 2001-11-13 Mitsubishi Electric Research Laboratories, Inc System for user control of version /Synchronization in mobile computing
US6192443B1 (en) * 1998-07-29 2001-02-20 International Business Machines Corporation Apparatus for fencing a member of a group of processes in a distributed processing environment
US6341291B1 (en) * 1998-09-28 2002-01-22 Bentley Systems, Inc. System for collaborative engineering using component and file-oriented tools
US6401120B1 (en) * 1999-03-26 2002-06-04 Microsoft Corporation Method and system for consistent cluster operational data in a server cluster using a quorum of replicas
JP3254434B2 (ja) * 1999-04-13 2002-02-04 三菱電機株式会社 データ通信装置
JP2000311105A (ja) * 1999-04-28 2000-11-07 Toshiba Corp コンピュータおよびデータ同期方法
JP3963417B2 (ja) * 1999-11-19 2007-08-22 株式会社東芝 データ同期処理のための通信方法および電子機器
US8156074B1 (en) 2000-01-26 2012-04-10 Synchronoss Technologies, Inc. Data transfer and synchronization system
US6820088B1 (en) * 2000-04-10 2004-11-16 Research In Motion Limited System and method for synchronizing data records between multiple databases
US7363633B1 (en) * 2000-04-24 2008-04-22 Microsoft Corporation Registering and storing dependencies among applications and objects in a computer system and communicating the dependencies to a recovery or backup service
EP1160682A1 (en) 2000-06-02 2001-12-05 Thomas Dr. Seidl Relation interval tree
US7162499B2 (en) * 2000-06-21 2007-01-09 Microsoft Corporation Linked value replication
US7788335B2 (en) * 2001-01-11 2010-08-31 F5 Networks, Inc. Aggregated opportunistic lock and aggregated implicit lock management for locking aggregated files in a switched file system
DE60213419T2 (de) 2001-03-16 2007-10-31 Novell, Inc., Provo Client-server-modell zur synchronisation von dateien
US6715050B2 (en) * 2001-05-31 2004-03-30 Oracle International Corporation Storage access keys
US6952708B2 (en) * 2001-06-27 2005-10-04 Microsoft Corporation Method and system for using a sync key
JP2003015934A (ja) * 2001-06-29 2003-01-17 Toshiba Corp 情報記憶装置及び情報記憶方法
JP2003122618A (ja) * 2001-10-11 2003-04-25 Nec Soft Ltd データベースダウンロードシステムおよびプログラム
US7149759B2 (en) * 2002-03-25 2006-12-12 International Business Machines Corporation Method and system for detecting conflicts in replicated data in a database network
US7149769B2 (en) 2002-03-26 2006-12-12 Hewlett-Packard Development Company, L.P. System and method for multi-destination merge in a storage area network
US20040068523A1 (en) 2002-10-07 2004-04-08 Keith Robert Olan Method and system for full asynchronous master-to-master file synchronization
US7739240B2 (en) 2002-12-09 2010-06-15 Hewlett-Packard Development Company, L.P. Replication and replica management in a wide area file system
US7506007B2 (en) 2003-03-03 2009-03-17 Microsoft Corporation Interval vector based knowledge synchronization for resource versioning
US7290019B2 (en) 2003-03-03 2007-10-30 Microsoft Corporation Garbage collection of tombstones for optimistic replication systems
US7660833B2 (en) 2003-07-10 2010-02-09 Microsoft Corporation Granular control over the authority of replicated information via fencing and unfencing
US8166101B2 (en) 2003-08-21 2012-04-24 Microsoft Corporation Systems and methods for the implementation of a synchronization schemas for units of information manageable by a hardware/software interface system
US7788223B2 (en) 2005-12-05 2010-08-31 Microsoft Corporation Resource freshness and replication

Also Published As

Publication number Publication date
JP2011253574A (ja) 2011-12-15
KR20050007179A (ko) 2005-01-17
EP1498814A1 (en) 2005-01-19
AU2004202863A1 (en) 2005-01-27
CN1607500A (zh) 2005-04-20
JP5192635B2 (ja) 2013-05-08
DE602004026389D1 (de) 2010-05-20
EP1498814B1 (en) 2010-04-07
BRPI0402702A (pt) 2005-05-24
KR101109257B1 (ko) 2012-01-30
US7660833B2 (en) 2010-02-09
CA2472528A1 (en) 2005-01-10
RU2372649C2 (ru) 2009-11-10
CN100410874C (zh) 2008-08-13
AU2004202863B2 (en) 2010-06-10
ATE463789T1 (de) 2010-04-15
MXPA04006721A (es) 2005-04-19
JP2005032249A (ja) 2005-02-03
RU2004121135A (ru) 2006-01-10
US20050015413A1 (en) 2005-01-20

Similar Documents

Publication Publication Date Title
ES2341245T3 (es) Control granular de un sistema de autorizacion de la informacion replicada por limitacion y sin limitacion.
US6941490B2 (en) Dual channel restoration of data between primary and backup servers
ES2921209T3 (es) Método de réplica de datos y sistema de almacenamiento
US8341386B2 (en) Method for updating basic input/output system and method for repairing thereof
US6701455B1 (en) Remote copy system with data integrity
EP2363808B1 (en) Data restoration utilizing forward and backward deltas
US20110107025A1 (en) Synchronizing snapshot volumes across hosts
US8019800B2 (en) Access device, information recording device, information recording system, file management method, and program
US20030172227A1 (en) Reversing a communication path between storage devices
US8977802B2 (en) Access device, information recording device, controller, real time information recording system, access method, and program
US7359927B1 (en) Method for performing periodic replication of data on a remote storage system
CN103384876A (zh) 信息处理系统和数据处理方法
US20170235759A1 (en) Systems and methods for fail-safe operations of storage devices
KR20230091940A (ko) 인-메모리 데이터 구조들에서 무충돌 복제 데이터 유형들을 구현하는 시스템들, 방법들, 및 매체들
CN101430705A (zh) 基于嵌入式数据库的存储方法和装置
US8527733B2 (en) Memory system
US20070174567A1 (en) Storage apparatus and control method thereof
ES2824782T3 (es) Estructura y método de memoria caché
US6757841B1 (en) Method and apparatus for dynamic mirroring availability in a network appliance
WO2023036901A1 (en) Selective use of high-performance memory in a software defined system
CN103425464A (zh) 母盘制作方法及装置
KR101618999B1 (ko) 네트워크 부트 시스템
WO2015102670A1 (en) Systems and methods for fail-safe operations of storage devices
JP2007034551A (ja) データの二重化管理方法
JPWO2018186455A1 (ja) 不揮発性メモリにおける空き容量管理方法、及び不揮発性メモリを含む情報記録装置にデータを記録するアクセス装置、情報記録装置および情報記録システム