BRPI0710725A2 - replicação filtrada de memórias de dados - Google Patents

replicação filtrada de memórias de dados Download PDF

Info

Publication number
BRPI0710725A2
BRPI0710725A2 BRPI0710725-0A BRPI0710725A BRPI0710725A2 BR PI0710725 A2 BRPI0710725 A2 BR PI0710725A2 BR PI0710725 A BRPI0710725 A BR PI0710725A BR PI0710725 A2 BRPI0710725 A2 BR PI0710725A2
Authority
BR
Brazil
Prior art keywords
replica
change
knowledge
filter
data
Prior art date
Application number
BRPI0710725-0A
Other languages
English (en)
Inventor
Lev Novik
Michael R Clark
Yunxin Wu
Douglas B Terry
Irena Hudis
Tomas Talius
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
Publication of BRPI0710725A2 publication Critical patent/BRPI0710725A2/pt

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/40Data acquisition and logging
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/178Techniques for file synchronisation in file systems
    • G06F16/1787Details of non-transparently synchronising 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/99953Recoverability
    • 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/99955Archiving or backup

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Information Transfer Between Computers (AREA)
  • Hardware Redundancy (AREA)
  • Synchronisation In Digital Transmission Systems (AREA)

Abstract

REPLICAçãO FILTRADA DE MEMóRIAS DE DADOS. Trata-se de métodos para possibilitar sincronização multi-mestre de conjuntos de dados específicos usando filtros. Em uma solicitação de sincronização, podem ser supridos dados incluindo conhecimento e filtros. Uma resposta pode compreender dados incluindo mudanças que sejam identificadas pelo filtro e que sejam dotados de versões que não sejam conhecidos pelo solicitante.

Description

