MXPA04006721A - Control granular sobre la autoridad de informacion replicada a traves de cercado o descercado. - Google Patents
Control granular sobre la autoridad de informacion replicada a traves de cercado o descercado.Info
- Publication number
- MXPA04006721A MXPA04006721A MXPA04006721A MXPA04006721A MXPA04006721A MX PA04006721 A MXPA04006721 A MX PA04006721A MX PA04006721 A MXPA04006721 A MX PA04006721A MX PA04006721 A MXPA04006721 A MX PA04006721A MX PA04006721 A MXPA04006721 A MX PA04006721A
- Authority
- MX
- Mexico
- Prior art keywords
- resource
- machine
- data
- value
- content
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/16—Protection against loss of memory contents
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/182—Distributed file systems
- G06F16/184—Distributed file systems implemented as replicated file system
- G06F16/1844—Management specifically adapted to replicated file systems
-
- Y—GENERAL 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
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99951—File or database maintenance
- Y10S707/99952—Coherency, e.g. same view to multiple users
- Y10S707/99954—Version 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)
- Storage Device Security (AREA)
- Devices For Checking Fares Or Tickets At Control Points (AREA)
- Glass Compositions (AREA)
Abstract
Un metodo y sistema para controlar que contenido obtiene precedencia y es replicado. Un grupo de replica esta comprendido de un grupo de recursos. Cada recurso esta asociado con datos del recurso y metadatos del recurso. Para sistemas en base a archivos, los datos de recurso incluyen contenidos de archivo y atributos, mientras que los metadatos de recurso incluyen atributos adicionales que son relevantes para negociar la sincronizacion durante la replicacion. Un campo extra llamado un "valor de cerca" es agregado a los metadatos asociados con cada recurso. Durante la sincronizacion, los primeros valores de cerca son comparados. El recurso con el valor de cerca mas alto incluye el contenido que es controlado y replicado. Si los valores de cerca son iguales (y mayores que un valor particular), el recurso que controla se determina en base a otros metadatos.
Description
CONTROL GRANULAR SOBRE LA AUTORIDAD DE INFORMACION REPLICADA A TRAVES DE CERCADO O DESCERCADO REFERENCIA CRUZADA A LA SOLICITUD RELACIONADA
Esta solicitud reclama el beneficio de la Solicitud de Patente de E.U.A. Provisional No. 60/486,627, presentada el 10 de Julio del 2003, intitulada CONTROL GRANULAR SOBRE LA AUTORIDAD DE INFORMACION REPLICADA A TRAVES DE CERCADO O DESCERCADO, cuya solicitud se incorpora aquí por referencia en su totalidad.
CAMPO DE LA INVENCION
La presente invención se refiere en general a dispositivos de computación, y más particularmente a sistemas de replicación de recursos.
ANTECEDENTES
De manera oportuna, los sistemas de replicación multi-maestros permiten cambios no restringidos al contenido replicado en cualquier máquina que participe en un grupo de réplica dado. Estos cambios potencialmente conflictivos se reconcilian bajo el control del sistema de replicación utilizando un grupo de criterios de resolución que definen, para cada situación de conflicto, cuyo cambio conflictivo tiene precedencia sobre otros. En el pasado, el criterio de resolución de conflictos principal utilizado ha sido el tiempo físico o lógico del cambio, con el cambio más reciente teniendo precedencia sobre todos los otros. Sin embargo, un número de casos existen en donde los usuarios o aplicaciones pueden desear tener formas adicionales para controlar, cuya actualización concurrente obtiene la precedencia de los otros e inversamente cuyas actualizaciones deberán producir una precedencia. Lo que se necesita es un método y sistema flexibles para controlar el contenido que obtiene precedencia y se replica.
COMPENDIO DE LA INVENCION
Brevemente, la presente invención proporciona un método y sistema para controlar que contenido obtiene precedencia y es replicado. Un grupo de réplica está comprendido de un grupo de recursos. Cada recurso está asociado con los datos del recurso y metadatos del recurso. Los datos del recurso, para el caso de archivos, incluyen contenido de archivo y atributos, mientras que los metadatos incluyen atributos adicionales que son relevantes para negociar la sincronización durante la replicación. Un campo extra llamado un "valor de cerca" se agrega a los metadatos asociados con cada recurso. Durante la sincronización, los valores de cerca son comparados. El recurso con el valor de cerca más alto incluye el contenido que es controlado y obtiene replicación. Si los valores de cerca son iguales (y mayores que un valor particular), el recurso que se controla se determina con base en otros metadatos. Los valores de cerca son independientes de los cambios locales al contenido. Es decir, mientras un cambio local en el contenido puede afectar otros metadatos (por ejemplo, la marca de tiempo, valor del reloj, o de otra manera), el cambio local en el contenido no afecta un valor de cerca a menos que se indique otra cosa. En un aspecto de la invención, una fuente puede tener un valor de cerca que indica que el recurso está descercado. Si un recurso está descercado, esto indica que el recurso no deberá ser transmitido desde la máquina en la cual el recurso está almacenado. Cuando se recibe un recurso sostenido para sincronización, un recurso que está descercado pierde (y es reemplazado durante la sincronización) con los recursos que están cercados. En otro aspecto de la invención, solamente las diferencias entre los recursos en una máquina con un recurso ganador y una máquina con un contenido perdedor son transmitidas. Por ejemplo, los metadatos del recurso pueden ser transmitidos sin transmitir el contenido del recurso. Como otro ejemplo, las diferencias en el contenido del recurso pueden ser transmitidas durante la sincronización . Otras ventajas se volverán aparentes a partir de la siguiente descripción detallada cuando se toma junto con los dibujos, en los cuales:
BREVE DESCRIPCION DE LOS DIBUJOS
La Figura 1 es un diagrama de bloque que representa un sistema de computadora en el cual la presente invención puede ser incorporada; La Figura 2 es un diagrama de bloque que representa un sistema de replicación de recursos incluyendo dos máquinas que replican recursos de acuerdo con varios aspectos de la invención; La Figura 3 es un diagrama de bloque que representa un sistema en el cual dos máquinas intentan reconciliar un recurso incluido en ambas, de acuerdo con varios aspectos de la invención;
La Figura 4 muestra algunos datos y metadatos de recurso ilustrativos que podrían ser utilizados para una máquina de las Figuras 2 y 3 de acuerdo con varios aspectos de la presente invención; La Figura 5 muestra algunos datos y metadatos de recurso ilustrativos que pueden ser utilizados de acuerdo con varios aspectos de la presente invención; La Figura 6 es un diagrama de flujo de datos que generalmente representa pasos ilustrativos que pueden ocurrir para sincronizar un recurso entre dos máquinas de acuerdo con varios aspectos de la presente invención; La Figura 7 es un diagrama de flujo de datos que generalmente representa pasos ilustrativos que pueden ocurrir para llevar a cabo un respaldo no autoritativo de acuerdo con varios aspectos de la presente invención; y La Figura 8 es un diagrama de bloque que representa una máquina ilustrativa configurada para operar en un sistema de replicación de recursos de acuerdo con varios aspectos de la presente invención.
DESCRIPCION DETALLADA
AMBIENTE OPERATIVO ILUSTRATIVO La Figura 1 ilustra un ejemplo de un ambiente de sistema de computación adecuado 100 en el cual la invención puede ser implementada. El ambiente del sistema de computación 100 es solamente un ejemplo de un ambiente de computación adecuado y no pretende sugerir ninguna limitación al alcance del uso o funcionalidad de la invención. Tampoco deberá el ambiente de computación 100 ser interpretado como teniendo ninguna dependencia o requerimiento relacionado con cualquiera o una combinación de componentes ilustrados en el ambiente de operación ilustrativo 100. La invención es operacional con numerosos otros ambientes de sistema de computación o configuraciones de propósito general o especial. Ejemplos de sistemas de computación, ambientes y/o configuraciones bien conocidos que pueden ser adecuados para uso con la invención incluyen, pero no se limitan a, computadoras personales, computadoras servidor, dispositivos de mano o portátiles, sistemas multiprocesador, sistemas en base a microcontrolador, cajas encima del televisor, electrónicos de consumidor programables, PCs en red, minicomputadoras, computadoras de marco principal, ambientes de computación distribuidos que incluyen cualquiera de los sistemas o dispositivos anteriores, y similares. La invención puede ser descrita en el contexto general de instrucciones ejecutables por computadora, tales como módulos de programa, siendo ejecutados a través de una computadora. En general, los módulos de programa incluyen, rutinas, programas, objetos, componentes, estructura de datos, etc., que llevan a cabo tareas particulares o implementan tipos de datos abstractos particulares. La invención también puede ser practicada en ambientes de computación distribuidos en donde las tareas se llevan a cabo a través de dispositivos de procesamiento remoto que están enlazados a través de una red de comunicaciones. En un ambiente de computación distribuido, los módulos de programa pueden estar localizados en ambos medios de almacenamiento local y remoto incluyendo dispositivos de almacenamiento de memoria. Con una referencia a la Figura 1, un sistema ilustrativo para implementar la invención incluye un dispositivo de computación de propósito general en 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 del sistema 130, y un conductor común de sistema 121 que acopla varios componentes del sistema incluyendo la memoria del sistema a la unidad de procesamiento 120. El conductor común de sistema 121 puede ser cualquiera de varios tipos de estructuras de conductor común incluyendo un conductor común de memoria o controlador de memoria, un conductor común periférico, y un conductor común local utilizando cualquiera de una variedad de estructuras de conductores comunes. A manera de ejemplo, y no limitación, dichas arquitecturas incluyen el conductor común de Arquitectura Estándar de la Industria (ISA), el conductor común de la Arquitectura del Canal Micro (MCA), el conductor común Mejorado ISA (EISA), el conductor común local de la Asociación de Estándares Electrónicos de Video (VESA), y el conductor común de Interconexión del Componente Periférico (PCI) también conocido como conductor común Mezanine. La computadora 110 típicamente incluye una variedad de medios legibles por computadora. Los medios legibles por computadora pueden ser cualquier medio disponible que pueda ser accedido por la computadora 110 e incluye ambos medios volátiles y no volátiles, medios removibles y no removióles. A manera de ejemplo, y no limitación, los medios legibles por computadora pueden comprender medios de almacenamiento por computadora y medios de comunicación. Los medios de almacenamiento por computadora incluyen ambos medios volátiles y no volátiles, removibles y no removibles, en cualquier método o tecnología para el almacenamiento de información, tal como instrucciones ejecutables por computadora, estructuras de datos, módulos de programa u otros datos. Los medios de almacenamiento por computadora incluyen, pero no se limitan a, RAM, ROM, EEPROM, memoria no volátil, u otra tecnología de memoria, CDROM, discos versátiles digitales (DVD) u otro almacenamiento en disco óptico, casetes magnéticos, cinta magnética, almacenamiento en disco magnético y otros dispositivos de almacenamiento magnético, o cualquier otro medio que puede ser utilizado para almacenar la información deseada y que puede ser accedida por la computadora 110. Los medios de comunicación típicamente modalizan las instrucciones legibles por computadora, estructuras de datos, módulos de programa u otros datos en una señal de datos modulada tal como una onda portadora, u otro tipo de mecanismo de transporte e incluye cualquier medio de distribución de información. El término "señal de datos modulada" significa una señal que tiene una o más de sus características fijadas o cambiadas en tal forma que codifica la información en la señal. A manera de ejemplo, y no limitación, los medios de comunicación incluyen medios por cable tal como una red cableada o conexión directa-cableada, y medios inalámbricos tal como medios inalámbricos acústicos, RF, infrarrojos y otros medios inalámbricos. Las combinaciones de cualquiera de los anteriores también se pueden incluir dentro del alcance de los medios legibles por computadora. La memoria del sistema 130 incluye medios de almacenamiento por computadora en la forma de memoria volátil y/o no volátil tales como memoria de solo lectura (ROM) 131 y memoria de acceso aleatorio (RAM) 132. Un sistema de entrada/salida básico 133 (BIOS), conteniendo las rutinas básicas que ayudan a la transferencia de información entre elementos dentro de la computadora 110, tales como durante el arranque, se almacenan tópicamente en ROM 131. RAM 132 típicamente contiene datos y/o módulos de programa que son inmediatamente accesibles para y/o actualmente siendo operados por la unidad de procesamiento 120. A manera de ejemplo, y no limitación, La Figura 1 ¡lustra el sistema operativo 134, programas de aplicación 135, otros módulos de programa 136, y datos de programa 137. La computadora 110 también puede incluir otros medios de almacenamiento removibles/no removibles, volátiles/no volátiles. A manera de ejemplo solamente, la Figura 1 ilustra una unidad de disco duro 141 que lee de o escribe en el medio no removible, no volátil magnético, una unidad de disco duro magnética 151 que lee de o escribe en un disco magnético removible, no volátil 152, y una unidad de disco óptico 155 que lee de o escribe en una disco óptico no volátil 156, tal como un CD ROM u otro medio óptico. Otros medios de almacenamiento por computadora removibles/no removibles, volátiles/no volátiles que pueden ser utilizados en el ambiente de operación ilustrativo incluyen, pero no se limitan a, casetes de cinta magnética, tarjetas de memoria no volátil, discos versátiles digitales, cintas de video digitales, RAM de estado sólido, ROM de estado sólido, y similares. La unidad de disco duro 141 está típicamente conectada al conductor común del sistema 121 a través de la interfase de memoria no removible tal como la interfase 140, una unidad de disco magnético 151 y una unidad de disco óptico 155 están típicamente conectados al conductor común del sistema 121 a través de la interfase de memoria removible, tal como la interfase 150. Las unidades y sus medios de almacenamiento por computadora asociados discutidos anteriormente e ilustrados en la Figura 1, proporcionan almacenamiento de instrucciones legibles por computadora, estructuras de datos, módulos de programa y otros datos para la computadora 110. En la Figura 1, por ejemplo, la unidad de disco duro 141 está ilustrada como almacenando el sistema operativo 144, los programas de aplicación 145, otros módulos de programa 146, y los datos de programa 147. Observar que estos componentes pueden ya sea ser el mismo o diferentes del sistema operativo 134, programas de aplicación 135, oros módulos de programa 136 y datos de programa 137. Al sistema operativo 144, programas de aplicación 145, otros módulos de programa 146, y datos de programa 147 se les han dado números diferentes aquí para ilustrar que, al mínimo, son diferentes copias. Un usuario puede capturar comandos e información en la computadora 20 a través de los dispositivos de entrada tales como un teclado 162 y un dispositivo de señalamiento 161, comúnmente referido como un ratón, seguibola o almohadilla sensible al tacto. Otros dispositivos de entrada (no mostrados) pueden incluir un micrófono, palanca de mandos, almohadillas de juegos, antena parabólica, escáner o similar. Estos y otros dispositivos de entrada por lo general están conectados a la unidad de procesamiento 120 a través de una interfase de usuario 160 que está acoplada al conductor común del sistema, pero pueden estar conectados a través de otras interfases y estructuras de conductores comunes, tales como un puerto paralelo, un puerto de juego o conductor común serial universal (USB). Un monitor 191 u otro tipo de dispositivo de pantalla también está conectado al conductor común del sistema 121 a través de una interfase, tal como una interfase de video 190. Además del monitor, las computadoras también pueden incluir otros dispositivos de salida periféricos tales como bocinas 197 y la impresora 196, los cuales pueden conectarse a través de una interfase periférica de salida 190. La computadora 110 puede operar en un ambiente conectado en red utilizando conexiones lógicas a una o más computadoras remotas, tales como la computadora remota 180. La computadora remota 180 puede ser una computadora personal, un servidor, un direccionador, una PC en red, un dispositivo par 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 solamente un dispositivo de almacenamiento de memoria 181 ha sido ilustrado en la Figura 1. Las conexiones lógicas descritas en la Figura 1 incluyen una red de área local (LAN) 171 y una red de área amplia (WAN) 173, pero también pueden incluir otras redes. Dichos ambientes conectados en red son lugares comunes de oficinas, redes de computadora a nivel empresa, intranets y el Internet. Cuando se utiliza en un ambiente conectado en LAN, la computadora 110 está conectada a la otra LAN 171 a través de una interfase de red o adaptador 170. Cuando se utiliza en un ambiente conectado en WAN, la computadora 110 típicamente incluye un módem 172 u otros medios para establecer comunicaciones a través de la WAN 173, tal como el Internet. El módem 172, el cual puede ser interno o externo, puede estar conectado al conductor común del sistema 121 a través de una interfase de entrada de usuario 160, u otro mecanismo apropiado. En un ambiente conectado en red, los módulos de programa descritos con relación a la computadora 110, o porciones de los mismos, pueden almacenarse en el dispositivo de almacenamiento de memoria remoto. A manera de ejemplo, y no limitación, la Figura 1 ilustra programas de aplicación remotos 185 como residentes en el dispositivo de memoria 181. Se apreciará que las conexiones en red mostradas son ilustrativas y que otros medios para establecer enlaces de comunicaciones entre las computadoras pueden utilizarse.
CONTROLO DE ACTUALIZACIONES CON REPLICACION DE RECURSOS La Figura 2 es un diagrama de bloque que representa un sistema de replicación de recursos de acuerdo con varios aspectos de la presente invención. Las máquinas 201 y 202 ambas replican el recurso A y lo actualizan concurrentemente teniendo un contenido x a tener un contenido y, u o z. El contenido x, y, u, y z pueden corresponder, por ejemplo, a diferentes números de secuencia de versión y cronometrajes para el recurso A. El término "máquina" no está limitado simplemente a una máquina física. En su lugar, una máquina física individual puede incluir múltiples máquinas virtuales. La replicación de una máquina a otra máquina, como se utiliza aquí, implica la replicación de uno o más miembros del mismo grupo de réplica de una máquina, virtual o física, a ora máquina, virtual o física. Una máquina física individual puede incluir múltiples miembros del mismo grupo de réplica. De esta manera, los miembros de replicación de un grupo de réplica pueden involucrar la sincronización de miembros de una máquina física individual que incluye dos o más miembros del mismo grupo de réplica. Un sistema de replicación típicamente mantendrá dos grupos relacionados de datos con cada recurso: datos del recurso y metadatos del recurso. En los sistemas de replicación que incluyen almacenes de datos en base a archivos nombrados en un sistema de archivos, los datos del recurso pueden incluir contenidos de archivo, así como cualesquiera atributos que están almacenados en el sistema de archivos en asociación con el contenido del archivo. Los atributos del archivo pueden incluir listas de control de acceso (ALCs), tiempos de creación/modificación, y otros datos asociados con un archivo. En los sistemas de replicación incluyendo almacenes de datos no basados en archivos nombrados en un sistema de archivos (por ejemplo, unos en los cuales los recursos se almacenan en una base de datos o almacén de datos basados en objetos), datos del recurso apropiados al almacén de datos se almacenan. A lo largo de este documento, los sistemas de replicación basados en archivos en un sistema de archivos por lo general se utilizan para ilustración, pero no se reconocerá que cualquier almacén de datos capaz de almacenar contenido puede ser utilizado sin apartarse del espíritu o alcance de la presente invención. Los metadatos del recurso comprenden un grupo de atributos adicionales que son relevantes para negociar la sincronización durante la replicación. Para cada recurso, los metadatos del recurso pueden incluir un identificador único global (GUID), si el recurso ha sido eliminado, un número de secuencia de la versión junto con la autoría de un cambio, un valor de cronómetro para reflejar el tiempo en que un cambio ha ocurrido, y otros campos, tales como un compendio que resume valores de los datos del recurso y puede incluir firmas para el contenido del recurso. Se puede utilizar un compendio para una rápida comparación para la desviación de la transferencia de datos durante la sincronización de la replicación, por ejemplo, Si un recurso en una máquina de destino es sincronizada con el contenido en una máquina fuente (por ejemplo, como se indica por un compendio), la información de la red puede ser minimizada transmitiendo solamente los metadatos del recurso, sin transmitir los datos del recurso mismos. La transmisión de los metadatos del recurso se hace para que la máquina de destino pueda reflejar los metadatos incluidos en la máquina fuente en sus actividades de replicación subsiguientes. Esto puede habilitar a la máquina de destino a, por ejemplo, volverse una máquina fuente en una actividad de replicación subsiguiente. Los metadatos pueden ser almacenados con o separados de los datos del recurso sin apartarse del espíritu o alcance de la invención. En general, en sistemas distribuidos de área amplia, no es factible asumir la sincronización del cronómetro en un nivel muy granular. Esto previene que los sistemas de replicación utilicen un cronómetro global para determinar ganadores para actualizaciones y creaciones concurrentes. Los replicadores típicamente utilizan cronómetros distribuidos de manera lógica que son estampados en metadatos para el contenido distribuido. Un cronómetro digital se incrementa cuando el contenido es actualizado, según opuesto a ser sobrescritos a través de un cronómetro digital físico del tiempo cambiado. Los cronómetros digitales de esta manera respetan la causalidad: las actualizaciones al mismo contenido se estampan con cualesquiera valores de cronómetro incrementados. El valor del cronómetro de A:x en la Figura 2 puede, por ejemplo, ser cuatro ("4"). El sistema de replicación entonces asegura que los valores del cronómetro asociados con A:y y A:z sean mayores que cuatro. La relación entre esos valores de cronómetro es arbitraria. Los valores pueden o no pueden ser idénticos, ya que se asignan de manera independiente (por ejemplo, la máquina 201 asigna el valor del cronómetro para A:y mientras la máquina 202 asigna el valor de cronómetro para A:z). En una sincronización de replicación normal, los valores del cronómetro pueden ser utilizados para determinar un conflicto del ganador en base a la estrategia de resolución del conflicto del último-ganador-gana. Los datos con el valor de cronómetro más alto pueden indicar datos más recientes que los datos replicados con valores de cronómetro más bajos. La estrategia del último-escritor-gana es consistente con los cronómetros lógicos, ya que preservan la causalidad. De acuerdo con otro aspecto de la presente invención, los metadatos del recurso se incrementan con un campo numérico llamado "valor de cerca". Un valor de cerca puede se asignado a recurso o porción del mismo. Los valores de cerca utilizados durante la resolución del conflicto, en conjunción con los otros metadatos, de acuerdo con un grupo de reglas definidas más adelante. En una modalidad de la invención, de acuerdo con las reglas, los valores de cerca se inicializan ya sea en cero o uno. Un valor de cero indica que el recurso no deberá ser enviado o hecho visible (a través 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 de cerca de cero puede ser considerado como un recurso esclavo mientras un recurso que tiene un valor de cerca de uno puede ser considerado como un recurso maestro. Si durante la actividad de replicación entre dos máquinas, un recurso (por ejemplo, recurso A) en una de las máquinas (por ejemplo, máquina 201) tiene un valor de cerca más alto el mismo recurso en otra máquina (por ejemplo, máquina 202), el recurso que tiene el valor de cerca más alto se replica a la máquina con el recurso que tiene el valor de cerca más bajo. En otras palabras, el recurso con el valor de cerca más alto gana (y se replica), sin importar que otros metadatos de recurso están presentes. En la replicación un recurso que ya existe en dos máquinas pero es diferente, los mecanismos pueden ser utilizados con intentos para propagar tan pocos datos como sea posible para sincronizar el recurso. Por ejemplo, en lugar de enviar todos los datos asociados con un recurso, el mecanismo de replicación puede determinar que datos en el recurso en la máquina que envía son diferentes de los datos en el recurso de la máquina receptora y envía una o más diferencias o deltas para actualizar el recurso en la máquina receptora. Si durante una actividad de replicación, los valores de cerca son los mismos y son mayores que cero, entonces el recurso que gana (y se replica) depende de otros metadatos del recurso asociados con cada recurso. En otras palabras, cuando los valores de cerca son los mismos, la replicación prosigue de acuerdo con las reglas normales asociadas con la replicación. De esta manera, los valores de cerca suministran control granulado fino sobre el proceso de resolución de conflictos, ya que tienen precedencia en la resolución del conflicto. Es decir, cuando los metadatos de dos recursos se comparan, el recurso con el valor de cerca más alto tiene precedencia. Otros atributos, tales como cronómetros lógicos, se comparan solamente cuando las cercas son iguales. Los valores de cerca pueden tener propiedades similares a los cronómetros lógicos, como en una implementación pueden solamente ser incrementados, o reiniciados a cero. Por ejemplo, el valor de cerca puede ser incrementado cuando un usuario o proceso instruye al sistema de replicación a hacer eso. Esto algunas veces se denomina como "cercar el recurso" o simplemente "cercado". Un incremento al valor de cerca es independiente de las actualizaciones a los datos del recurso. Los incrementos de cerca se hacen visibles (por ejemplo, se transmite en metadatos) a través de la replicación. Ya que el cercado no es una operación frecuente, una representación entera del tiempo de reloj de pared puede ser utilizada para incrementar una cerca al máximo (el valor de cerca actual más uno) y (el tiempo de reloj de pared actual). Un valor de cerca puede ser reiniciado a cero cuando un usuario o proceso instruye al sistema de replicación a hacer eso. Esto algunas veces se denomina como "descercando el recurso" o simplemente "descercado". Los recursos en el modo de esclavo que están descercados (es decir, aquellos valores de cerca que han sido reiniciados a cero) no pueden ser replicados a ninguna otra máquina fuera de la máquina que los controla. Esto previene que un recurso en el modo de esc avo se convierta en externamente visible. Por lo tanto, los reinicios del valor de cerca no se hacen visibles a través de la replicación. Excepto por el cercado y descercado, los valores de cerca permanecen constantes durante la replicación. En particular, un valor de cerca positivo no cambia cuando los datos del recurso se actualizan o cuando el cronómetro lógico cambia. Los valores de cerca valuados a cero tampoco deberán cambiar en las actualizaciones de contenido para las máquinas esclavas. Se reconocerá que cercando un recurso en una máquina permite forzar la replicación de dicho recurso sin importar las actualizaciones concurrentes al recurso en otros miembros del grupo de réplica. También se reconocerá que al descercar un recurso permite forzar cualquier otro recurso replicado para tener precedencia sobre el local (descercado) y previene que el recurso descercado de replique. Las cercas pueden ser establecidas en un recurso existente a través de una interfase de programación del sistema de replicación (API) que cerca los recursos seleccionados. Además, las cercas pueden ser establecidas en recursos futuros a través de la exposición de una API que cerca recursos que coinciden con parámetros específicos (tales como nombres y atributos del recurso) cuando estos recursos se vuelven visibles para el sistema de replicación. El control del cercado y descercado futuro también puede ser provisto especificando adhesividad: creación de recursos indirectamente relacionados, tales como recursos bajo un directorio cercado/descercado pueden heredar el valor cercado en base a un grupo de políticas en el padre. El descercado también provee una forma granular de controlar el comportamiento del maestro o del esclavo de los socios de replicación. Al establecer una cerca en los recursos seleccionados efectivamente convierte a una máquina en maestra de esa versión del contenido (hasta que el contenido es actualizado la primera vez). El descercado de los recursos seleccionados hace que una máquina se comporte como un esclavo con respecto al contenido asociado con los recursos seleccionados. Se reconocerá que el cercado y descercado puede ser utilizado en número de áreas incluyendo restauración del respaldo, replicación fuera de banda, actualización a una versión más nueva del replicador, y proporcionar control de administrador. Una máquina que incluye un recurso descercado (por ejemplo, con un valor de cerca de cero), puede seleccionar cambiar el valor de cerca del recurso descercado a un calor de recurso cercado (por ejemplo, uno) para un recurso que es actualizado localmente en el esclavo. Esto se puede hacer, por ejemplo, para hacer la actualización visible. La Figura 3 es un diagrama de bloque que representa un sistema en el cual dos máquinas intentan reconciliar un recurso incluido en ambas, de acuerdo con varios aspectos de la invención. En la Figura 3, cada máquina tiene su propia versión del recurso y el recurso tiene el mismo nombre o identificador. Al final de la reconciliación, el objetivo es tener un recurso replicado que tiene ya sea el contenido de x o de y. En el sistema mostrado en la Figura 3, el contenido x de la máquina 301 gana sobre el contenido y de la máquina 302. Esto puede ocurrir, por ejemplo, si un valor de cerca es mayor para el recurso A en la máquina 301 o a través de la comparación de otros metadatos del recurso. La Figura 4 muestra algunos datos y metadatos del recurso ilustrativos que podrían ser utilizados para A:x de las Figuras 2 y 3 de acuerdo con varios aspectos de la invención. Los metadatos del recurso incluyen un valor de cerca de 1, un valor de cronómetro, un GUID, miembro de réplica que escribe el cambio, y un compendio. Los datos del recurso incluyen un nombre de los recursos, los datos mismos, un tiempo de creación, un tiempo de modificación, y otros atributos de los datos del recurso. La Figura 5 muestra algunos datos y metadatos del recurso ilustrativos que pueden ser utilizados de acuerdo con varios aspectos de la invención, relacionados con la sincronización mostrada en la Figura 3. El contenido de la máquina 501 (por ejemplo, x) gana sobre el contenido en la máquina 502 (por ejemplo, y) y podrá por lo tanto ser replicado a la máquina 502 debido a que el valor de cerca para el recurso asociado con x (es decir, 1056603359) es mayor que el valor de cerca para el recurso asociado con y (es decir, 1). Observar que bajo métodos de replicación convencionales, y ganará sobre x debido a un tiempo de cronómetro de actualización más largo.
La Figura 6 es un diagrama de flujo de datos que generalmente representa pasos ilustrativos que pueden ocurrir para sincronizar un recurso entre dos máquinas de acuerdo con varios aspectos de la presente invención. El proceso inicia en el bloque 605. En el bloque 610, se hace una determinación de si por lo menos uno de los valores de cerca indica que el recurso deberá ser propagado. Ambos valores de cerca pueden ser establecidos a un estado descercado (por ejemplo, 0). En este caso, el recurso no deberá ser propagado. Si uno de los valores de cerca se establece a un valor cercado (por ejemplo, 1 o mayor), entonces el recurso deberá ser propagado si es necesario para sincronizar los dos recursos. En el bloque 615 si el recurso debe ser propagado, el proceso se desvía al bloque 620; por el contrario el procesamiento se desvía al bloque 635. En el bloque 620, se hace una determinación de si los valores de cerca son iguales. Si es así, el procesamiento de desvía al bloque 625 en donde otros metadatos se utilizan para determinar cómo propagar el recurso. En el bloque 627, el recurso o una porción del mismo (por ejemplo, los metadatos, valor de cerca, diferencias en contenido, y similares) se propagan a partir de la máquina que fue determinada en el bloque 625. Si los valores de cerca no son iguales en el bloque 620, el procesamiento de desvía al bloque 630. En el bloque 630, el recurso o una porción del mismo (por ejemplo, los metadatos, valor de cerca, diferencias en contenido, y similares) se propagan a partir de la máquina que tiene un valor de cerca más alto para el recurso a la máquina que tiene el valor de cerca más bajo para el recurso. En el bloque 635, el procesamiento termina. Lo siguiente son algunos escenarios de ejemplo en los cuales los aspectos de la invención pueden ser utilizados. Restauración de respaldo no autoritativo: cuando los datos se vuelven corruptos o se pierden, un usuario que maneja un miembro de un sistema de recurso replicado puede borrar el miembro y cuestionar para obtener todos los datos asociados con el miembro a través del sistema de replicación de recursos. Cuando un miembro es relativamente grande en relación con el ancho de banda de un enlace que conecta el miembro al sistema de replicación del recurso. Al utilizar un aspecto de la invención, sin embargo, el usuario puede restaurar recursos de un miembro a partir de un respaldo. El usuario entonces puede descercar los recursos en el respaldo (por ejemplo, fijar el valor de cerca de 0) y permitir al sistema de replicación de recursos actualizar recursos que están vencidos. En este caso, el contenido restaurado solamente actúa como una "memoria caché de contenido" que al dar la lógica apropiada puede ser utilizada por el replicador para evitar la transferencia del contenido a través de un enlace lento (por ejemplo, "a través del cable"), de esta manera mantiene el tráfico de sincronización inicial siguiendo una restauración del respaldo restringida a los metadatos y datos del recurso que necesitan ser actualizados. Después de la sincronización, cualesquiera recursos restantes que tienen un valor de cerca de O pueden ser eliminados o pueden tener su valor de cerca establecido a 1 para permitirles la replicación. Copiado fuera de banda: los nuevos miembros de un grupo de réplica pueden potencialmente incluir una cantidad más grande de datos. Para facilitar una transferencia más rápida/o menos costosa, los nuevos miembros pueden ser enviados a través de un canal que tiene un costo más bajo y/o servicio más rápido para el usuario. Por ejemplo, los nuevos miembros pueden ser copiados a un disco duro o grabados en CD-ROMs o DVD-ROMs y embarcados durante la noche. Una vez hecha la copia de los nuevos miembros al sistema en el sitio remoto, pueden ser descercados como se describió anteriormente con respecto a la restauración de respaldo no autoritativa. El descercado de los nuevos miembros se hace para evitar la transferencia del contenido copiado en el sitio remoto a otros sitios. Restauración de respaldo autoritativo: un usuario puede desear restaurar a partir de un respaldo y propagar el contenido restaurado a todos los sistemas en el sistema del recurso replicado. Para hacer esto, el usuario puede restaurar los recursos a un sistema y después cercar los recursos que el usuario desea propagar. Escenarios con fines específicos: un usuario puede desear forzar una versión específica de un grupo de recursos para replicar y tener precedencia a través de cualquier otro contenido en conflicto en un grupo de réplica. Esto se puede hacer cercando el grupo de recursos. Sincronización inicial: La sincronización inicial es un caso especial de copiado fuera de banda. En la configuración o actualización de un sistema replicado, un usuario puede designar una máquina como maestra (es decir, para contener el contenido que va a ser replicado a otras máquinas) y designar las otras máquinas como esclavas (es decir, para recibir el contenido de la maestra). Para hacer esto, el usuario puede cercar el recurso en la maestra para tener un valor de cerca inicial de 1 y descercar los recursos existentes en las esclavas con un valor de cerca de 0. Un recurso que llega a la existencia en una esclava después de que está inicialización puede ser cercada con 1 por lo que será replicada. Ya que un recurso esclavo descercado no es replicado, no es necesario sincronizar metadatos adicionales para dicho recurso cunado pierde contra un recurso en conflicto con el nombre de la maestra. La Figura 7 es un diagrama de flujo de datos que generalmente representa pasos ilustrativos que pueden ocurrir para llevar a cabo una restauración de respaldo no autoritativa de acuerdo con varios aspectos de la invención. Los datos en un miembro se eliminan o corrompen (bloque 710). El administrador restaura a partir del respaldo (bloque 715). El administrador marca los datos restaurados -como descercados (bloque 720). La sincronización ocurre, según representada en el bloque 725. El administrador elimina o marca los recursos restantes con un valor de cerca de 1 (bloque 730) y el proceso termina (bloque 735). La Figura 7 se proporciona con un ejemplo para los pasos que pueden ocurrir en el respaldo no autoritativo descrito anteriormente.
Se reconocerá que las otras aplicaciones mencionadas anteriormente también han sido descritas con suficientes detalles para fácilmente reducir los diagramas de flujos de datos. También se entenderá que muchas otras variaciones pueden ser hechas a los pasos en la Figura 7 o las aplicaciones descritas anteriormente sin apartarse del espíritu o alcance de la presente invención. La Figura 8 es un diagrama de bloque que representa una máquina configurada para operar en un sistema de replicación de recursos de acuerdo con varios aspectos de la invención. La máquina 805 incluye un mecanismo de actualización 810, recursos 822, y un mecanismo de comunicaciones 840. El mecanismo de actualización 810 incluye la lógica del comparador de cerca 815 que se utiliza para comparar valores de cerca y determina si los recursos deberán ser propagados a partir de la máquina 805 o si los recursos deberán aún ser visibles a otras máquinas. La lógica del comparador de cera 815 también puede ser utilizada para determinar cómo los valores de cerca deberán ser actualizados en el cado en que una operación de cercado o de corrupción o eliminación y reconstrucción subsiguiente de metadatos del recurso 830 (como se describe con mayor detalle más adelante).
La otra lógica de resolución de conflictos de metadatos 820 incluye la lógica utilizada para determinar que recurso gana (y deberá ser propagado) los valores de cerca para los recursos deberán ser equivalente. En la aplicación de otra lógica de resolución de conflictos para metadatos 820, el mecanismo de actualización 810 puede acceder los datos en los metadatos del recurso 830 y/o los datos del recurso 835 para determinar si el recurso (o una porción del mismo) deberá ser propagado a o recibido de otra máquina. Los recursos 822 incluyen los datos del recurso 825 y los metadatos del recurso 830. La diferencia entre los datos del recurso y los metadatos del recurso se describieron anteriormente con referencia a la Figura 2. Aunque se muestra en la misma caja, los datos del recurso 825 pueden ser almacenados en un almacén separado relativo a los metadatos del recurso 830. El mecanismo de comunicaciones 840 permite al mecanismo de actualización 810 comunicarse con otros mecanismos de actualización (no mostrados) en otras máquinas. Juntos, los mecanismos de actualización determinan que recursos deberán ser sincronizados y cómo la sincronización debe ocurrir. Los mecanismos de comunicaciones 840 pueden ser una interfase de red o adaptador 170, módem 172, o cualesquiera otros medios para establecer comunicaciones como se describió en conjunción con la Figura 1. Se reconocerá que otras variaciones de la máquina mostrada en la Figura 8 pueden ser implementadas sin apartarse del espíritu o alcance de la invención. En una modalidad de la invención, existen tres valores de cerca iniciales: -1, 0 y 1. El -1 toma el papel del 0 anterior (es decir, el valor descercado) y 0 puede indicar que el recurso puede replicarse mientras no existe otro recurso con un valor de cerca que es 1 o mayor. Una utilidad de esta extensión es en el manejo de las pérdidas de los metadatos de replicación. Por ejemplo, un replicador de recursos puede mantener los metadatos en un almacén separado del almacén utilizado para almacenar los datos del recurso. De esta manera los metadatos y los datos del recurso (es decir, el contenido) puede fallar de manera independiente. Durante una reconstrucción, una máquina que ha perdido sus metadatos puede cercar sus recursos con un valor de -1 inicialmente, mientras no conozca si ese recurso ya fue replicado o solamente para crearlo localmente (y por lo tanto no es conocido para las otras máquinas en el grupo de réplica). Al cambiar prematuramente el valor de cerca de -1 a 1 podría tener el efecto de reintroducir contenido añejo de regreso en la red como contenido más actualizado pero las máquinas desconectadas pueden ser sobrescritas. Al cambiar la cerca de -1 a 0, por el otro lado, puede permitir que dicho contenido sea reintroducido hasta el punto en donde algún otro participante puede determinar que es añejo. Observar que 0, 1 y 2 (o algún otro esquema de numeración) puede ser utilizado en su lugar si solamente enteros positivos son deseados, intercambiando cada valor como se describió anteriormente. Aún otra modalidad de esta invención utiliza -» y 0 como posibles valores de cerca iniciales. En la funcionalidad, el valor de cerca de -8 reemplaza el 0 (es decir, es el valor descercado) mientras el 0 reemplaza el 1 (es decir, indica que el recurso deberá ser replicado). Además de otros valores de cerca negativos (por ejemplo, -1, -2, -3, .., -n) puede ser utilizados para indicar recursos que pueden ser replicados. Dichos valores de cerca podrían perder contra recursos cercados con valores más altos. Una utilidad de esta generalización incluye escenarios en donde la disponibilidad de recursos frescos es más importante que el uso del ancho de banda durante una restauración. La máquinas cada una puede ser asignada a un valor de cerca diferente (por ejemplo, -1, -2 -n) que se utiliza en los recursos iniciales. El ordenamiento da precedencia a una maquina líder que utiliza una cerca de -1, el contenido aún no en conflicto de todas las máquinas está inmediatamente disponible. Otra aplicación de esta representación incluye la disminución de los valores de cerca cada vez que una máquina recupera o reconstruye sus metadatos en respuesta a la corrupción o pérdida de metadatos. Un valor heurístico de esta aplicación es que cada vez que la máquina reconstruye sus metadatos, es probable que esos datos del recurso almacenados en la máquina se conviertan en menos y menos confiables y/o actualizados a la fecha. A través de este mecanismo, el contenido en las máquinas que reconstruye sus metadatos menos frecuentemente es considerado más confiable y gana a través de valores de cerca sobre el contenido de las máquinas que reconstruyen sus metadatos más frecuentemente. Se reconocerá que los valores de cerca descritos anteriormente son valores de cerca lógicos que pueden ser implementados en cualquier variedad de valores de cerca físicos. Por ejemplo, los valores de cerca pueden ser físicamente representados como enteros no asignados, números de punto flotantes, valores de bit o cualquier otro tipo de esquema de numeración sin apartarse del espíritu o alcance de la invención. Como se puede ver a partir de la descripción detallada anteriormente mencionada, se proporciona un método y sistema mejorados para el control granular sobre información de replicación. Mientras la invención es susceptible de varias modificaciones y construcciones alternativas, ciertas modalidades ilustrativas de la misma se muestran en los dibujos y han sido descritas anteriormente en detalle. Se deberá entender, sin embargo que no existe ninguna intención de limitar la invención a las formas descritas, sino por el contrario, la intención es cubrir todas las modificaciones, construcciones alternativas, y equivalentes que caen dentro del espíritu y alcance de la invención.
Claims (33)
1. Un medio legible por computadora que tiene instrucciones ejecutables por computadora, que comprende: recuperar metadatos de un recurso que es replicado sobre una pluralidad de máquinas, el recurso tiene metadatos y contenido que reside en cada máquina en la cual el recurso es replicado, los metadatos incluyendo uno o más valores que son actualizados siempre que el contenido del recurso cambia a través de cualquier actualización local y un valor de cerca que es independiente de cualesquiera cambios locales al contenido; comparar un primer valor de cerca del contenido en una primera máquina de la pluralidad de máquinas con un segundo valor de cerca del contenido en una segunda máquina de la pluralidad de máquinas; y si el primer valor de cerca es de precedencia más alta que el segundo valor de cerca, actualizar la segunda máquina.
2. El medio legible por computadora de acuerdo con la reivindicación 1, en donde los metadatos se almacenan en un almacén separado del contenido.
3. El medio legible por computadora de acuerdo con la reivindicación 1, en donde la actualización de la segunda máquina comprende determinar una o más diferencias entre el contenido en la primera y la segunda máquinas y transmitir la una o más diferencias.
4. El medio legible por computadora de acuerdo con la reivindicación 1, en donde la actualización de la segunda máquina comprende transmitir solamente los metadatos.
5. El medio legible por computadora de acuerdo con la reivindicación 4, en donde el contenido en la primera y segunda máquinas es el mismo.
6. El medio legible por computadora de acuerdo con la reivindicación 1, en donde el contenido comprende datos de archivo y atributos de archivo.
7. El medio legible por computadora de acuerdo con la reivindicación 1, en donde cada uno de los metadatos en cada máquina comprende un compendio que resume el recurso.
8. El medio legible por computadora de acuerdo con la reivindicación 7, que comprende además comparar los compendios de los metadatos en las máquinas y pasar por alto la actualización si los compendios son equivalentes.
9. El medio legible por computadora de acuerdo con la reivindicación 1, en donde la actualización de la segunda máquina comprende la actualización del segundo valor de cerca para igualar el primer valor de cerca.
10. El medio legible por computadora de acuerdo con la reivindicación 1, que comprende además si los valores de cerca son equivalentes, comparar otros datos en los metadatos para determinar si el contenido deberá ser actualizado.
11. El medio legible por computadora de acuerdo con la reivindicación 1, en donde cada valor de cerca se asigna a una porción o porciones de este recurso respectivo.
12. El medio legible por computadora de acuerdo con la reivindicación 1, en donde el contenido con un cierto valor de cerca no se propaga a las otras máquinas.
13. El medio legible por computadora de acuerdo con la reivindicación 1, en donde el contenido con un cierto valor de cerca es invisible a otras máquinas.
14. El medio legible por computadora de acuerdo con la reivindicación 1, que comprende además configurar uno de los valores de cerca a un máximo de (el mismo + 1) y (un tiempo de cronómetro) de la máquina en la cual el recurso, incluyendo el valor de cerca, reside.
15. El medio legible por computadora de acuerdo con la reivindicación 1, que comprende además mantener cada valor de cerca igual que el contenido asociado con los cambios del valor de cerca.
16. Un medio legible por computadora que tiene instrucciones ejecutables por computadora, que comprende: determinar si un primer recurso que reside en una primera máquina deberá ser utilizado para actualizar un segundo recurso residente en una segunda máquina, cada recurso asociado con los metadatos y el contenido, cada uno de los metadatos incluyendo uno o más campos que son actualizados siempre que el contenido del recurso asociado cambia y un valor de cerca, cada valor de cerca indicando si su recurso asociado deberá ser utilizado para actualizar un recurso en otra máquina a una precedencia más alta que la de otros metadatos; si el valor de cerca del segundo recurso indica que el segundo recurso no deberá ser propagado de la segunda máquina, prevenir la propagación de la segunda máquina; y si el valor de cerca del primer recurso es de una precedencia más alta que el valor de cerca del segundo recurso, actualizar el segundo recurso del primer recurso.
17. El medio legible por computadora de acuerdo con la reivindicación 16, que comprende además si los valores de cerca del primero y segundo recursos son equivalentes, determinar que máquina actualizará los otros basado en los metadatos diferentes de los valores de cerca.
18. El medio legible por computadora de acuerdo con la reivindicación 17, en donde los otros metadatos comprenden un cronómetro lógico que indica la última vez que el contenido correspondiente fue actualizado.
19. El medio legible por computadora de acuerdo con la reivindicación 18, en donde un valor de cerca indica que su recurso correspondiente puede ser propagado a otras máquinas hasta que otro recurso con un valor de cerca más alto está localizado en otra máquina.
20. El medio legible por computadora de acuerdo con la reivindicación 16, en donde los metadatos asociados con el primer recurso están almacenados en una estructura de datos separada de su recurso correspondiente.
21. El medio legible por computadora de acuerdo con la reivindicación 20, en donde la estructura de datos está corrupta o eliminada, además comprende reconstruir la estructura de datos y disminuir el valor de cerca asociado con el primer recurso.
22. El medio legible por computadora de acuerdo con la reivindicación 21, que comprende además reconstruir la estructura de datos una pluralidad de veces y disminuir el valor de cerca asociado con el primer recurso cada vez que la estructura de datos es reconstruida.
23. El medio legible por computadora de acuerdo con la reivindicación 22, que comprende además si el valor de cerca del segundo recurso es de una precedencia más alta que el valor de cerca del primer recurso, actualizar el primer recurso a partir del segundo recurso.
24. Un método para replicar datos, que comprende: cargar datos en una primera máquina; marcar los datos con un primer valor de cerca que indica que los datos no deberán ser transmitidos de la primera máquina a los datos actualizados en cualquier otra máquina; sincronizar por lo menos una porción de los datos con datos en una segunda máquina.
25. El método de acuerdo con la reivindicación 24, que comprende además después de sincronizar la por lo menos una porción de datos, marcar la porción restante de los datos con un valor de cerca que indica que los datos pueden ser transmitidos a partir de la primera máquina para actualizar datos en cualquier otra máquina.
26. El método de acuerdo con la reivindicación 24, que comprende además después de sincronizar la por lo menos una porción de datos, eliminar la porción restante de los datos.
27. El método de acuerdo con la reivindicación 24, en donde los datos se cargan a partir de un respaldo.
28. El método de acuerdo con la reivindicación 24, en donde los datos se cargan a partir de una copia de datos enviados de otra máquina.
29. El método de acuerdo con la reivindicación 24, que comprende además marcar datos correspondientes a una segunda máquina que indican que los datos correspondientes deberán ser sincronizados durante la sincronización.
30. El método de acuerdo con la reivindicación 24, que comprende además cambiar una porción de los datos y marcar la porción cambiada con un valor de cerca que indica que la porción cambiada deberá ser sincronizada durante la sincronización.
31. Un sistema para replicar datos, que comprende: una primera máquina que tiene un primer grupo de recursos; una segunda máquina que tiene un segundo grupo de recursos, en donde cada recurso en cada máquina está asociado con metadatos y contenido, cada uno de los metadatos incluyendo uno o más campos que son actualizados siempre que el contenido del recurso asociado cambia y un valor de cerca, cada valor de cerca indica si su recurso asociado deberá ser utilizado para actualizar un recurso en otra máquina independientemente de otros metadatos, en donde la primera y segunda máquinas se configuran para: comunicar información con respecto a los recursos contenidos por ambos; y actualizar cada recurso que está vencido de acuerdo con la siguiente precedencia: si un valor de cerca de un recurso en una de las máquinas es de una precedencia más alta que el valor de cerca de un recurso correspondiente en la otra máquina, actualizar la otra máquina con el recurso en la máquina; por el contrario actualizar el recurso en las máquinas en base a datos diferentes de los valores de cerca.
32. El sistema de acuerdo con la reivindicación 31, en donde el primer grupo de recursos se carga de un respaldo y los valores de cerca del mismo se establecen para causar que el primer grupo de recursos tenga precedencia sobre cualquier otro grupo de recursos, tal como cualquier otro grupo de recursos en cualquier otra máquina que corresponde al grupo de recursos que se actualizan a partir del primer grupo de recursos.
33. El sistema de acuerdo con la reivindicación 31, en donde los valores de cerca del primer grupo de recursos se marcan para tener precedencia sobre los recursos correspondientes a otras máquinas, de manera que los recursos correspondientes se actualizan a partir del primer grupo de recursos.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US48662703P | 2003-07-10 | 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 |
Publications (1)
Publication Number | Publication Date |
---|---|
MXPA04006721A true MXPA04006721A (es) | 2005-04-19 |
Family
ID=33479336
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
MXPA04006721A MXPA04006721A (es) | 2003-07-10 | 2004-07-09 | Control granular sobre la autoridad de informacion replicada a traves de cercado o descercado. |
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 (37)
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 |
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 |
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 |
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 |
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 |
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 |
US7552148B2 (en) * | 2006-02-28 | 2009-06-23 | Microsoft Corporation | Shutdown recovery |
US7620721B2 (en) * | 2006-02-28 | 2009-11-17 | Microsoft Corporation | Pre-existing content replication |
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 |
US8655848B1 (en) | 2009-04-30 | 2014-02-18 | Netapp, Inc. | Unordered idempotent logical replication operations |
US8321380B1 (en) | 2009-04-30 | 2012-11-27 | Netapp, Inc. | Unordered idempotent 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 |
US8473690B1 (en) | 2009-10-30 | 2013-06-25 | Netapp, Inc. | Using logical block addresses with generation numbers as data fingerprints to provide cache coherency |
US8799367B1 (en) | 2009-10-30 | 2014-08-05 | Netapp, Inc. | Using logical block addresses with generation numbers as data fingerprints for network deduplication |
JP5445177B2 (ja) * | 2010-01-28 | 2014-03-19 | 富士通株式会社 | 確定クロック判定プログラム及び方法、並びにノード装置 |
CN102834823B (zh) * | 2010-02-11 | 2017-07-28 | 瑞典爱立信有限公司 | 目录数据库处的数据管理 |
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 |
Family Cites Families (45)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0396834B1 (en) * | 1989-05-12 | 1995-08-30 | International Business Machines Corporation | Version-control in a data-processing system |
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 | コンピュータネットワークシステム |
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 |
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 |
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 |
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 |
WO2002075539A2 (en) * | 2001-03-16 | 2002-09-26 | Novell, Inc. | Client-server model for synchronization of files |
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 |
US7290019B2 (en) | 2003-03-03 | 2007-10-30 | Microsoft Corporation | Garbage collection of tombstones for optimistic replication systems |
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 |
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 |
-
2003
- 2003-12-10 US US10/733,459 patent/US7660833B2/en active Active
-
2004
- 2004-06-16 DE DE602004026389T patent/DE602004026389D1/de not_active Expired - Lifetime
- 2004-06-16 AT AT04102757T patent/ATE463789T1/de not_active IP Right Cessation
- 2004-06-16 EP EP04102757A patent/EP1498814B1/en not_active Expired - Lifetime
- 2004-06-16 ES ES04102757T patent/ES2341245T3/es not_active Expired - Lifetime
- 2004-06-25 CA CA002472528A patent/CA2472528A1/en not_active Abandoned
- 2004-06-25 AU AU2004202863A patent/AU2004202863B2/en not_active Expired
- 2004-07-06 JP JP2004199703A patent/JP5192635B2/ja not_active Expired - Lifetime
- 2004-07-07 BR BR0402702-7A patent/BRPI0402702A/pt not_active IP Right Cessation
- 2004-07-09 RU RU2004121135/09A patent/RU2372649C2/ru not_active IP Right Cessation
- 2004-07-09 CN CNB2004100636526A patent/CN100410874C/zh not_active Expired - Lifetime
- 2004-07-09 KR KR1020040053359A patent/KR101109257B1/ko active IP Right Grant
- 2004-07-09 MX MXPA04006721A patent/MXPA04006721A/es active IP Right Grant
-
2011
- 2011-09-22 JP JP2011207572A patent/JP2011253574A/ja active Pending
Also Published As
Publication number | Publication date |
---|---|
US7660833B2 (en) | 2010-02-09 |
RU2004121135A (ru) | 2006-01-10 |
DE602004026389D1 (de) | 2010-05-20 |
KR101109257B1 (ko) | 2012-01-30 |
AU2004202863A1 (en) | 2005-01-27 |
JP2005032249A (ja) | 2005-02-03 |
EP1498814B1 (en) | 2010-04-07 |
CN100410874C (zh) | 2008-08-13 |
CN1607500A (zh) | 2005-04-20 |
BRPI0402702A (pt) | 2005-05-24 |
EP1498814A1 (en) | 2005-01-19 |
ATE463789T1 (de) | 2010-04-15 |
CA2472528A1 (en) | 2005-01-10 |
US20050015413A1 (en) | 2005-01-20 |
AU2004202863B2 (en) | 2010-06-10 |
JP5192635B2 (ja) | 2013-05-08 |
KR20050007179A (ko) | 2005-01-17 |
RU2372649C2 (ru) | 2009-11-10 |
JP2011253574A (ja) | 2011-12-15 |
ES2341245T3 (es) | 2010-06-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
MXPA04006721A (es) | Control granular sobre la autoridad de informacion replicada a traves de cercado o descercado. | |
US7788223B2 (en) | Resource freshness and replication | |
CA2734675C (en) | Shared namespace for storage clusters | |
US6751674B1 (en) | Method and system for replication in a hybrid network | |
EP1325409B1 (en) | A shared file system having a token-ring style protocol for managing meta-data | |
TWI395104B (zh) | 在分散式儲存系統中資料之基元多重修改 | |
US6405219B2 (en) | Method and system for automatically updating the version of a set of files stored on content servers | |
CN100472463C (zh) | 用于对存储区中的选定数据执行操作的方法和设备 | |
JP4753693B2 (ja) | スナップショットなしでアイテムを同期化するシステムおよび方法 | |
US7032033B1 (en) | Handling collisions during synchronization of data between client and server computers | |
WO2007058729A1 (en) | Slave replica member | |
US20160055167A1 (en) | Composite Execution of Rename Operations in Wide Area File Systems | |
US20100293143A1 (en) | Initialization of database for synchronization | |
JP2011522337A (ja) | サーバクラスタに配信されるコンピュータシステムのソフトウェアモジュールの同期化方法、同期化システムおよびデータストレージへの適用 | |
Shapiro et al. | CPCMS: A Configuration Management System Based on Cryptographic Names. | |
Zheng et al. | A universal protocol for efficient synchronization | |
Štědronský | A decentralized file synchronization tool | |
Brodsky | Policy driven replication | |
Picconi et al. | Exploiting network locality in a decentralized read-write peer-to-peer file system | |
GB2439752A (en) | Copy on write data storage | |
Jakobsen | Integrating libpesto with subversion | |
Basagalar et al. | Growing Secure Distributed Systems from a Spore | |
Malon et al. | Object database features and HEP data management | |
Moore | Socialization of e-Government Collections |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
FG | Grant or registration |