"REPLICAÇÃO FILTRADA DE MEMÓRIAS DE DADOS"
Antecedentes da invenção
No mundo atual de manuseio de informação digital, as pessoas podem armazenar informações ou dados usando uma variedade de diferentes dispositivos e uma variedade de diferentes locais. Freqüentemente, um usuário armazena a mesma informação em mais de um dispositivo ou local. Em muitos casos, esse usuário gostaria que todas as suas várias memórias de dados tivessem a mesma informação sem a necessidade de entrar manual- mente as mesmas alterações em cada memória de dados. A replicação, ou sincronização, dos dados em um processo usado para assegurar que cada memória de dados seja dotada da mesma informação.
Por exemplo, um usuário pode manter um livro de endereço eletrônico ou um con- junto de mensagens de e-mail em uma miríade de diferentes dispositivos ou locais. O usuá- rio pode manter o livro de endereço ou endereços de e-mail, por exemplo, em um computa- dor de mesma em uma memória de dados acessível usando software de gerenciamento de informação pessoal, em seu computador de mesma, em um assistente digital pessoal (PDA) ou telefone móvel, usando o gerenciador de contatos em linha ou site da web de gerencia- mento de e-mail, e assim por diante. O usuário pode modificar a informação e contato ou enviar / receber endereços de e-mail usando aplicações associadas com cada local. Indife- rente de onde ou como uma mudança é feita, um objetivo de replicação é assegurar que seja feita uma mudança em um dispositivo específico ou em um local específico é finalmen- te refletida nas memórias de dados de outros dispositivos e nos outros locais.
Um método de replicação comum envolve tracking das mudanças que tenham ocor- rido subseqüente à replicação anterior. Por exemplo, um dispositivo que busca a replicação com outro dispositivo pode submeter uma solicitação para mudanças para o outro dispositi- vo. Idealmente, as mudanças que os outros dispositivos enviam são aquelas que ocorreram desde a última replicação. O dispositivo ou "réplica", que corresponde a uma solicitação para atualizar informação pode verificar para outras mudanças que são tempo estampado subseqüente à replicação anterior. Quaisquer mudanças com tal estampa de tempo podem então ser enviadas para o dispositivo de solicitação de replicação. Tipicamente, tal replica- ção requer que cada réplica esteja ciente de outras réplicas ou a topologia da replicação na qual está operando. Cada réplica pode também precisar manter um registro de quais mu- danças foram replicadas nas outras réplicas. Na verdade, cada réplica pode precisar man- ter informação a respeito do que se acredita estar armazenado nas outras réplicas na topo- logia.
Os desafios da replicação se tornam mais complicados quando mais de duas répli- cas estão incluídas na mesma comunidade sincronização ou topologia. Dentre esses desa- fios estão problemas envolvendo a substituição de dados mais atuais com dados transferi- dos com base nos outros dispositivos sejam replicados, dados de replicação que já podem estar na sincronização, e tendo dados que estão na sincronização a ser reportada como estando em conflito.
Como um exemplo, considere uma comunidade de sincronização que inclua três réplicas. Um usuário atualiza a réplica 1 no tempo 1. No tempo 2, os mesmos dados são atualizados na réplica 2. A réplica 2 então réplica com a réplica 3 e as mudanças feitas na réplica 2 são incorporadas na réplica 3. Se a réplica 3 subseqüentemente receber mudanças da réplica 1, os dados originalmente atualizados na réplica 2 podem ser substituídos com os dados originais provenientes da réplica 1, mesmo se a mudança da réplica 1 não for a mu- dança mais recente.
Em alguns casos, os recursos de comunicação podem ser perdidos quando as ré- plicas incorretamente acreditam que sua informação está fora de sincronização, e assim realizam operações de sincronização desnecessárias. Por exemplo, suponha nas três co- munidades de sincronização de réplica introduzidas acima que um usuário atualize a réplica 1. As mudanças na réplica 1 são então replicadas para a réplica 2. A réplica 2 então réplica suas mudanças para a réplica 3 de maneira que a informação proveniente da réplica 2, que é atualmente também a informação da réplica 1, é alterada na réplica 3. A réplica 3 então réplica com a réplica 1. Em alguns casos, a réplica 3 pode saber que a réplica 1 tenha sido atualizada, mas não conhece a versão da informação da réplica 1. Devido a isso, a réplica 3 pode replicar sua informação para a réplica 1, mesmo se a mesma informação já estiver na réplica 1. Ademais, as replicações desnecessárias adicionais podem continuar como réplica 1 réplica com a réplica 2 ou realiza outras replicações "pair-wise" em tempos subseqüentes.
Em alguns casos, os dados replicados podem na realidade parecer como estando em conflito, mesmo quando não for o caso. Por exemplo, considere novamente uma comu- nidade de sincronização de três réplicas. A informação na réplica 1 é atualizada e replicada para a réplica 2. A informação na réplica 1 é então replicada para a réplica 3. As réplicas 2 e 3 então tentam uma replicação apenas para descobrir que cada uma delas é dota de mu- danças (da replicação com a réplica 1) que ocorreram desde a ultima replicação. Apesar das mudanças serem a mesma, as réplicas 2 e 3 podem pensar que as mesmas estejam em conflito.
Pode ocorrer outro conjunto de problemas quando for desejável apenas replicar parte dos dados e uma memória de dados em um tempo específico. Por exemplo, suponha que a memória de dados inclua mensagens de e-mail em várias pastas, incluindo uma pasta de entrada e alguma quantidade de outras pastas incluindo, talvez, pastas que contenham mensagens de e-mail salvas. Em alguns casos, um usuário pode querer replicar mudanças para todas as pastas de e-mail. Por exemplo, isso poderia ser desejável quando a largura de banda de comunicações entre os dispositivos de replicação seja grande. Em outros ca- sos, talvez quando a largura de banda seja limitada, como pode ser algumas vezes com um telefone móvel ou PDA - o usuário pode desejar apenas replicar mudanças em pastas es- pecíficas, como sua caixa de entrada.
É também concebível que um usuário possa desejar sincronizar apenas parte de todo seu conjunto de dados em todos os casos. Por exemplo, um usuário pode desejar manter todos os e-mails em um computador de mesa ou servidor, mas apenas sincronizar sua caixa de entrada e um conjunto selecionado de pastas para um pequeno dispositivo que seja dotado de armazenamento limitado. Nesse caso, alguma informação pode nunca ser sincronizada com um dispositivo específico.
Como outro exemplo, considere uma memória de dados que inclua arquivos de musica digitais, /em alguns casos, um usuário pode desejar sincronizar toda sua biblioteca musical digital - talvez tenha um aparelho musical portátil ou computador com unidade rígi- da grande. Os usuários podem também ter um aparelho musical portátil pequeno com uma quantidade limitada de memória flash, na qual queiram apenas armazenar um conjunto de musicas selecionadas. Em um exemplo, essa musica a ser sincronizada pode incluir, diga- mos, arquivos musicais digitais que os mesmos tenham avaliado com "quatro estrelas" ou "cinco estrelas", bem como música carregada na semana anterior.
Ao sincronizar um conjunto específico de dados, como nas situações introduzidas acima, podem ocorrer vários problemas adicionais. Por exemplo, os dados podem se ajus- tar aos critérios de um filtro e serem conjuntos desejados de dados em um tempo ou em um dispositivo, mas não se ajustarem aos critérios e não estarem no conjunto de dados deseja- do em outro tempo ou em outro dispositivo. Adicionalmente, pode ser necessário que cada réplica continue a manter uma compreensão dos dados que foram sincronizados a partir de diferentes dispositivos, mesmo quando os dados podem, por exemplo, for um conjunto se- cundário de um conjunto total de dados durante algumas sincronizações, e o conjunto total de dados durante outras sincronizações.
Sumário da invenção
É apresentado a seguir um sumário simplificado da descrição a fim de proporcionar uma compreensão básica para o leitor. Este sumário não é uma vista extensa da descrição e não deve identificar elementos chaves ou críticos da invenção ou delinear o escopo da invenção. Seu único propósito é apresentar alguns conceitos aqui descritos de uma manei- ra simples como um prelúdio de uma descrição mais detalhada que é apresentada posteri- ormente.
Estão aqui descritas várias tecnologias e técnicas e direcionadas à replicação fiItra- da de dados. Especificamente, estão aqui descritas, dentre outras coisas, sistemas, méto- dos, e estruturas de dados que facilitam a replicação de conjuntos específicos de dados, identificados por "filtros", entre réplicas. Um filtro identifica, em parte ou no todo, um conjun- to específico de dados que é replicado entre réplicas.
Em algumas execuções dos sistemas e processos de replicação aqui descritos, uma réplica que deseja mudar de outra réplica pode transmitir um "valor de conhecimento" e alguns dados que identifiquem ou especifiquem um filtro para a outra réplica. O valor de conhecimento pode representar as mudanças que a primeira réplica conhece - tem conhe- cimento de - e o filtro pode representar um conjunto específico dos dados a respeito dos quais a primeira réplica deseja mudar. Nesse exemplo, a segunda réplica pode identificar as mudanças que irá transmitir para a primeira réplica comparando a versão das mudanças que é dotada com as mudanças conhecidas pela primeira réplica, onde as mudanças tam- bém estão no filtro proporcionado pela primeira réplica. Quaisquer mudanças que a segun- da réplica identifique que sejam tanto desconhecidas pela primeira réplica tanto que sejam especificadas pelo filtro podem então ser transmitidas para a primeira réplica.
Em outras execuções dos sistemas e processos aqui descritos, uma primeira répli- ca pode receber mudanças de uma segunda réplica - por exemplo,, as mudanças podem ser determinadas por um processo como aquele descrito no parágrafo anterior. A primeira réplica pode então incorporar as mudanças em sua memória de dados.
Em ainda outras execuções dos sistemas e processos aqui descritos, uma única réplica pode operar tanto como transmissor das mudanças quanto um receptor das mudanças.
Descrição dos desenhos
A Figura 1 ilustra um exemplo de comunidade de sincronização.
A Figura 2 ilustra como as mudanças podem ser gerenciadas em uma réplica.
A Figura 3 ilustra um exemplo do uso do conhecimento para enumerar mudanças durante a replicação.
A Figura 4 ilustra uma modalidade demonstrando como pode ser realizada a detec- ção de conflito.
A Figura 5 ilustra uma modalidade exemplificativa da mudança IDs e tracking de conhecimento.
A Figura 6 ilustra um exemplo de replicação entre duas réplicas.
A Figura 7A ilustra um modalidade de atualização de conhecimento em uma réplica usando uma lista de exceção.
A Figura 7B ilustra uma modalidade de uma atualização de conhecimento em uma réplica usando "pair-wise" máximo de vetores de conhecimento.
A Figura 7C ilustra uma modalidade de uma atualização de conhecimento em uma réplica onde existem as exceções no conhecimento atualizado. A Figura 8 ilustra um exemplo de uma replicação entre duas réplicas usando um filtro.
A Figura 9 ilustra uma modalidade exemplificativa de dados que podem ser usados em um exemplo de replicação filtrada.
A Figura 10 ilustra outro exemplo de replicação filtrada entre duas réplicas.
A Figura 11 ilustra técnicas exemplificativas direcionadas a uma questão que surge devido às diferenças na associação do filtro devido ao tempo no qual um filtro é avaliado.
A Figura 12 ilustra um exemplo de uma replicação entre duas réplicas usando um filtro retrátil.
A Figura 13 ilustra um conjunto de exemplo dados de associação de lista que po- dem ser usados em um cenário de replicação filtrada que use um filtro baseado em lista.
A Figura 14 ilustra uma modalidade exemplificativa do item informação de versão.
A Figura 15 ilustra uma modalidade exemplificativa usando um filtro baseado em lista.
A Figura 16 ilustra exemplo de dados para um filtro baseado em propriedade, para demonstrar uma técnica chamada materialização de lista.
A Figura 17 ilustra exemplo de dados de associação de lista para um filtro baseado em lista exemplificativo pela materialização de um filtro baseado e propriedade para itens específicos.
A Figura 18 ilustra uma modalidade de um sistema no qual a replicação filtrada po- de ser executada.
A Figura 19 ilustra um dispositivo de computador exemplificativo no qual as várias tecnologias aqui descritas podem ser executadas.
Descrição detalhada da invenção
A presente invenção se estende a várias tecnologias e técnicas direcionadas a uma replicação filtrada de dados. A replicação tipicamente ocorre entre um grupo de réplicas participantes que formam uma comunidade de sincronização. O total de associados da co- munidade de sincronização não precisa necessariamente ser conhecido de qualquer deter- minada réplica em um determinado tempo. A topologia da comunidade também não é ne- cessariamente conhecida para qualquer determinada réplica em um determinado tempo. No contexto dessa aplicação, a topologia da comunidade de sincronização pode ser um gráfico arbitrário no qual os nós do gráfico sejam réplicas e as bordas entre os nós representem possíveis relações de sincronização. Cada réplica na comunidade de sincronização é dota- da de uma ID1 que é um identificador único global (GUID) em uma modalidade.
Em algumas modalidades, cada mudança pode estar associada a uma "mudança ID", que pode ser um par que contenha a ID de uma réplica e uma versão associada àquela mudança. Por exemplo, a mudança ID ou "A10" pode indicar que a mudança foi realizada ou associada à réplica "A" e que a versão associada à réplica, talvez designada pela réplica A, seja "10".
Cada réplica mantém "conhecimento" que facilita replicação eficiente. Em algumas modalidades, conhecimento é meta dados que representam as mudanças das quais a répli- ca específica está ciente. Em tal modalidade, outras réplicas podem ser dispensadas do tracking que qualquer outra réplica específico já saibam por que essa informação pode ser efetivamente representada pelo conhecimento mantido por cada réplica.
O conhecimento pode ser armazenado ou representado de várias maneiras. Ge- ralmente uma representação de conhecimento, embora formado ou desejado, pode suportar as seguintes operações: (a) adição de uma mudança na representação do conhecimento, (2) avaliação se uma mudança está incluída na representação do conhecimento, e (3) com- binação de duas representações de conhecimento juntas, para formar uma única represen- tação de conhecimento.
Como é algumas vezes vantajoso representar concisamente as mudanças das quais uma réplica específica está ciente, em algumas modalidades, o conhecimento é re- presentado como um vetor de pares ou mudança ID onde cada par ou mudança ID é a ID de uma réplica r uma versão máxima associada àquela mudança. Tal representação pode ser referida como "vetor de conhecimento". Por exemplo, se a réplica estiver ciente de todas as mudanças feitas por uma réplica A de uma primeira mudança para uma décima mudança, e todas as mudanças feitas por uma réplica classificada B de uma primeira mudança para uma quinta mudança, a réplica pode ser dotada de um vetor de conhecimento de A10B5, que pode indicar que a réplica está ciente de todas as mudanças correspondentes à mu- dança das IDs de A1 a A10 e de todas as mudanças correspondentes à mudança das IDs de B1 a B5.
Uma réplica pode desejar sincronizar seus dados com outra réplica - isto é, uma ré- plica que queira receber quaisquer mudanças que não seja dotada de outra réplica - pode primeiro proporcionar seu conhecimento para a outra réplica. Para reduzir a quantidade de dados representando conhecimento que precise ser enviado entre as réplica replicantes, o conhecimento pode se expresso como um vetor de conhecimento, conforme anteriormente descrito. Portanto, o conhecimento que é enviado entre as réplicas não precisa incluir cada mudança ID, mas pode estar na forma de um vetor que represente uma quantidade e mu- dança ID. A outra réplica pode usar o conhecimento que recebeu da primeira réplica para enumerar quaisquer mudanças que seja dotada que a primeira réplica não seja, e então enviar tais mudanças de volta para a primeira réplica. A primeira réplica pode então avaliar se quaisquer mudanças recebidas entram em conflito com quaisquer mudanças que a mesma mantém e então incorpora quaisquer mudanças que julgue apropriadas ou válidas (talvez aquelas que não sejam conflitantes) em sua memória de dados. A primeira réplica pode também atualizar sua representação de conhecimento de maneira que a representa- ção de conhecimento inclua as novas mudanças que tenha recebido.
Com a finalidade de muito do comentário nesse relatório, a replicação pode ser considerada de mão única, conforme foi introduzida no parágrafo anterior. Isto é, uma única replicação pode transferir mudanças e uma réplica para outra. Para realizar uma replicação entre duas réplicas de maneira que ambas as réplicas sejam dotadas de mudanças da outra réplica, as sincronizações ou replicações de mão única põem ser realizadas em paralelo - isto é, ao mesmo tempo - ou sincronicamente, uma após a outra. Em outras execuções, pode ser vantajoso que as mudanças fluam em apenas uma direção - uma réplica pode incorporar mudanças de outra réplica, mas nunca ela mesma mudar os dados naquela outra réplica, por exemplo, - em cujo caso as sincronizações de mão única podem ser suficientes.
Deve ser observado que o numero de pares em um vetor de conhecimento especí- fico pode mudar à medida que as réplicas são adicionadas ou removidas da comunidade de sincronização. Além disso, não há nenhuma exigência no sentido de que o conhecimento específico contenha especificamente uma mudança ID para cada réplica em sua comunida- de de sincronização.
Em algumas modalidades, um filtro pode também ser especificado ou proporciona- do durante uma solicitação de sincronização. No contexto dessa aplicação, um "filtro" é qualquer construção que sirva para identificar um conjunto de itens específico em uma me- mória de dados. Durante a replicação, as mudanças identificadas pelas mudanças de enu- meração de réplica pode então ser filtrada usando o filtro de maneira que apenas as mu- danças que sejam identificadas pelo filtro sejam retornadas para o solicitante. Por exemplo, um filtro muito simples pode especificar "todos os itens que são verdes". As mudanças re- tornadas para a réplica solicitante podem então apenas incluir as mudanças dos itens que sejam verdes. As mudanças nos itens que não sejam verdes não devem ser enviadas para o solicitante. Ao mesmo tempo em que possa ser comum para um filtro identificar um con- junto secundário de itens, deve ser observado que em alguns casos um filtro pode identificar o mesmo conjunto de dados que seria identificado sem um filtro - isto é, o filtro pode não identificar os dados que sejam verdadeiramente um conjunto secundário de dados. Conti- nuando com o exemplo anterior onde o filtro especifica "todos os itens que são verdes", se todos os itens no conjunto de dados forem verdes, então os dados identificados pelo filtro irão incluir todos os itens no conjunto, e os dados identificados pelo filtro não serão um con- junto secundário verdadeiro de todo o conjunto de dados. Além disso, deve ser observado que um filtro é dito "identificar" um conjunto de dados específico, não significa que o filtro deva explicitamente nomear, por exemplo, itens específicos em um conjunto de dados ou que aqueles itens específicos devam sempre ser explicitamente listados ou associados ao filtro. Em algumas execuções, um filtro pode identificar itens específicos ou mudanças u- sando, por exemplo, uma questão que não se refira a qualquer item específico explicitamen- te, ao mesmo tempo em que para a mesma ou outras execuções um filtro possa usar uma lista explícita de itens, possa usar qualquer combinação de uma questão ou lista explícita, ou possa usar qualquer outra construção que identifique ou combine um conjunto ou itens ou alterações específicos em uma memória de dados.
Os elementos importantes para uma compreensão de replicação filtrada estão des- critos inteiramente nesse relatório. O texto associado à Figura de 8 a Figura 19 é particu- larmente relevante para o comentário da replicação filtrada aqui contida, porque essas figu- ras ilustram modalidades e exemplos que são especificamente relacionados com a replica- ção filtrada de dados.
Voltando à Figura 1, a mesma ilustra um exemplo de uma comunidade de sincroni- zação 100. A comunidade de sincronização 100 inclui uma quantidade de réplicas e um exemplo de um ambiente no qual as modalidades das tecnologias e as técnicas presente- mente descritas podem ser executadas. As réplicas na comunidade de sincronização 100 podem representar varias memórias de dados que podem incluir, mas não se limitam a, computadores, computadores de mesa, assistentes digitais pessoais, telefones celulares, outros dispositivos sem fio, computadores servidores, serviços em linha, e assim por diante, ou qualquer combinação dos mesmos.
Na Figura 1, uma réplica A 102 pode ser eletronicamente acoplada à réplica B 104 através do link de comunicação 106. A réplica A 102 pode ser conectada através de um link de comunicação 108 a uma réplica C 110. a Réplica C 110 pode ser conectada à réplica B 104 através de um link de comunicação 112. A réplica C 110 pode ser também conectada a uma réplica D 114 através de um link de comunicação 116. Os links de comunicação ilus- trados podem ser qualquer tipo de link que possibilite a troca de dados entre os dispositivos de computação, incluindo links com fio e links sem fio.
Nessa comunidade de sincronização 100, apesar de nem todas as réplicas serem diretamente conectadas através dos links de comunicação, as mudanças em qualquer uma das réplicas pode ser replicada para qualquer outra réplica na comunidade de sincronização 100. Por exemplo, para a réplica A 102 a ser replicada com a réplica D 114, as réplicas A 102 e C 110 podem ser replicadas através do link de comunicação 108. Após tal replicação, a réplica C 110 pode incluir as mudanças feitas na réplica A 102. As réplicas CeD podem então replicar através do link de comunicação 116, de maneira que a réplica D 114 possa incorporar as mudanças da réplica A 102. Dessa maneira, a réplica A 102 pode replicar com a réplica D 114 sem um link direto. De fato, as réplicas A 102 e D 114 podem nem mesmo estar cientes da existência uma da outra na comunidade de sincronização 100.
Voltando à Figura 2, está ilustrada uma modalidade que ilustra como as mudanças podem ser gerenciadas em uma réplica. A Figura 2 ilustra uma progressão "timewise" de uma réplica A 200. A réplica A 200 inclui o conhecimento 202, nesse caso classificado KA, e as mudanças 204 nesse caso classificadas Aa. Cada mudança nas mudanças 204 é o con- teúdo dos dados atuais de um item. Uma mudança pode ser um novo item adicionado a uma réplica apesar de nenhum item ser sido mudado por si própria, a supressão de um i- tem, e assim por diante. Cada mudança 204 está associada a uma versão que em uma modalidade da invenção é uma mudança ID. Notavelmente, um aspecto vantajoso da in- venção é que não é necessário manter um arquivo de transações incluindo informação so- bre mudanças anteriores. Ao contrário, cada réplica inclui conhecimento e uma base de dados de mudanças (isto é itens atuais) onde cada mudança é dotada de uma versão cor- respondente.
No tempo (1), a réplica A 200 está em um estado estável. No tempo (2), um usuá- rio entre uma mudança classificada X na réplica A 200. A Figura 2 ilustra a mudança X sen- do adicionada como um membro das mudanças 204. O conhecimento 202 é atualizado pa- ra incluir uma mudança ID1 MudançalD(X), que está associada à mudança X e identifica a adição da mudança X nas mudanças 204. Essa modalidade ilustra uma maneira na qual as mudanças na réplica estão associadas com a um específica IDs.
O conhecimento 202 representa as mudanças das quais a réplica A 200 está cien- te, e pode ser executada como um vetor de conhecimento. Em uma modalidade, as versões ou mudanças IDs são mantidas para itens e objetos e tais versões podem ser usadas para identificar quaisquer itens a serem replicados. Alternativamente, pode também ser mantido um arquivo de transações de mudanças.
Voltando à Figura 3, a mesma ilustra um exemplo do uso do conhecimento para enumerar as mudanças durante replicação. Deve ser observado que, ao mesmo tempo em que a ilustração da figura possa indicar uma ordem de execução específica, em uma ou mais modalidades alternativas as operações podem ser ordenadas diferentemente. Além disso, ao mesmo tempo em que a figura ilustra múltiplas etapas, deve ser reconhecido que em algumas execuções algumas dessas ou todas essas etapas podem ser combinadas ou executadas ao mesmo tempo.
A Figura 3 ilustra duas réplicas: a réplica A 302 e a réplica B 304. A réplica A 302 inclui o conhecimento 308, nesse exemplo classificado KA. O conhecimento 308 pode incluir uma lista de mudanças IDs conforme aquelas acima descritas. A réplica A 302 também in- clui um conjunto de mudanças 306, nesse exemplo classificado ΔΑ. Similarmente, a réplica B 304 inclui um conhecimento 312 classificado K8 e o conjunto de mudanças 310 classificado Ab e cada associado à mudança ID.
Para iniciar a replicação, na operação 350 no tempo 1, a réplica A 302 envia uma solicitação de sincronização para réplica B 304. A solicitação de sincronização inclui o co- nhecimento 308 da réplica A. Em uma execução da operação 352, algumas vezes referida como "enumeração de mudança", a réplica B 304 pode então comparar o conhecimento 308 com a versão associ- ada com cada das mudanças no conjunto de mudanças 310, e, desse modo, tomar decisões sobre quais de suas mudanças 310 já estão na réplica A 306 bem como as mudanças não presentes nas mudanças da réplica A. Em outra execução, em vez de examinar cada mu- dança na réplica B, a réplica B pode comparar o conhecimento 308 à versão associada com cada item mantido pela réplica B. Usando qualquer um dos processos, a réplica B pode e- numerar as mudanças das quais a réplica A não está ciente. Por exemplo, se o vetor de conhecimento da réplica A for A3B12 e a réplica B for dotada de mudanças atuais associa- das às versões que são mudanças IDs B13 e B14, então as mudanças enumeradas a serem enviadas para a réplica A pode incluir aquelas associadas à mudança IDs B13 e B14. Em uma modalidade, apenas B14 pode ser enviada se as mudanças identificadas por B13 e B14 forem feitas para o mesmo item.
Como resultado, na operação 354 no tempo 2, a réplica B 304 pode enviar para a réplica A 302 apenas uma parte das mudanças da réplica B1s 310 que estejam associadas às versões que não estejam incluídas no conhecimento 308 da réplica A. essas mudanças estão ilustradas usando as mudanças 314. Além das mudanças enumeradas, a réplica B 304 pode também enviar o conhecimento 312 da réplica B para a réplica A 302.
Nesse exemplo, a réplica A conhece todas as mudanças que estavam originalmen- te na réplica A, desde que essas mudanças não tenham sido substituídas pela mudança enviada pela réplica B 304. Além disso, a réplica B enviou todas as mudanças na réplica B que ainda não estavam na réplica A, de maneira que a réplica A tenha informação sobre todas as mudanças das quais a réplica B 304 estava ciente. Portanto, na operação 356 no tempo 3, a réplica A pode atualizar seu conhecimento 308 para refletir a adição das mudan- ças 314. Nesse caso, isso pode ser feito simplesmente pela adição do conhecimento 308 da réplica A para o conhecimento 312 da réplica B e definir a questão como o novo valor do conhecimento 308 da réplica A. Nesse momento, se ainda não realizado, a réplica A pode também incorporar quaisquer mudanças recebidas da réplica B.
Através desse mecanismo, é realizada uma replicação eficiente onde apenas as mudanças necessárias são replicadas e onde as réplicas individuais são apenas requeridas para manter informação sobre as mudanças que residem na réplica específica e nas mu- danças anteriores das quais a réplica está ciente.
Além de enumerar as mudanças, o conhecimento põem também ser usado para detectar conflito entre as mudanças. Essa é uma tarefa comum para as réplicas que te- nham iniciado uma operação de sincronização e recebido tanto alterações quanto conheci- mento aprendido de uma outra réplica - a réplica inicial pode então freqüentemente desejar determinar se quaisquer mudanças recebidas de outra réplica entrem em conflito com as mudanças já na réplica. Nesse contexto, é definido um conflito como uma mudança que foi feita sem conhecimento de outra mudança. Se uma mudança tiver sido feita com conheci- mento de outra mudança, então a ultima mudança - a mudança feita com o conhecimento da outra mudança - pode ser considerada como a mudança definitiva e não pode ser consi- derada a ocorrência de nenhum conflito.
Voltando à Figura 4 aqui ilustrada é uma modalidade demonstrando como pode ser realizada a detecção do conflito. A descrição que se segue da Figura 4 é feita com relação à Figura 3. Contudo, deve ser compreendido que as operações descritas com relação à Fi- gura 4 não são intencionadas a estarem limitadas ao uso com os elementos ilustrados pela Figura 3, ou quaisquer outras figuras. Além disso, deve ser compreendido que, ao mesmo tempo em que a ilustração da figura possa indicar uma ordem de execução específica, em uma ou mais modalidades ilustrativas das operações poderem ser ordenadas diferentemen- te. Além disso, ao mesmo tempo em que a figura ilustra múltiplas etapas, deve ser reco- nhecido que em algumas execuções algumas das ou todas essas etapas podem ser combi- nadas ou executadas ao mesmo tempo.
A Figura 4 ilustra duas réplicas conectadas por um link de comunicação. A réplica A 402 inclui o conhecimento 408 e um conjunto de mudanças 406. Como no exemplo na figura 3, o conhecimento 408 pode incluir uma coleção de mudanças IDs associadas às mu- danças 406 e associadas às mudanças anteriores. A réplica A também inclui, para o propó- sito desse exemplo, uma mudança para um item, onde a mudança tenha sido feita na répli- ca A. A mudança, classificada X, é um membro das mudanças 406. Similarmente, a réplica B 404 inclui o conhecimento 412, uma coleção de mudanças 410, e uma mudança para um item, classificado Y, que é um membro das mudanças 410.
Ilustrativamente, na operação 450 no tempo 1, a réplica A 402 envia a mudança X para a replicação filtrada B 404. Associados e enviados com a mudança X estão dois valo- res; a mudança ID associada à mudança X, classificada MudançalD(X), e um valor feito com conhecimento, classificada KA(X). O valor feito com conhecimento pode ser o conhecimento que existia na réplica A 402 quando a mudança X foi feita na réplica A 402. Alternativamen- te, em algumas modalidades, o feito com conhecimento pode ser o conhecimento que exista em uma réplica quando é enviada uma mudança. O conhecimento atual 408 da réplica A, nesse exemplo classificado KA, também pode ser enviado para a réplica B 404.
Conforme ilustrado na operação 452 no tempo 2, a réplica B 404 compara o item associado à mudança X - isto é, o item que mudou quando a mudança X ocorreu - com o item associado à mudança Y. Se a mudança Xea mudança Y corresponderem a itens dife- rentes, não há conflito, e o fluxo operacional prossegue para a operação 460.
Se as mudanças se referirem ao mesmo item, então é requerida analise adicional para determinar se as mudanças são conflitantes. Na operação 454 no tempo 3, a réplica 404 verifica para ser se as mudanças X já eram conhecidas para réplica B quando a mu- dança Y foi feita na réplica B. Como a mudança X, a mudança Y é dotada de uma mudança associada ID, MudançalD(Y), e um valor feito com conhecimento, K8(Y). Se a Mudan- çalD(X) for um membro da mudança Y's feita com conhecimento, Kb(Y), então não há confli- to. Em outras palavras, se for esse o caso, então a mudança Y foi feita na réplica B com conhecimento da mudança X feita na réplica A 402. Como tal, a mudança Y agora repre- senta os dados mais atuais e válidos para as réplicas AeB. (Apesar de não mostrado no exemplo ilustrado pela Figura 4, em um tempo subseqüente, a mudança Y pode ser enviada para a réplica Aeo item associado às mudanças XeY atualizadas para a mudança Y a réplica A, talvez em uma maneira descrita na Figura 3).
Se as mudanças XeY forem para o mesmo item, e a MudançalD(X) não aparecer em Kb(Y)1 então o fluxo operacional prossegue para a operação 456. Nessa operação, no tempo 4, é feita uma verificação para ver se a mudança Y era conhecida pela réplica A 402 quando a mudança X foi feita. Esse é um espelho para a operação realizada na operação 454 e é tipicamente feita pela verificação para ver se a mudança ID da mudança Y, ilustrada como MudançalD(Y), está incluída no conhecimento 408 da réplica A no momento em que a mudança X foi feita, KA(X). Se a MudançalD(Y) for um membro de KA(X), então a mudança X foi feita com conhecimento da mudança Y e não há conflito. Nesse caso, a mudança X é a mudança mais atual e válida para o item específico.
Se as mudanças XeY forem para o mesmo item, e a MudançalD(Y) não aparecer em Ka(X), e a MudançalD(X) não aparecer em Kb(Y), então existe um conflito verdadeiro. Em outras palavras, nesse caso a mudança Xea mudança Y foram feitas independente- mente uma da outra. Quando é encontrado um conflito, o mesmo pode ser reportado e po- dem ser aplicadas várias regras de resolução de conflito para determinar qual mudança - X ou Y - é mantida. Tais regras podem incluir a verificação das estampas de tempo para de- terminar qual um foi feita mais recentemente, sempre solucionado os conflitos a favor de determinado tipo de réplicas (como, por exemplo, aquelas armazenadas nos servidores) e/o qualquer outra resolução de conflito adequada. Alternativamente, em uma forma de resolu- ção de conflito, um item com mudanças conflitantes pode ser atualizado de maneira que as mudanças conflitantes sejam fundidas para formar uma nova mudança.
Retornando à Figura 5, está ilustrada na mesma uma modalidade exemplificativa da mudança IDs e tracking de conhecimento. A Figura 5 ilustra elementos selecionados de uma réplica 502. Esses elementos incluem uma coleção de mudanças 506 e conhecimento 508. A coleção de mudanças 506 inclui várias mudanças individuais 510, nesse exemplo ilustrado como X, Y, e Z. Nesse exemplo, o estado atual do conhecimento da réplica é indi- cado pelo vetor de conhecimento 512 que nesse caso é A4. O vetor de conhecimento 512 representa o conhecimento 508 da réplica A. Também representado na Figura 5 está uma quantidade de um IDs 514 associada aos itens individuais 516. Nesse exemplo, a réplica 502 inclui três itens mudados 516: Ix, Iy, e Iz. Esses itens são dotados de mudanças correspondentes 510 classificados X, Y, e Z. Usando a mudança IDs, é possível discernir que o item Ix, com a mudança ID A1, foi muda- do na réplica A em um primeiro tempo, representado pelo número "1". O item Iy, com a mu- dança ID A2, foi mudado na réplica A no tempo subseqüente da mudança do item Ix. E o item Iz, com a mudança ID A4, foi mudado na réplica A no tempo subseqüente da mudança do item 1Y (e também subseqüente a alteração do item 1x). A mudança ID A3, apesar de não ilustrada diretamente na Figura 5, pode corresponder a uma um anterior que, por exem- plo, foi substituída pela mudança para o item Iz classificado A4. Em outras palavras, o item Iz pode ter sido alterado no tempo 3 e essa mudança pode ter sido acordada com a mudan- ça ID A3. Quando i item Iz foi mudado novamente no tempo 4, foi acordada a mudança ID A4, que substituiu a um ID A3.
É importante observar a diferença entre a mudança ID A4, que nesse exemplo está associada ao item Iz, e o vetor de conhecimento 512 da réplica A, que também é classifica- do A4. Nesse exemplo o vetor de conhecimento da réplica A significa que ao conhecimento 508 da replica A inclui as mudanças correspondentes às mudanças IDs classificadas A4, A3, A2 e A1. Isto é, o vetor de conhecimento inclui a um representada pela mudança ID 518 que é a mesma do vetor de conhecimento, bem como todas as mudanças com a mesma réplica ID que foram anteriormente feitas na mudança 518 representada pelo vetor de co- nhecimento. Em comparação, no presente exemplo a mudança ID 518 classificada A4 re- presenta apenas a mudança Z feita no item Iz.
Voltando à Figura 6, a mesma ilustra um exemplo de replicação entre duas réplicas. A descrição que se segue da Figura 6 é feita com relação à Figura 4. Contudo, deve ser observado que as operações descritas com relação à Figura 6 não pretendem ser limitadas a serem usadas com os elementos ilustrados pela Figura 4, ou quaisquer outras figuras. Além disso, deve ser observado que, ao mesmo tempo em que a ilustração da figura possa indicar uma ordem de execução específica, em uma ou mais modalidades alternativas as operações podem ser ordenadas diferentemente. Além disso, ao mesmo tempo em que a figura ilustra múltiplas etapas, deve ser reconhecido que em algumas execuções algumas ou todas essas etapas podem ser combinadas ou executadas ao mesmo tempo.
Esse exemplo demonstra uma sincronização de dois modos na qual tanto a réplica A quanto a réplica B transmite mudanças para a outra réplica. Novamente, conforme anteri- ormente declarado, pode ser executada uma sincronização de dois modos como duas ope- rações de sincronização de dois modos. Ainda, o exemplo ilustrado na Figura 6 não des- creve todas as operações que podem existir em uma operação de sincronização de dois modos típica. Por exemplo, a Figura 6 não ilustra como a réplica A ou a réplica B podem realizar a detecção de conflito após as mesmas receberem mudanças da outra réplica. Tal detecção de conflito pode ser realizada, por exemplo, usando técnicas como, por exemplo, aquelas anteriormente descritas com relação à Figura 4.
Nesse exemplo, a réplica A 602 contém um conjunto de mudanças 604, o conheci- mento 606, e um vetor de conhecimento 608 que é uma representação estenográfica do conhecimento 606. Ilustrativamente, o vetor de conhecimento 608 da réplica A é A5B3C1D10, que indica que a réplica A é dotada de conhecimento das mudanças até a quinta mudança na réplica A 602, conhecimento até a terceira mudança na réplica B 610, conhecimento até uma primeira mudança na réplica C, e conhecimento até uma décima mudança em uma réplica D. A réplica B desse exemplo inclui um conjunto de mudanças 612, conhecimento 614, e um vetor de conhecimento 616 que é uma representação taqui- gráfica do conhecimento 614 da réplica Β. O vetor de conhecimento 616 da réplica B é A3B3C5D8, que indica que a réplica B é dotada do conhecimento 614 das mudanças até uma terceira mudança feita pela réplica A 602, conhecimento até uma terceira mudança feita pela réplica B 610, conhecimento até uma quinta mudança feita pela réplica C, e co- nhecimento até uma oitava mudança feita pela réplica D. Nesse exemplo, esses vetores de conhecimento incluem uma representação contínua das mudanças feitas por uma réplica a partir de uma primeira mudança para alguma mudança subseqüente - por exemplo, a parte de um vetor classificada "D10" indica conhecimento das mudanças da mudança D1 para mudança D19. Conforme será explicado mais detalhadamente aqui, um vetor de conheci- mento pode também incluir um ponto de início com alguma outra mudança a não ser a pri- meira mudança feita por uma réplica, dentre outras coisas.
Na operação 650 no tempo 1, a réplica A 602 envia uma solicitação de sincroniza- ção 618 juntamente com o conhecimento 606 da réplica A para a réplica B 610. Na operação 652, a réplica B 610 enumera as mudanças para enviar para a réplica
A por comparação do conhecimento 606 da réplica A com a mudança IDs associada às mu- danças na réplica B. Durante essa comparação, a réplica B descobre que é dotada de mu- danças feitas pela réplica C das quais a réplica A não está ciente. Essas mudanças estão associadas à mudança IDs C2, C3, C4 e C5. Na modalidade, a réplica B pode realizar essa operação pelo exame de cada item e observando os itens que sejam dotados de IDs que não sejam membros do conhecimento enviado pela réplica A. Em outra modalidade, a repli- ca B pode examinar suas mudanças diretamente e identificar aquelas mudanças que não sejam membros do conhecimento enviado pela réplica A.
Então, na operação 654 no tempo 2, a réplica B envia aquelas de suas mudanças 622 que correspondam a essas mudanças IDs, desde que as mudanças classificadas com aquelas mudanças IDs sejam as mudanças atuais aplicáveis aos itens B 610. Isto é, se uma mudança ID corresponder a uma mudança anterior e agora desatualizada, nenhuma mudança correspondente àquela ID pode ser enviada. Por exemplo, apesar de não ilustra- do nessa figura, se um item que anteriormente era dotado de uma versão C3 tiver sido no- vamente atualizado e designado uma nova versão - talvez com a mudança ID C4, a mu- dança associada a C3 pode não mais existir na réplica B 610, e independente do estado de sua existência, pode não ser enviada para a réplica A. Em vez disso, apenas a mudança associada com a ID mais recente, a mudança ID C4 na discussão desse parágrafo, pode ser enviada.
Na operação 656, em um tempo subseqüente 3, ou simultâneo com a operação 654 no tempo 2, a réplica B 610 envia para a réplica A 602 o estado atual do conhecimento da réplica B 614, nesse exemplo, o conhecimento consiste do vetor de conhecimento A3B3C5D8.
Nesse ponto, uma sincronização iniciada pela réplica A 602, onde a réplica A rece- be mudanças da réplica B 610, pode ser considerada completa. (Conforme observado aci- ma, a réplica A pode também realizar outras operações, como, por exemplo, incorporando as mudanças recebidas e detecção de conflito, que não estão ilustradas). Nesse exemplo da Figura 6, uma sincronização de mão dupla é realizada realizando adicionalmente a ope- ração 656 e a operação 658 acima descritas.
Na operação 658, a réplica A 602 enumera as mudanças que pode ser dotada das quais a réplica B 610 não está ciente, pela comparação do conhecimento 614 enviado pela réplica B para a mudança IDs correspondendo às mudanças na réplica A 602. No exemplo, a réplica A descobre que a réplica B não é dotada das mudanças representadas pela mu- dança IDs A4, A5, D9 e D10.
Desta maneira, na operação 660 no tempo 4, a réplica A 602 envia aquelas mudan- ças atuais 624 que existam nas mudanças da réplica A 604 que correspondam à mudança IDs A4, A5, D9, e D10 (exceto em casos específicos, como, por exemplo, onde a mudança ID representa uma mudança desatualizada, na qual nenhuma mudança pode ser enviada).
Na operação 662, a réplica A 602 e a réplica B 610 atualiza seus vetores de conhe- cimento 608 e 616, respectivamente, porque cada réplica agora é dotada de conhecimento das mudanças recém replicadas. Conforme ilustrado na operação 662 no tempo 5, o vetor de conhecimento da réplica A, A5B3C5D10, é igual ao vetor de conhecimento da réplica B. Ambos os vetores de conhecimento representam conhecimento das mudanças feitas pela réplica A até uma quinta mudança, as mudanças feitas pela réplica B até uma terceira mu- dança, as mudanças feitas pela réplica C até uma quinta mudança, e as mudanças feitas pela réplica D até uma décima mudança. Ambas as réplicas podem também realizar outras operações antes, durante, ou após, a operação 662, incluindo mudanças recebidas de in- corporação e realização da detecção de conflito. Voltando agora à Figura 7A e a Figura 7B, a mesma ilustra dois métodos de vetores de conhecimento de atualização seguindo uma replicação completa como, por exemplo, aquela representada na Figura 6.
Especificamente, a Figura 7 A ilustra um método para atualizar um vetor de conhe- cimento usando uma lista de exceção 702 armazenada em uma réplica. Esse exemplo usa o vetor de conhecimento inicial da réplica A, um vetor de conhecimento 608, que é igual a A5B3C1D10. Para criar uma lista de exceção 702, a replica observa a mudança IDs associ- ada às mudanças recebidas durante uma operação de sincronização. Quando é adicionada uma mudança a uma réplica, a mudança correspondente ID é adicionada como uma exce- ção para uma lista de exceção 702. Mais tarde, o conhecimento para a réplica A é exami- nada na Figura 7a, novamente correspondente às mudanças recebidas pela réplica A na Figura 6, o conhecimento inclui um vetor de conhecimento 608 e uma lista de exceção 702 que inclui as exceções C2, C3, C4 e C5. Um exame da lista de exceção 702 juntamente com o vetor de conhecimento 608 revela que incluindo a mudança IDs da lista de exceção 702, o conhecimento da réplica A inclui todas as mudanças até uma quinta mudança feita pela réplica C. Portanto, as exceções podem ser removidas do conhecimento da réplica A e do vetor de conhecimento da réplica A atualizado para incluir um elemento C5, conforme ilustrado no vetor de conhecimento atualizado 704.
Pode ser realizada uma análise similar no conhecimento 614 da réplica B 610. O vetor de conhecimento original 616 combinado com as exceções A4, A5, D9 e D10 na lista de exceção 703 possibilita o vetor de conhecimento 616 a ser atualizado para um vetor de conhecimento atualizado 706.
Notavelmente, se tiver sido realizada apenas uma replicação parcial, como, por e- xemplo, se as mudanças correspondentes à mudança IDs A4 e D9 não tiverem sido envia- das em uma replicação, então o conhecimento 614 da réplica B 610 precisa manter as ex- ceções A5 e D10 até que possam ser removidas, por exemplo, por uma replicação subse- qüente com outra réplica que transfere as mudanças representadas pela mudança IDs A4 e D9 para a réplica B.
A Figura 7B ilustra outro método de atualização dos vetores de conhecimento 608 e 616 para refletir a replicação ilustrada na Figura 6. Nesse exemplo, os vetores de conheci- mento são atualizados usando um "element-wise", ou "pointwise", máximo para cada dos elementos nos vetores de conhecimento originais 608, para formar um vetor de conhecimen- to atualizado 708. O primeiro elemento de cada vetor de conhecimento 606 e 616 corres- ponde a um conjunto de mudanças IDs associadas às mudanças feitas na réplica A. Devido A5 ser o elemento máximo "element-wise" dos dois vetores e conhecimento 608 e 616, o vetor de conhecimento atualizado 708 inclui um elemento A5. Do mesmo modo, os elemen- tos de vetor B3, C5 e D10 põem representar um elemento máximo "element-wise" corres- pondente às mudanças nas réplicas específicas às quais cada dos elementos corresponde.
Conforme pode ser visto, se cada dos vetores de conhecimento atualizados 704, 706, e 708 forem examinados, é obtido o mesmo vetor de conhecimento atualizado por qualquer método. O método de elemento máximo "element-wise" de atualização de vetor de conhecimento pode tipicamente ser usado quando tiver sido realizada uma replicação com- pleta. A método de lista de exceção de atualização do vetor de conhecimento pode ser útil quando não é certo que tenha ocorrido uma replicação completa (como pode acontecer, por exemplo, quando um usuário cancela a replicação, um dispositivo falha, e assim por diante). Isto é, o método da lista de exceção pode precisar ser usado de maneira que as exceções possam continuar a compreender uma parte do conhecimento de uma réplica específica quando doto conhecimento da réplica não puder ser representado em uma forma de vetor simples.
Voltando à Figura 7C, um exemplo de um conhecimento de atualização está ilus- trado para uma réplica que seja dotada de informação proveniente de uma replicação in- completa. A Figura 7C inclui um vetor de conhecimento original 710, uma lista de exceção 712, um vetor de conhecimento atualizado 714, e uma lista de exceção atualizada 716. Com relação à réplica ilustrada, após a replicação parcial a réplica é dotada de toda altera- ção IDs classificada de A1 a A5, representada pelo elemento vetor A5, e toda da mudança IDs classificada de A7 a A10, representada pela lista de exceção incluindo A7, A8, A9 e A10. Conforme ilustrado na Figura 7C, em uma versão atualizada do conhecimento, a lista de exceção atualizada 716 pode ser encurtada para indicar a inclusão de todos os elemen- tos de A7 a A10 como, por exemplo, pela expressão (A7:A10) ilustrada na Figura 7C. Essa expressão é simplesmente um vetor como, por exemplo, aqueles que foram anteriormente aqui comentados exceto que o ponto de início do vetor é algum outro ponto e não a primeira mudança para a réplica A. Portanto, a representação do conhecimento de réplica como se refere a A é representado pelo elemento vetor A5 e o vetor de exceção (A7:A10).
No caso do conhecimento da réplica com relação à réplica Β, o vetor de conheci- mento 710 pode ser usado para incluir a mudança contínua IDs subseqüente à mudança IDs incluída no elemento vetor para a réplica Β. O elemento vetor B1 inclui apenas a mudança ID B1. Devido a mudança IDs B2, B3, e B4 existirem na lista de exceção 712, e as mesmas serem contínuas com a mudança ID B1 incluída no vetor de conhecimento 710, o elemento vetor para a réplica B pode ser atualizado para B4 no vetor de conhecimento atualizado 714, representando a inclusão de elementos de B1 a B4. Devido à mudança ID B5 estar ausente da lista de exceção, a exceção B6 precisa permanecer na lista de exceção de conhecimento atualizado 716 - a mesma não pode ser incluída pelo elemento da réplica no vetor de co- nhecimento atualizado 714. Uma na=alise similar pode ser realizada com relação ao conhecimento em torno das mudanças feitas pela réplica C. O vetor de conhecimento original 710 inclui C5. A lista de exceção original inclui C6, C7 e C8. Devido o elemento vetor de conhecimento original C5 incluir a mudança IDs C1 através de C5, e C5 ser contínuo com a mudança IDs na lista de exceção original 712, o elemento vetor de conhecimento atualizado para a réplica C pode ser atualizado para C8.
Replicacão Filtrada
Em algumas modalidades, um filtro pode também ser especificado ou proporciona- do durante uma solicitação de sincronização. Um filtro é qualquer construção que sirva para identificar um conjunto específico de itens em uma memória de dados. Durante a replica- ção, as mudanças enumeradas pode, ser filtradas usando o filtro de maneira que apenas as mudanças que forem identificadas pelo filtro sejam retornadas para o solicitante. Por exem- plo, um filtro simples pode especificar "todos os itens que são verdes". As mudanças retor- nadas para a réplica solicitante pode então apenas incluir as mudanças para os itens que sejam verdes. As mudanças para os itens que não sejam verdes não podem ser enviadas para o solicitante.
A figura 8 ilustra aqui ilustrada é um exemplo de replicação entre duas réplicas u- sando um filtro. A descrição que se segue da Figura 8 é feita com referência à Figura 3 e a Figura 4. Contudo, deve ser observado que as operações descritas com relação à Figura 8 não são intencionadas a serem limitadas para serem usadas com os elementos ilustrados pela Figura 3 e Figura 4, ou quaisquer outras figuras. Além disso, deve ser compreendido que, ao mesmo tempo em que a ilustração da figura pode indicar uma ordem de execução específica, em uma ou mais modalidades alternativas as operações podem ser ordenadas diferentemente. Além disso, ao mesmo tempo em que a figura ilustra múltiplas etapas, deve ser reconhecido que em algumas execuções algumas ou todas as etapas podem ser combi- nadas ou executadas ao mesmo tempo.
O exemplo ilustrado na Figura 8 é uma sincronização de mão única iniciada pela réplica A. Nesse exemplo, a réplica A identifica mudanças que não estejam na réplica A e transmite tais mudanças para a réplica A, onde as mudanças transmitidas podem ser incor- poradas nas mudanças que já estejam na réplica A. Ao contrário dos exemplos anteriores, como, por exemplo, o exemplo descrito com relação à Figura 3, esse exemplo demonstra o uso de um filtro para possivelmente modificar os itens identificados e retornados pela réplica B.
A Figura 8 ilustra duas réplicas: réplica A 802 e réplica B 804. A réplica A inclui co- nhecimento 808, nesse exemplo classificado KA. A réplica A também inclui um conjunto de mudanças 806, nesse exemplo classificado ΔΑ. Similarmente, a réplica B 804 inclui um co- nhecimento 812 classificado Kb e um conjunto de mudanças 810 classificado ΔΒ. Para iniciar a replicação, na operação 850, a réplica A 802 envia uma solicitação de sincronização, que é recebida pela réplica B. Conforme os exemplos anteriores ilustraram, a solicitação de sincronização inclui o conhecimento 808 da réplica A. Ao contrário dos exem- plos anteriores, contudo, a solicitação de sincronização também inclui um filtro 820. O filtro 820 é qualquer construção que proporcione um mecanismo pelo qual uma réplica possa identificar zero ou mais itens ou mudanças específicos. Por exemplo, em algumas modali- dades, um filtro pode consistir de critérios que possam ser avaliados contra os itens - por exemplo,, "cada item que seja verde". Em outras modalidades a, um filtro pode ser uma lista explicita de itens. Em algumas modalidades, o próprio filtro pode ser transmitido como parte da solicitação de sincronização. Em outras modalidades, o filtro pode ser armazenado em outro lugar e apenas alguns dispositivos de identificação de filtro podem ser transmitidos como parte da solicitação de sincronização. Em ainda outras modalidades, determinados tipos de solicitações de sincronização pode automaticamente resultar no uso de determina- dos filtros, em cujo caso o próprio filtro pode ser transmitido com a solicitação de sincroniza- ção. Por exemplo, uma solicitação de sincronização transmitida sobre uma conexão de lar- gura de banda pode automaticamente resultar no uso de um filtro que de alguma maneira reduza o numero ou a natureza dos itens ou mudanças retornadas.
Em uma execução da operação 852, a réplica 804 identifica as mudanças a serem enviadas para a réplica A. Tais mudanças são aquelas que são: a) não conhecidas pela ré- plica A, conforme identificadas pelo conhecimento transmitido KA, e b) são identificadas pelo filtro. As mudanças que não são identificadas pelo filtro não são escolhidas para serem re- tornadas para a réplica A, mesmo se as mesmas não forem conhecidas pela réplica A. Essa operação pode ser realizada de várias maneiras. Em uma modalidade, por exemplo, a ré- plica B examina cada de seus itens e identifica aqueles itens que estão no filtro, e então compara as versões associadas com cada item no filtro com o conhecimento transmitido, e escolhe aqueles itens cujas versões não estejam no conhecimento transmitido. Em outra modalidade exemplificativa, a replica A pode examinar suas mudanças e identificar aquelas que não estejam no conhecimento transmitido pela réplica A, e então filtra as mudanças resultantes usando o filtro 820.
Conforme será apreciado após comentário adicional na descrição, o período de tempo no qual o filtro é avaliado pode afetar os itens que sejam considerados como estando "no filtro" ou "fora do filtro". Por exemplo, em algumas execuções pode ser possível que a réplica A considere um item específico como estando no filtro ao mesmo tempo em que a réplica B considere o mesmo item fora do filtro. Varias técnicas para lidar com essa questão são comentadas em vários pontos na continuação dessa descrição.
Na operação 854, a réplica B 804 envia as mudanças identificadas durante a ope- ração 852, e a réplica A recebe as mudanças. Na Figura 8, essas mudanças estão ilustra- das como ΔΡ 822. A réplica B também envia um valor de conhecimento, algumas vezes chamado valor de conhecimento aprendido, associado com a réplica B e classificado como Kl 824. Esse valor conhecimento pode ser usado pela réplica A 802 par atualizar seu co- nhecimento 808.
Na operação 858, a réplica A 802 atualiza seu conhecimento 808 pela incorporação do valor conhecimento Kl 824 retornado pela réplica B 804. Amaneira na qual uma réplica de recebimento, como, por exemplo, a réplica A, atualiza seu conhecimento pode ser dife- rente em uma replicação com filtros. Em algumas modalidades anteriormente comentadas, onde toda a memória de dados foi considerada para mudanças e nenhum filtro foi usado, o valor de conhecimento 808 da réplica A atualizada pode ser formada, por exemplo, combi- nado Ka e KL. Por exemplo, e sem limitação, suponha que o valor de conhecimento da ré- plica A antes da aplicação fosse KA=A2B5 e que o valor de conhecimento retornado pela réplica B fosse KL=A1B7. Em alguns exemplos anteriores, sem um filtro, o valor de conhe- cimento atualizado Ka 808 pode ser determinado pela combinação Ka e Kl, talvez usando os mecanismos descritos com relação à Figura 7A ou a Figura 7B. Em tal caso, esse valor de conhecimento resultante Ka 808 determinado na operação 856 pode ter sido Ka=A2B7 (o máximo de A2B5 e Α1B7).
Ao contrário, com a replicação filtrada o valor de conhecimento atualizado em al- guns casos pode não ser determinado, por exemplo, tomando o valor máximo de conheci- mento existente e transmitindo o conhecimento aprendido. Esse é o caso porque a réplica B necessariamente não transmitiu todas as suas mudanças - transmitiu apenas mudanças específicas: aquelas mudanças que são identificadas pelo filtro específico. Se a réplica ini- cial devesse atualizar seu valor de conhecimento sem considerar o uso do filtro, poderia ocorrer que o valor de conhecimento atualizado indicasse que a réplica é dotada de conhe- cimento das mudanças que não foram realmente transmitidas (talvez porque as mesmas não tivessem sido identificadas pelo filtro).
Para solucionar esse problema, o valor de conhecimento 808 é atualizado na ope- ração 850 usando um "conhecimento base" e um valor de conhecimento adicional associado ao uso do filtro. Usando o exemplo introduzido nos parágrafos anteriores, com o conheci- mento original KA=A2B5 e o valor de conhecimento retornado KL=A1B7, o valor de conheci- mento atualizado 808 para a réplica A pode ser representado em uma de muitas maneiras, incluindo como Ka=A2B5+F:A1B7, onde A2B5 é o conhecimento base e F:A1B7 é o valor de conhecimento filtrado adicional. Tal valor de conhecimento indica que a réplica A é dotada de conhecimento geral das mudanças através de A2B5 (isto é, conhecimento das mudanças para todos os itens através de uma segunda versão da réplica A e através de uma quinta versão na réplica Β). O valor do conhecimento filtrado adicional também indica que a réplica A conhece as mudanças através de A1B7 para os itens ou mudanças que são identificadas pelo filtro F.
O conhecimento é considerado cumulativo ou aditivo, de maneira que se um item ou mudança for identificado como estando no filtro F, a réplica A pode ser considerada do- tada de conhecimento através de A1B7 bem como através de AsB5. Por exemplo, suponha que uma mudança específica par um item específico esteja associada à mudança ID B6. Se o item mudado estiver no filtro F1 então a réplica A pode ser considerada dotada do conhe- cimento da mudança, porque a mudança ID B6 está no conhecimento A2B5+F:A1B7 - nes- se caso, a mudança ID B6 está na parte de conhecimento filtrado do valor de conhecimento geral. Ao contrário, se o item associado à mudança ID B6 não estiver no filtro F, então a réplica A não terá conhecimento da mudança - nesse caso, a mudança ID B6 irá apenas ser comparada com o valor de conhecimento base de A2B5, e será considerada como não sen- do um membro de A2B5. O fato de que a réplica A ser dotada de valor de conhecimento filtrado F:A1B7 não auxilia se a mudança ou item não estiver no filtro.
A réplica A pode apenas atualizar seu conhecimento usando o valor de conheci- mento aprendido Kl 824 se a mesma realmente incorporar as mudanças ΔΡ 822 que foram transmitidas pela réplica B. Se a réplica não incorporar as mudanças transmitidas, não pode atualizar seu conhecimento.
Através desse mecanismo, pode ser realizada uma eficiente replicação filtrada onde as mudanças no filtro que não são conhecidas pela réplica iniciante são identificadas e transmitidas para a réplica iniciante.
Como com a replicação filtrada, como aquela descrita anteriormente com relação a, por exemplo, Figura 3, a réplica iniciante pode detectar conflitos entre as mudanças já na réplica iniciante e aquelas transmitidas pela outra réplica. Pode realizar isso usando a mu- dança IDs associada às mudanças em ambas as réplicas e valores feitos com conhecimen- to. As técnicas de detecção de conflito anteriormente comentadas, por exemplo, como a- quelas comentadas em detalhe com relação à Figura 4, também aplicam para a replicação com filtros.
Voltando à Figa 9, a mesma ilustra uma modalidade exemplificativa de dados que podem ser usados em um exemplo de replicação filtrada. A Figura 9 ilustra elementos sele- cionados de uma réplica B 902. Esses elementos incluem uma coleção de mudanças 906 e conhecimento 908. A coleção de mudanças 906 inclui várias mudanças individuais 910, nesse exemplo ilustrado como W, X e Y. Nesse exemplo, o estado presente de conhecimen- to - isto é, o conhecimento 908 da réplica 902 - é identificado pelo vetor de conhecimento 912 que é nesse caso igual a A2B5.
Também representado na Figura 9 está uma quantidade de mudanças IDs 914 e cores 920 associadas aos itens individuais 916. Nesse exemplo, a réplica B 902 inclui três itens de mudança 916: Iw, Ix e lY. Esses itens são dotados de valores de cor corresponden- tes 920. Por exemplo, o item Iw é verde enquanto o item Ix é azul. Os itens são também dotados de mudanças correspondentes 910, classificados W, X e Y. Usando a mudança IDs, é possível discernir que o item Iw, com a mudança ID A2, foi mudada na réplica A em um tempo indicado pela versão número 2, o item Ix, com a mudança ID B5, foi mudado na réplica B em um tempo indicado pela versão número 5. (Como uma nota à parte, a relação entre o tempo em que Iw foi alterado, com a mudança ID A2, e o tempo quando Ix foi muda- do, com a mudança ID B5, por si próprio, desconhecido, porque as mudanças foram feitas em réplica diferentes. Isto é, não é possível dizer pelo exame da informação na Figura 9, se a mudança associada à mudança ID A2 foi feita antes ou após a mudança associada com a mudança ID B5. Contudo, o item lY, com a mudança ID B3, pode ser determinado ter altera- do antes do item Ix, que novamente é dotado da mudança ID B5, porque ambas desses mu- danças foram feitas na réplica B, e o número 3 é menor do que o número 5).
Voltando à Figura 10, a mesma ilustra um exemplo de replicação filtrada entre duas réplicas. A descrição que se segue da Figura 10 é feita com relação à Figura 6 e a Figura 9. Contudo, deve ser compreendido que as operações descritas com relação à Figura 10 não pretendem ser limitadas a serem usadas com os elementos ilustrados pela Figura 6 e Figura 9, ou quaisquer das outras figuras. Além disso, deve ser compreendido que, ao mesmo tempo em que a ilustração da figura possa indicar uma ordem específica d execução, em uma ou mais modalidades alternativas as operações podem ser ordenadas diferentemente. Além disso, ao mesmo tempo em que a figura ilustra múltiplas etapas, deve ser reconhecido que em algumas execuções algumas ou todas essas etapas podem ser combinadas ou e- xecutadas ao mesmo tempo.
Esse exemplo ilustra uma sincronização de mão única iniciada pela réplica A 1002. A réplica com a qual a réplica A está replicando nesse exemplo é a réplica B 902, que foi introduzida e explicada anteriormente com relação à Figura 9. Deve ser observado que o exemplo ilustrado na Figura 10 não descreve todas as operações que podem existir em uma operação de sincronização típica. Por exemplo, a Figura 10 não ilustra como a réplica A pode realizar detecção de conflito após receber mudanças da réplica B.
Nesse exemplo, a réplica 1002 contém um conjunto de mudanças 1004 classifica- das Δα, conhecimento 1006 classificado KA, e um vetor de conhecimento 1008 que é uma representação estenográfica do conhecimento 1006. Ilustrativamente, o vetor de conheci- mento 1008 da réplica A é A4B2, que indica que a réplica A é dotada de conhecimento das mudanças na réplica A até uma quarta mudança e conhecimento das mudanças na réplica B até uma segunda mudança. Conforme declarado no comentário da Figura 9 anteriormen- te, a réplica B 902 é dotada de um conjunto de mudanças 906 classificado ΔΒ, que inclui as mudanças individuais W, X e Y 910. A réplica B é também dotada de conhecimento 908 classificado Kb, e um vetor de conhecimento correspondente 912 que nesse caso é A2B5, indicando que a réplica B é dotada de conhecimento das mudanças na réplica A até uma segunda mudança e conhecimento das mudanças na réplica B até uma quinta mudança.
Na operação 1050, a réplica A 1002 envia uma solicitação de sincronização 1018 para a réplica Β. A réplica A também inclui tanto seu conhecimento 1006 quanto um filtro F verde 1016. O filtro 1016 nesse exemplo especifica que a réplica quer todas as mudanças para os itens que sejam verdes.
Na operação 1052, a réplica B 902 determina que as mudanças que devem ser en- viadas em resposta à solicitação de sincronização 1018. Nesse exemplo, as mudanças a serem enviadas devem estar no filtro - isto é, devem ser enviadas as mudanças apenas para os itens que sejam verdes. Além disso, como no caso dos exemplos anteriores como aquele ilustrado na / figura 6, apenas as mudanças não conhecidas para a réplica A 1002 devem ser enviadas. Nesse exemplo, isso significa que apenas as mudanças não represen- tadas pelo conhecimento transmitido 1006, que se igualem ao vetor de conhecimento A4B2, devem ser enviadas. Examinando as mudanças e os itens na réplica B, conforme ilustrado na / figura 9, é evidente que deve ser enviada apenas a mudança Y, associada ao item Iy e a mudança ID B3. O item Iy é verde, dessa maneira inclui-se no filtro. Além disso, a mudança ID associada ao item Iy é B3, que não está no conhecimento transmitido A4B2, indicando que a réplica A ainda não conhece essa mudança. Ao contrário, nem a mudança W para o item Iw nem a mudança X para o item Ix deve ser transmitido. O item Iw é verde, e assim inclui-se no filtro, mas sua mudança ID é A2 e assim a réplica A já conhece a mudança. O item Ix é azul, não verde, e assim não inclui-s no filtro 1016 e não deve ser transmitido, in- dependente se a réplica A conhece a mudança (que nesse caso não conhece - se não hou- ver filtro, então a mudança para o item Ix deve ser transmitida, porque a mudança é dotada da mudança ID B5, que não está no conhecimento transmitido da réplica A).
Na operação 1054, a réplica B 902 envia a única mudança identificada associada ao item Iy com a mudança ID B3, classificada como ΔΡ 1022. A réplica B também envia o conhecimento aprendido Kl 1014 que, nesse exemplo, é classificado Kl=F verde:A2B5. Es- se conhecimento aprendido indica que, após a incorporação das mudanças enviadas, a ré- plica iniciante pode atualizar seu conhecimento de maneira que seja dotada de conhecimen- to das mudanças através de Α2Β5, mas penas para os itens no filtro F verde· Em uma mo- dalidade alternativa, a réplica B pode não ser qualificar o conhecimento aprendido com um filtro - isto é, nesse exemplo pode apenas enviar KL=A2B5. Independente de como a réplica B qualifica o conhecimento aprendido que a mesma envia, a réplica A sabe que o conheci- mento pode apenas ser aplicado aos itens no filtro e assim quando atualiza seu conheci- mento, conforme será comentado abaixo com relação à operação 1056, pode apenas atuali- zar seu conhecimento para aqueles itens no filtro. Na operação 1056, a réplica A 1002 incorpora e envia a mudança Y associada ao item Iy e a mudança ID B3 nas suas mudanças ΔΑ 1004. A réplica A também atualiza seu conhecimento Ka 1006 de maneira que a mesma contenha A4B2+Fverde:A2B5. Esse co- nhecimento indica que a réplica A é dotada do conhecimento das mudanças, para todos os itens, através de uma quarta mudança na réplica A (A4) e através de uma segunda um na réplica B (B2). Também indica que, para os itens no filtro Fverde. a réplica A é dotada de conhecimento através de uma segunda um na réplica A (A2) e através de uma quinta mu- dança na réplica B (B5). Conforme foi comentado anteriormente, esse conhecimento é adi- tivo - isto é, um item no filtro Fverde sabe se pelo menos um do que se segue é verdadeiro: é no fragmento do conhecimento filtrado A2B5, ou no conhecimento base A482, se uma mudança ID estiver em qualquer dessas partes de conhecimento, e o item associado estiver no filtro, então a mudança é conhecida da replica. Esse conceito e técnica podem ser es- tendido para números arbitrários de fragmentos de conhecimento. Por exemplo, é concebí- vel que o conhecimento alguma, a seguir não comentada, réplica pode ser algo como A10B5C2+Fi:A5C2+F2:A20B20C20+...+Fx:B5C10D15, onde X é algum número arbitrário ou outro identificador.
O filtro Fverde anteriormente comentado é um exemplo de um tipo de filtro chamado um "filtro baseado em propriedade". Nesse contexto, um filtro baseado em propriedade é definido como um filtro cuja associação é definida apenas pelos conteúdos de uma ou mais propriedades associadas com os itens inseridos ou não no filtro. Assim, por exemplo, como o filtro Fverde inclui aqueles itens que sejam verdes, o filtro Fverde é um filtro baseado em propriedade. Conforme comentado anteriormente, um filtro é qualquer construção que pos- sa dividir ou limitar um conjunto de dados.
Ao contrário, um exemplo de um filtro que não seja baseado em propriedade é um filtro que é baseado em uma dada ou tempo que muda fora do contexto dos itens individu- ais. Por exemplo, um filtro pode especificar "todos os e-mails recebidos nas ultimas duas semanas". Esse filtro não é baseado em propriedade porque a associação do filtro muda com a data, independente de qualquer propriedade em um e-mail. Isto é, um e-mail recebi- do 14 dias antes pode estar no filtro hoje, e então não estar no filtro amanhã, mesmo se o e- mail e as propriedades associadas ao e-mail não tiverem mudado.
Uma característica de filtros baseados em propriedade que é algumas vezes dese- jado é que qualquer mudança em um item que resulte no item que entra ou que sai de uma associação de filtro também é dotado de uma mudança associada ID. Isto é, um item não pode entrar ou sair de um filtro sem gerar uma mudança associada. Isso pode ser útil quando, dentre outras coisas, as questões de resolução que podem ocorrer devido as dife- renças em suas associações de filtro devido ao tempo no qual a associação de filtro é avaliado. Voltando à Figura 11, a mesma ilustra técnicas exemplificativas direcionadas a uma questão que surge devido às diferenças na associação de filtro devido ao tempo no qual um filtro é avaliado. Isto é, pode ser possível que duas réplicas acreditem que itens diferentes estejam em um filtro, e fora do filtro, quando as duas réplica avaliam o filtro - por exemplo,, "quais os itens que são verdes?" - em tempos diferentes. A Figura 11 contém o mesmo fluxo operacional e os elementos como a Figura 10, e o comentário anterior com relação à Figura 10 também se aplica. Além disso, a Figura 22 também inclui uma nova operação 1156 e uma nova operação 1158 direcionada a essa questão. A descrição que se segue da Figura 11 é feita com referência à Figura 9 e a Figura 10. Contudo, deve ser compreendido que as operações descritas com relação à Figura 11 não são intencionadas a serem limita- das a serem usadas com os elementos ilustrados pela Figura o e Figura 10, ou quaisquer outras figuras. Além disso, deve ser compreendido que, ao mesmo tempo em que a ilustra- ção da figura possa indicar uma ordem específicas de execução, em uma ou mais modali- dades alternativas as operações podem ser ordenadas diferentemente. Além disso, ao mesmo tempo em que a figura ilustra múltiplas etapas, deve ser reconhecido que em algu- mas execuções algumas ou todas essas etapas podem ser combinadas ou executadas ao mesmo tempo.
Continuando com o exehiplo anteriormente comentado com relação à Figura 10, e os dados proporcionados na Figura 9, deve ser lembrado que X associado ao item Ix e a mudança ID B5 não foi retornado da réplica B 902 para a réplica A 1002. Isso ocorreu por- que no momento da réplica B avaliada no filtro Fverdei o item Ιχ era azul. Uma vez que o item não era verde e, portanto, não estava inserido no filtro, a réplica B não retornou o mesmo para a réplica A. Nesse contexto do comentário da Figura 10, isso pode possibilitar que a réplica A seja apropriadamente atualizada.
Contudo, suponha que a mudança associada a B5 realmente estava na cor do item Ix. Por exemplo,, talvez em um tempo imediatamente anterior do tempo da mudança B5, o item 1 χ era verde. Então o item Ix mudou de verde para azul, e essa mudança foi acordada mudança ID B5. Devido a réplica A 1002 não ser dotada de conhecimento da mudança de verde para azul, a réplica A pode acreditar que o item Ix esteja no filtro. Devido a réplica A crer que o item Ix esteja no filtro, está interessada em quaisquer mudanças para o item Ix e deve, portanto, receber a mudança associada à mudança B5. Considerando apenas o co- mentário na Figura 10, isso não irá ocorrer - novamente, quando a réplica B 902 avalia as mudanças para retornar na operação 1052, será observado que o item Ix não está no filtro e não envia quaisquer mudanças associadas com o item. Sem uma técnica direcionada a essa questão, o conhecimento que a réplica A mantém no fim da replicação pode não en- globar todas as mudanças que deveria. Nesse exemplo, conforme comentado com referên- cia à Figura 10, o conhecimento da réplica A será A4B2+FVerde:A4B5. Isso indica que a réplica A conhece todas as mudanças para os itens no filtro através de A3B5, que pode não ser considerado verdadeiro nesse exemplo adicional específico, porque a réplica A não co- nhece a cerca da mudança B5, e nunca foi enviada pela réplica B. Devido a réplica não sa- ber a respeito da mudança B5, pode ainda acreditar que o item Ix seja verde, quando na realidade deveria saber que o item Ix agora é azul.
As técnicas aqui descritas com relação à Figura 11 são direcionadas a endereçar essa questão com filtros baseados apropriadamente. Além disso, as técnicas adicionais descritas em outras partes desse relatório - por exemplo, com referência à Figura 12 - po- dem ser também aplicáveis a esse problema geral.
Voltando à Figura 11, a réplica B 902 primeiro envia a mudança inicial - novamen- te, essa é a mudança Y associada ao item Iy e a mudança ID B3 - e o conhecimento apren- dido na operação 1054.
Então, em um exemplo da nova operação 1156, a réplica B também envia informa- ção d identificação sobre os itens que foram mudados desde que a réplica A 1002 foi repli- cada pela última vez e que a replica B considera como não estando inseridas no filtro. Es- sas mudanças podem ser referidas como "mudanças não filtradas". Essa informação então possibilita que a réplica A atualize seu conhecimento de maneira que evite concluir que co- nhece algo sobre as mudanças que não recebeu.
A réplica B pode determinar quais os itens foram mudados desde a ultima vez que a réplica A foi replicada usando o conhecimento transmitido pela réplica A, que é o conhe- cimento Ka 1006 nesse exemplo. Quais quer mudanças conhecidas pela réplica B que não estejam representadas pelo conhecimento transmitido Ka pode ser considerado ter sido feito após a última replicação. Deve ser observado que o termo "última replicação" não significa a última vez que uma réplica sincronizada com essa outra réplica específica - isto é, nesse exemplo não significa "a última vez que a réplica A recebeu mudanças da réplica B". Em vez disso, se refere a conhecimento da réplica A sobre as mudanças obtidas através de re- plicações anteriores com quaisquer outras réplicas, conforme descrito anteriormente, por exemplo, com relação à Figura 1 onde as réplicas são capazes de fazer mudanças individu- almente e sincronizar com uma variedade de outras réplicas, sem manter uma compreensão específica da qual as réplicas foram parte de replicações passadas.
A informação de identificação que a réplica B envia pode ser qualquer informação que possibilite a réplica A a identificar itens específicos. Como um exemplo específico, em algumas execuções a informação de identificação pode ser um único identificador associado a cada item.
Nesse exemplo específico, juntamente com a solicitação de sincronização 1028, a réplica A envia o conhecimento Ka 1006 com o vetor de conhecimento associado 1008 de A4B2. Usando esse vetor de conhecimento, a réplica B pode determinar que ambos os i- tens Ix e Iy foram mudados desde a última replicação da réplica A, porque tanto a mudança IDs B5 (associada ao item Ix) quanto B3 (associada ao item lY) não estão no vetor de co- nhecimento A4B2. Pode também ser determinado que o item Iw não tenha sido alterado desde a última replicação porque a mudança ID do item Iw de A2 está no vetor de conheci- mento A4B2. Devido o item Iy estar no filtro no momento em que o filtro é avaliado pela ré- plica B1 a mudança para o item Iy já foi transmitida como parte da operação 1054. Contudo, a réplica B pode ver que a mudança B5 associada ao item Ix não foi enviada, porque, até onde concerne a réplica Β, o item Ix não está no filtro FVErde- Uma vez que o item Ix mudou desde a última replicação de réplica A, a réplica B envia informação de identificação para o item Ix como parte da operação 1156. Isso está classificado na Figura 11 como IDa=Ix 1122.
Uma vez que essa informação de identificação tenha sido enviada para a réplica i- nicial, como a réplica A nesse exemplo, a replica inicial pode usar a informação em pelo menos uma das poucas maneiras diferentes para assegurar que evita afirmar que conhece algo sobre as mudanças que não recebeu. Isso está ilustrado na Figura 11 pela operação de atualização 1158.
Uma abordagem possível é simplesmente excluir qualquer item que seja identifica- do na operação 1156. Essa técnica pode ser útil, por exemplo, nos casos em que a réplica inicial apenas mantém dados que estejam no filtro. Por exemplo, isso poderia ser útil quan- do a réplica inicial apenas mantém mensagens de e-mail na caixa de entrada, em vez de todas as mensagens de e-mail talvez porque a réplica inicial esteja em um dispositivo de computação com espaço de armazenamento limitado. Se a réplica apenas mentem um con- junto secundário dos dados armazenados e os outros estados de réplica que um item espe- cífico não esteja no filtro, então a réplica de recebimento não mais se preocupa com os da- dos associados ao item e pode excluir o item em questão. Usando essa abordagem, no exemplo anterior com Fverde, a réplica A 1002 pode excluir o item Ix. O conhecimento da réplica quando usa essa abordagem é atualizado conforme foi demonstrado com relação à Figura 10.
Algumas réplicas podem querer manter todos os dados, e dessa maneira não po- dem usar a abordagem de exclusão de itens identificados comentada no parágrafo anterior. Nesses casos, uma alternativa é criar uma exceção no conhecimento da réplica para cada item identificado. Para o item identificado, a réplica pode assegurar apenas que conhece o conhecimento anterior - isto é, não pode dizer que a replicação possibilitou a mesma a co- nhecer algo adicional sobre o item identificado. No exemplo anterior, a réplica A irá primeiro atualizar seu conhecimento como antes, obtendo o conhecimento A4B2+FVerde:A2B5. En- tão a réplica A irá adicionar uma exceção para o item Ix para indicar que a réplica A conhece apenas do item Ix o que é conhecido antes da replicação (porque a réplica B 902 não enviou quaisquer mudanças sobre o item Ix). Continuando com o exemplo anterior, o conhecimento resultante pode ser identificado como algo como A4B2+FVERDE:A2B5+IX:A4B2. Esse conhe- cimento indica que a réplica A conhece as mudanças para todos os itens através de A4 e B2, das mudanças dos itens no filtro FVerde através de A2 e B5, exceto que apenas conhece as mudanças do item Ix através de A4 e B2 (que era o conhecimento da réplica A antes do início da replicação).
Durante as replicações filtradas subseqüentes, as exceções adicionais podem ser adicionadas. Então, quando um dispositivo realiza uma replicação completa - sem o uso dos filtros - todas as exceções, bem como os fragmentos de conhecimento filtrados, podem ser removidos e substituídos com um único conhecimento base a partir da replicação com- pleta.
Voltando agora à Figura 12, a mesma ilustra um exemplo de uma replicação entre duas réplicas usando um tipo de filtro chamado um "filtro retrátil". A descrição seguinte da Figura 12 é feita com referência à Figura 4, Figura 8 e Figura 11. Contudo, deve ser com- preendido que as operações descritas com relação à Figura 12 não são intencionadas a serem limitadas a serem usadas com os elementos ilustrados pele Figura 4, Figura e Figura 11, ou quaisquer outras figuras. Além disso, deve ser compreendido que, ao mesmo tempo em que a ilustração da figura pode indicar uma ordem específica de execução, em uma ou mais modalidades alternativas as operações podem ser ordenadas diferentemente. Ade- mais, ao mesmo tempo em que a figura ilustra múltiplas etapas, deve ser reconhecido que em algumas execuções algumas ou todas essas etapas podem ser combinadas ou execu- tadas ao mesmo tempo.
Para compreender um filtro retrátil, considere que o comentário da Figura 11 foi di- recionado para a questão de duas réplicas diferentes acreditando que itens diferentes eram membros de um único filtro comum porque as réplicas avaliaram o filtro em pontos diferen- tes no tempo. O comentário com relação à Figura 11 proporcionou algumas técnicas para solucionar esse problema, por exemplo, pelo envio de identificadores de itens específicos juntamente com as mudanças identificadas e conhecimento aprendido, e usando esses i- dentificadores para excluir itens ou criar exceções no conhecimento.
Outra abordagem para o mesmo problema básico é definir e usar um filtro que pos- sibilite uma réplica determinar qual associação de filtro estava em qualquer ponto no passa- do. Um filtro para o qual esse caso se aplica é chamado "filtro retrátil". Admitido um filtro retrátil, uma replica pode agora não apenas avaliar o que está no filtro no presente, mas pode determinar quais itens estavam no filtro em um ponto no passado.
O fluxo operacional da Figura 12 demonstra o quanto o filtro retrátil pode ser usado como alternativa para as operações comentadas com relação a, por exemplo, à Figura 11. A Figura 12 ilustra duas réplicas: réplica A 1202 e réplica B 1204. A réplica A inclui o co- nhecimento 1208, nesse exemplo classificado KA. A réplica A inclui adicionalmente um con- junto de mudanças 1206, nesse exemplo classificado ΔΑ. Similarmente, a réplica B 1204 inclui um conhecimento 1212 classificado Kb e um conjunto de mudanças 810 classificado Δβ.
Para iniciar a replicação, na operação 1250, a réplica 1202 envia uma solicitação de sincronização, a réplica A envia seu conhecimento 1208, nesse exemplo, a réplica A tam- bém inclui um filtro retrátil 1220.
Em uma execução da operação 1252, a réplica B 1204 identifica as mudanças a se- rem retornadas para a réplica A 1202. Ao contrário dos comentários de replicação filtradas anteriores, por exemplo, com referência à Figura 8, a réplica B avalia as mudanças para os itens que se equiparam ao filtro no tempo atual e as mudanças para os itens conhecidos pela réplica A para se equiparar com o filtro - isto é, para os itens que se equipararam ao filtro no tempo representado pelo conhecimento transmitido Ka 1208. A réplica B pode reali- zar essa avaliação porque o filtro retrátil proporciona informação a respeito da associação do filtro em qualquer tempo no passado. Usando essa informação adicional, a réplica B de- termina se há quaisquer mudanças para os itens no filtro nesse momento, bem como quais- quer mudanças para os itens que estavam no filtro de acordo com a réplica A, mesmo se esses itens não estiverem no filtro no momento de acordo com a réplica B. Para quaisquer dessas mudanças identificadas, a réplica B pode avaliar se as mudanças são membros do conhecimento transmitido, como foi anteriormente comentado, e pode então determinar para enviar qualquer de tais mudanças.
Na execução da operação 1254, a réplica B 1204 envia as mudanças identificadas durante a operação 1252 para a réplica A. Na Figura 12, essas mudanças estão ilustradas como Af 1222. A réplica B também envia um valor de conhecimento associado com a répli- ca B, classificada como Kl 1224, de maneira que a réplica A possa atualizar seu conheci- mento 1208 após examinar e possivelmente incorporar as mudanças em Af 1222.
Finalmente, em uma execução da operação 1256, a réplica A pode incorporar mu- danças e atualizar seu conhecimento 1208 em um modo como aquele comentado anterior- mente, por exemplo,, com relação à Figura 8.
Em alguns casos, o uso de um filtro retrátil pode precisar de processamento adicio- nal ao incorporar as mudanças e atualizar conhecimento. Um caso no qual isso pode ocor- rer é quando a réplica inicial, como, por exemplo, a réplica A, é dotada de conhecimento de pelo menos algumas mudanças das quais a réplica de recebimento, como a réplica B, não está ciente, Nesse caso, o conhecimento Ka 1208 enviado pela réplica A, e usado pela répli- ca B durante mudança de enumeração, irá indicar que a réplica A sabe de pelo menos al- gumas mudanças das quais a réplica B não está ciente. A réplica B pode realizar mudança de enumeração como antes, por exemplo, conforme descrito anteriormente com relação à operação 1252, mesmo se não possa avaliar completamente o filtro no tempo indicado por KA, porque não é dotado de conhecimento de todas as mudanças abrangidas por KA. Então, durante a operação 1256, a réplica A deve assegurar que não atualiza seu conhecimento para itens que são dotados de mudanças que a réplica B não conhece. Para qualquer item que seja dotado de uma mudança que a réplica B não conheça, a réplica A pode criar uma exceção que indique que conheça - para esse item específico - o que conhecia antes da replicação filtrada. Pode identificar tais itens para determinar se todos os três critérios se- guintes são atendidos: a) o item está atualmente no filtro de acordo com a réplica A, b) o item não está no filtro de acordo com a réplica B1 examinado o conhecimento aprendido Kl, e c) o item não está no conjunto de mudanças enviado pela réplica B. Se todos esses crité- rios forem atendidos, então a réplica inicial sabe que é dotada de conhecimento adicional a respeito do item específico.
Além disso, se um item muda localmente de tal maneira que agora esteja inserido em um filtro - isto é, um item muda sem replicação, talvez devido a uma mudança feita em uma aplicação ou através de algum outro meio - e a mudança é feita subseqüente para uma replicação filtrada como aquela descrita com relação à Figura 12 e usando o mesmo filtro, a réplica local pode atualizar seu conhecimento em um modo similar aquele descrito no pará- grafo anterior. Especificamente, a réplica local pode criar uma exceção para atualizar item com um valor de conhecimento que não incorpore o fragmento de conhecimento adicionado como parte da replicação filtrada.
Como nos comentários anteriores de replicações filtradas e não filtradas, a réplica inicial pode detectar conflitos entre as mudanças já na réplica inicial e aquelas transmitidas pela outra réplica. Pode realizar isso usando a mudança IDs associada com as mudanças em ambas as réplicas e nos valores feitos com conhecimento. As técnicas de detecção de conflito anteriormente comentadas, por exemplo, aquelas comentadas em detalhe com rela- ção à Figura 4, também se aplicam à replicação com filtros retrateis.
Voltando à Figura 13, a mesma ilustra um conjunto de exemplo de dados de asso- ciação de lista que pode ser usado em um cenário de replicação filtrada que use um "filtro baseado em lista". Para compreender os filtros baseado em lista, primeiro considere que muitos filtros não sejam retrateis. Por exemplo, o filtro Fverde que inclui todos os itens que sejam verdes e foi comentado anteriormente com relação a, por exemplo, Figura 10, não é retrátil. Fornecida informação apenas a respeito do estado atual de um conjunto de dados e uma declaração simples que "todos os itens que sejam verdes" estão inseridos em um filtro específico é apenas suficiente para determinar o que está no filtro de acordo com o estado dos dados no momento em que o filtro é avaliado. Usando essa informação não é possível determinar a associação no filtro em um tempo anterior, e assim o filtro Fverde não é retrátil.
Um mecanismo para definir um filtro retrátil é seguir um caminho quando o item en- tra ou deixa a associação de um filtro, pela manutenção de uma lista de itens e listas asso- ciadas de entrada e saída de informação. Um filtro que use tal lista pode ser referido como um "filtro baseado em lista". Porque um filtro baseado em lista trilha um caminho quando os itens entram ou deixam a associação de filtro, outro nom para um filtro desse tipo pode ser "filtro tracking de associação".
Os dados de associação de lista 1300 ilustrados na tabela da Figura 13 ilustra os dados de associação de um exemplo de filtro baseado em lista, classificado F1, em um e- xemplo a réplica B 1402, que está comentada mais detalhadamente abaixo com relação à Figura 14. A data de associação de lista 1300 consiste de uma lista de itens 1302 e uma lista de informação entrada e saída 1304. O exemplo específico dos dados de associação ilustrado com relação à Figura 13 ilustra que o item Iw entrou no filtro na mudança ID A2; o item Ix entrou no filtro na mudança ID A3 e exibiu o filtro na mudança ID B7; o item Iy entrou no filtro na mudança ID B2, saiu na mudança ID B4, e então tornou a entrar no filtro na mu- dança ID B10; e o item Iz entrou no filtro na mudança ID A11. No tempo representado pelos dados de associação de lista, os itens Iw, Ιγ e Iz estão no filtro; o item Ix não está no filtro. Outro item, talvez chamado item Iv, não está na lista e pode ser considerado não estando no filtro presentemente e não tendo estado no filtro em qualquer ponto no passado.
Usando os dados de associação de lista 1300, uma réplica pode determinar se um item estava no filtro em um tempo específico no passado, onde o tempo no passado é re- presentado por um vetor de conhecimento. Por exemplo, usando um exemplo de vetor de conhecimento de A12B5, os itens Iw, Ιχ, e Iz podem ser considerados inseridos no filtro e o item Iy pode ser considerado não inserido no filtro. O item Iw entrado no filtro com a mudan- ça ID A2, que é parte do vetor de conhecimento A12B5, e não deixou o filtro, de maneira que está no filtro no tempo representado por A12B5. Similarmente, o item Iz também está no filtro porque entrou no filtro no tempo A11, que novamente está no vetor de conhecimen- to A12B5, e não deixou o filtro, o item Ix entrou no filtro a partir da mudança ID A3, que está no vetor de conhecimento A12B5, e saiu do filtro a partir da mudança ID B7. Porque a mu- dança de saída ID B7 não está no vetor de conhecimento A12B5, o item Ix é considerado inserido no filtro no tempo representado por A12B5, mesmo se os dados de associação de lista 1300 mostrem que o mesmo posteriormente deixe o filtro. Finalmente, o item Iy é con- siderado fora do filtro no tempo representado pelo vetor de conhecimento A12B5, porque A12B5 contém, a mudança de entrada e de saída IDs de B2 e B4, respectivamente, mas não contém a mudança de entrada mais recente ID de B10. Isto é, nesse caso a mudança de entrada mais recente ID nos dados para o item Iv que também está no vetor de conheci- mento A12B5 é uma mudança de saída ID, de maneira que o item não está no filtro a partir do tempo representado por A12B5.
Os dados de associação de lista ilustrados no exemplo da Figura 13 representam apenas uma das varias maneiras na qual os dados de associação de lista podem ser manti- dos para o filtro baseado em lista e não são intencionados a serem limitativos. Qualquer filtro que mantenha uma lista de itens e tempos de entrada e de saída associados pode ser considerado um "filtro baseado em lista".
Voltando agora à Figura 14, a mesma ilustra uma modalidade exemplificativa da in- formação de versão de item. A Figura 14 ilustra elementos selecionados de uma réplica B 1402. Esses elementos incluem uma coleção de mudanças 1406 e conhecimento 1408. A coleção de mudanças 1406 inclui várias mudanças individuais 1410, nesse exemplo ilustra- das como V, W, X, Y, e Z. Nesse exemplo, o estado presente do conhecimento da réplica é identificado por um vetor de conhecimento 1412 que é nesse caso Α11B20. O vetor de co- nhecimento 1412 representa o conhecimento 1408 da réplica B. Observe que a Figura 14 ilustra apenas os elementos selecionados da réplica B 1402 e não ilustra todos os elemen- tos que possam existir em uma réplica.
A Figura 14 também ilustra uma quantidade de mudança IDs 1414 associada com os itens individuais 1416. Nesse exemplo, a réplica B 1402 inclui cinco itens mudados 1416: Iv, Iw, Iy e Iz- Esses itens são dotados de mudanças correspondentes 1410 classificados V, W, X Y, e Z. Usando a mudança IDs 1414, é possível discernir que, por exemplo, o item Iv, com a mudança ID B14, foi mudado na réplica B no tempo 14. É possível também determi- nar que os outros itens tenham sido mudados na réplica observada nos temos observados, e foi explicado anteriormente para exemplo com referência à Figura 5 e Figura 9.
Voltando agora à Figura 15, a mesma ilustra um exemplo de repiicação filtrada u- sando um filtro baseado em lista. A descrição que se segue da Figura 15 é feita com refe- rência à Figura 4, Figura 10, Figura 13 e Figura 14. Contudo, deve ser observado que as operações descritas com relação à Figura 15 não são intencionadas a estarem limitadas a serem usadas com os elementos ilustrados pela Figura 4, Figura 10, Figura 13 e Figura 14, ou quaisquer outras figuras. Além disso, deve ser compreendido que, ao mesmo tempo em que a ilustração da figura pode indicar uma ordem específica de execução, em uma ou mais modalidades alternativas as operações podem ser ordenadas diferentemente. Ademais, ao mesmo tempo em que a figura ilustra múltiplas etapas, deve ser reconhecido que em algu- mas execuções algumas ou todas essas etapas podem ser combinadas ou executadas ao mesmo tempo.
Esse exemplo ilustra uma sincronização de mão única iniciada pela réplica A 1502. A réplica com a qual a réplica A está replicando nesse exemplo da réplica B 1402, que foi introduzida e explicada anteriormente com relação à Figura 14. O exemplo ilustrado na Fi- gura 15 não descreve todas as operações que possam existir em uma operação de sincro- nização típica. Por exemplo, a Figura 15 não ilustra como a réplica A pode realizar detecção de conflito após receber mudanças da réplica B. Nesse exemplo, a réplica A 1502 contém um conjunto de mudanças 1504 classifi- cado Δα, o conhecimento 1506 classificado KA,e um vetor de conhecimento 2508 que é uma representação taquigráfica do conhecimento 1506. Ilustrativamente, o vetor de conhecimen- to 1508 da réplica A é A12B5, que, como foi explicado anteriormente, indica que a réplica A é dotada de conhecimento das mudanças da réplica A até uma décima segunda mudança e o conhecimento das mudanças na réplica B até uma quinta mudança. Como foi relatado no comentário da Figura 14 anteriormente, a réplica B 1402 é dotada de um conjunto de mu- danças 1406 classificado ΔΒ, que inclui as mudanças individuais V, W, X, Y e Z 1410. A réplica B é também dotada do conhecimento 1408 classificado Kb, e um vetor de conheci- mento correspondente 1412 que nesse caso é A11B20, indicando que a réplica B é dotada de conhecimento das mudanças na réplica A até uma décima primeira mudança e conheci- mento das mudanças na réplica B até uma vigésima mudança.
Na operação 1550, a réplica A 1502 envia uma solicitação de sincronização para a réplica Β. A réplica A também inclui tanto seu conhecimento 1506 quanto especifica um filtro baseado em lista F1 1516. Ao mesmo tempo em que o filtro 1616 nesse exemplo pode iden- tificar um filtro baseado em lista, nesse caso o filtro F1, a informação atual enviada pela ré- plica A pode não incluir qualquer informação de associação de lista. Isto é, pode ser deixa- da para a réplica que enumera e retorna as mudanças - a réplica A 1402 nesse exemplo - para localizar e usar os dados de associação atual associados com o filtro especificado.
Esse remove da réplica A a necessidade de transmitir dados de associação de lista, pelo menos com a solicitação de sincronização, e possibilita a ocorrência sincronização dos da- dos de associação de lista em algum outro tempo, Em outra modalidade, a réplica A e a ré- plica B podem não sincronizar dados de associação de lista e podem acessar os mesmos dados, por exemplo, em algum local em uma rede acessível tanto para a réplica A quanto para a réplica B. Isso remove a questão de como os dados de associação de lista são transmitidos e mantidos sincronizados entre as replicações para outro nível ou camada e pode possibilitar que as réplicas assumam que a informação de associação de lista existe na ou é acessível de qualquer réplica que requeira os dados.
Na operação 1552, a réplica B 1402 determina as mudanças que devem ser envia- das em resposta à solicitação de sincronização. Como o filtro F1 é um filtro retrátil, nesse caso implementado como um filtro baseado em lista, a réplica B pode examinar tanto as mudanças para os itens que estejam no filtro a partir do tempo atual, quanto as mudanças para os itens que estiveram no filtro no tempo representado pelo conhecimento transmitido da réplica A de A12B5. Se qualquer desses itens for dotado de mudanças que não sejam membros do conhecimento transmitido, então a réplica B pode determinara que os mesmos devam ser retornados para a réplica A. Os dados de associação de lista usados pela réplica B para identificar os itens para os quais as mudanças devam ser avaliadas podem ser, nesse exemplo, os dados de asso- ciação de lista 1300 da Figura 13. Usando esses dados primeiro sem relação ao conheci- mento transmitido - isto é, simplesmente por exame da associação de lista - a réplica B pode determinar que os itens Iw, Iy. e Iz estão atualmente no filtro F1 porque esses itens são dotados de muda de entrada IDs sem mudanças de saída IDs associada. O item Ix é dotado de uma mudança de saída ID para sua única mudança de entrada ID1 assim é considerado não inserido no filtro no tempo representado pelos dados de associação de lista. Usando esses dados, a réplica B sabe que quaisquer mudanças nos itens Iw, Ιγ e Iz que não estejam no conhecimento transmitido devem ser retornados para a réplica A. Além disso, usando o conhecimento transmitido 1506 de A12B5, a réplica B pode determinar que a réplica A acre- dite que o item Ix esteja também atualmente no filtro. Conforme anteriormente comentado em maiores detalhes com referência à Figura 13, entrado o filtro com a mudança ID A3, que está no conhecimento A12B5 da réplica A e não deixa o filtro até que a mudança ID 87, que não está no conhecimento da réplica A. Portanto, a réplica A ainda considera que o item Ix esteja no filtro, e assim a réplica B deve enviar mudanças para esse item, se as mudanças não estiverem no conhecimento da réplica A.
Com base na lógica comentada no parágrafo anterior, então a réplica B 1402 sabe que deve avaliar a possibilidade de enviar mudanças para os itens Iw, Ιχ, Ιγ e Iz. (O item Iv não está no filtro até a réplica A ou a réplica B seja concernida, assim qualquer mudança associada com o mesmo não será enviada). Examinado as versões associadas com os itens na réplica B, conforme ilustrado na Figura 14, a réplica B pode ver que deve enviar mudanças para o item Iw (com a mudança ID C3 e a mudança W), o item Ix (com a mudança ID B6 e a mudança X), e o item Iy (com a mudança ID B8 e a mudança Y). Todos esses três itens são dotados da mudança IDs que não estão no conhecimento transmitido da réplica A de A12B5. O item Iz está no filtro e assim foi também, considerado, mas sua mudança mais recente, associada com a mudança ID A9, está em A12B5 e desse modo não precisa ser enviada.
Na operação 554, então a réplica B 1402 retorna as mudanças identificadas W, X, e Y para a réplica A 1502, classificada como ΔΡ1 1522. A réplica B também, envia o conheci- mento aprendido Kl 1514, que é igual ao conhecimento atual da réplica atual aplicada ape- nas para aqueles elementos no filtro F1. Conforme anteriormente comentado com referência à Figura 10, a réplica B pode alternativamente enviar uma representação de conhecimento que não seja qualificada pelo filtro e deixe a mesma para a réplica B para qualificar apropri- adamente a representação de conhecimento antes de tornar a mesma uma parte do conhe- cimento da réplica A. Na operação 1556, a réplica A 1502 incorpora as mudanças retornadas pela réplica B na sua memória de conhecimento, e atualiza seu conhecimento usando o valor de conhe- cimento aprendido retornado Kl 1514. Esse opera de um modo similar à operação análoga 1056 descrita com referência à Figura 10, As mudanças ΔΑ 1054 da réplica A são atualiza- das para incluir as mudanças W, X e Y1 associadas com os itens Iw, Ix e lY, respectivamente. Isso pode envolver as etapas de detecção de conflito na réplica A para determinar se algu- ma das mudanças recebidas entra em conflito com as mudanças já na réplica A. Essas eta- pas de detecção de conflito operam similares àquelas anteriormente descritas com referên- cia à Figura 4 e não são aqui adicionalmente descritas. A réplica A também atualiza seu conhecimento Ka 1506 de maneira que o mesmo inclua o fragmento de conhecimento F1:A11B20 e está em sua inteireza quando a replicação é concluída, igual a A12B5+ F1:A11B20.
Voltando à Figura 16, a mesma ilustra representações de exemplo de dados para um filtro baseado em propriedade, para demonstrar a técnica chamada "materialização de lista". Conforme anteriormente comentado, nem todos os filtros são retrateis, incluindo mui- tos filtros comuns, como os filtros baseados em propriedade. Os filtros não retrateis podem requerer técnicas adicionais, como, por exemplo, aquelas comentadas com referência à Fi- gura 11, para lidar com o caso quando a associação nos filtros é diferente em tempos dife- rentes. Ao contrário, os filtros retrateis possibilitam o que pode ser uma solução mais ele- gante para essas questões. A técnica de "materialização de lista" ou "materialização de um filtro em uma lista" é definida como qualquer meio para transformar uma variedade de filtros não retrateis, como os filtros baseados em propriedade, em filtros baseados em lista que são retrateis. Algumas técnicas para realizar a materialização de lista estão descritas abai- xo. Um filtro baseado em lista que resulte da materialização de um filtro não retrátil em uma lista pode então ser usado em lugar do filtro não retrátil de maneira que as técnicas como aquelas comentadas com referência à Figura 11 podem não precisar ser usadas.
Para demonstrar um método de materialização de um filtro em uma lista, considere o conjunto de dados de item em um tempo T1 1602 e o conjunto de dados de item no tempo T2 a604 para um filtro baseado em propriedade exemplificativo, talvez como FVErde anteri- ormente comentado. Ambos os conjuntos de dados de item se referem aos mesmos itens, mas em dois tempos diferentes, T1 e T2. A informação na tabela dos itens em T1 1602 e a tabela dos itens em T2 1604 podem ser um resultado de mudanças normais e de replica- ções, primeira réplica conforme descrito anteriormente. Por exemplo, a cor do item Iy pode ter sido mudada por um usuário de azul para verde na réplica A no tempo 10, e assim ter sido acordada a mudança ID A10, conforme ilustrado no conjunto de dados de item no tem- po T2 1604. Voltando à Figura 17, e continuando o comentário da materialização de lista, a mesma ilustra representação dos dados de associação de lista para um filtro baseado em lista exemplificativo gerado pela materialização de um filtro baseado em propriedade para itens verdes.
Como os dados de associação de lista logo após o tempo T1 1702 ilustram, em al- gum tempo logo após o mesmo tempo T1 referido no conjunto de dados de item no tempo T1 1602 da Figura 16, a associação de lista para o filtro materializado contém os itens Ix e Iz. Isto é, os dados e item da Figura 16 foram transformados em um filtro baseado em lista que pode agora ser usado em qualquer lugar em que um filtro retrátil ou baseado em lista seja adequado, por exemplo, conforme descrito anteriormente com relação à Figura 12 e Figura 15. Pode não ser necessário nenhum tracking especial das mudanças, conforme descrito com referência à Figura 11. Nesse exemplo, os dados de associação de lista logo após o tempo T1 1702 é gerado para avaliar os critérios de filtro - nesse caso "o item é verde?" - contra cada item no conjunto de dados, conforme ilustrado pelo conjunto exemplificativo dos dados de item no tempo T1 1602, item Ix é verde, então o item Ix é adicionado à associação de lista para o filtro baseado em lista associado com os dados de associação de lista logo após o tempo T1 1702. Similar ao item Ix, o item Iz é também adicionado aos dados de as- sociação de lista por ser também verde.
Ademais, a adição do item Ix aos dados de associação de lista é associada com sua própria mudança ID, que é A3 nesse exemplo. A adição do item Iz é a mudança ID A4 acordada. O uso dessas mudanças IDs indica que essa operação de materialização de lista está sendo realizada na réplica A. Deve também ser observado que o uso dessas mudanças IDs na associação de lista significa que um único conjunto de mudanças IDs com versão aumentando numericamente está sendo compartilhada através de dois conjuntos de dados: O mesmo conjunto de mudanças IDs é usado para as mudanças para os dados de item ilus- trado no conjunto de dados de item no tempo T1 1602 e para as mudanças nos dados de associação de lista conforme aquele ilustrado nos dados de associação de lista logo após o tempo T1 1702.
Suponha agora que já se passou algum tempo e que alguns dos itens no conjunto de dados de item no tempo T1 1602 foram atualizados de maneira que seus valores sejam agora representados pelo conjunto de dados de item no tempo T2 1604. Por alguma razão - talvez porque uma operação de sincronização deva ser realizada logo - a réplica A determi- nou que pode ser benéfico materializar os dados de item no filtro baseado em lista. Em um modo similar aquele descrito anteriormente, cada item no conjunto de dados de item no tempo T2 1604 é avaliado contra os critérios exemplificativos do "o item é verde?" e os da- dos de associação de lista logo após o tempo T2 1704 ser também atualizado. Nesse e- xemplo, o item Ix ainda é verde e não é dotado de nenhuma mudança, de maneira que os dados de associação de lista para Ix permanece o mesmo. O item Iy agora é verde, onde antes era azul, de maneira que o item Iv é adicionado nos dados de associação de lista logo após o tempo T2 1704 e é acordada a adição de uma nova mudança ID A11. O item Iz é agora azul, onde antes era verde, e assim é "removido" do filtro. No contexto de um filtro baseado em lista, "removido" pode significar que os dados para o item específico a ser re- movido está atualizado com uma mudança de saída ID, nesse caso a mudança recém acor- dada ID de A12. Nenhum dado para o item removido é realmente removido dos dados de associação de lista, o que possibilita que o filtro permaneça retrátil e continue a possibilitar a determinação da associação no filtro em um tempo anterior.
A materialização de um filtro em um filtro baseado em lista, a atualização dos dados de associação de lista em um filtro baseado em lista materializado, ou a manutenção de qualquer filtro baseado em lista pela atualização dos dados de associação de lista, pode em algumas execuções ocorrer em tempos arbitrários - pode não precisar ocorrer, por exemplo, antes de cada sincronização, após cada sincronização, ou em qualquer outro tempo especí- fico. Se os dados de associação de lista de um filtro não tiverem sido atualizados ates da operação de sincronização, a operação de sincronização pode ainda completar com suces- so, mas, por exemplo, itens específicos podem não sincronizar se não estiverem no filtro materializado, mesmo se seus próprios dados de item tomá-los candidatos para sincroniza- ção. Ao mesmo tempo em que algumas mudanças podem não ser enviadas em tal situa- ção, o uso de nova mudança IDs quando os dados de associação de lista são atualizados pode assegurar que as mudanças serão enviadas em algum tempo futuro - isto e, o uso de conhecimento assegura que os dados que são adicionados mais tarde ao filtro serão ainda sincronizados em uma futura replicação. Isto posto, em algumas execuções, pode ser útil atualizar os dados de associação de lista antes da sincronização de maneira que, por e- xemplo, todas as mudanças conhecidas sejam sincronizadas mais cedo em vês de mais tarde.
Os dados de associação de lista para um filtro baseado em lista específico pode em algumas execuções existir em uma única memória acessível - por exemplo, talvez em um servidor acessível globalmente. Em outra execução comum, os dados de associação de lista podem ser sincronizados entre as réplicas. Em tal execução de dados de associação de lista pode ocorrer completamente separado da sic dos dados de item. De fato, ao mes- mo tempo em que as técnicas aqui descritas para dados de irem de sincronização podem também ser usadas com os dados de associação de lista, é também possível que outra sin- cronização ou técnicas de replicação não descritas aqui possam ser usadas de maneira que os dados de associação de lista possam ser acessados por qualquer réplica da qual seja requerido. Voltando à Figura 18, a mesma ilustra uma modalidade de um sistema no qual po- de ser executada a replicação filtrada. Incluído na figura está um sistema de replicação fil- trada 1810, um módulo de memória de dados de item 1820, um modulo de memora de co- nhecimento 1830, um modulo de memória de filtro 1840, um módulo de enumeração de mu- dança 1850, e um módulo de incorporação de mudança 1860. A descrição que se segue da Figura 18 é feita com referência a outras figuras. Contudo, deve ser compreendido que as operações descritas com respeito à Figura 18 não são intencionadas a serem limitadas a serem usadas com os elementos ilustrados por essas outras figuras.
A memória de dados de itens 1820 pode ser configurada para armazenar e geren- ciar o conjunto de dados gerenciado e, em alguns casos, replicados pelo sistema de replica- ção filtrada. Por exemplo, em uma execução do sistema de replicação filtrada 1810 que inclui mensagens de e-mail como parte dos seus dados, o módulo de memória de dados de item 1820 pode armazenar e proporcionar acesso para dados de mensagem de e-mail e outros dados relevantes para armazenar e acessar mensagens de e-mail, como, por exem- plo, informação de pasta de e-mail. Em outro exemplo os dados armazenados pelo módulo de memória de dados de item 1820 pode compreender todos os dados persistentes em um dispositivo de computação, incluindo, por exemplo, e sem limitação, mensagens de e-mail conforme anteriormente descritas, mas também arquivos legíveis de computador de todos os tipos e que armazenam todos os tipos de dados. Como um exemplo não Iimitativo com referência às figuras anteriormente comentadas, o módulo de memória de dados de item 1820 pode, em algumas execuções, armazenar, gerenciar e proporcionar acesso para pe- ças dos dados de irem descritos com referência à Figura 9 incluindo, por exemplo, e sem limitação, os itens 916, a cor de item 920 e/ou as mudanças 910. Na mesma ou em outras execuções, a memória de dados de item 1820 pode armazenar informação como o conjunto de mudanças 806 descrito com referência à Figura 8. Em algumas execuções o módulo de memória de dados de item 1820 pode reter apenas uma ou múltiplas versões de itens de dados específicos. Em outras ou na mesma execução, o módulo de memória de dados de item 1820 pode armazenar as diferenças entre as múltiplas versões do mesmo item de da- dos. Em algumas modalidades, isso pode possibilitar diferentes versões completas a serem construídas pela aplicação de uma ou mais mudanças para uma versão específica completa do item de dados. Em algumas modalidade, o módulo de memória de dados de item ele próprio pode não armazenar informação de dados de item e pode em vez disso proporcionar acesso para tal informação de dados de item armazenada em outro lugar.
O modulo de memória de conhecimento 1830 pode estar configurado para armaze- nar e gerenciar a respeito das mudanças e dos dados dos quis o sistema de replicação fil- trada 1810 está ciente. Por exemplo, como um exemplo não limitativo com referência às figuras anteriormente comentadas, o módulo de memória de conhecimento 1830 pode em algumas execuções ser configurado par armazenar, gerenciar e proporcionar acesso ao conhecimento 808 da Figura 8, que, no exemplo descrito com relação à Figura 8, inclui o vetor de conhecimento A2B5 e pode armazenar qualquer outra representação de conheci- mento. Em algumas modalidades, o módulo de memória de conhecimento pode não arma- zenar informação de conhecimento ele próprio e pode em vez disso proporcionar acesso à informação de conhecimento armazenada em outro lugar.
O módulo de memória de filtro 1840 pode ser configurada para armazenar e geren- ciar dados a respeito de filtros usados na replicação. Mais uma vez, como uma exemplo não limitativo com referência às figuras anteriormente comentados, o módulo de memória de filtro 1840 pode em algumas execução estar configurado para armazenar, gerenciar e pro- porcionar acesso ao filtro 820 usado no exemplo descrito com referência à Figura 8. Na mesma ou em outra execução, o módulo de memória de filtro 1840 pode armazenar infor- mação a respeito de filtros, como os dados de associação de lista 1300 ilustrado na Figura 13, e os dados de associação de lista logo após o tempo T1 1702 e os dados de associação de lista logo após o tempo T2 1704 ilustrado na Figura 7. Em algumas modalidades, o módu- lo de memória de filtro ele próprio pode não armazenar informação de filtro e pode em vez disso proporcionar acesso para tal informação de filtro armazenada em outro lugar.
O módulo de enumeração de mudança 1850 pode ser configurado para realizar as tarefas necessárias para receber uma solicitação para replicação de outra réplica, identificar mudanças das quais a outra réplica não está ciente, e retornar essas mudanças e qualquer outro pode útil para a réplica que iniciou a solicitação. Essas operações foram comentadas em detalhe anteriormente, incluindo, por exemplo, e sem limitação, com relação à operação 850, operação 852, operação 854 na Figura 8 e operação 1250, operação 1252 e operação 1254 na Figura 12.
O módulo de incorporação de mudança 1860 pode ser configurado para realizar as tarefas necessárias para iniciar e transmitir uma solicitação para replicação para outra répli- ca, e então, após a outra réplica ter respondido, avaliar os dados retornados para conflitos e incorporar mudanças apropriadas no módulo de memória de dados de item 1820, módulo de memória de conhecimento 1830, e/ou módulo de memória de filtro 1840. Essas operações foram comentadas anteriormente em detalhes, incluindo, por exemplo, e sem limitação, com relação à operação 850, operação 854 e operação 856 na Figura 8 e operação 1250, opera- ção 1254 e operação 1256 na Figura 12.
O sistema de replicação filtrada 1810 contém vários módulos, comentados anteri- ormente, que realizam uma variedade de tarefas e servem uma variedade de funções asso- ciadas com os dados de replicação usando filtros. Deve ser compreendido que ao mesmo tempo em que o sistema de replicação filtrada 1810 contém vários módulos, em uma ou mais execuções alternativas, um único módulo pode realizar mais de uma das tarefas ou funções associadas com os módulos no sistema. Por exemplo, e sem limitação, o módulo de memória de dados de item 1820 pode em algumas execuções ser confiado para armaze- nar todos os dados no sistema, incluindo os dados a respeito dos itens, bem como os dados a respeito do conhecimento e dos filtros. Como outro exemplo, e sem limitação, um único módulo pode realizar as tarefas associadas com o módulo de enumeração d mudança 1850 e o módulo de incorporação de mudança 1860. Similarmente, em uma ou mais execuções alternativas, os módulos podem realizar tarefas adicionais não ilustradas ou comentadas. Ademais, em uma ou mais execuções alternativas, os módulos podem residir em mais de um dispositivo de computação. Por exemplo, e sem limitação, em uma execução o módulo de enumeração de mudança 1850 e o módulo de incorporação de mudança 1860 podem residir em um dispositivo de computação específico ao mesmo tempo em que o modulo de memória de dados de item 1820, o módulo de memória de conhecimento 1830 e o módulo de memória de filtro 1840 residem em uma um ou mais dispositivos de computação. Em tal execução, o módulo de enumeração de mudança 1850 e o módulo de incorporação de mu- dança 1860 podem acessar informação nessas memórias usando uma rede ou outro siste- ma capaz de proporcionar um link de comunicação. Em outra execução exemplificativa, todos os módulos podem residir em um único dispositivo de computação. Em ainda outra execução exemplificativa, todos exceto o modulo de memória de filtro 1840 podem residir em um único dispositivo de computação, e os dados de filtro proporcionados pelo módulo de memória de filtro 1840 pode ser armazenado em outro dispositivo de computação e acessa- do de um sistema de replicação filtrada 1810 usando uma rede ou algum outro sistema ca- paz de proporcionar um link de comunicação.
Exemplo de Ambiente de Computação
Voltando à Figura 19, essa figura e o comentário relacionado são intencionados a proporcionar uma breve descrição geral de um ambiente de computação exemplificativo no qual as varias tecnologias aqui descritas possam ser executadas. Apesar de não requerido, as tecnologias estão aqui descritas, pelo menos em parte, no contexto geral de instruções executáveis de computador, como, por exemplo, módulos de programa que sejam executa- dos por um controlador, processador, computador pessoal ou outro dispositivo de computa- ção, como, por exemplo, o dispositivo de computação 1900 ilustrado na Figura 19.
Geralmente, os módulos de programa incluem rotinas, programas, objetos, compo- nentes, estruturas de dados, etc., que realizam tarefas específicas ou executam tipos de dados abstratos específicos. As tarefas realizadas pelos módulos de programa estão des- critas anteriormente com o auxílio de um ou mais diagramas de bloco e fluxogramas opera- cionais.
Aqueles versados na técnica podem executar a descrição, diagramas de bloco e fluxogramas na forma de instruções legíveis de comutador, que podem ser incorporadas em uma ou mais formas de meios legíveis de computador. Conforme aqui usado, meios legí- veis de computador pode ser quaisquer meios que possam armazenar ou incorporar infor- mação que esteja codificada em uma forma que possa ser acessada e compreendida por um computador. As formas típicas de meios legíveis de computador incluem, sem limitação, tanto memória volátil quanto não volátil, os dispositivo de armazenamento de dados, incluin- do meios removíveis e/ou não removíveis, e meios de comunicação.
Os meios de comunicação incorporados na informação legível e computador em um sinal de dados modulado, como, por exemplo, uma onda transportadora ou outro mecanis- mo de transporte, e inclui quaisquer meios de transmissão de informação. O termo "sinal de dados modulado" significa um sinal que seja dotado de uma ou mais de seu conjunto de características ou alterado de tal como para codificar informação no sinal. À guisa de e- xemplo, e não de limitação, os meios de comunicação incluem meios com fio como, por e- xemplo, uma rede com fio ou conexão com fio direta, e meios sem fio como, por exemplo, acústicos, RF, infravermelho e outros meios sem fio.
O sistema ilustrado na Figura 19 é dotado, em sua configuração mais básica, de um dispositivo de computação 1900 que inclui pelo menos uma unidade de processamento 1902 e uma memória 1904. Dependendo na configuração exata e do tipo do dispositivo de computação, a memória 1904 pode ser volátil (como, por exemplo, RAM), não volátil (como, por exemplo, ROM, memória flash, etc.), ou alguma combinação das duas. Essa configura- ção mais básica está ilustrada na Figura 19 por linhas tracejadas 1906. Adicionalmente, o dispositivo de computação 1900 pode também ser dotado de características e funcionalida- de adicionais. Por exemplo, o dispositivo de computação 1900 pode também incluir arma- zenamento adicional (removível e/ou não removível) incluindo, mas não se limitando a, dis- cos ou fitas magnéticas ou ópticas. Tal armazenamento adicional está ilustrado na Figura 19 pelo armazenamento removível 1908 e o armazenamento não removível 1910.
O dispositivo de computação 1900 pode também conter uma ou mais conexões de comunicação 1912 que permitam que o dispositivo de comunicação 1900 se comunique com outros dispositivos. O dispositivo de computação 1900 pode também ser dotado de um ou mais dispositivo(s) de entrada 1914 como, por exemplo, teclado, mouse, caneta, disposi- tivo de entrada de voz, dispositivo de entrada de toque, dispositivo de entrada de imagem (como uma câmara ou scanner), e assim por diante. Um ou mais dispositivo(s) de saída 1916 como, por exemplo, um monitor, alto-falantes, impressora, etc. podem também estar incluídos no dispositivo de computação 1900.
Aqueles versados na técnica irão observar que as tecnologias aqui descritas podem ser praticadas com dispositivo de computação diferentes do dispositivo de computação 1900 ilustrado na Figura 19. Por exemplo, e sem limitação, as tecnologias aqui descritas podem ser praticadas em dispositivos portáteis incluindo telefones moveis e PDAs, sistemas multi- processadores, eletrônicos de consumo baseado em microprocessador ou programável, rede PCs, minicomputadores, computadores de grande porte, e assim por diante.
As tecnologias aqui descritas podem também ser executadas em ambientes de computação distribuídos, onde as tarefas sejam realizadas por dispositivos de processa- mento remoto que sejam ligados através de uma rede de comunicação, em um ambiente de computação distribuído, módulos de programa podem ser situados tanto nos dispositivos de armazenamento locais e remotos.
Ao mesmo tempo em que foram aqui descritas como sendo executadas em softwa- re, deve ser apreciado que as tecnologias aqui descritas podem alternativamente ser execu- tadas em todo ou em parte como hardware, programação em hardware, ou várias combina- ções de software, hardware, e/ou programação em hardware.
Apesar de algumas execuções específicas de sistemas e métodos terem sido ilus- tradas nos desenhos em anexo e descritas na Descrição Detalhada anterior, deve ser com- preendido que os sistemas e métodos ilustrados e descritos não estão limitados às execu- ções específicas descritas, mas são capazes de numerosas disposições, modificações e substituições sem se afastar do espírito relatado e definido pelas reivindicações que se se- guem.

Claims (20)

1. Método para replicar pelo menos uma mudança para dados armazenados entre réplicas em uma comunidade de sincronização onde cada réplica pode fazer mudanças in- dependentemente de outras réplicas na comunidade de sincronização, CARACTERIZADO pelo fato de que compreende: receber, em uma segunda réplica, um primeiro valor de conhecimento de réplica que represente conhecimento e mudanças para os dados armazenados dos quais a primeira réplica esta ciente, e um filtro que identifique um conjunto específico de dados nos dados armazenados; comparar o valor de conhecimento da primeira réplica com as versões associadas com as mudanças para os dados armazenados na segunda réplica para identificar uma mu- dança conhecida pela segunda réplica da qual a primeira réplica não esteja ciente, onde a pelo menos uma mudança está associada com o conjunto específico de dados identificados pelo filtro; e enviar a pelo menos uma mudança para a primeira réplica.
2. Método, de acordo com a reivindicação 1, CARACTERIZADO pelo fato de que compreende adicionalmente: enviar um segundo valor de conhecimento de réplica que represente conhecimento de mudanças para os dados armazenados dos quis a segunda réplica está ciente para a primeira réplica.
3. Método, de acordo com a reivindicação 1, CARACTERIZADO pelo fato de que compreende adicionalmente: identificar pelo menos uma mudança não filtrada para os dados armazenados que não esteja representada pelo valor de conhecimento da primeira réplica e também não este- ja associada com o conjunto específico de dados identificados pelo filtro de acordo com a segunda réplica; e enviar informação que identifique a pelo menos uma mudança não filtrada para a primeira réplica.
4. Método, de acordo com a reivindicação 1, CARACTERIZADO pelo fato de que: o filtro é um filtro retrátil; e o conjunto de dados específico identificado pelo filtro compreende dados identifica- dos por um critério de filtro aplicado durante a etapa de comparação e os dados identifica- dos pelo critério de filtro aplicado a partir do tempo representado pelo valor de conhecimento da primeira réplica.
5. Método, de acordo com a reivindicação 1, CARACTERIZADO pelo fato de que compreende adicionalmente: uma lista associada com o filtro que compreende um ou mais identificadores de da- dos armazenados cada um identificando uma peça separa de dados e sendo dotado pelo menos de uma versão associada com uma entrada da peça de dados no filtro.
6. Método, de acordo com a reivindicação 5, CARACTERIZADO pelo fato de que pelo menos um do um ou mais identificadores de dados armazenados seja também dotado de pelo menos uma versão associada com uma saída da peça de dados do filtro.
7. Método, de acordo com a reivindicação 5, CARACTERIZADO pelo fato de que a lista é mantida por: avaliar de um critério e filtro; adicionar uma versão associada com entrada da peça de dados no filtro quando o critério de filtro identifica dados armazenados que estão no filtro; e adicionar uma versão associada com saída de peça de dados do filtro quando o cri- tério de filtro identifica dados armazenados que não estão no filtro.
8. Método, de acordo com a reivindicação 7, CARACTERIZADO pelo fato de que a lista é mantida imediatamente antes ou durante uma operação de sincronização.
9. Método, de acordo com a reivindicação 7, CARACTERIZADO pelo fato de que a lista é mantida em um tempo separado de uma operação de sincronização.
10. Método para replicar pelo menos uma mudança para dados armazenados entre réplicas em uma comunidade de sincronização onde cada réplica pode fazer mudanças in- dependentemente de outras réplicas na comunidade de sincronização, CARACTERIZADO pelo fato de que compreende: enviar, para uma segunda réplica, um primeiro valor de conhecimento de réplica que represente conhecimento das mudanças para os dados armazenados dos quais uma primeira réplica está ciente, e um filtro que identifique um conjunto de dados específico nos dados armazenados; receber pelo menos uma mudança para os dados armazenados existentes na se- gunda réplica dos quais a primeira réplica não esta ciente, onde a pelo menos uma mudan- ça esteja associada com o conjunto específico de dados identificados pelo filtro; incorporar a pelo menos uma mudança recebida nos dados armazenados mantidos pela primeira réplica.
11. Método, de acordo com a reivindicação 10, CARACTERIZADO pelo fato de que compreende adicionalmente: receber um segundo valor de conhecimento de réplica que represente conhecimen- to das mudanças para os dados armazenados dos quais a segunda réplica está ciente; e atualizar o primeiro valor de conhecimento de réplica de maneira que represente conhecimento das mudanças para os dados armazenados dos quais a segunda réplica está ciente, para apenas um conjunto de dados específico identificado pelo filtro.
12. Método, de acordo com a reivindicação 10, CARACTERIZADO pelo fato de que compreende adicionalmente: receber informação que identifique pelo menos uma mudança não filtrada para os dados armazenados que não estejam representados pelo valor de conhecimento da primeira réplica e também não esteja associado com o conjunto de dados específico identificado pelo filtro de acordo com a segunda réplica; atualizar os dados armazenados mantidos pela primeira réplica usando a informa- ção que identifica a pelo menos uma mudança não filtrada.
13. Método, de acordo com a reivindicação 12, CARACTERIZADO pelo fato de que atualizar os dados armazenados mantidos pela primeira réplica compreende adicionalmente criar pelo menos uma exceção no valor de conhecimento da primeira réplica de acordo com a informação que identifica a pelo menos uma mudança não filtrada, a pelo menos uma ex- ceção se referindo ao conhecimento das mudanças para os dados armazenados dos quais a primeira réplica estava ciente antes de receber a pelo menos uma mudança.
14. Método, de acordo com a reivindicação 12, CARACTERIZADO pelo fato de que atualizar os dados armazenados mantidos pela primeira réplica compreende adicionalmente excluir pelo menos uma parte dos dados armazenados correspondentes à informação que identifica a pelo menos uma mudança não filtrada.
15. Método, de acordo com a reivindicação 10, CARACTERIZADO pelo fato de que a incorporação de pelo menos uma mudança recebida compreende adicionalmente: receber um valor feito com conhecimento proveniente da segunda réplica que re- presente conhecimento das mudanças para os dados armazenados dos quais a segunda réplica estava ciente quando a pelo menos uma mudança recebida foi feita na segunda réplica; determinar a existência de um conflito quando, para uma única peça dos dados ar- mazenados: uma primeira mudança tenha sido feito na primeira réplica; e uma segunda mudança tenha sido feita na segunda réplica; e uma primeira mudança ID associada com a primeira mudança não esteja no valor feito com conhecimento; e e uma segunda mudança ID associada com a segunda mudança não esteja no va- lor de conhecimento da primeira réplica.
16. Sistema para gerenciar e replicar mudanças para dados armazenados entre ré- plicas em uma comunidade de sincronização onde cada réplica pode fazer mudanças inde- pendentemente de outras réplicas na comunidade de sincronização, CARACTERIZADO pelo fato de que compreende: um módulo de memória de dados de item configurado para gerenciar dados arma- zenados; um módulo de memória de conhecimento configurado para gerenciar conhecimento de mudanças para os dados armazenados; um módulo de m de filtro configurado para manter um ou mais filtros que cada iden- tifica um conjunto de dados específico nos dados armazenados; um módulo de enumeração de mudança configurado para: receber um primeiro valor de conhecimento de réplica que representa conhecimen- to de mudanças para os dados armazenados dos quis uma primeira réplica está ciente, e um primeiro filtro que identifica um primeiro conjunto de dados específico nos dados arma- zenados; comparar o primeiro valor de conhecimento de réplica com versões associadas com mudanças proporcionadas pelo módulo de memória de dados de item para identificar pelo menos uma mudança enumerada conhecida pelo sistema da qual a primeira réplica não está ciente, onde a pelo menos uma mudança enumerada está associada com o primeiro conjunto de dados específico identificado pelo primeiro filtro; e enviar pelo menos uma mudança enumerada para a primeira réplica; e um módulo de incorporação de mudança configurado para: enviar, para uma segunda réplica, um valor de conhecimento de sistema proporcio- nado pela memória de conhecimento que representa conhecimento de mudanças para os dados armazenados dos quais o sistema está ciente, e um segundo filtro proporcionado pela memória de filtro que identifica um segundo conjunto de dados específico nos dados arma- zenados; receber pelo menos uma mudança recebida que existe na segunda réplica da qual o sistema não estava ciente, onde a pelo menos uma mudança recebida está associada com o segundo conjunto de dados específico identificado pelo segundo filtro; e incorporar a pelo menos uma mudança recebida nos dados armazenados com o módulo de memória de dados de item.
17. Sistema, de acordo com a reivindicação 16, CARACTERIZADO pelo fato de que o módulo de enumeração de mudança está adicionalmente configurado para enviar, para a primeira réplica, o valor de conhecimento de sistema proporcionado pela memória de conhecimento que representa conhecimento de mudanças para os dados armazenados dos quais o sistema está ciente.
18. Sistema, de acordo com a reivindicação 16, CARACTERIZADO pelo fato de que o módulo de incorporação de mudança está adicionalmente configurado para: receber um segundo valor de conhecimento de réplica que representa conhecimen- to de mudanças para os dados armazenados dos quais a segunda réplica está ciente; e atualizar o valor de conhecimento de sistema de maneira que representa conheci- mento das mudanças para os dados armazenados dos quais a segunda réplica está ciente, para apenas o segundo conjunto de dados específico identificado pelo segundo filtro.
19. Sistema, de acordo com a reivindicação 16, CARACTERIZADO pelo fato de que o módulo de incorporação de mudança é adicionalmente configurado para: receber um valor feito com conhecimento da segunda réplica que representa co- nhecimento das mudanças para os dados armazenados dos quais a segunda réplica estava ciente quando a pelo menos uma mudança recebida foi feita na segunda réplica; determinar que a existência de um conflito quando, para uma peça dos dados armazenados: uma primeira mudança foi feita no sistema; e uma segunda mudança foi feita na segunda réplica; e uma primeira mudança ID associada com a primeira mudança não está no valor fei- to com conhecimento; e e uma segunda mudança ID associada com a segunda mudança não está no valor de conhecimento de sistema.
20. Sistema, de acordo com a reivindicação 16, CARACTERIZADO pelo fato de que: o primeiro filtro é um filtro retrátil; e o primeiro conjunto de dados específico identificado pelo primeiro filtro compreende dados identificados por um critério de filtro aplicado durante a operação de comparação e dados identificados pelo critério de filtro aplicado a partir do tempo representado pela primei- ro valor de conhecimento de réplica.
BRPI0710725-0A 2006-04-27 2007-01-29 replicação filtrada de memórias de dados BRPI0710725A2 (pt)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/380,579 US7440985B2 (en) 2003-07-31 2006-04-27 Filtered replication of data stores
US11/380.579 2006-04-27
PCT/US2007/002379 WO2007130178A1 (en) 2006-04-27 2007-01-29 Filtered replication of data stores

Publications (1)

Publication Number Publication Date
BRPI0710725A2 true BRPI0710725A2 (pt) 2012-01-31

Family

ID=38668068

Family Applications (1)

Application Number Title Priority Date Filing Date
BRPI0710725-0A BRPI0710725A2 (pt) 2006-04-27 2007-01-29 replicação filtrada de memórias de dados

Country Status (12)

Country Link
US (1) US7440985B2 (pt)
JP (1) JP5021723B2 (pt)
KR (1) KR20090015900A (pt)
AU (1) AU2007248933A1 (pt)
BR (1) BRPI0710725A2 (pt)
CA (1) CA2646821A1 (pt)
CL (1) CL2007000754A1 (pt)
MX (1) MX2008013645A (pt)
NO (1) NO20084258L (pt)
RU (1) RU2008142428A (pt)
TW (1) TWI364676B (pt)
WO (1) WO2007130178A1 (pt)

Families Citing this family (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7401103B2 (en) * 2003-07-31 2008-07-15 Microsoft Corporation Replication protocol for data stores
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
US8131739B2 (en) 2003-08-21 2012-03-06 Microsoft Corporation Systems and methods for interfacing application programs with an item-based storage platform
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
US20060242277A1 (en) 2005-03-31 2006-10-26 Tripwire, Inc. Automated change approval
US7917607B2 (en) * 2005-12-30 2011-03-29 Sap Ag Software management systems and methods, including use of such systems and methods in a provider-tenant environment
US7689593B2 (en) * 2005-12-30 2010-03-30 Sap Ag Systems and methods for accessing a shared space in a provider-tenant environment
US7890646B2 (en) * 2006-04-27 2011-02-15 Microsoft Corporation Synchronization orchestration
US20080103977A1 (en) * 2006-10-31 2008-05-01 Microsoft Corporation Digital rights management for distributed devices
US20080104206A1 (en) * 2006-10-31 2008-05-01 Microsoft Corporation Efficient knowledge representation in data synchronization systems
US8527660B2 (en) * 2006-12-22 2013-09-03 Palm, Inc. Data synchronization by communication of modifications
US8069184B2 (en) * 2006-12-29 2011-11-29 Sap Ag Systems and methods to implement extensibility of tenant content in a provider-tenant environment
US7933869B2 (en) * 2006-12-29 2011-04-26 Sap Ag Method and system for cloning a tenant database in a multi-tenant system
US20080162587A1 (en) * 2006-12-29 2008-07-03 Ulrich Auer Server synchronization for maintenance activities
US20080162589A1 (en) * 2006-12-29 2008-07-03 Microsoft Corporation Weakly-consistent distributed collection compromised replica recovery
US7620659B2 (en) * 2007-02-09 2009-11-17 Microsoft Corporation Efficient knowledge representation in data synchronization systems
US20080294701A1 (en) * 2007-05-21 2008-11-27 Microsoft Corporation Item-set knowledge for partial replica synchronization
US8037022B2 (en) * 2007-06-05 2011-10-11 Samsung Electroncis Co., Ltd. Synchronizing content between content directory service and control point
US8505065B2 (en) * 2007-06-20 2013-08-06 Microsoft Corporation Access control policy in a weakly-coherent distributed collection
US20090006489A1 (en) * 2007-06-29 2009-01-01 Microsoft Corporation Hierarchical synchronization of replicas
US7685185B2 (en) * 2007-06-29 2010-03-23 Microsoft Corporation Move-in/move-out notification for partial replica synchronization
US20090083441A1 (en) * 2007-09-24 2009-03-26 Microsoft Corporation Synchronization of web service endpoints in a multi-master synchronization environment
US8078749B2 (en) * 2008-01-30 2011-12-13 Microsoft Corporation Synchronization of multidimensional data in a multimaster synchronization environment with prediction
US8150802B2 (en) * 2008-03-24 2012-04-03 Microsoft Corporation Accumulating star knowledge in replicated data protocol
US8700301B2 (en) 2008-06-19 2014-04-15 Microsoft Corporation Mobile computing devices, architecture and user interfaces based on dynamic direction information
US9200901B2 (en) 2008-06-19 2015-12-01 Microsoft Technology Licensing, Llc Predictive services for devices supporting dynamic direction information
US20090315775A1 (en) * 2008-06-20 2009-12-24 Microsoft Corporation Mobile computing services based on devices with dynamic direction information
US20090319166A1 (en) * 2008-06-20 2009-12-24 Microsoft Corporation Mobile computing services based on devices with dynamic direction information
US8467991B2 (en) 2008-06-20 2013-06-18 Microsoft Corporation Data services based on gesture and location information of device
US8458128B2 (en) 2008-08-26 2013-06-04 Microsoft Corporation Minimal extensions required for multi-master offline and collaboration for devices and web services
US10303787B2 (en) 2008-10-21 2019-05-28 Microsoft Technology Licensing, Llc Forgetting items with knowledge based synchronization
US20100169618A1 (en) * 2008-12-30 2010-07-01 Microsoft Corporation Identifying concurrency control from a sequential proof
US8872767B2 (en) 2009-07-07 2014-10-28 Microsoft Corporation System and method for converting gestures into digital graffiti
US9055018B2 (en) 2010-12-03 2015-06-09 International Business Machines Corporation Related message detection and indication
FR2972546B1 (fr) * 2011-03-07 2013-03-08 Bull Sas Procedes, dispositifs et programmes d'ordinateur pour optimiser la replication de donnees dans des systemes informatiques
US10395762B1 (en) 2011-06-14 2019-08-27 Merge Healthcare Solutions Inc. Customized presentation of data
US8867807B1 (en) 2011-09-23 2014-10-21 Dr Systems, Inc. Intelligent dynamic preloading and processing
US8527462B1 (en) 2012-02-09 2013-09-03 Microsoft Corporation Database point-in-time restore and as-of query

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6317754B1 (en) * 1998-07-03 2001-11-13 Mitsubishi Electric Research Laboratories, Inc System for user control of version /Synchronization in mobile computing
US6704925B1 (en) * 1998-09-10 2004-03-09 Vmware, Inc. Dynamic binary translator with a system and method for updating and maintaining coherency of a translation cache
JP4059410B2 (ja) * 1998-10-07 2008-03-12 株式会社バンダイナムコゲームス ゲーム装置及び情報記憶媒体
US6757896B1 (en) 1999-01-29 2004-06-29 International Business Machines Corporation Method and apparatus for enabling partial replication of object stores
GB2382331B (en) * 1999-11-02 2003-10-01 Allan William Stobart Improvements in and relating to road and rail tankers
US20010042099A1 (en) * 2000-02-02 2001-11-15 Doongo Technologies, Inc. Apparatus and methods for optimizing traffic volume in wireless email communications
US20020165724A1 (en) * 2001-02-07 2002-11-07 Blankesteijn Bartus C. Method and system for propagating data changes through data objects
US7346616B2 (en) * 2002-03-20 2008-03-18 Extended System, Inc. Synchronizing data shared between two devices independent of any other devices that may also share the data
US7406499B2 (en) * 2003-05-09 2008-07-29 Microsoft Corporation Architecture for partition computation and propagation of changes in data replication
US7440981B2 (en) * 2003-07-31 2008-10-21 Microsoft Corporation Systems and methods for replicating data stores
US7401103B2 (en) * 2003-07-31 2008-07-15 Microsoft Corporation Replication protocol for data stores
US7636776B2 (en) * 2003-07-31 2009-12-22 Microsoft Corporation Systems and methods for synchronizing with multiple data stores
US7483923B2 (en) * 2003-08-21 2009-01-27 Microsoft Corporation Systems and methods for providing relational and hierarchical synchronization services 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
US7512638B2 (en) * 2003-08-21 2009-03-31 Microsoft Corporation Systems and methods for providing conflict handling for peer-to-peer synchronization of units of information manageable by a hardware/software interface system
US20050055352A1 (en) * 2003-09-08 2005-03-10 Sony Corporation Content directory and synchronization bridge
US7962575B2 (en) * 2003-11-03 2011-06-14 Grape Technology Group, Inc. System and method for data synchronization between devices
US20050177617A1 (en) * 2003-12-23 2005-08-11 Intel Corporation Conflict resolution during data synchronization
US7111139B2 (en) * 2004-03-02 2006-09-19 Hitachi, Ltd. Data synchronization of multiple remote storage
US8200921B2 (en) * 2004-03-12 2012-06-12 Hewlett-Packard Development Company, L.P. Data synchronization for two data mirrors with sidefiles
ATE361495T1 (de) * 2004-03-18 2007-05-15 Alcatel Lucent Verfahren und vorrichtung zur datensynchronisierung eines verteilten datenbanksystems
TWI243340B (en) * 2004-04-02 2005-11-11 Benq Corp System and method for data synchronization
KR100557192B1 (ko) * 2004-04-06 2006-03-03 삼성전자주식회사 서버와 클라이언트간에 데이터 동기화 시 비정상 종료된경우 데이터 전송 방법 및 그 시스템.

Also Published As

Publication number Publication date
RU2008142428A (ru) 2010-04-27
US20060190572A1 (en) 2006-08-24
CA2646821A1 (en) 2007-11-15
JP2009535689A (ja) 2009-10-01
MX2008013645A (es) 2008-11-04
US7440985B2 (en) 2008-10-21
TWI364676B (en) 2012-05-21
JP5021723B2 (ja) 2012-09-12
TW200809553A (en) 2008-02-16
WO2007130178A1 (en) 2007-11-15
KR20090015900A (ko) 2009-02-12
AU2007248933A1 (en) 2007-11-15
CL2007000754A1 (es) 2008-01-11
NO20084258L (no) 2008-10-10

Similar Documents

Publication Publication Date Title
BRPI0710725A2 (pt) replicação filtrada de memórias de dados
US11630841B2 (en) Traversal rights
KR101319767B1 (ko) 데이터 동기화 방법 및 컴퓨터 판독가능 매체
US7636776B2 (en) Systems and methods for synchronizing with multiple data stores
US7577691B2 (en) Extending hierarchical synchronization scopes to non-hierarchical scenarios
US9762664B2 (en) Optimistic concurrency utilizing distributed constraint enforcement
AU2019213367A1 (en) Rule-based, modular conflict resolution for composite documents
US8412676B2 (en) Forgetting items with knowledge based synchronization
US11829332B1 (en) Content importing with discovery in a collaborative environment
US20170154064A9 (en) Forgetting items with knowledge based synchronization
Chumbley Snapstore: a version control system for everyone
Qian Data synchronization and browsing for home environments
VATARE et al. Review Paper on Centralized and Distributed Version Control System.
Wang A Prototype Peer to Peer Database Management System
Leite Smart Briefcases Sincronizaçao de Ficheiros Replicados
McBee et al. Microsoft Exchange Server 2003 24seven

Legal Events

Date Code Title Description
B08F Application dismissed because of non-payment of annual fees [chapter 8.6 patent gazette]

Free format text: REFERENTE AS 4A E 5A ANUIDADES.

B08K Patent lapsed as no evidence of payment of the annual fee has been furnished to inpi [chapter 8.11 patent gazette]

Free format text: REFERENTE AO DESPACHO 8.6 PUBLICADO NA RPI 2161 DE 05/06/2012.