BRPI0615024A2 - segurança em aplicativos de sincronização par-a-par - Google Patents

segurança em aplicativos de sincronização par-a-par Download PDF

Info

Publication number
BRPI0615024A2
BRPI0615024A2 BRPI0615024-1A BRPI0615024A BRPI0615024A2 BR PI0615024 A2 BRPI0615024 A2 BR PI0615024A2 BR PI0615024 A BRPI0615024 A BR PI0615024A BR PI0615024 A2 BRPI0615024 A2 BR PI0615024A2
Authority
BR
Brazil
Prior art keywords
data
synchronization
user
peer
synchronized
Prior art date
Application number
BRPI0615024-1A
Other languages
English (en)
Inventor
Vivek Jawahir Jhaveri
Lev Novik
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 BRPI0615024A2 publication Critical patent/BRPI0615024A2/pt

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/10Network architectures or network communication protocols for network security for controlling access to devices or network resources
    • H04L63/101Access control lists [ACL]
    • 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/1834Distributed file systems implemented based on peer-to-peer networks, e.g. gnutella
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/25Integrating or interfacing systems involving database management systems
    • G06F16/256Integrating or interfacing systems involving database management systems in federated or virtual databases
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • G06F16/273Asynchronous replication or reconciliation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units

Abstract

SEGURANçA EM APLICATIVOS DE SINCRONIZAçAO PAR-A-PAR O objeto reivindicado apresenta um sistema e/ou um método que facilitam a sincronização de dados dentro de umsistema de armazenamento de dados. Um componente de interfa-ce pode acionar uma técnica de sincronização dentro do sistema de armazenamento de dados. Um componente de sincronização pode proporcionar uma sincronização de dados par-a-par segura com base, pelo menos em parte, na técnica de sincronização, de modo a permitir um acesso em níveis aos dados sincronizados.

Description

"SEGURANÇA EM APLICATIVOS DE SINCRONIZAÇÃO PAR-A-PAR"
Antecedentes
Os avanços na tecnologia de computadores (como,por exemplo, velocidade dos microprocessadores, capacidadede memória, largura de banda para transferência de dados,funcionalidade dos softwares e semelhantes) têm geralmentecontribuído para o aumento da aplicação de computadores emdiversas indústrias. Sistemas de servidor cada vez mais po-derosos, que são freqüentemente configurados como um arranjode servidores, são comumente utilizados para servir solici-tações originárias de fontes externas, tais como a World Wi-de Web, por exemplo.
À medida que a quantidade de dados eletrônicosdisponíveis aumenta, torna-se importante armazenar tais da-dos de maneira gerenciável que facilite as buscas e a recu-peração de dados de maneira rápida e cômoda para o usuário.
Atualmente, uma abordagem comum é a de armazenar dados ele-trônicos em um ou mais bancos de dados. Em geral, um bancode dados típico pode ser referido como uma coleção organiza-da de informações cõm dados estruturados de modo ^que um pro-grama de computador possa buscar e selecionar rapidamentepedaços desejados de dados, por exemplo. Comumente, os dadosdentro de um banco de dados são organizados por meio de umaou mais tabelas. Tais tabelas são dispostas como um arranjode fileiras e colunas.
Além disso, as tabelas podem compreender um con-junto de registros, em que um registro inclui um conjunto decampos. Os registros são comumente indexados como fileirasdentro de uma tabela e os campos de registro são tipicamenteindexados como colunas, de modo que um par de filei-ras/colunas de índices possa referir um dado específico den-tro de uma tabela. Por exemplo, uma fileira pode armazenarum registro de dados completo referente a uma transação devenda, uma pessoa ou um projeto. De maneira semelhante, ascolunas da tabela podem definir partes discretas das filei-ras que têm o mesmo formato de dados geral, em que as colu-nas podem definir os campos dos registros.
Cada pedaço individual de dados, por si só, não égeralmente muito informativo. Aplicativos de bancos de dadostornam os dados mais úteis porque ajudam os usuários a orga-nizar e processar os dados. Os aplicativos de banco de dadospermitem ao usuário, comparar, classificar, ordenar, fundir,separar e interconectar os dados, de modo que possam ser ge-radas dos dados informações úteis. A capacidade e a versati-lidade dos bancos de dados têm aumentado incrivelmente, per-mitindo uma capacidade de armazenamento praticamente sem fimna utilização dos bancos de dados. Entretanto., sistemas debanco de dados típicos oferecem capacidade de consulta limi-tada com base no tempo, na extensão dos arquivos, na locali-zação e no tamanho. Por exemplo, de modo a buscar grandesquantidades de dados associados a um banco de dados, umabusca típica está limitada a um nome de arquivo, um tamanhode arquivo, uma data de criação, etc., sendo tais técnicasdeficientes e ineficazes.
Com a criação contínua e crescente de dados de u-suários finais, os problemas e dificuldades que cercam osprocedimentos de encontrar, relacionar, manipular e armaze-nar tais dados são cada vez maiores. Os usuários finais gra-vam documentos, armazenam fotos, extraem música de discoscompactos, recebem e-mail, retêm cópias do e-mail enviado,etc. No simples processo de criar um disco compacto de músi-ca, o usuário final pode criar megabytes de dados. A extra-ção de música do disco compacto, a conversão do arquivo paraum formato adequado, a criação de uma tampa para uma caixade jóia e o desenho de um rótulo de disco compacto exigem,todos, a criação de dados.
Além das complicações enfrentadas pelos usuários,os desenvolvedores têm também problemas semelhantes com da-dos. Os desenvolvedores criam e gravam uma série de aplica-tivos que variam de aplicativos pessoais a aplicativos em-presariais altamente desenvolvidos. Enquanto criam e/ou de-senvolvem, os desenvolvedores freqüentemente, se não sempre,reúnem dados. Quando obtêm tais dados, os dados não precisamser armazenados. Em outras palavras, os problemas e dificul-dades que cercam os procedimentos de encontrar, relacionar,manipular e armazenadas dados afetam tanto o desenvolvedorquanto o usuário final.
Além do mais, com a quantidade sem fio de dadosque cerca os desenvolvedores e/ou usuários, a consistênciade dados entre máquinas e/ou sistemas dispares pode ser umatarefa complicada e assoberbante. Por exemplo, um usuáriopode utilizar uma máquina portátil e uma de mesa, nas quaisa consistência e/ou sincronização dos dados são de importân-cia vital. Em particular, com cada máquina e/ou sistema ge-rando grandes quantidades de dados, a sincronização de taisdados é um objetivo extremamente difícil.
Sumário
A seguir, é apresentado um sumário da invenção demodo a se obter um entendimento básico de alguns aspectosaqui descritos. Este sumário não é uma vista panorâmica ex-tensiva do objeto reivindicado. Ele não visa a identificarelementos chave ou críticos do objeto reivindicado nem a de-linear o alcance da presente inovação. Sua única finalidadeé a de apresentar alguns conceitos do objeto reivindicado deforma simplificada como uma introdução à descrição mais de-talhada que é apresentada mais adiante.
A presente inovação refere-se a sistemas e/ou mé-todos que facilitam a sincronização de dados associados apelo menos dois sistemas de armazenamento de dados díspares.
Um sistema de armazenamento de dados pode ser um modelo com-plexo baseado pelo menos em uma estrutura de banco de dados,na qual um item, um subitem, uma propriedade e uma relaçãosão definidos de modo a permitir a representação de informa-ções dentro de um sistema de armazenamento de dados como o-corrências de tipos complexos. Um componente de sincroniza-ção cria uma sincronização de dados par-a-par ou não hierár-quica (peer-to-peer) para permitir que os usuários acessemtais dados sincronizados a diversos níveis. O componente desincronização sincroniza dados associados ao sistema de ar-mazenamento de dados e a um sistema de armazenamento de da-dos díspar, em que uma comunidade de sincronização par-a-parsegura pode ser estabelecida. 0 componente de sincronizaçãoassegura metadados, que incluem uma lista de associação (umalista de direitos de acesso e/ou privilégios dos usuários,por exemplo) da comunidade de sincronização de modo que umusuário com acesso apropriado seja capaz de modificá-la (a-dicionar e/ou remover um usuário da comunidade, por exemplo)e transmitir uma alteração e/ou manipulação a outros usuá-rios. Os dados podem ser também assegurados de modo que umusuário com acesso apropriado seja capaz de modificá-los etransmitir as alterações para os demais usuários.
Em outras palavras, o componente de sincronizaçãopode implementar o gerenciamento de relações de sincroniza-ção complexas. Por exemplo, as relações de sincronização po-dem incluir, mas não estão limitadas ao, gerenciamento deconfigurações, anulação e segurança. Além do mais, o compo-nente de sincronização pode implementar o gerenciamento derelações de sincronização complexas com base inteiramente emuma tecnologia de sincronização. Deve ficar entendido quepode ser implementada qualquer tecnologia de sincronização,tal como, por exemplo, a tecnologia de sincronização rela-cionada a um sistema de armazenamento de dados.
De acordo com um aspecto do objeto reivindicado, ocomponente de sincronização pode acionar as técnicas e/oumecanismos de sincronização existentes associados ao sistemade armazenamento de dados. 0 componente de sincronização po-de utilizar o sistema de armazenamento de dados que incluaum componente de rastreamento para rastrear alterações dedados em diversas entidades armazenadas dentro do sistema dearmazenamento de dados e, em particular, em um armazenamentodentro do sistema de armazenamento de dados. 0 componente derastreamento pode captar a(s) alteração(ões) de dados nasentidades de modo a facilitar a sincronização de dados entredois sistemas dispares que mantêm conjuntos de dados. Peloacionamento das técnicas e/ou mecanismos de sincronizaçãoexistentes dentro do sistema de armazenamento de dados, ocomponente de sincronização pode proporcionar uma comunidadesincronizada par-a-par segura sem quaisquer novos mecanismose/ou técnicas.
De acordo com outro aspecto do objeto reivindica-do, o componente de sincronização pode incluir um gerente desincronização de usuário que pode facilitar os procedimentosde criar relações sincronizadas, criar recipientes sincroni-zados, convidar usuários, aceitar convites, associar-se auma comunidade, remover usuários, manter listas de associa-ção e/ou o gerenciamento total da comunidade sincronizadapar-a-par. Além do mais, o componente de sincronização podeincluir pelo menos uma de uma sincronização manual e/ou umasincronização automática. A sincronização manual pode permi-tir a sincronização manual de dados de usuário para usuário.
Além do mais, a sincronização automática pode proporcionaruma sincronização automática de dados eleitos para sincroni-zação de dados par-a-par.
De acordo com outro aspecto do objeto reivindica-do, o componente de sincronização pode incluir um aplicativode sincronização par-a-par que roda como um sistema localpara expor pelo menos uma operação para um aplicativo. A o-peração pode ser pelo menos uma das seguintes: criar um com-partilhamento em um recipiente especifico; criar permissõespara um recipiente; adicionar uma permissão a um recipiente;validar o proprietário de um recipiente; configurar uma as-sociação em grupo com base em uma lista; e apagar um compar-tilhamento criado em um recipiente. Além disto, o componentede sincronização pode incluir um componente integrado quefacilita a integração entre o componente de sincronização(como, por exemplo, e, em particular, o aplicativo de sin-cronização par-a-par) em um sistema operacional com outrosaplicativos. Além do mais, o componente de sincronização po-de incluir um componente AI, que pode executar a criaçãoe/ou gerenciamento sincronizados de pastas programaticamen-te. Sob outros aspectos do objeto reivindicado, são apresen-tados métodos que facilitam a sincronização de dados associ-ados a pelo menos dois sistemas de armazenamento de dadosdispares.
A descrição seguinte e os desenhos anexos apresen-tam em detalhe determinados aspectos ilustrativos do objetoreivindicado. Estes aspectos indicam, contudo, apenas algu-mas das diversas maneiras pelas quais os princípios da ino-vação podem ser utilizados, e o objeto reivindicado pretendeincluir todos esses aspectos e seus equivalentes. Outrasvantagens e características inéditas do objeto reivindicadose tornarão evidentes com a descrição detalhada seguinte dainvenção quando considerada em conjunto com os desenhos.
Breve Descrição dos Desenhos
A Figura 1 mostra um diagrama de blocos de um sis-tema exemplar que facilita a sincronização de dados associa-dos a pelo menos dois sistemas de armazenamento de dadosdispares.
A Figura 2 mostra um diagrama de blocos de um sis-tema exemplar que facilita o acionamento de mecanismos desincronização existentes dentro de um sistema de armazena-mento de dados de modo a assegurar a consistência dos dadosentre sistemas de armazenamento de dados.
A Figura 3 mostra um diagrama de blocos de um sis-tema exemplar que facilita a sincronização de dados dentrode sistemas de armazenamento de dados de modo a permitir oacesso de vários usuários.
A Figura 4 mostra um diagrama de blocos de um sis-tema exemplar que facilita a sincronização de dados entrepelo menos dois sistemas de armazenamento de dados dispares.
A Figura 5 mostra um diagrama de blocos de um sis-tema exemplar que facilita a sincronização de dados dentrode sistemas de armazenamento de dados de modo a permitir di-versos níveis de acessibilidade.
A Figura 6 mostra um diagrama de blocos de um sis-tema exemplar que facilita a sincronização de dados associa-dos a pelo menos dois sistemas de armazenamento de dadosdíspares.
A Figura 7 mostra um instantâneo de tela relacio-nado com o objeto reivindicado.
A Figura 8 mostra dois instantâneos de tela rela-cionados com o objeto reivindicado.
A Figura 9 mostra dois instantâneos de tela de te-la relacionados com a implementação de um aplicativo especi-alista .
A Figura 10 mostra dois instantâneos de tela rela-cionados com a implementação de um aplicativo especialista.
A Figura 11 mostra um instantâneo de tela relacio-nado com a implementada de um aplicativo especialista.
A Figura 12 mostra um instantâneo de tela relacio-nado com a implementada de um aplicativo especialista.
A Figura 13 mostra um instantâneo de tela relacio-nado com o objeto reivindicado.
A Figura 14 mostra dois instantâneos de tela rela-cionados com o objeto reivindicado.
A Figura 15 mostra um instantâneo de tela relacio-nado com o objeto reivindicado.
A Figura 16 mostra um instantâneo de tela relacio-nado com o objeto reivindicado.
A Figura 17 mostra uma metodologia exemplar parasincronizar dados associados a pelo menos dois sistemas dearmazenamento de dados dispares.
A Figura 18 mostra uma metodologia exemplar guefacilita o acionamento de mecanismos de sincronização exis-tentes dentro de um sistema de armazenamento de dados de mo-do a assegurar a consistência dos dados entre sistemas dearmazenamento de dados.
A Figura 19 mostra um ambiente de funcionamento emrede exemplar, no qual os aspectos inéditos do objeto rei-vindicado podem ser empregados.
A Figura 20 mostra um ambiente operacional exem-plar que pode ser empregado de acordo com o objeto reivindicado.
O Apêndice A é um exemplo de pseudocódigo associa-do ao objeto reivindicado.
Descrição Detalhada
Conforme utilizados aqui, os termos "componente","sistema", "interface" e semelhantes pretendem referir-se auma entidade relacionada com computador, seja ela hardware,software (em execução, por exemplo) e/ou firmware. Por exem-pio, um componente pode ser um processo é executado em umprocessador, um processador, um objeto, um executável, umprograma e/ou um computador. A titulo de ilustração, tantoum aplicativos que roda em um servidor quanto o servidor po-dem ser um componente. Um ou mais componentes podem residirdentro de um processo, e um componente pode ser localizadoem um computador e/ou distribuído entre dois ou mais compu-tadores.
0 objeto reivindicado é descrito com referênciaaos desenhos, nos quais os mesmos números de referência sãousados para referência aos mesmos elementos em toda parte.
Na descrição seguinte, para fins de explicação, são apresen-tados numerosos detalhes específicos de modo a se obter umentendimento completo da presente inovação. Pode ser eviden-te, contudo, que o objeto reivindicado pode ser posto emprática sem estes detalhes específicos. Em outros casos, es-truturas e dispositivos notoriamente conhecidos são mostra-dos em forma de diagrama de blocos para facilitar a descri-ção da presente inovação.Agora com referência às figuras, a Figura 1 mostraum sistema 100, que facilita a sincronização de dados asso-ciados a pelo menos dois sistemas de armazenamento de dadosdispares. Um sistema de armazenamento de dados 102 pode serum modelo complexo baseado pelo menos em uma estrutura dedados, na qual um item, um subitem, uma propriedade e umarelação são definidos de modo a permitir a representação deinformações dentro de um sistema de armazenamento de dadoscomo ocorrências de tipos complexos. O sistema de armazena-mento de dados 102 pode utilizar um conjunto de blocos deconstrução para criar e gerenciar objetos ricos, que persis-tem e conexões entre objetos. Um item pode ser definido comoa menor unidade de consistência dentro do sistema de armaze-namento de dados 102 que pode ser assegurada, serializada,sincronizada, copiada, reserva/restaurada, etc., de maneiraindependente. O item é uma ocorrência de um tipo, em que to-dos os itens no sistema de armazenamento de dados 102 podeser armazenado em uma única extensão global de itens. 0 sis-tema de armazenamento de dados 102 pode ser baseado em pelomenos uma estrutura de itens e/ou recipientes. Além do mais,o sistema de armazenamento de dados pode ser uma plataformade armazenamento que expõe metadados ricos que estão enter-rados em arquivos como itens. Deve ficar entendido que osistema de armazenamento de dados 102 pode representar umsistema de armazenamento de arquivos baseado em banco de da-dos de modo a suportar a funcionalidade discutida acima, naqual quaisquer características e/ou atributos podem ser im-plementados. Além disto, o sistema de armazenamento de dados102 pode utilizar uma estrutura hierárquica de recipientes,na qual um recipiente é um item que pode conter pelo menosum outro item. 0 conceito de contenção é implementado pormeio de uma propriedade de ID de recipiente no interior daclasse afim. Um armazenamento pode ser também um recipientetal que o armazenamento possa ser uma unidade organizacionale gerenciável física. Além disto, o armazenamento representaum recipiente de raiz para uma árvore de recipientes dentroda estrutura hierárquica.
Um componente de sincronização 106 pode criar umasincronização de dados par-a-par segura para permitir quevários usuários acessem tais dados sincronizados a diversosníveis. O componente de sincronização 106 pode permitir asincronização de dados associados ao sistema de armazenamen-to de dados 102 e a um sistema de armazenamento de dadosdíspar 104, em que uma comunidade de sincronização par-a-parsegura pode ser estabelecida. O componente de sincronização106 pode assegurar metadados, que incluem uma lista de asso-ciação (lista de direitos e/ou privilégios de acesso do usu-ário, por exemplo) da comunidade de sincronização, de modoque um usuário com acesso apropriado seja capaz de modificar(adicionar e/ou remover um usuário da comunidade, por exem-plo) e transmitir uma alteração e/ou manipulação a outrosusuários. Os dados podem ser também assegurados de modo queum usuário com acesso apropriado seja capaz de modificá-lose transmitir as alterações aos demais usuários. O mecanismode segurança pode chamar um mecanismo de autenticação e/ouautorização tal como, mas não limitado a, segurança ao níveldo compartilhamento, segurança ao nível do item, autentica-ção e autorização do sistema operacional, etc. Além do mais,o componente de sincronização 106 pode proporcionar a sin-cronização de listas de associação de maneira substancial-mente àquela pela qual os dados podem ser sincronizados.
Em outras palavras, o componente de sincronização106 pode implementar o gerenciamento de relações de sincro-nização complexas. Por exemplo, as relações de sincronizaçãopodem incluir, mas não estão limitadas a, gerenciamento deconfiguração, anulação e segurança. Além do mais, o compo-nente de sincronização 106 pode implementar o gerenciamentode relações de sincronização complexas com base inteiramenteem uma tecnologia de sincronização. Deve ficar entendido quepode ser implementada qualquer tecnologia de sincronizaçãoadequada, tal como, por exemplo, a tecnologia de sincroniza-ção relacionada com um sistema de armazenamento de dados 102e/ou um sistema de armazenamento de dados 104 díspar.
O componente de sincronização 106 pode utilizaruma cópia (dados e/ou pastas sincronizados pertencentes apelo menos um usuário na comunidade) para anunciar pelo me-nos uma das seguintes: 1) presença dentro da comunidade; e2) intenção de sair da comunidade pela sincronização de umasolicitação com um gerente (como, por exemplo, um membro dacomunidade que está autorizado a fazer alterações na cópiada lista de associação) da comunidade. Em outras palavras, ogerente é um membro da comunidade que está autorizado a fa-zer alterações na cópia da lista de membros. Além disto, osgerentes podem processar tais solicitações e fazer altera-ções nos metadados de associação e então sincronizar os me-tadados com os demais usuários na comunidade. Ao recebertais alterações nos dados de associação, o componente desincronização 106 permite que cada cópia faça as necessáriasalterações de acesso em seus dados e metadados. Deve ficarentendido que a criação e o gerenciamento da comunidade desincronização par-a-par implementada pelo componente de sin-cronização 106 podem permitir várias cópias e usuários, emque os papéis atribuídos a cada usuário podem alterar-se di-namicamente em qualquer dado instante no tempo. Em outraspalavras, não há um único mestre fixo na topologia do compo-nente de sincronização 106 e/ou da comunidade sincronizadapar-a-par. Além do mais, o componente de sincronização 106pode acionar as técnicas e/ou mecanismos de autenticação eautorização subjacentes do sistema de armazenamento de dados102.
Além do mais, o sistema 100 pode incluir qualquercomponente de interface adequado e/ou necessário 108, queapresenta diversos adaptadores, conectores, canais, percur-sos de comunicação, etc., para integrar o componente de sin-cronização 106 em praticamente qual(quais)quer sistema(s)operacional(ais) e/ou de banco de dados. Além disto, o com-ponente de interface 108 pode apresentar diversos adaptado-res, conectores, canais, percursos de comunicação, etc., queproporcionem interação com o componente de sincronização106, com o sistema de armazenamento de dados 102 e com osistema de armazenamento de dados díspar 104.
A Figura 2 mostra um sistema 200 que facilita oacionamento de mecanismos de sincronização existentes dentrode um sistema de armazenamento de dados de modo a assegurara consistência dos dados entre sistemas de armazenamento dedados. Um sistema de armazenamento de dados 202 pode ser umsistema de armazenamento de arquivos baseado em banco de da-dos que representa ocorrências de dados como tipos complexospela utilização de pelo menos uma estrutura hierárquica. Umitem, um subitem, uma propriedade e uma relação podem serdefinidos dentro do sistema de armazenamento de dados 202para permitir a representação de informações como ocorrên-cias de tipos complexos. O sistema de armazenamento de dados202 pode ser um modelo de dados que pode descrever uma con-formação de dados, declarar restrições para implicar deter-minada consistência nos dados e definir associações semânti-cas entre os dados. O sistema de armazenamento de dados 202pode utilizar um conjunto de blocos de construção básicospara criar e gerenciar objetos que persistem, ricos e cone-xões entre objetos.
Por exemplo, os blocos de construção podem incluirum "Item", uma "ExtensãoDeltem", uma "Conexão" e um "Frag-mentoDeltem". Um "Item" pode ser definido como a menor uni-dade de consistência dentro do sistema de armazenamento dedados 202 que pode ser assegurada, serializada, sincroniza-da, copiada, reserva/restaurada, etc., de maneira indepen-dente. O item é uma ocorrência de um tipo, em que todos ositens no sistema de armazenamento de dados 202 podem ser ar-mazenados em uma única extensão global de itens. Um Item po-de ser estendido utilizando-se uma entidade de extensão talcomo, mas não limitada a, uma "ExtensãoDeltem". A extensãoda entidade pode ser definida em um esquema com respectivosatributos (como, por exemplo, um nome, um tipo de item es-tendido, uma declaração de propriedade,...). A "ExtensãoDel-tem" pode ser implementada para agrupar um conjunto de pro-priedades que podem ser aplicadas ao tipo de item que é es-tendido. Uma "Conexão" é um tipo de entidade que define umaassociação entre duas ocorrências de item, em que as cone-xões são orientadas (como, por exemplo, um item é a fonte daconexão e o outro é o alvo da conexão). Um "FragmentoDeltem"é um tipo de entidade que permite a declaração de grandescoleções em tipos de item e/ou extensões de item, em que oselementos da coleção podem ser uma entidade. Deve ficar en-tendido que o sistema de armazenamento de dados 202 pode re-presentar qualquer sistema de armazenamento de arquivos ba-seado em banco de dados adequado que proporcione a represen-tação de dados como ocorrências de tipos complexos, e a des-crição acima não deve ser vista como limitando a presenteinvenção. O sistema de armazenamento de dados 202 pode sersubstancialmente semelhante ao sistema de armazenamento dedados 102 mostrado na Figura 1.
O sistema de armazenamento de dados pode incluirum componente de rastreamento 204, que efetua o rastreamentode alterações de dados em diversas entidades armazenadas nosistema de armazenamento de dados 202 e, em particular, emum armazenamento dentro do sistema de armazenamento de dados202. O componente de rastreamento 204 pode captar a(s) alte-ração (ões) de dados nas entidades de modo a facilitar a sin-cronização de dados entre dois sistemas dispares que mantêmconjuntos de dados. 0 componente de rastreamento 204 podeutilizar um esquema que apresente uma infra-estrutura quepermite que um armazenamento e/ou recipiente proporcione ma-nutenção granular em relação a uma alteração nos dados. Porexemplo, o componente de rastreamento 204 pode rastrear umaalteração nos dados, em que a alteração nos dados pode in-cluir uma inserção, uma atualização e um apagamento ao nivelda entidade (como, por exemplo, item, relação, extensão,etc.). O componente de rastreamento 204 pode rastrear alte-rações nos dados de modo que, ao nivel da entidade, o ras-treamento das alterações possa ser utilizado para gerar pelomenos um de uma notificação e um controle com concorrênciaotimista. Deve ficar entendido que uma concorrência otimistapresume a probabilidade de que outro processo, que faz alte-ração no tempo substancialmente semelhante, seja lento, demodo que ele não efetua um travamento até que a alteraçãoesteja pronta para ser efetuada no sistema de armazenamentode dados (armazenamento, por exemplo). Com a utilização detal técnica, o tempo de travamento é reduzido e o desempenhodo banco de dados é melhor.
O componente de rastreamento 204 pode incluir umcomponente não sincronizador (não mostrado) que pode rastre-ar alterações de dados ao nivel de uma entidade dentro dosistema de armazenamento de dados 202. Deve ficar entendidoque as alterações nos dados são rastreadas unicamente ao ni-vel da entidade com base, pelo menos em parte, na não parti-cipação na sincronização. O rastreamento de uma alteraçãonos dados ao nível de uma entidade pode ser referido como"informação de alteração". 0 componente não sincronizadorpode captar informações de alteração básica para todas asentidades. Por exemplo, as informações de alteração básicaspodem ser, mas não estão limitadas a, o tempo de criação lo-cal e o tempo de modificação local.
0 componente de rastreamento 204 pode utilizartambém um componente de sincronização (não mostrado) de umsistema de armazenamento de dados (DSS) que efetua rastrea-mento para uma entidade que participa da sincronização. Ocomponente de sincronização do DSS tem uma exigência maisespecializada para rastrear alterações nos dados em uma en-tidade a um nível mais granular assim como captando e man-tendo informações sobre o armazenamento e/ou recipiente quefoi alterado em um roteiro de reprodução de vários armazena-mentos (castelo, por exemplo). O componente de sincronização208 pode captar informações de alteração adicionais para en-tidades em uma relação de sincronização. Por exemplo, o com-ponente de sincronização do DSS pode captar informações dealteração a um nível mais granular (como, por exemplo, sub-nível, sub-sub-nível, etc.) de modo a reduzir ao mínimo aquantidade de dados a serem sincronizados e de modo a redu-zir o número de situações de conflitos entre alterações. Emoutro exemplo, o componente de sincronização do DSS podecaptar informações sobre qual o armazenamento e/ou recipien-te criou e/ou atualizou entidades. Deve ficar entendido queo objeto reivindicado pode se aplicar a sistemas de sincro-nização que não são baseados no componente de rastreamento204 (discutido acima) e que pode ser implementado qualquersistema de sincronização adequado, inclusive sistemas queutilizam registros de pelo menos uma alteração (sistemas desincronização baseados em registro, por exemplo).
Um componente de sincronização 208 pode proporcio-nar uma comunidade sincronizada par-a-par segura em relaçãoao sistema de armazenamento de dados 202 e a um sistema dearmazenamento de dados díspar 206, em que diversos níveis deacesso podem ser apresentados. O componente de sincronização208 pode acionar o componente de rastreamento 204 existentedentro do sistema de armazenamento de dados 202 para permi-tir a sincronização dos dados armazenados dentro do sistemade armazenamento de dados 202, do sistema de armazenamentodíspar 206 e/ou de qualquer outra máquina adequada. Deve fi-car entendido que o componente de sincronização 208 efetuasincronização de dados utilizando mecanismos de sincroniza-ção subjacentes e/ou existentes associados aos diversos sis-temas e/ou máquinas de armazenamento de dados, em que taissistemas e/ou máquinas de armazenamento de dados incluem da-dos não sincronizados que serão sincronizados. Deve ficarentendido que o componente de sincronização 208 pode sersubstancialmente semelhante ao componente de sincronização106 mostrado na Figura 1.
A Figura 3 mostra um sistema 300 que facilita asincronização de dados dentro de sistemas de armazenamentode dados de modo a permitir o acesso de vários usuários. Umsistema de armazenamento de dados 302 pode ser um sistema dearmazenamento de arquivos baseado em banco de dados, no qualos dados são representados como ocorrências de tipos comple-xos. 0 sistema de armazenamento de dados 302 pode incluirdados não sincronizados 308 (aqui referidos como dados nãosinc 308), em que tais dados serão sincronizados com um sis-tema de armazenamento díspar 304 que inclui dados não sinc310. Um componente de sincronização 306 pode sincronizartais dados dentro de uma comunidade sincronizada par-a-par312. A comunidade sincronizada 312 pode incluir uma cópia 1à cópia N, com N sendo um número inteiro maior que ou iguala 1, em que a cópia é uma pasta e/ou dados sincronizados as-sociados a pelo menos usuário relacionado com a comunidadesincronizada 312. 0 componente de sincronização 306 podecriar a comunidade sincronizada par-a-par 312, na qual vá-rios usuários 314 (com um usuário 1 a usuário T, com T sendoum número inteiro maior que ou igual a 1) podem acessar taiscópias com base em um nível associado à acessibilidade. Deveficar entendido que os vários usuários 314 e os níveis deacessibilidade podem ser baseados, pelo menos em parte, emuma lista de associados. Além do mais, deve ficar entendidoque o sistema de armazenamento de dados 302 e o componentede sincronização 306 podem ser substancialmente semelhantesaos componentes e sistemas descritos em Figuras anteriores.
0 componente de sincronização 306 pode também pro-porcionar pelo menos uma das seguintes: 1) validação da ex-periência de desenvolvimento do aplicativo construído sobreuma plataforma relacionado com o sistema de armazenamento dedados 302; 2) criação de uma realimentação e aperfeiçoamentode processamento de volta à sincronização do sistema de ar-mazenamento de dados 302 e sincronização do sistema de arma-zenamento de dados 302; 3) criação de um ambiente auto-hospedeiro para o aplicativo; 4) implementada de uma soluçãode sincronização de fim a fim que processa questões tais co-mo, mas não limitadas a, transporte e segurança (inclusiveautenticação e criptografia) e sincronização através da In-ternet; e 5) investigação dos pontos relacionados com a in-tegração entre o sistema de armazenamento de dados 302 e afuncionalidade de sincronização do sistema de armazenamentode dados 302 e o restante de um sistema operacional.
Por exemplo, um usuário pode manter vários compu-tadores pessoais (PCs) sincronizados utilizando o componentede sincronização 306, em que os PCs implementam um sistemade armazenamento de arquivos baseado em banco de dados subs-tancialmente semelhante ao sistema de armazenamento de dados302. Diversos recipientes podem ser sincronizados com compu-tadores dispares. Em particular, um recipiente com fotoscompartilhadas pode ser sincronizado com usuários disparesatravés da Internet. Além disto, um recipiente com documen-tos compartilhados pode ser sincronizado com várias máquinasem casa e no trabalho. Em outro exemplo, um aplicativo defotografia pode ser implementado para proporcionar a capaci-dade de compartilhar fotografias. A utilização do componentede sincronização 306 associado a um aplicativo de fotografiapode assegurar uma experiência continua através da sincroni-zação do aplicativo de fotografia e do sistema de armazena-mento de arquivos baseado em banco de dados baseada no com-partilhamento das fotografias. Em ainda outro exemplo, ocomponente de sincronização 306 pode ser implementado no ro-teiro e/ou ambiente associado. Em um ambiente e/ou roteiroassociado, a autenticação e a personificação contábeis estãodisponíveis, por exemplo, por meio de um gerente de LAN ouKerberos. Isto é distinto da sincronização através da Inter-net, que introduz exigências para o transporte.
Com base, pelo menos em parte, nos roteiros e/ouexemplos acima, o componente de sincronização 306 pode efe-tuar um dos seguintes: 1) configurar sincronização; 2) ge-renciar dados de sincronização; 3) gerenciar programas desincronização; 4) inspeção e resolver conflitos de sincroni-zação; 5) examinar conflitos de sincronização; e 6) sincro-nizar fotografias.
A Figura 4 mostra um sistema 400 que facilita asincronização de dados entre pelo menos dois sistemas de ar-mazenamento de dados dispares. Um componente de sincroniza-ção 406 pode proporcionar uma comunidade sincronizada par-a-par segura em relação a um sistema de armazenamento de dados402 e a um sistema de armazenamento de dados díspar 404, emque diversos níveis de acesso podem ser apresentados. 0 com-ponente de sincronização 406 pode acionar o componente derastreamento existente (não mostrado) dentro dos sistemas dearmazenamento de dados 402 e 404 de modo a permitir a sin-cronização dos dados. Deve ficar entendido que o componentede sincronização 406 efetua a sincronização de dados utili-zando mecanismos de sincronização subjacentes e/ou existen-tes associados aos diversos sistemas e/ou máquinas de arma-zenamento de dados, em que tais sistemas e/ou máquinas dearmazenamento de dados incluem dados não sincronizados queserão sincronizados. Deve ficar entendido que os sistemas dearmazenamento de dados 402 e 404 e o componente de sincroni-zação 406 podem ser substancialmente semelhantes aos siste-mas e/ou componentes anteriormente descritos.
0 componente de sincronização 406 pode incluir umcomponente gerenciador de sincronização de usuários 408 (a-qui referido como gerente sinc de usuários 408) . O gerentesinc de usuários 408 pode facilitar os procedimentos de cri-ar relações sincronizadas, criar recipientes sincronizados,aceitar convites, associar-se a uma comunidade, remover usu-ários, manter listas de membros e/ou o gerenciamento totalda comunidade sincronizada par-a-par. O gerente sinc de usu-ários 408 pode apresentar um usuário para permitir a sincro-nização em um recipiente (não mostrado) dentro de um sistemade armazenamento de dados em um armazenamento pré-definido.
A relação de sincronização pode ser criada para este recipi-ente (como, por exemplo, um recipiente com o sistema de ar-mazenamento de dados 402). A relação de sincronização podeser criada para um recipiente sincronizado especifico com-partilhado por um usuário especifico em um computador espe-cifico. Deve ficar entendido que o usuário que criou o reci-piente sincronizado está ciente de que o recipiente estásincronizado.
Conforme afirmado acima, o gerente sinc de usuá-rios 408 pode facilitar a criação de uma relação de sincro-nização. O convite (o convite a um usuário para se associara uma comunidade de sincronização par-a-par, por exemplo)pode conter o nome do Gerente que convida, computador, ende-reço IP e/ou qualquer técnica de identificação adequada, as-sim como a comunidade e o alcance. Os papéis e os níveis po-dem ser mapeados nas permissões do sistema de armazenamentode dados (discutidas infra, por exemplo). Estas permissõespodem ser estabelecidas antes que o convite seja enviado. 0convite pode incluir também um pacote de dados inicial queinclui a lista de membros, de modo que, quando o convite éaceito, a cópia possa ser completamente configurada sem ne-cessidade de um percurso de ida e volta inicial. Deve ficarentendido que o convite pode incluir também os dados inici-ais para o recipiente.
Os convites podem ser criados em arquivos de lin-guagem de marcação extensível (XML) com a extensão Convite-sinc, por exemplo. 0 componente sinc 406 é registrado como oprocessador desses arquivos e exibe o diálogo aceitar convi-te de sincronização. Estes convites podem incluir as seguin-tes propriedades: nome da comunidade, usuário que convida,nome do computador que convida, usuário convidado, papel dousuário convidado, etc. 0 convite pode ser, por exemplo, ume-mail que pode incluir o seguinte texto: uma linha Para(incluindo um endereço de e-mail, por exemplo), uma linha deAssunto (incluindo um assunto que informa do convite, porexemplo), um corpo (como, por exemplo, contendo informaçõesdetalhadas passíveis de leitura sobre o convite, usuário queconvida, nome do computador que convida, papel, nome da co-munidade, etc.) um anexo (que pode ser duplamente clicadopara aceitar o convite, por exemplo), etc.O gerente sinc de usuários 408 pode criar tambémum recipiente sincronizado (não mostrado). Em um aplicativode exploração de arquivos do sistema operacional, um usuáriopode clicar em um recipiente no armazenamento pré-definidodentro do sistema de armazenamento de dados 402 e selecionaruma opção orientada para permitir a sincronização. Selecio-nando tal opção, o gerente sinc de usuários 408 pode imple-mentar a criação de um recipiente sincronizado especialista,em que o especialista pode especificar pelo menos um dos se-guintes; 1) modo de sincronização; e 2) política conflitos(todos eles discutidos infra).
Na criação de um recipiente sincronizado, as eta-pas seguintes podem ser executadas pelo gerente sinc de usu-ários 408. As etapas seguintes são mostradas como um exemplo e o objeto reivindicado não está limitado a elas.
1) Se este recipiente sincronizado for o pri-meiro membro da comunidade,
a. Uma comunidade de Dados é criada, enra-izada no recipiente sincronizado. Esta comunidade sincronizaos dados através de todos os recipientes sincronizados.
b. Uma comunidade de Segurança é criada,enraizada em um recipiente privado de acordo com a Cópia dorecipiente sincronizado. Esta comunidade sincroniza a confi-guração de segurança para a comunidade de Dados. Isto incluiuma lista de cada usuário aceito. São também incluídas aspermissões e o endereço de cada usuário aceito.
c. Uma comunidade de Solicitações é cri-ada (discutida infra, por exemplo).2) Um grupo de segurança é criado na máquinalocal para cada um dos papéis. Os grupos são chamados deLeitor, Gravador e Gerente (discutidos infra, por exemplo).
O nome de cada grupo é anexado com um sufixo único de modoque seja distinguido do grupo de segurança correspondente deoutro recipiente sincronizado.
3) As permissões do recipiente de Dados sãoestabelecidas com base na configuração na comunidade de Se-gurança. Especificamente, a permissão de Leitura Genérica éconcedida a Leitores, e a permissão de "Gravação Genérica +Leitura Genérica" Windows é concedida a Gravadores. Uma vezque a sincronização é feita diretamente pelo sistema de ar-mazenamento de dados-sinc do sistema de armazenamento de da-dos, isto assegura os dados, permitindo que apenas os usuá-rios apropriados sincronizem para e a partir do recipientesincronizado.
As permissões do grupo de segurança podem ser es-tabelecidas com base na configuração na comunidade de Segu-rança. Em particular, a permissão de "Gravação Genérica +Leitura Genérica" do sistema operacional pode ser concedidaa Gerentes, e a permissão de leitura genérica é concedida aleitores e gravadores, respectivamente.
A tabela seguinte é um exemplo dos grupos de segu-rança que podem ser criados e do acesso oferecido a cada umnas diversas pastas e compartilhamentos. Deve ficar entendi-do que a tabela seguinte é um exemplo e que o objeto reivin-dicado não está limitado a ela. Além do mais, os hashes natabela seguinte são hashes deterministicos de 128 bytes, mastal implementação não está limita a isto. Observação: CadaACE listado tem herdar recipiente e herdar_objeto, e o apli-cativo de sincronização par-a-par é referido como PTPS.
<table>table see original document page 28</column></row><table><table>table see original document page 29</column></row><table>
Um recipiente sincronizado pode ter a estruturaseguinte. Observe-se que o sistema de armazenamento de dadosé referido como um DSS e o aplicativo de sincronização par-a-par é referido como PTPS.
Recipiente sincronizado (sincronizado com acomunidade de Dados)
+ Cópia (não sincronizada)
+ Pasta de Segurança (sincronizada com a co-munidade de Segurança)
+ Pasta de Solicitações
O gerente sinc de usuários 408 pode permitir que oconvite de um usuário sincronize o recipiente uma vez criadoum recipiente e/ou em qualquer momento posterior. O gerentesinc de usuários 408 pode especificar um endereço de contato(como, por exemplo, um endereço de e-mail, um endereço deprotocolo Internet (IP), etc.), em que pode ser anexado umconvite que contém os dados de convite. Deve ficar entendidoque o componente sinc de usuários 408 não exige o envio au-tomático do convite, uma vez que ele pode ser enviado emqualquer momento designado pelo usuário. O destinatário doconvite pode ser aceito por outro usuário com base, pelo me-nos em parte, na implementação do componente sinc 406 pelousuário.
Em outro exemplo, o convite pode ser salvo como umarquivo para uso posterior. 0 usuário pode enviar o conviteao outro usuário por qualquer meio adequado (como, por exem-plo, disquete, e-mail, mensagem de texto, serviço de trocade mensagens curtas (SMS), etc.). 0 gerente sinc de usuários408 pode utilizar quaisquer mecanismos e/ou técnicas de con-vite adequados. Além do mais, o gerente sinc de usuários 408pode apresentar diversos níveis de convite, em que um usuá-rio pode ser convidado a participar da comunidade de sincro-nização par-a-par em um de, mas não limitado a, papéis, ní-veis: 1) Gerente- ler, gravar, modificar, adicionar, convi-dar, revogar; 2) Gravador- ler, gravar, modificar, adicio-nar; 3) Leitor- ler; e 4) Contribuinte- ler, adicionar.
O componente sinc de usuários 408 apresenta tambéma aceitação de um convite. Quando um convite é recebido eaberto, o usuário pode implementar pelo menos um dos seguin-tes: 1) especificar e/ou criar um recipiente de sistema dearmazenamento de dados local com o qual sincronizar; 2) es-pecificar se este recipiente pode ser sincronizado automati-camente ou sincronizado manualmente; e 3) especificar a po-litica para conflitos a ser implementada. O nome de exibiçãode um usuário pode ser o nome utilizado pelo sistema de se-gurança para um ambiente específico. Em um ambiente de gru-po, por exemplo, o nome de exibição pode ser o nome de usuá-rio do usuário conectado. Deve ficar entendido que nos ro-teiros da Internet, o sistema de segurança pode utilizar umnome diferente (como, por exemplo, nome alternativo de e-mail, endereço IP, endereço de e-mail, etc.).
A pasta de segurança (discutida acima) pode sersincronizada entre a comunidade de segurança. A política eas permissões para esta comunidade podem ser as de que umasincronização bidirecional pode ocorre entre os gerentes e ade que uma sincronização unidirecional ocorre de um gerentepara um não gerente. A pasta de segurança pode ter duas sub-pastas que armazenam a lista de usuários e a lista de cópiasna comunidade:
Pasta de Segurança (sincronizada com a comuni-dade de Segurança)
+ Cópia (da pasta de Segurança)
+ Pasta dos Usuários
+ Item de ConfiguraçãoDePastaSincronizada
A pasta de Segurança pode conter também um item deConfiguraçãoDePastaSincronizada, que contém o nome e a des-crição da pasta sincronizada.
Uma pasta de Usuários pode conter uma lista de to-dos os usuários da comunidade, juntamente com o conjunto dePares para cada usuário. Segue-se um exemplo de pasta de u-suários, mas o objeto reivindicado não está limitado e ele.
+ Usuários
+ Usuário 1
+ Par a
+ Par b
+ Usuário 2
+ Par c
+ Par d...
Cada Usuário pode persistir como um ItemSerializa-do que contém os seguintes dados:
NomeDeUsuário
DomínioDeUsuário
SID
Papel (leitor Igravador I gerente)
As informações de cada usuário podem ser armazena-das como um item separado com base, pelo menos em parte, emque, se ele for modificado por vários gerentes, a políticade resolução de conflitos ÚltimoGravadorVence pode ser uti-lizada para resolver o conflito. 0 espaço de nome e os nomesde exibição do Item do usuário são fixados no SID do Usuá-rio.
Cada Usuário pode conter uma lista de todos os pa-res (cópias de sincronização, por exemplo) da comunidade.Cada Par pode persistir contendo os seguintes dados:
SID do usuário
Percurso de Compartilhamento (nome do compar-tilhamento não necessário)
Tipo de sincronização (automático I manual)
A unidade de segurança em pelo menos uma máquinapode ser o Usuário. Assim, um usuário que sincronize váriasmáquinas com o mesmo recipiente sincronização pode ter asmesmas permissões para esse recipiente de todas as máquinas.Uma razão importante para armazenar um Par sob seu Usuário éque um item armazenado sob outro item (em oposição a umapasta) pode ser sempre sincronizado na mesma transação comoseu pai. Isto, juntamente com a política de resolução deconflitos de fusão de entidades, assegura que os Usuários ePares não sejam incompatíveis uns com os outros.
O seguinte pode ser um exemplo de estrutura parauma pasta de solicitações. Cada par não gerenciador tem umaúnica sub-pasta sob o recipiente de Solicitações, utilizadopara armazenar solicitações para o(s) e do(s) usuário e ge-rentes, conforme o seguinte.
+ pasta de Solicitações
+ sub-pasta de Solicitações para solicita-ções do proprietário par (sincronizada com o proprietário egerentes pares)
+ Cópia
+ ParaGerente
+ DeGerente
Além do mais, Cada Gerente par tem uma sub-pastapara cada per da comunidade (inclusive uma para o Gerentepropriamente dito) da maneira seguinte.
+ pasta de Solicitações
+ Recipiente para solicitações do usuário 1(sincronizado com o usuário 1 e gerentes)
+ Cópia
+ ParaGerente
+ DeGerente
+ Recipiente para solicitações do usuário 2(sincronizado com o usuário 2 e gerentes)
+ Cópia
+ ParaGerente
+ DeGerente+ Recipiente para solicitações do usuário
η (sincronizado com usuário η e gerentes)
+ Cópia
+ ParaGerente
+ DeGerente
O nome de um recipiente de sub-pastas para um podeser "Solicitações" com um sufixo do identificador único querepresenta o par. O recipiente de Solicitações pode ser sin-cronizado entre a comunidade de Solicitações. As permissõespara esta comunidade permitem sincronização bidirecional en-tre o recipiente local que representa cada cópia e o recipi-ente correspondente em cada cópia de Gerente. Em outras pa-lavras, o usuário e os gerentes do par podem ter acesso to-tal ao recipiente do par.
A política para esta comunidade pode causar pelomenos uma das seguintes; 1) Sincronização unidirecional dapasta DeGerente com a cópia da mesma pasta da sub-pasta deSolicitações correspondente em cada cópia de Gerente; e 2)Sincronização unidirecional da pasta ParaGerente da cópiacom a mesma pasta da sub-pasta de Solicitações corresponden-te em cada cópia de Gerente. A pasta ParaGerente armazenasolicitações de AnunciarCópia e SolicitarRemoção. A pastaParaCópia armazena solicitações de CompletarRemoção. As so-licitações podem ser criadas e apagadas e não podem ser mo-difiçadas. Portanto, raramente há conflitos na comunidade deSolicitações. As solicitações podem ser apagadas simultanea-mente em várias cópias, mas isto pode ser permitido e não éum conflito.Uma solicitação de AnunciarCópia pode conter a i-dentidade de uma cópia que se associou à comunidade. Istopode ser sincronizado com todos os gerentes da comunidade.
Um gerente que leia a solicitação de AnunciarCópia pode adi-cionar a cópia à lista de permissões armazenada na comunida-de de segurança (como, por exemplo, remover quaisquer dupli-catas deterministicamente se necessário) e apaga a solicita-ção de AnunciarCópia. Isto completa o acréscimo da cópia àcomunidade. Uma solicitação de AnunciarCópia pode ser tambémutilizada para comunicar quaisquer alterações na configura-ção da cópia à comunidade. Um exemplo disto é quando o modode sincronização de uma cópia se altera.
Uma solicitação de SolicitarRemoção pode conter aidentidade da cópia que é removida. Tal solicitação pode sercriada por uma cópia em resposta à remoção da cópia iniciadapor um usuário. Quando um Gerente detecta que uma solicita-ção de SolicitarRemoção foi sincronizada no recipiente deSolicitações de uma de suas cópias sincronizadoras (como,por exemplo, de um recipiente outro que o recipiente de So-licitações de sua própria cópia), ele apaga a solicitação deSolicitarRemoção e grava uma solicitação de CompletarRemoçãono mesmo recipiente de Solicitações.
Uma solicitação de CompletarRemoção não tem dadosnela, mas pode indicar que a cópia deve apagar seus gruposde segurança baseados em compartilhamentos e papéis, assimcomo seus metadados de sincronização (a Cópia sob o recipi-ente Sincronizado). Tal solicitação pode ser criada por umGerente. Isto pode ser em resposta a uma solicitação de So-licitarRemoção, ou em resposta à remoção, iniciada por umGerente, de um usuário ou cópia. Quando uma cópia sincronizauma solicitação de CompletarRemoção em seu recipiente de So-licitações, ela apaga seu compartilhamento e o grupo de se-gurança afim.
Uma mensagem de CompletarRemoção pode ser apagadaapós um período de expiração fixo (7 dias, por exemplo) . Sea mensagem for apagada antes que a cópia a tenha recebido, acópia ainda tem os metadados sinc e pode ainda tentar sin-cronizar-se com a comunidade. Tal sincronização falhará senão houver cópias de propriedade do mesmo usuário na comuni-dade. Caso contrário, ela pode ter sucesso. Os metadados pa-ra esta cópia podem ser removidos por meio de uma etapa ma-nual. Se o usuário que possui a cópia não possuir qualqueroutra cópia na comunidade, o usuário é também removido dalista de usuários. Isto faz com que as alterações necessá-rias na segurança sejam acionadas em todas as cópias sincro-nizadas.
Os usuários e gerentes que têm solicitações de re-moção pendentes podem ter as palavras "Remoção Pendente" naUI da máquina da qual eles emitiram a solicitação de remoção- a UI em outras máquinas não reflete isto (por exemplo, sóreflete a remoção final, quando isso ocorre). Os ids de nomede comunidade utilizados podem ser, por exemplo, apenas umdos seguintes: Dados para a comunidade de dados, Segurançapara a comunidade de segurança e o nome de usuário para acomunidade ParaGerente e DeGerente de um usuário. Os pontosterminais locais e remotos para todas as sincronizações po-dem ser a localização da pasta sincronizada apropriada. Den-tro desta pasta, todos os nomes de comunidade são únicos.
Em outro exemplo, o componente sinc de usuários408 pode permitir o acréscimo de uma cópia a uma comunidadeacrescentando o usuário à comunidade sincronizada par-a-parem primeiro lugar. Por exemplo, um usuário pode associar-seativamente à comunidade sincronizada, na qual diversos ar-quivos e/ou recipientes podem ser sincronizados. O usuáriopode então adicionar um computador à comunidade utilizandoum aplicativo de sincronização par-a-par (discutido infra)desse computador e especificando o compartilhamento ao qualassociar-se.
Além disso, o gerente sinc de usuários 408 podepermitir a remoção de um usuário, uma cópia e/ou um gerente.Deve ficar entendido que a remoção de um usuário e/ou cópiapor um gerente pode ser diferente da do usuário ou proprie-tário da cópia. Um gerente pode remover um usuário ou cópiaque não seja ele mesmo (como, por exemplo, pode remover tam-bém sua própria cópia, conforme discutido infra) . O gerentesinc de usuários 408 pode também proporcionar a remoção deuma cópia por seu usuário proprietário ou gerente. Um usuá-rio pode remover uma cópia de uma vez da comunidade. A par-tir de tal cópia, o usuário poder chamar remoção. Se a cópiado último gerente da comunidade tenta remover-se ela mesma,mas há outras cópias na comunidade, a operação pode fracas-sar. Isto pode impedir a criação de órfãos na comunidade quenão tiveram a oportunidade de remover suas cópias. Em um e-xemplo, o último gerente (que é também o último usuário nacomunidade, por exemplo) pode apagar a pasta, os dados e/oumetadados sincronizados.
O que se segue refere-se à remoção de um usuárioou cópia por um gerente que é diferente do usuário ou pro-prietário da réplica. Para remover uma cópia individual, umasolicitação de CompletarRemoção pode ser gravada no recipi-ente de Solicitações de cada uma das cópias (sempre que setornar disponível, por exemplo). Para remover todas as có-pias para um usuário especificado, uma solicitação de Com-pletarRemoção pode ser gravada no recipiente de Solicitaçõesde cada uma das cópias (sempre que se tornar disponível, porexemplo), Se não houver cópias restantes para o usuário es-pecificado, todos os privilégios do usuário podem ser imedi-atamente revogados alterando-se os dados de segurança e a-cionando-se um evento de sincronização. Isto ainda permiteque a cópia receba e envie dados até que a solicitação deCompletarRemoção possa ser processada. Entretanto, nenhumaoutra cópia pode tentar enviar ou receber dados para a/dacópia removida.
O que se segue refere-se à remoção de uma cópiapor seu proprietário. Um usuário só pode remover uma cópiade uma vez da comunidade. A partir da cópia, o usuário podechamar remoção. Isto faz com que uma solicitação de Solici-tarRemoção seja gravada no recipiente de Solicitações da Có-pia. Se a cópia do último Gerente na comunidade tenta remo-ver-se ela mesma, mas há outras cópias na comunidade, a ope-ração fracassa. Isto impede a criação de órfãos na comunida-de que não tenham tido uma oportunidade de remover suas có-pias. Caso contrário, o último Gerente (que é também o últi-mo usuário na comunidade, por exemplo) apaga todos os meta-dados da pasta sincronizada.
Somente os Gerentes podem fazer alterações no re-cipiente de Segurança, que será sincronizado corretamente.
As configurações de segurança não permitem que quaisquer al-terações de segurança feitas por não Gerentes sejam sincro-nizadas por outros usuários. Uma vez que as alterações sãofeitas ou recebidas, um aplicativo que roda na máquina ge-renciadora desperta para as alterações e modifica apropria-damente a segurança no recipiente de Dados e seu conteúdo.
Uma vez que estas permissões só podem ser modificadas comprivilégios de Administrador, o aplicativo utiliza o serviçode aplicativo de sincronização par-a-par (discutido infra)para fazê-lo. O acesso compartilhado ao sistema operacionalé necessário para acessar os dados do sistema de armazena-mento de dados. Em um exemplo, apenas um Administrador podecriar um compartilhamento. Além disto, em um exemplo, apenasum Administrador pode criar um grupo de segurança. Portanto,o aplicativo utiliza o serviço de aplicativo de sincroniza-ção par-a-par (aplicativo de sincronização par-a-par, porexemplo (discutido infra) para fazê-lo.
0 componente sinc 406 pode implementar uma topolo-gia de modo que haja uma ligação direta entre cada cópia egerente, uma vez que os gerentes podem fazer alterações desegurança e uma vez que estas não podem ser recebidas de umnão gerente. Além disto, cada cópia pode entrar regularmenteem contato com um gerente de modo a receber as últimas alte-rações de segurança. Se uma cópia não puder entrar em conta-to com um gerente durante um determinado período de tempo(baseado, pelo menos em parte, no período de espera de umabatida cardíaca, por exemplo), ela pode entrar em um estadono qual nenhuma outra alteração nos dados pode ser aceitaaté que ela possa receber a configuração de segurança de umgerente. Além disto, uma interface com usuário (não mostra-da) pode indicar os usuários com os quais se fez uma sincro-nização bem sucedida. Se uma cópia não puder ser contatada,seu ícone exibido com uma superposição pode indicar este fa-to. A interface com usuário pode permitir também que o usuá-rio visualize qualquer recipiente sincronizado que eles pos-suem. Além disto, em um aplicativo explorador do sistema dearmazenamento de dados, um ícone de superposição pode iden-tificar o recipiente como um recipiente sincronizado.
O componente sinc 406 pode incluir um componentesinc manual 410 (aqui referido como o sinc manual 410) queproporciona a sincronização manual de dados, arquivos e/ourecipientes. A sincronização manual destina-se a usuáriosque não querem seus dados sincronizados (ou lidos de ou gra-vados em), a menos que explicitamente chamado. A lista demembros inclui o modo de sincronização para cada cópia. Ou-tras cópias não tentarão sincronizar-se com uma cópia que sesincronize manualmente. Uma sincronização manual é iniciadapor um usuário. Isto aciona um evento de sincronização (dis-cutido infra).
O componente sinc 406 pode incluir um componenteauto-sinc 412 (aqui referido como auto-sinc 412) que propor-ciona sincronização automática com um arquivo e/ou recipien-te eleito para a comunidade de sincronização par-a-par. Asincronização automática pode utilizar uma sincronização demalha plena para cada uma das comunidades de Dados e Segu-rança. Cada réplica pode sincronizar-se com outra cópia coma qual seja permitido sincronizar-se. As alterações locaisno recipiente de dados são detectadas pelo aplicativo na má-quina local por meio de um observador do sistema de armaze-namento de dados (não mostrado). O observador pode ser pro-gramado para evitar ser acionado por alterações de sincroni-zação no sistema de armazenamento de dados. Um evento desincronização é acionado quando o observador é ativado.
A Figura 5 mostra um sistema 500 que facilita asincronização de dados dentro de sistemas de armazenamentode dados de modo a permitir diversos níveis de acessibilida-de. Um componente sinc 506 pode proporcionar uma comunidadesincronizada par-a-par segura em relação a um sistema de ar-mazenamento de dados 502 e um sistema de armazenamento dedados díspar 504, em que diversos níveis de acesso podem serapresentados. O componente sinc 506 pode acionar o componen-te de rastreamento existente (não mostrado) dentro dos sis-temas de armazenamento de dados 502 e 504 de modo a permitira sincronização de dados. Deve ficar entendido que o compo-nente sinc 506 proporciona a sincronização de dados utili-zando mecanismos de sincronização subjacentes e/ou existen-tes associados aos diversos sistemas e/ou máquinas de arma-zenamento de dados, em que tais sistemas e/ou máquinas dearmazenamento de dados incluem dados não sincronizados queserão sincronizados. Deve ficar entendido que os sistemas dearmazenamento de dados 502 e 504 e o componente sinc 506 po-dem ser substancialmente semelhantes aos sistemas e/ou com-ponentes descritos anteriormente.
O componente sinc 506 pode utilizar também um a-plicativo sinc par-a-par 508 que pode rodar como um sistemalocal que expõe pelo menos uma operação a um aplicativo queé executado no sistema. Tais operações podem ser acessadaspor processos na mesma máquina (para impedir ataques de ou-tros computadores, por exemplo). Por exemplo, o aplicativosinc par-a-par 508 pode ser instalado juntamente com o res-tante do componente sinc 506 por um administrador. Deve fi-car entendido que o aplicativo sinc par-a-par 508 pode rodaruma ocorrência associada a cada sistema de armazenamento dedados e/ou computador. Assim, o aplicativo sinc par-a-par508 é uma ocorrência associada ao sistema de armazenamentode dados 502, e o aplicativo sinc par-a-par 516 é uma ocor-rência associada ao sistema de armazenamento de dados 504.Além do mais, deve ficar entendido que, para simplificar, oaplicativo sinc par-a-par 508 é mostrado, mas o aplicativosinc par-a-par 516 pode incluir também tais aspectos.
O aplicativo sinc par-a-par 508 pode implementaruma cadeia CriarCompartilhamento (recipiente). Esta operaçãocria um compartilhamento no recipiente especificado (que po-de estar no interior do sistema de armazenamento de dados) ecria também as permissões apropriadas e adiciona as permis-sões para estes grupos ao recipiente e ao compartilhamento.A operação devolve o percurso UNC total ao compartilhamentocriado. Esta operação verifica que o usuário é o proprietá-rio do recipiente e fracassa se este não for o caso. Assim,a segurança fornecida por esta API é a de que somente o pro-prietário do recipiente está autorizado a compartilhá-lo.
Isso enfraquece a segurança fornecida pelo OS, quenão permite que o proprietário de um recipiente crie um com-partilhamento, a menos que aconteça de o proprietário ser umAdministrador. Entretanto, isto é aceitável, já que a segu-rança ao nivel do Compartilhamento é mais que uma sobra deversões anteriores de sistemas operacionais que não tiveramsegurança ao nivel da pasta.
O aplicativo sinc par-a-par 508 pode implementaruma operação de EstabelecerPermissões (recipiente). Esta o-peração valida que o usuário chamador é o proprietário dorecipiente e fracassa se este não for o caso. Esta operaçãoestabelece as associações em grupo apropriadas com base naspermissões da lista de permissões armazenada no recipientede Segurança. Por segurança, o chamador não declara explici-tamente os grupos ou os ACLs; estes são inferidos do recipi-ente e da lista de permissões.
0 aplicativo sinc par-a-par 508 pode implementaruma operação RemoverCompartilhamento (recipiente). Esta ope-ração valida que o usuário chamador é o proprietário do re-cipiente e fracassa se este não for o caso. Esta operaçãoapaga o compartilhamento criado no recipiente e também apagaos grupos de segurança associados com o compartilhamento.
0 aplicativo sinc par-a-par 508 pode ser projetadopara funcionar como um aplicativo que pode estar rodando nabandeja do sistema. 0 aplicativo sinc par-a-par 508 pode serum aplicativo que é responsável pela programação de sincro-nizações e pelo fornecimento de notificação de progresso eoutros dados, tais como conflitos. Além do mais, o aplicati-vo sinc par-a-par 508 é também registrado como um processa-dor de solicitações de convite. 0 menu de contexto contém osseguintes itens de menu: 1) Opções; e 2) Sair.
0 aplicativo sinc par-a-par 508 pode criar uma as-sinatura de notificações sobre alterações nos dados em umrecipiente (um observador, por exemplo), em que o observadorpode ser pelo menos um dos seguintes: 1) Criação de pastas eusuários sincronizados. Um observador com extensão de arma-zenamento único busca a criação, modificação e supressão deItensNãoSincronizados. 0 processador busca itens denominados"MarcadorDeCriaçãoDePastaSincronizada". Isto indica que umapasta sincronizada foi criada; 2) Cada pasta sincronizadatem um observador que monitora a pasta sincronizada em buscade alterações nos dados; e 3) Cada pasta sincronizada tem umobservador na cópia de Dados que monitora a pasta sincroni-zada em busca de alterações nos metadados do aplicativo.Lembre-se que os metadados do aplicativo sinc par-a-par sãoarmazenados sob a cópia de Dados. Por exemplo, se houver du-as pastas sincronizadas no mesmo computador, o número totalde observadores él+2+2=5 observadores.
0 aplicativo sinc par-a-par 508 pode utilizar tam-bém pelo menos um dos seguintes encadeamentos: 1) Encadea-mento da UI. Este serve o icone, menu de contexto, etc. dabandeja do sistema. Não há processador de exceção para esteencadeamento; 2) Encadeamento de Registro de Atividades. Es-te exibe a UI de registro de atividades. Não há processadorde exceção para este encadeamento; 3) Conjunto de encadea-mentos. Este é atualmente apenas um encadeamento. Todos oscallbacks finalmente são executados seqüencialmente nesteencadeamento. O processador de exceção para este encadeamen-to reinicializa o controlador de sincronização. Este é tipi-camente executado em situações tais como a supressão manualpelo usuário de uma pasta sincronizada; 4) Encadeamentos doObservador - estes não são diretamente criados pelo aplica-tivo. Cada observador pode criar um encadeamento.
O aplicativo sinc par-a-par 508 pode implementarum algoritmo de programação. Quando uma pasta sincronizada écriada, o Observador de criação é acionado. 0 processadorpode implementar pelo menos um dos seguintes: 1) Programauma sincronização de Dados após um retardo de partida; 2)Cria um observador na cópia de Dados para observar altera-ções nas sub-pastas de Solicitações e Segurança; e 3) Pro-grama uma sincronização da pasta de Segurança após um retar-do de partida.
Quando ocorre uma alteração nas sub-pastas de Se-gurança ou Solicitações, o observador na cópia de Dados éacionado. 0 processador pode implementar pelo menos um dosseguintes: 1) Para cada solicitação entrante em uma sub-pasta de Solicitações: a) Processa as solicitações (descritosupra); b) Para alterações locais, programa uma sincroniza-ção da sub-pasta de Solicitações; 2) Atualização as permis-sões de segurança nas cópias; e 3) Para alterações locais,programa a sincronização da sub-pasta de Segurança. Quandoocorre uma alteração na sub-pasta de Dados, o observador norecipiente é acionado. Se a alteração for uma alteração lo-cal, o processador programa uma sincronização da comunidadede dados. Depois de sincronizada a comunidade de dados, umasincronização baseada no tempo é programada para a comunida-de de dados. Depois de sincronizada a comunidade de seguran-ça, uma sincronização baseada no tempo, é programada para acomunidade de segurança. Depois de sincronizada a sub-pastade solicitações, uma sincronização baseada no tempo é pro-gramada para a sub-pasta de solicitações.
O componente sinc 506 pode incluir um componenteintegrado que facilita a integração entre o componente sinc505 (como, por exemplo, e em particular o aplicativo sincpar-a-par 508) em um sistema operacional com outros aplica-tivos. Este aplicativo é projetado para expor a maior partede sua interface com usuário através dos aplicativos exis-tentes, como, por exemplo, um explorador de arquivos do sis-tema operacional.
Um recipiente de sistema de armazenamento de dadoslocal no explorador de arquivos do sistema operacional podeter diversos itens de menu. Se o recipiente não for uma pas-ta sincronizada, podem ser adicionados dois itens de menu,tais como, mas não limitados a, os seguintes: 1) "Sincroni-zar...": Isto cria o diálogo Sincronizar, que permite que apasta sincronizada seja criada, etc.; e 2) "Associar-se àPasta Sincronizada...": Isto cria o Diálogo Associar-se àPasta Sincronizada. Se o recipiente for uma pasta sincroni-zada, o item de menu "Sincronizar..." aparece no lugar doitem de menu "Permitir Sincronização...". Se houver confli-tos registrados no recipiente, pode aparecer um item de menu"Resolver Conflitos...", que abre uma janela exploradora se-parada que exibe o recipiente virtual de Conflitos adiciona-do pela extensão de espaço de nome.
Com referência breve à Figura 7, um instantâneo detela 700, que apresenta a criação de uma nova pasta sincro-nizada (diálogo de pasta sincronização, por exemplo). Estediálogo é utilizado para criar uma nova pasta sincronizada,ou para gerenciar uma pasta sincronizada existente, assimcomo para interromper a sincronização de uma pasta. 0 diálo-go de Sincronização contém uma folha de propriedade e umatabulação Geral, assim como uma tabulação para cada comple-mento, tal como o complemento de sistema de armazenamento dedados e o complemento de Compartilhamentos e Pasta da Rededo sistema operacional. 0 botão de Convidar é localizado nabase da folha e está ativo quando a pasta sincronizada éconfigurada para sincronização.
Em um exemplo, a caixa de diálogo pode ser chamadaem uma pasta que não é uma pasta sincronizada. Em tal exem-plo, pode ser implementado pelo menos um dos seguintes: 1) Acaixa de verificação "Permitir que usuários se sincronizemcom esta pasta" é verificada; 2) A caixa de verificação "Não. permitir que usuários se sincronizem com esta pasta" é desa-bilitada; 3) A caixa de edição de nome da Pasta Sincronizadaé ler/gravar; 4) A caixa de edição de Descrição éler/gravar; 5) Os botões de Configurações, OK, Cancelar eAplicar estão disponíveis; 6) Os controles nos grupos de Ti-po de Sincronização e Resolução de Conflitos são desabilita-dos; e 7) Todos os controles na caixa de grupo de Usuários(na tabulação) podem ser desabilitados. 0 usuário pode digi-tar um nome e descrição e pode especificar as configuraçõesna pasta. Aplicar deve ser clicado para criar a pasta sin-cronizada.
Em outro exemplo, pode ser implementado o gerenci-amento de uma pasta sincronizada existente. Por exemplo, sea caixa de diálogo for chamada em uma pasta que é uma pastasincronizada existente, pode ser executado um dos seguintes:1) A caixa de verificação "Permitir que usuários se sincro-nizem com esta pasta" é verificada; 2) A caixa de verifica-ção "Não permitir que usuários se sincronizem com esta pas-ta" é desabilitada; 3) A caixa de edição de nome da PastaSincronizada é só para leitura. Isto é porque o nome é umidentificador com extensão de comunidade; 4) A caixa de edi-ção de Descrição é ler/gravar; 5) Os botões de Configura-ções, OK, Cancelar e Aplicar estão disponíveis; 6) Os con-troles nos grupos de Tipo de Sincronização e Resolução deConflitos são habilitados; e 7) Todos os controles na caixado grupo de Usuários (na tabulação) podem ser habilitados.
Para apagar uma pasta sincronizada, o usuário podeverificar a caixa de verificação "Não permitir que usuáriosse sincronizem com esta pasta". Neste ponto, todos os demaiscontroles exceto OK e "Permitir que usuários se sincronizemcom esta pasta" são desabilitados. Quando OK é clicado, apa-rece um diálogo de confirmação e a pasta sincronizada é re-movida. 0 recipiente do sistema de armazenamento de dados etodos os seus dados permanecem intactos. Apenas a cópia since outros metadados da pasta sincronizada podem ser removi-dos .
0 componente integrado 510 pode apresentar tambémdiálogo referente à associação a uma pasta sincronizada. Comreferência breve à Figura 8, é mostrado um instantâneo detela 800 que proporcionou a associação de uma pasta sincro-nizada de acordo com o objeto reivindicado. 0 instantâneo detela 800 proporciona a entrada de um nome de pasta sincroni-zada, em que, se o diálogo processar a solicitação de asso-ciação sem erro, um instantâneo de tela 810 pode ser exibi-do. O instantâneo de tela 810 informa que a pasta especificaestá sincronizado e de quaisquer papéis associados a ela. Emum exemplo, se o usuário selecionar "Gerenciar", a caixa dediálogo atualmente aberta pode ser fechada e o diálogo sin-cronizado pode aparecer.
Além do mais, o componente integrado 510 pode im-plementar um aplicativo especialista para facilitar a utili-zação do componente sinc 506 de modo a se obter uma comuni-dade sincronizada par-a-par segura. Com referência breve àFigura 9, é exibido um instantâneo de tela 900, em que umaplicativo especialista pode permitir o convite de um usuá-rio dispar e a sincronização de um dado, pasta e/ou recipi-ente específicos. Um instantâneo de tela 910 permite que umusuário selecione a técnica de convite a ser implementadacom a sincronização específica.
Se o usuário seleciona convidar por e-mail, umconvite por e-mail pode ser criado com texto e um e-mail comanexo de convite. Com referência breve à Figura 10, um ins-tantâneo de tela 1000 mostra uma confirmação de convite pore-mail enviado. Além disto, um instantâneo de tela 1010 mos-tra a conclusão do aplicativo especialista em convidar usuá-rio sincronizado implementado pelo componente integrado 510.
Com referência breve à Figura 11, um instantâneode tela 1100 mostra uma tela de aplicativo especialista quepode ser exibida quando o usuário seleciona salvar o convitecomo arquivo. Deve ficar entendido que o nome de arquivo, alocalização e/ou extensão podem ser selecionados de qualquertipo adequado associado ao sistema operacional. Com referên-cia à Figura 12, um instantâneo de tela 1200 mostra a veri-ficação da conclusão pelo usuário do procedimento de salvaro convite em um local dentro do aplicativo especialista emconvidar usuário sincronizado. A Figura 13 é um instantâneode tela 1300 que permite que um usuário aceite o convite(diálogo de aceitação de convite, por exemplo). O usuáriopode clicar em um convite (como, por exemplo, de e-mail, deanexo, etc.), em que o usuário pode escolher uma pasta a sersincronizada com a pasta sincronizada. Como mostra o instan-tâneo de tela 1300, o usuário pode escolher qualquer pastaadequada a ser sincronizada com uma pasta especifica que jáesteja sincronizada.
Com referência à Figura 14, é mostrado um instan-tâneo de tela 1400 que implementa um complemento do sistemade armazenamento de dados, em que a funcionalidade de sin-cronização do sistema de armazenamento de dados pode ser de-composta em fatores como um complemento. 0 instantâneo detela 1400 mostra nomes de usuário, nomes de computador e di-versos níveis de permissão (como, por exemplo, níveis, aces-so, etc.). Continuando com a Figura 14, um instantâneo detela 1410 mostra uma tela "foi impossível encontrar usuário"que exibe para um usuário quando um usuário solicitado não éencontrado. Para adicionar um usuário, o usuário pode clicarno texto em que se lê "Clicar aqui para adicionar usuário".
O usuário digita então o nome do usuário convidado. O nomedo usuário pode ser introduzido de qualquer maneira adequa-da. Por exemplo, o nome pode ser introduzido por pelo menosum dos seguintes: 1) domínio\nome alternativo (Red-mond\billg); 2) nome alternativo (como, por exemplo, billg,em que um erro instantâneo pode ser implementado se o nomealternativo não puder resolver unicamente); e 3) nome (BillGrable, por exemplo). O usuário pode teclar Escape para can-celar a operação. Quando a tecla enter é apertada, o nome dousuário pode ser resolvido. Dentro do instantâneo de tela1410, se encontrar pessoas for clicado, o diálogo "Foi im-possível encontrar Usuário" pode ser fechado e o apanhadorde usuário é exibido. Nomes de usuário não podem ser edita-dos uma vez resolvidos nomes de usuário. Os usuários podemser apagados completamente (um diálogo de confirmação apare-ce, por exemplo). Os usuários podem ser adicionados com onível de permissão pré-definido de "Leitor".
Quando um Gerente clica justamente em uma linhapara um usuário, um menu de contexto com escolhas pode serexibido (como, por exemplo, leitor, gravador, gerente, remo-ver, etc.). O papel atual do usuário pode ser verificado.Quando um Usuário clica justamente em uma linha para outrousuário ou cópia, nenhum menu é exibido. Quando um usuárioclica na linha para a cópia atual, é exibido um menu conten-do apenas o item de menu Remover. Deve ficar entendido quepode haver várias cópias (pares de usuários/computadores,por exemplo) que correspondem a um dado usuário. Pode havertambém várias cópias que correspondem a um dado par de usuá-rios/computadores. Isto corresponde a vários recrutamentos.
Os convites podem ser de um ponto terminal para umusuário. Para sincronização através de intermediário (STI) ,faz sentido ter pelo menos uma das seguintes escolhas: 1)Criar um convite para sincronização com o ponto terminal STIassim como com todos os pontos terminais do sistema de arma-zenamento de dados. Isto é razoável se o recipiente estiverconectado a todos os pontos terminais. Neste caso, o pontoterminal STI torna-se atualizado imediatamente sempre que osdados do recipiente se alteram; e 2) Criar um convite parasincronizar-se com o ponto terminal STI apenas. Neste caso,os demais recipientes são desconhecidos. Quando um convite éaceito, a pasta sincronizada é criada como usual. Uma mensa-gem de AnunciarCópia é criada também. 0 estabelecimento deconexão continua.
0 componente sinc 506 pode incluir também um com-ponente de interface de programação de aplicativos (API)512, que expõe pelo menos uma operação associada ao compo-nente sinc 506. 0 componente API 512 pode realizar a criaçãoe/ou gerenciamento de pastas sincronizadas. Por exemplo, ocomponente API 512 pode implementar um espaço de no-me .OS.armazenamento.sincronização.auto-hospedeiro. 0 compo-nente API 512 pode utilizar diversos pseudo-códigos, em queo Apêndice A é um exemplo de tais pseudo-códigos que propor-ciona capacidade de programação para o objeto reivindicado.
A Figura 6 mostra um sistema 600 que utiliza inte-ligência para facilitar a sincronização de dados associadosa pelo menos dois sistemas de armazenamento de dados dispa-res. 0 sistema 600 pode inclui um sistema de armazenamentode dados 602, um sistema de armazenamento de dados díspar604 e um componente sinc 606, que podem ser todos substanci-almente semelhantes aos respectivos componentes e sistemasdescritos nas Figuras anteriores. 0 sistema 600 inclui tam-bém um componente inteligente 608. O componente inteligente608 pode ser utilizado pelo componente sinc 606 para facili-tar a sincronização de dados associados a pelo menos doissistemas de armazenamento de dados díspares.
Deve ficar entendido que o componente inteligente608 pode proporcionar raciocínio sobre ou inferir estados dosistema, ambiente e/ou usuário a partir de um conjunto deobservações captadas por meio de eventos e/ou dados. A infe-rência pode ser utilizada para identificar um contexto ouação específica, ou pode gerar uma distribuição de probabi-lidades através de estados, por exemplo. A inferência podeser probabilística - isto é, a computação de uma distribui-ção de probabilidades través de estados de interesse com ba-se na consideração de dados e eventos. A inferência podetambém referir-se a técnicas utilizadas para compor eventosde nível mais elevado a partir de um conjunto de eventose/ou dados. Tal inferência resulta na construção de novoseventos ou ações a partir de um conjunto de eventos observa-dos e/ou dados de evento armazenados, quer os eventos este-jam ou não correlacionados em proximidade temporal íntima, equer os eventos e dados sejam oriundos de uma ou várias fon-tes de eventos e dados. Diversos esquemas e/ou sistemas declassificação (treinados explícita e/ou implicitamente) (co-mo, por exemplo, máquinas vetores de suporte, redes neurais,sistemas especializados, redes de crença bayesiana, lógicadifusa, mecanismos de fusão de dados...) podem ser utiliza-dos em conexão com a execução de ações automáticas e/ou in-feridas relacionadas com o objeto reivindicado.;
Um classificador é uma função que mapeia um vetorde atributo de entrada, χ = (xl, x2, x3, x4, xn) na confian-ça de que a entrada pertence a uma classe, isto é, f(x) =confiança (classe). Tal classificação pode utilizar uma aná-lise probabilística e/ou estatística (como, por exemplo, de-composição em fatores nas utilidades e custos da análise) demodo a prognosticar ou inferir uma ação que um usuário dese-ja que seja automaticamente executada. Uma máquina vetorialde suporte (SVM) é um exemplo de classificador que pode serutilizado. A SVM opera encontrando uma hiper-superfície noespaço de entradas possíveis, hiper-superfície esta que ten-ta dividir os critérios de acionamento a partir dos eventosnão acionadores. Intuitivamente, isto torna a classificaçãocorreta para a verificação de dados que estão próximos, masnão são idênticos a dados de treinamento. Podem ser utiliza-das outras abordagens de classificação de modelos orientadase não orientadas incluem, por exemplo, Bayes ingênuo, redesbayesianas, árvores de decisão, redes neurais, modelos delógica difusa e modelos de classificação probabilistica queapresentam diferentes padrões de independência. A classifi-cação utilizada aqui inclui também a regressão estatística,que é utilizada para desenvolver modelos de prioridade.
As Figuras 17-18 mostram metodologias de acordocom o objeto reivindicado. Para simplificar a explanação, asmetodologias são mostradas e descritas como uma série de a-tos. Deve ficar entendido que a presente inovação não estálimitada pelos atos mostrados e/ou pela ordem dos atos, po-dendo os atos podendo ocorrer, por exemplo, em diversas or-dens e/ou concomitantemente com outros atos não apresentadose descritos aqui. Além disto, nem todos os atos mostradospodem ser necessários para implementar as metodologias deacordo com o objeto reivindicado. Além disto, os versados natécnica entenderão que as metodologias podem ser alternati-vamente representadas como uma série de estados inter-relacionados por meio de um diagrama de estados ou eventos.
A Figura 17 mostra uma metodologia 1700 para sin-cronizar dados associados a pelo menos dois sistemas de ar-mazenamento de dados díspares. No número de referência 1702,podem ser identificados dados dentro de um sistema de arraa-zenamento de dados que serão sincronizados e/ou participarãode uma relação de sincronização. 0 sistema de armazenamentode dados pode ser um modelo complexo baseado, pelo menos, emuma estrutura de banco de dados, na qual um item, um sub-item, uma propriedade e uma relação são definidos para per-mitir a representação de informações dentro de um sistema dearmazenamento de dados como ocorrências de tipos complexos.0 sistema de armazenamento de dados pode utilizar um conjun-to de blocos de construção para criar e gerenciar objetosricos, que persistem e link entre objetos. Um item pode serdefinido como a menor unidade de consistência dentro do sis-tema de armazenamento de dados que pode ser assegurada, se-rializada, sincronizada, copiada, reserva/restaurada, etc. 0item é uma ocorrência de um tipo, em que todos os itens nosistema de armazenamento de dados podem ser armazenados emuma única extensão global de itens. O sistema de armazena-mento de dados pode ser baseado em pelo menos um item e/ouuma estrutura de recipiente. Deve ficar entendido que o sis-tema de armazenamento de dados pode representar um sistemade armazenamento de arquivos baseado em banco de dados parasuportar a funcionalidade discutida acima, em que quaisquercaracterísticas e/ou atributos adequados podem ser implemen-tados. Deve ficar entendido que os dados podem ser identifi-cados, por exemplo, por um usuário que deseje sincronizaruma parte específica dos dados.
No número de referência 1704, pelo menos um usuá-rio pode ser convidado a participar de uma relação de sin-cronização associada aos dados identificados. Por exemplo,um usuário pode identificar uma parte dos dados na qual umarelação de sincronização pode ser instanciada convidando-seum computador portátil a participar. Assim, o usuário podeconvidar utilizando qualquer técnica adequada, tal como, masnão limitada a, e-mail, endereço IP, nome de usuário, nomealternativo, nome, etc. No número de referência 1706, os ní-veis de acessibilidade podem ser atribuídos a diversos usuá-rios dentro da relação de sincronização. Por exemplo, um ge-rente pode criar uma relação de sincronização, em que diver-sas funções de ler, gravar e/ou adicionar podem ser atribuí-das aos usuários.
A Figura 18 mostra uma metodologia 1800 que faci-lita o acionamento de mecanismos de sincronização existentesdentro de um sistema de armazenamento de dados de modo a as-segurar a consistência de dados entre sistemas de armazena-mento de dados. No número de referência 1802, podem ser i-dentificados dados dentro do sistema de armazenamento de da-dos a serem sincronizados e/ou a participarem de uma comuni-dade sincronizada par-a-par. No número de referência 1802,uma técnica de sincronização existente pode ser acionada apartir do sistema de armazenamento de dados de modo a seproporcionar sincronização de dados à comunidade par-a-pare/ou outra relação de sincronização. Por exemplo, o rastrea-mento dentro do sistema de armazenamento de dados pode cap-tar a(s) alteração(ões) de dados nas entidades de modo a fa-cilitar a sincronização de dados entre dois sistemas díspa-res que mantêm conjuntos de dados.
No número de referência 1806, uma comunidade desincronização par-a-par pode ser criada com pelo menos umusuário participando dela. A comunidade sincronizada podeincluir cópias (como, por exemplo, pastas sincronizadas per-tencentes a usuários na comunidade) e um gerente (como, porexemplo, um membro da comunidade que está autorizado a fazeralterações na lista de associação das cópias) . Em um exem-plo, os gerentes processam uma solicitação e fazem altera-ções nos metadados de associação e em seguida sincronizam osmetadados com os outros na comunidade. No número de referên-cia 1808, cada usuário dentro da comunidade pode participarcom um nivel de acesso aos dados dentro de tal comunidadepar-a-par sincronizada.
De modo a se proporcionar contexto adicional paraimplementar diversos aspectos do objeto reivindicado, as Fi-guras 19-20 e a discussão seguintes se destinam a forneceruma descrição geral, breve, de uma ambiente de computaçãoadequado no qual os diversos aspectos da presente inovaçãopodem ser implementados. Embora o objeto reivindicado tenhasido descrito acima no contexto geral de instruções executá-veis por computador de um programa de computador que roda emum computador local e/ou computador remoto, os versados natécnica reconhecerão que a presente inovação pode ser tambémimplementada em combinação com outros módulos de programa.Geralmente, os módulos de programa incluem rotinas, progra-mas, componentes, estruturas de dados, etc., que executamtarefas especificas e/ou implementam tipos de dados abstra-tos específicos.
Além do mais, os versados na técnica entenderãoque os métodos da invenção podem ser postos em prática comoutras configurações de sistema de computador, inclusivesistemas de computador de processador único ou vários pro-cessadores, minicomputadores, computadores de grande parte,assim como computadores pessoais, dispositivos de computaçãode mão, eletrônicos de consumo baseados em microprocessadore/ou programáveis e semelhantes, cada um dos quais pode co-municar-se operacionalmente com um ou mais dispositivos a-fins. Os aspectos mostrados do objeto reivindicado podem sertambém postos em prática em ambientes de computação distri-buídos que são conectados através de uma rede de comunica-ção. Entretanto, alguns, se não todos, aspectos da presenteinovação podem ser postos em prática em computadores inde-pendentes. Em um ambiente de computação distribuído, os mó-dulos de programa podem ser localizados em dispositivos dearmazenamento em memória locais e/ou remotos.
A Figura 19 é um diagrama de blocos esquemático deum ambiente de computação de amostra 1900 com o qual o obje-to reivindicado pode interagir. O sistema 1900 inclui um oumais clientes 1910. 0(s) cliente(s) 1910 pode ser um hardwa-re e/ou software (encadeamentos, processos, dispositivos decomputação, por exemplo). 0 sistema 1900 inclui também um oumais servidores 1920. 0(s) servidor(es) 1920 podem ser hard-ware e/ou software (encadeamentos, processos, dispositivosde computação, etc.). Os servidores 1920 pode alojar encade-amentos para a execução de transformações utilizando a pre-sente inovação, por exemplo.
Uma comunicação possível entre um cliente 1910 eum servidor 1920 pode ser sob a forma de um pacote de dadosadaptado para ser transmitido entre dois ou mais processosde computador. O sistema 1900 inclui uma estrutura de comu-nicação 1940 que pode ser utilizada para facilitar as comu-nicações entre o(s) cliente(s) 1910 e o(s) servidor(es)1920. 0(s) cliente(s) 1910 são operacionalmente conectados aum ou mais armazenamentos de dados de cliente 1950, que po-dem ser utilizados para armazenar informações locais parao(s) cliente(s) 1910. De maneira semelhante, o(s) servi-dor (es) 1920 são operacionalmente conectados a um ou maisarmazenamentos de dados de servidor 1930, que podem ser uti-lizados para armazenar informações locais para os servidores1920.
Com .referência à Figura 20, um ambiente exemplar2000 para implementar diversos aspectos do objeto reivindi-cado inclui um computador 2012. O computador 2012 inclui umaunidade de processamento 2014, uma memória de sistema 2016 eum barramento de sistema 2018. 0 barramento de sistema 2018acopla componentes do sistema, inclusive, mas não limitadosa, a memória de sistema 2106, à unidade de processamento2014. A unidade de processamento 2014 pode ser qualquer umde diversos processadores existentes. Microprocessadores du-plos e outras arquiteturas de multiprocessador podem sertambém utilizadas como a unidade de processamento 2014.
0 barramento de sistema 2018 pode ser qualquer devários tipos de estrutura (s) de barramento, que incluem obarramento de memória ou controlador de memória, um barra-mento periférico ou um barramento externo e/ou um barramentolocal utilizando-se diversas arquiteturas de barramento e-xistentes, que incluem, mas não se limitam a, Arquitetura dePadrão Industrial (ISA), Arquitetura de Micro-Canal (MSA),ISA Estendida (EISA), Eletrônicos de Acionamento Inteligen-tes (IDE), Barramento Local VESA (VLB), Interconexão de Com-ponentes Periféricos (PCI), Barramento de Cartão, BarramentoSerial Universal (USB), Porta de Gráficos Avançada (AGP),barramento da Associação Internacional de Cartões de Memóriade Computador Pessoal (PCMCIA), Firewire (IEEE 1394) e In-terface com Sistemas de Computador de Pequeno Porte (SCSI).
A memória de sistema 2106 inclui memória volátil2020 e memória não volátil 2022. 0 sistema de entrada/saidabásico (BIOS), que contém as rotinas básicas para transferirinformações entre os elementos dentro do computador 2012,tal como durante a partida, é armazenado na memória não vo-látil 2022. A titulo de ilustração, e não de limitação, amemória não volátil 2022 pode incluir uma memória só de lei-tura (ROM), ROM programável (PROM), ROM eletricamente pro-gramável (EPROM), ROM programável eletricamente apagável(EEPROM) ou memória flash. A memória volátil 2020 inclui umamemória de acesso aleatório (RAM), que atua como memória ca-che externa. A titulo de ilustração e não de limitação, aRAM está disponível sob muitas formas, tais como RAM estáti-ca (SRAM), RAM dinâmica (DRAM), DRAM sincrona (SDRAM), SDRAMde taxa de dados dupla (DDR SDRAM), SDRAM aperfeiçoada(ESDRAM), DRAM de LinkSinc (SLDRAM), RAM direta Rambus(RDRAM), RAM dinâmica Rambus direta (DRDRAM) e RAM dinâmicaRambus (RDRAM).
O computador 2012 inclui também meios de armazena-mento em computador removíveis/não removíveis, voláteis/nãovoláteis. A Figura 20 mostra armazenamento em disco 2024,por exemplo. 0 armazenamento em disco 2024 inclui, mas nãose limita a, dispositivos como uma unidade de disco magnéti-ca, uma unidade de disquete, uma unidade de fita, uma unida-de Zip, uma unidade LS-100, um cartão de memória flash oubastão de memória. Além disto, o armazenamento em disco 2024pode incluir meios de armazenamento separadamente ou em com-binação com outros meios de armazenamento, que incluem, masnão se limitam a, uma unidade de disco óptica, tal como umdispositivo ROM de disco compacto (CD-ROM), uma unidade pas-sível de gravação em CD (Unidade CD-R), uma unidade passívelde gravação em CD (Unidade CD-RW) ou uma unidade ROM de dis-co versátil digital (DVD-ROM). Para facilitar a conexão dosdispositivos de armazenamento em disco 2024 com o barramentode sistema 2018, uma interface removível ou não removível étipicamente utilizada, tal como a interface 2026.
Deve ficar entendido que a Figura 20 descreve umsoftware que atua como um intermediário entre os usuários eos recursos básicos do computador descritos no ambiente ope-racional adequado 2000. Tal software inclui um sistema ope-racional 2028. O sistema operacional 2028, que pode ser ar-mazenado no armazenamento em disco 2024, atua de modo a con-trolar e alocar recursos do sistema de computador 2012. Osaplicativos 2030 do sistema tiram vantagem do gerenciamentode recursos pelo sistema operacional 2028 através de módulosde programa 2032 e dados de programa 2034 armazenados ou namemória de sistema 2016 ou no armazenamento em disco 2024.Deve ficar entendido que o objeto reivindicado pode ser im-plementado com diversos sistemas operacionais ou combinaçõesde sistemas operacionais.Um usuário introduz comandos ou informações nocomputador 2012 através de dispositivo(s) de entrada 2036.Os dispositivos entrada 2036 incluem, mas não estão limita-dos a, um dispositivo indicador tal como um mouse, track-bali, caneta, mesa sensível ao toque, teclado, microfone,joystick, mesa para jogos, prato de satélite, digitalizador,cartão de sintonizador de TV, câmera digital, câmera de ví-deo digital, câmera da rede e semelhantes. Estes e outrosdispositivos de entrada são conectados à unidade de proces-samento 2014 através do barramento de sistema 2018 por meiode porta(s) de interface 2038. A(s) porta(s) de interface2028 inclui(em), por exemplo, uma porta serial, uma portaparalela, uma porta para jogos e um barramento serial uni-versal (USB). 0(s) dispositivo(s) de saída 2040 utiliza(m)algumas do mesmo tipo de portas como dispositivo (s) de en-trada 2036. Assim, por exemplo, uma parte USB pode ser uti-lizada para fornecer entrada ao computador 2012 e paratransmitir informações do computador 2012 para um dispositi-vo de saída 2040. O adaptador de saída é apresentado paramostrar que há alguns dispositivos de saída 2040 como moni-tores, alto-falantes e impressoras, entre outros dispositi-vos de saída 2040, que exigem adaptadores especiais. Os a-daptadores de saída 2042 incluem, a título de ilustração enão de limitação, placas de vídeo e som que proporcionam ummeio de ligação e entre o dispositivo de saída 2040 e o bar-ramento de sistema 2018. Deve-se observar que outros usuá-rios e/ou sistemas de dispositivos apresentam capacidadestanto de entrada e saída, tais como o(s) computador (es) re-moto (s) 2044.
O computador 2012 pode operar em um ambiente defuncionamento em rede utilizando conexões lógicas com um oumais computadores remotos, tais como o(s) computador(es) re-moto(s) 2044. 0(s) computador(es) remoto 2044 pode(m) ser umcomputador pessoal, um servidor, um roteador, um PC de rede,uma estação de trabalho, um aparelho baseado em microproces-sador, um dispositivo par ou outro nó de rede comum e seme-lhantes, e inclui(em) tipicamente muitos ou todos os elemen-tos descritos com relação ao computador 2012. Para abreviar,é mostrado apenas um dispositivo de armazenamento em memória2046 com computador(es) remoto(s) 2044. 0(s) computador(es)remoto(s) 2044 é(são) logicamente conectado(s) ao computador2012 através de uma interface com rede 2048 e em seguida fi-sicamente conectado(s) por meio de uma conexão de comunica-ção 2050. A interface com rede 2048 abrange redes de comuni-cação cabeadas e/ou sem fio, tais como redes de área local(LANs) e redes de área estendida (WANs) . As tecnologias LANincluem Interface de Dados Distribuída de Fibra (FDDI), In-terface de Dados Distribuída de Cobre (CDDI), Ethernet, To-ken Ring e semelhantes. As tecnologias WAN incluem, mas nãose limitam a, conexões de ponto para ponto, redes de comuta-ção por circuito como Redes Digitais de Serviços Integrados(ISDN) e variações delas, redes de comutação por pacote eLinhas de Assinante Digitais (DSL).
A(s) conexão(ões) de comunicação 2050 refere(m)-seao hardware/software utilizado para conectar a interface comrede 2048 ao barramento 2018. Embora a conexão de comunica-ção 2050 seja mostrado por clareza de ilustração no interiordo computador 2012, ela pode ser externa ao computador 2012.
O hardware/software necessário para a conexão com a interfa-ce com a rede 2048 inclui, apenas como exemplo, tecnologiasinternas e externas, tais como modems que incluem modems dotipo telefônico regular, modems a cabo e modems DSL, adapta-dores ISDN e placas de Ethernet.
O que foi descrito acima inclui exemplos da pre-sente inovação. Evidentemente, não é possível descrever cadacombinação concebível de componentes ou metodologias parafins de descrição do objeto reivindicado, mas os versados natécnica podem reconhecer que muitas outras combinações epermutas da presente inovação são possíveis. Por conseguin-te, o objeto reivindicado pretende abranger todas as altera-ções, modificações e variações que se incluem dentro do es-pírito e alcance das reivindicações anexas.
Em particular e no que se refere às diversas fun-ções desempenhadas pelos componentes, dispositivos, circui-tos, sistema e semelhantes acima descritos, os termos (in-clusive uma referência a um "dispositivo") utilizados paradescrever tais componentes pretendem corresponder, a menosque indicado de outro modo, a qualquer componente que desem-penhe a função especificada do componente descrito (um equi-valente funcional, por exemplo), embora não estruturalmenteequivalente à estrutura revelada, que desempenha a funçãosob os aspectos exemplares aqui ilustrados do objeto reivin-dicado. A este respeito, deve-se reconhecer que a inovaçãoinclui um sistema assim como um meio passível de leitura porcomputador que tem instruções executáveis por computador pa-ra executar os atos e/ou eventos dos diversos métodos do ob-jeto reivindicado.
Além disso, embora uma característica específicada presente inovação possa ter sido revelada com relação aapenas uma de várias implementações, tal característica podeser combinada com uma ou mais outras características das de-mais implementações conforme possa ser desejado e vantajosopara qualquer aplicativo dado ou específico. Além disto, namedida em que os termos "inclui" e "que inclui" e variantesdeles são utilizados seja na descrição detalhada, seja nasreivindicações, estes termos pretendem ser inclusivos de umamaneira semelhante ao termo "que compreende".Apêndice A
espaçodenome OS.Armazenamento. Sincronização.Auto-Hospedeiro
{
/// <sumário>
/// Isto representa o compartilhamento de ar-quivos do sistema de
armazenamento de Dados que corresponde a um/// Pasta Sincronizada.
/// </sumário>
Compartilhamento de classe pública
{
Percurso em cadeia público { obter; }
Nome em cadeia público { obter; }
}
/// <sumário>
/// 0 modo de sincronização de um Par.
Ill <sumário>
enum ModoDeSincronização
{
Automático,Manual
}
/// <sumário>
/// 0 ControladorSinc é projetado como umobjeto de longa execução
/// que monitora o armazenamento pré-definido local para pastas
/// sincronizadas. Ele responde a alteraçõesnas pastas sincronizadas
/// efetuando as operações de sincronizaçãoapropriadas. Ele também
/// sincroniza metadados tais como listas deassociados e permissões
/// para todos os pares de uma comunidade.
/// Isto é um objeto único que é iniciadochamando-se o método estático
/// Iniciar, que retorna devolve uma alça àocorrência do
/// ControladorSinc criado. Para parar, cha-mar o método Parar() nesta
/// ocorrência. Alternativamente, o padrãode utilização pode ser
/// utilizado para parar automaticamente ocontrolador:
/// utilizando (ControladorSinc. IniciarO)
/// {
///
/// }
/// <sumário>
ControladorSinc de classe pública : Objeto-
Descartável{
IniciarO vazio estático público;PararO vazio público;
}
/// <sumário>
/// Isto representa uma PastaSincronizada
local.
/// <sumário>
PastaSincronizada de classe pública{
/// <sumário>
/// 0 compartilhamento de arquivos do
armazenamento de Dados
/// <sumário>
/// <valor></valor>
Compartilhamento público Compartilhamen-to { obter; }
Nome de cadeia público { obter; }Descrição de cadeia pública { obter; }Recipiente de Itens públicos { obter; }
/// <sumário>
/// Devolve todos os Usuários que sin-cronizam com esta pasta
/// sincronizada/// <sumário>/// <valor><valor>Usuários públicos Usuários { obter; }
/// <sumário>
/// Cria uma nova pasta sincronizada no
recipiente especificado/// <sumário>
/// <nome param="recipiente"X/param>/// <retorna> A pasta sincronizada cria-da. <retorna>
Criar PastaSincronizada estática públi-ca(recipiente de Itens,
NomeDePastasincronizada em cadeia, Men-sagemDeerro em cadeia
fora);
/// <sumário>
/// Abre uma pasta sincronizada existen-te .
/// </sumário>
/// <nome param="recipiente"X/param>
Abrir PastaSincronizada estática pública
(recipiente de Itens);
/// <sumário>/// Associa-se como uma comunidade exis-tente .
/// <sumário>
/// <ηorne param="recipiente">0 recipientea ser
/// compartilhado</param>
/// <nome pa-ram="NomeDePastasincronizada"> O nome da
/// comunidade</param>
/// <nome param>="par"x/param>
/// <retorna></retorna>
Associar-se à PastaSincronizada estáticapública (recipiente de Itens,
NomeDePastasincronizada, Par par)
/// <sumário>
/// Istò remove todas as pastas para umusuário.
/// Se isto remover a pasta do último Ge-rente e deixar apenas pastas
/// de não Gerente, isto lança uma exce-ção .
/// <sumário>
/// <nome param="usuário"x/param>Remover vazio público (Usuário usuário);
/// <sumário>
/// Isto remove a pasta de um par. Se es-te não for o par atual,
/// o usuário atual deve ser o proprietá-rio ou um gerente.
/// Se isto remover a pasta do último Ge-
rente e deixar apenas pastas
/// de não Gerente, isto lança uma exceção.
/// <sumário>
/// Cnome param="par"x/param>Remover vazio público(Par Par);
/// <sumário>
/// Inicia sinc com todos os pares apro-priados.
/// <sumário>
SincronizarO vazio público;
/// <sumário>
/// Salva todas as alterações de configu-ração na pasta, seus usuários e
/// pares, etc., no armazenamento.
/// <sumário>
SalvarO vazio público;
}
/// <sumário>
/// Os tipos de usuários no sistema./// <sumário>enum TipoDeUsuário{
Leitor,
Gravador,
Gerente
}
/// <sumário>
/// Um conjunto de Usuários. Usuários podem
ser adicionados e
/// removidos deste conjunto./// <sumário>
Usuários de classe pública : IEnumerá-
vel<Usuário>{
IEnumerador ObterEnumerador();Adicionar vazio(Usuário usuário)
Remover vazio(Usuário usuário);
}
/// <sumário>
/// Um conjunto de Pares. Pares podem seradicionados e removidos
/// deste conjunto./// <sumário>
Pares de classe pública : IEnumerável<Pares>possuem Pares.
Ievn.
}
pio, redmond.
{
IEnumerador ObterEnumerador() ;Adicionar vazio(Par Par);Remover vazio(Par Par);
}
/// <sumário>
/// Representa um único Usuário. Usuários
/// <sumário>
Usuário de classe pública{
Sid de Orient público { obter; }/// <sumário>
/// 0 nome de usuário, como, por exemplo,/// <sumário>
NomeDeUsuário em cadeia público { obter;
/// <sumário>
/// 0 domínio do usuário, como, por exem-/// <sumário>
Domínio em cadeia público { obter; }/// <sumário>
/// O tipo do usuário, como, por exemplo,
Gerente. Configurar isto/// exige que se seja um gerente, casocontrário uma exceção é
/// lançada./// <sumário>
TipoDeUsuário público TipoDeUsuário { ob-ter; configurar)
/// <sumário>
/// O conjunto de Pares de propriedadedeste Usuário.
/// Isto é nulo se o Usuário tiver sidoconvidado, mas ainda não se
/// associou (aceitou).
/// <sumário>
/// <valor></valor>
Par[] público Pares { obter; }
}
/// <sumário>
/// Isto representa uma pasta remota que sesincroniza com uma
/// PastaSincronizada local.
/// <sumário>
Par de classe pública/// <sumário>
/// O compartilhamentodearquivos do sis-tema de armazenamento de
/// Dados
/// </sumário>
/// <valor></valor>
Compartilhamento público Compartilhamen-to { obter; }
/// <sumário>
/// O proprietário do Par
/// </sumário>
/// <valor></valor>Usuário público Usuário { obter; }
/// <sumário>
/// O modo de sincronização do Par
/// </sumário>
/// <valor></valor>ModoDeSincronização público ModoDeSin-cronização { obter; }

Claims (20)

1. Sistema que facilita a sincronização de dadosdentro de um sistema de armazenamento de dados,CARACTERIZADO pelo fato de que compreende:um componente de interface que aciona uma técnicade sincronização dentro do sistema de armazenamento de da-dos; eum componente de sincronização que proporciona umasincronização de dados par-a-par segura com base em parte natécnica de sincronização de modo a permitir a pelo menos umusuário um acesso em níveis aos dados sincronizados.
2. Sistema, de acordo com a reivindicação 1,CARACTERIZADO pelo fato de que a técnica de sincronizaçãoutiliza um componente de rastreamento que capta uma altera-ção de dados em uma entidade dentro do sistema de armazena-mento de dados de modo a facilitar a sincronização de dadosentre dois sistemas díspares que mantêm conjuntos de dados.
3. Sistema, de acordo com a reivindicação 1,CARACTERIZlUDO pelo fato de que o acesso em níveis inclui pe-lo menos um papel e uma permissão de acesso associada.
4. Sistema, de acordo com a reivindicação 3,CARACTERIZADO pelo fato de que o papel e a permissão de a-cesso associada são um dos seguintes: 1) um gerente que podeler dados, gravar dados, modificar dados, adicionar dados,convidar um usuário e revogar uma permissão; 2) um gravadorque pode ler dados, gravar dados, modificar dados e adicio-nar dados; 3) um leitor que pode ler dados; e 4) um contri-buinte que pode ler dados e adicionar dados.
5. Sistema, de acordo com a reivindicação 1,CARACTERIZADO pelo fato de que a sincronização de dados par-a-par segura é uma comunidade sincronizada com pelo menosuma cópia, em que a cópia é uma pasta sincronizada que per-tence a um usuário dentro da comunidade.
6. Sistema, de acordo com a reivindicação 1,CARACTERIZADO pelo fato de que compreende adicionalmente umcomponente de sincronização manual que permite a um usuáriosincronizar manualmente dados.
7. Sistema, de acordo com a reivindicação 1,CARACTERIZADO pelo fato de que compreende adicionalmente umcomponente de sincronização automática que proporciona umasincronização automática de dados eleitos para a sincroniza-ção de dados par-a-par.
8. Sistema, de acordo com a reivindicação 1,CARACTERIZADO pelo fato de que compreende adicionalmente umcomponente gerenciador de sincronização de usuário que pro-porciona pelo menos um dos seguintes: uma relação sincroni-zada; um recipiente sincronizado; um convite a um usuáriopara participar da sincronização; uma aceitação de um convi-te; uma participação em uma comunidade; uma remoção de umusuário; e uma manutenção de uma lista de associados.
9. Sistema, de acordo com a reivindicação 1,CARACTERIZADO pelo fato de que o componente de sincronizaçãoimplementa um gerenciamento de uma relação de sincronizaçãocomplexa com base em uma tecnologia de sincronização.
10. Sistema, de acordo com a reivindicação 9,CARACTERIZADO pelo fato de que a relação de sincronizaçãocomplexa é pelo menos um dentre uma configuração; uma anula-ção; e um gerenciamento de segurança.
11. Sistema, de acordo com a reivindicação 9,CARACTERIZADO pelo fato de que a tecnologia de sincronizaçãorefere-se a pelo menos uma dentre uma técnica de sincroniza-ção de dados adequada; e uma técnica de sincronização rela-cionada ao sistema de armazenamento de dados.
12. Sistema, de acordo com a reivindicação 1,CARACTERIZADO pelo fato de que compreende adicionalmente umaplicativo de sincronização par-a-par que roda como um sis-tema local de modo a expor pelo menos uma operação para umaplicativo.
13. Sistema, de acordo com a reivindicação 12,CARACTERIZADO pelo fato de que a operação pode ser pelo me-nos uma das seguintes: criar um compartilhamento em um reci-piente especificado; criar uma permissão para um recipiente;adicionar uma permissão para um recipiente; validar o pro-prietário de um recipiente; configurar uma associação emgrupo com base em uma lista; e apagar um compartilhamentocriado em um recipiente.
14. Sistema, de acordo com a reivindicação 12,CARACTERIZADO pelo fato de que o aplicativo de sincronizaçãopar-a-par roda ativo como um aplicativo para programar sin-cronização e fornecer notificação de progresso.
15. Sistema, de acordo com a reivindicação 1,CARACTERIZADO pelo fato de que o sistema de armazenamento dedados é um sistema baseado em banco de dados que define pelomenos um dentre um item, um sub-item, uma propriedade e umarelação para representar informações como um tipo complexo.
16. Sistema, de acordo com a reivindicação 15,CARACTERIZADO pelo fato de que o sistema de armazenamento dedados inclui pelo menos um dentre uma estrutura de recipien-te e um item que é uma ocorrência de um tipo, o item podendoser armazenado dentro do sistema de armazenamento de dadosem uma única extensão global de itens.
17. Método implementado em computador que facilitaa sincronização de dados dentro de um sistema de armazena-mento de dados, CARACTERIZADO pelo fato de que compreende:identificar dados dentro de um sistema de armaze-namento de dados que devem ser sincronizados;convidar pelo menos um usuário a participar de umarelação de sincronização; e atribuir pelo menos um nivel de acessibilidade aopelo menos um usuário dentro da relação de sincronização.
18. Método, de acordo com a reivindicação 17,CARACTERIZADO pelo fato de que compreende adicionalmente:acionar uma técnica de sincronização existentedentro do sistema de armazenamento de dados; ecriar pelo menos uma cópia dentro de uma comunida-de de sincronização par-a-par.
19. Método, de acordo com a reivindicação 18,CARACTERIZADO pelo fato de que compreende adicionalmente oanúncio, pela cópia, de pelo menos um dentre uma presença nacomunidade de sincronização; e uma intenção de sair da comu-nidade de sincronização pela sincronização de uma solicita-ção .
20. Sistema implementado em computador que facili-ta a sincronização de dados dentro de um sistema de armaze-namento de dados, CARACTERIZADO pelo fato de que compreende:um dispositivo para acionar uma técnica de sincro-nização dentro do sistema de armazenamento de dados; eum dispositivo para proporcionar uma sincronizaçãode dados par-a-par segura com base, pelo menos em parte, natécnica de sincronização de modo a permitir a múltiplos usu-ários um acesso em níveis aos dados sincronizados.
BRPI0615024-1A 2005-08-24 2006-07-20 segurança em aplicativos de sincronização par-a-par BRPI0615024A2 (pt)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/211.119 2005-08-24
US11/211,119 US7930346B2 (en) 2005-08-24 2005-08-24 Security in peer to peer synchronization applications
PCT/US2006/028390 WO2007024380A2 (en) 2005-08-24 2006-07-20 Security in peer to peer synchronization applications

Publications (1)

Publication Number Publication Date
BRPI0615024A2 true BRPI0615024A2 (pt) 2011-04-26

Family

ID=37772095

Family Applications (1)

Application Number Title Priority Date Filing Date
BRPI0615024-1A BRPI0615024A2 (pt) 2005-08-24 2006-07-20 segurança em aplicativos de sincronização par-a-par

Country Status (16)

Country Link
US (1) US7930346B2 (pt)
EP (1) EP1917608B1 (pt)
JP (1) JP4955682B2 (pt)
KR (1) KR101311145B1 (pt)
CN (1) CN101243443A (pt)
AU (1) AU2006284414B2 (pt)
BR (1) BRPI0615024A2 (pt)
CA (1) CA2616242A1 (pt)
EG (1) EG25571A (pt)
IL (1) IL188662A0 (pt)
MX (1) MX2008002502A (pt)
NO (1) NO340412B1 (pt)
NZ (1) NZ565968A (pt)
RU (1) RU2421799C2 (pt)
WO (1) WO2007024380A2 (pt)
ZA (1) ZA200800961B (pt)

Families Citing this family (119)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7689721B2 (en) * 1998-05-29 2010-03-30 Research In Motion Limited System and method for pushing information from a host system to a mobile data communication device
WO2006036763A2 (en) * 2004-09-22 2006-04-06 Cyberdefender Corporation System for distributing information using a secure peer-to-peer network
US8738750B2 (en) * 2005-12-21 2014-05-27 Imran Chaudhri System and method for efficient replication of and access to application specific environments and data
US8527660B2 (en) * 2006-12-22 2013-09-03 Palm, Inc. Data synchronization by communication of modifications
US7680067B2 (en) * 2007-03-09 2010-03-16 Palm, Inc. Peer-to-peer data synchronization architecture
US8402284B2 (en) * 2007-04-30 2013-03-19 Hewlett-Packard Development Company, L.P. Symbiotic storage devices
US20090006451A1 (en) * 2007-06-29 2009-01-01 Microsoft Corporation Web Page-Container Interactions
US8626771B2 (en) * 2007-06-29 2014-01-07 Microsoft Corporation Container reputation
US8838729B2 (en) * 2007-06-29 2014-09-16 Microsoft Corporation Gathering statistics based on container exchange
KR100897849B1 (ko) 2007-09-07 2009-05-15 한국전자통신연구원 비정상 프로세스 탐지 방법 및 장치
US8090685B2 (en) * 2007-09-14 2012-01-03 Microsoft Corporation Knowledge based synchronization of subsets of data with no move condition
US20090196311A1 (en) * 2008-01-31 2009-08-06 Microsoft Corporation Initiation and expiration of objects in a knowledge based framework for a multi-master synchronization environment
US8185495B2 (en) * 2008-02-01 2012-05-22 Microsoft Corporation Representation of qualitative object changes in a knowledge based framework for a multi-master synchronization environment
US8086565B2 (en) * 2008-02-18 2011-12-27 Microsoft Corporation File system watcher in the presence of different file systems
CN101604234B (zh) * 2008-06-13 2011-06-01 英业达股份有限公司 存储装置的数据同步系统及其方法
US8762420B2 (en) * 2008-06-20 2014-06-24 Microsoft Corporation Aggregation of data stored in multiple data stores
US8090681B2 (en) * 2008-06-26 2012-01-03 Microsoft Corporation Resolving conflicts in content management systems
US8458128B2 (en) * 2008-08-26 2013-06-04 Microsoft Corporation Minimal extensions required for multi-master offline and collaboration for devices and web services
US7941410B2 (en) * 2008-09-30 2011-05-10 Microsoft Corporation Method and system of managing conflicts for a set of synchronized folders
US8412930B2 (en) 2008-10-09 2013-04-02 Microsoft Corporation Device authentication within deployable computing environment
US8380663B2 (en) * 2008-12-17 2013-02-19 Sybase, Inc. Data integrity in a database environment through background synchronization
US8832023B2 (en) * 2009-01-30 2014-09-09 Apple Inc. System for managing distributed assets and metadata
US8407241B2 (en) * 2009-06-12 2013-03-26 Microsoft Corporation Content mesh searching
US20100332593A1 (en) * 2009-06-29 2010-12-30 Igor Barash Systems and methods for operating an anti-malware network on a cloud computing platform
US20110029658A1 (en) * 2009-07-24 2011-02-03 Theodore Werth System and methods for providing a multi-device, multi-service platform via a client agent
US9311378B2 (en) * 2009-10-09 2016-04-12 International Business Machines Corporation Data synchronization between a data management system and an external system
US20110153391A1 (en) * 2009-12-21 2011-06-23 Michael Tenbrock Peer-to-peer privacy panel for audience measurement
US20130232198A1 (en) * 2009-12-21 2013-09-05 Arbitron Inc. System and Method for Peer-to-Peer Distribution of Media Exposure Data
GB201007191D0 (en) * 2010-04-29 2010-06-09 British Broadcasting Corp Content provision system
US8924304B2 (en) * 2010-06-04 2014-12-30 Apple Inc. Methods for using unique identifiers to identify systems in collaborative interaction in a mesh network
US20120134282A1 (en) * 2010-11-30 2012-05-31 Nokia Corporation Method and apparatus for selecting devices to form a community
US9002897B2 (en) 2010-12-28 2015-04-07 Microsoft Technology Licensing, Llc Aspected interfaces and methods for synchronized containers and other data structures
WO2012099617A1 (en) 2011-01-20 2012-07-26 Box.Net, Inc. Real time notification of activities that occur in a web-based collaboration environment
JP5837186B2 (ja) * 2011-06-03 2015-12-24 アップル インコーポレイテッド ネットワークベースのデジタルデータレポジトリーの管理
US9201895B2 (en) 2011-06-03 2015-12-01 Apple Inc. Management of downloads from a network-based digital data repository based on network performance
EP2729877A4 (en) 2011-07-08 2015-06-17 Box Inc DESKTOP APPLICATION FOR ACCESS AND INTERACTION WITH JOBS IN A CLOUD-BASED CONTENT MANAGEMENT SYSTEM AND SYNCHRONIZATION MECHANISMS THEREFOR
US9098474B2 (en) 2011-10-26 2015-08-04 Box, Inc. Preview pre-generation based on heuristics and algorithmic prediction/assessment of predicted user behavior for enhancement of user experience
WO2013062599A1 (en) 2011-10-26 2013-05-02 Box, Inc. Enhanced multimedia content preview rendering in a cloud content management system
US8942854B2 (en) * 2011-11-28 2015-01-27 Kohler Co. System and method for identifying electrical devices in a power management system
GB2500152A (en) 2011-11-29 2013-09-11 Box Inc Mobile platform file and folder selection functionalities for offline access and synchronization
US9904435B2 (en) 2012-01-06 2018-02-27 Box, Inc. System and method for actionable event generation for task delegation and management via a discussion forum in a web-based collaboration environment
US11232481B2 (en) 2012-01-30 2022-01-25 Box, Inc. Extended applications of multimedia content previews in the cloud-based content management system
US9965745B2 (en) 2012-02-24 2018-05-08 Box, Inc. System and method for promoting enterprise adoption of a web-based collaboration environment
US20130268480A1 (en) * 2012-04-05 2013-10-10 Box, Inc. Method and apparatus for selective subfolder synchronization in a cloud-based environment
US9575981B2 (en) 2012-04-11 2017-02-21 Box, Inc. Cloud service enabled to handle a set of files depicted to a user as a single file in a native operating system
US9396156B2 (en) 2012-04-26 2016-07-19 Connected Data, Inc. System and method for socially organized storage and shared access to storage appliances
US9218406B2 (en) * 2012-04-26 2015-12-22 Connected Data, Inc. System and method for managing user data in a plurality of storage appliances over a wide area network for collaboration, protection, publication, or sharing
US10601799B2 (en) 2012-04-26 2020-03-24 Connected Data, Inc. System and method for visualizing data sharing arrangements for an organization
US9413587B2 (en) 2012-05-02 2016-08-09 Box, Inc. System and method for a third-party application to access content within a cloud-based platform
GB2514947B (en) 2012-05-04 2015-06-17 Box Inc Repository redundancy implementation of a system which incrementally updates clients with events that occured via a cloud-enabled platform
US9691051B2 (en) 2012-05-21 2017-06-27 Box, Inc. Security enhancement through application access control
US8914900B2 (en) 2012-05-23 2014-12-16 Box, Inc. Methods, architectures and security mechanisms for a third-party application to access content in a cloud-based platform
US9116596B2 (en) 2012-06-10 2015-08-25 Apple Inc. Sharing images and comments across different devices
US10338940B2 (en) * 2012-06-27 2019-07-02 International Business Machines Corporation Adjusting adminstrative access based on workload migration
US9712510B2 (en) 2012-07-06 2017-07-18 Box, Inc. Systems and methods for securely submitting comments among users via external messaging applications in a cloud-based platform
GB2505072A (en) 2012-07-06 2014-02-19 Box Inc Identifying users and collaborators as search results in a cloud-based system
EP2879059A4 (en) * 2012-07-27 2016-08-10 Samsung Electronics Co Ltd END DEVICE AND SERVER FOR PERFORMING A DATA SYNCHRONIZATION
US9794256B2 (en) 2012-07-30 2017-10-17 Box, Inc. System and method for advanced control tools for administrators in a cloud-based service
KR101638656B1 (ko) * 2012-08-23 2016-07-11 엘에스산전 주식회사 산업용 자동화를 위한 클라우드 컴퓨팅 기반의 데이터 공유 시스템 및 산업용 기기 관리 장치
US9558202B2 (en) 2012-08-27 2017-01-31 Box, Inc. Server side techniques for reducing database workload in implementing selective subfolder synchronization in a cloud-based environment
US9135462B2 (en) 2012-08-29 2015-09-15 Box, Inc. Upload and download streaming encryption to/from a cloud-based platform
US9195519B2 (en) 2012-09-06 2015-11-24 Box, Inc. Disabling the self-referential appearance of a mobile application in an intent via a background registration
US9117087B2 (en) 2012-09-06 2015-08-25 Box, Inc. System and method for creating a secure channel for inter-application communication based on intents
US9292833B2 (en) 2012-09-14 2016-03-22 Box, Inc. Batching notifications of activities that occur in a web-based collaboration environment
US10915492B2 (en) 2012-09-19 2021-02-09 Box, Inc. Cloud-based platform enabled with media content indexed for text-based searches and/or metadata extraction
US9959420B2 (en) 2012-10-02 2018-05-01 Box, Inc. System and method for enhanced security and management mechanisms for enterprise administrators in a cloud-based environment
US9495364B2 (en) 2012-10-04 2016-11-15 Box, Inc. Enhanced quick search features, low-barrier commenting/interactive features in a collaboration platform
US9665349B2 (en) 2012-10-05 2017-05-30 Box, Inc. System and method for generating embeddable widgets which enable access to a cloud-based collaboration platform
US10235383B2 (en) 2012-12-19 2019-03-19 Box, Inc. Method and apparatus for synchronization of items with read-only permissions in a cloud-based environment
US9396245B2 (en) 2013-01-02 2016-07-19 Box, Inc. Race condition handling in a system which incrementally updates clients with events that occurred in a cloud-based collaboration platform
US9953036B2 (en) 2013-01-09 2018-04-24 Box, Inc. File system monitoring in a system which incrementally updates clients with events that occurred in a cloud-based collaboration platform
US9507795B2 (en) 2013-01-11 2016-11-29 Box, Inc. Functionalities, features, and user interface of a synchronization client to a cloud-based environment
US10311121B2 (en) 2013-01-11 2019-06-04 Apple Inc. Validation and delivery of digital assets
US10599671B2 (en) 2013-01-17 2020-03-24 Box, Inc. Conflict resolution, retry condition management, and handling of problem files for the synchronization client to a cloud-based platform
US10740323B1 (en) 2013-03-15 2020-08-11 Nuodb, Inc. Global uniqueness checking in distributed databases
US11176111B2 (en) 2013-03-15 2021-11-16 Nuodb, Inc. Distributed database management system with dynamically split B-tree indexes
US9501363B1 (en) 2013-03-15 2016-11-22 Nuodb, Inc. Distributed database management system with node failure detection
WO2014168913A1 (en) 2013-04-08 2014-10-16 Nuodb, Inc. Database management system with database hibernation and bursting
US9411870B2 (en) * 2013-05-08 2016-08-09 iData Crunch System and method for location aware fine-grained multi-channel synchronization of mobile repositories along with aggregate analytic computation
US10725968B2 (en) 2013-05-10 2020-07-28 Box, Inc. Top down delete or unsynchronization on delete of and depiction of item synchronization with a synchronization client to a cloud-based platform
US10846074B2 (en) 2013-05-10 2020-11-24 Box, Inc. Identification and handling of items to be ignored for synchronization with a cloud-based platform by a synchronization client
GB2515192B (en) 2013-06-13 2016-12-14 Box Inc Systems and methods for synchronization event building and/or collapsing by a synchronization component of a cloud-based platform
US9805050B2 (en) 2013-06-21 2017-10-31 Box, Inc. Maintaining and updating file system shadows on a local device by a synchronization client of a cloud-based platform
US9535924B2 (en) 2013-07-30 2017-01-03 Box, Inc. Scalability improvement in a system which incrementally updates clients with events that occurred in a cloud-based collaboration platform
US9535909B2 (en) 2013-09-13 2017-01-03 Box, Inc. Configurable event-based automation architecture for cloud-based collaboration platforms
US10509527B2 (en) 2013-09-13 2019-12-17 Box, Inc. Systems and methods for configuring event-based automation in cloud-based collaboration platforms
CN104699723B (zh) * 2013-12-10 2018-10-19 北京神州泰岳软件股份有限公司 数据交换适配器、异构系统之间数据同步系统和方法
US10614041B2 (en) * 2014-03-17 2020-04-07 Citrix Systems, Inc. Sync as a service for cloud-based applications
US10530854B2 (en) 2014-05-30 2020-01-07 Box, Inc. Synchronization of permissioned content in cloud-based environments
US9430669B2 (en) * 2014-07-23 2016-08-30 Dropbox, Inc. Collection folders in a content management system
US9894119B2 (en) 2014-08-29 2018-02-13 Box, Inc. Configurable metadata-based automation and content classification architecture for cloud-based collaboration platforms
US10038731B2 (en) 2014-08-29 2018-07-31 Box, Inc. Managing flow-based interactions with cloud-based shared content
US20170243403A1 (en) * 2014-11-11 2017-08-24 Bent Image Lab, Llc Real-time shared augmented reality experience
WO2016077506A1 (en) 2014-11-11 2016-05-19 Bent Image Lab, Llc Accurate positioning of augmented reality content
US10114615B1 (en) * 2014-12-16 2018-10-30 United Technologies Corporation Feature based control system for multi-user CAx
CN104834879A (zh) * 2015-03-11 2015-08-12 嘉兴市烟草公司平湖分公司 多系统同步采集扫描枪
IN2015CH01317A (pt) * 2015-03-18 2015-04-10 Wipro Ltd
US10884869B2 (en) 2015-04-16 2021-01-05 Nuodb, Inc. Backup and restore in a distributed database utilizing consistent database snapshots
US9692826B2 (en) 2015-04-17 2017-06-27 Dropbox, Inc. Collection folder for collecting file submissions via a customizable file request
US10885209B2 (en) 2015-04-17 2021-01-05 Dropbox, Inc. Collection folder for collecting file submissions in response to a public file request
US10395045B2 (en) 2015-04-17 2019-08-27 Dropbox, Inc. Collection folder for collecting file submissions and scanning for plagiarism
US10067969B2 (en) 2015-05-29 2018-09-04 Nuodb, Inc. Table partitioning within distributed database systems
US10180954B2 (en) 2015-05-29 2019-01-15 Nuodb, Inc. Disconnected operation within distributed database systems
US10642750B2 (en) 2015-08-03 2020-05-05 Arista Networks, Inc. System and method of a shared memory hash table with notifications and reduced memory utilization
US11068469B2 (en) * 2015-09-04 2021-07-20 Arista Networks, Inc. System and method of a dynamic shared memory hash table with notifications
WO2017066801A1 (en) 2015-10-16 2017-04-20 Bent Image Lab, Llc Augmented reality platform
US10713966B2 (en) 2015-12-31 2020-07-14 Dropbox, Inc. Assignments for classrooms
US10802695B2 (en) 2016-03-23 2020-10-13 Youar Inc. Augmented reality for the internet of things
CN109690550B (zh) * 2016-07-14 2023-09-05 数字资产(瑞士)股份有限公司 数字资产架构
CN111213138A (zh) 2017-08-15 2020-05-29 诺宝公司 分布式数据库中的索引拆分
CN107656970A (zh) * 2017-08-31 2018-02-02 郑州云海信息技术有限公司 一种数据同步方法、装置及服务器
US10872062B2 (en) * 2017-10-27 2020-12-22 Dropbox, Inc. Moderated collaborative editing in collaborative content items
US10866963B2 (en) * 2017-12-28 2020-12-15 Dropbox, Inc. File system authentication
US10956140B2 (en) 2019-04-05 2021-03-23 Sap Se Software installation through an overlay file system
US10809994B1 (en) * 2019-04-05 2020-10-20 Sap Se Declarative multi-artefact software installation
US11113249B2 (en) 2019-04-05 2021-09-07 Sap Se Multitenant application server using a union file system
US10942723B2 (en) 2019-04-05 2021-03-09 Sap Se Format for multi-artefact software packages
US11232078B2 (en) 2019-04-05 2022-01-25 Sap Se Multitenancy using an overlay file system
US11924350B2 (en) 2021-07-29 2024-03-05 Digital Asset (Switzerland) GmbH Cryptographically enforced partial blinding for distributed system

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6662212B1 (en) * 1999-08-31 2003-12-09 Qualcomm Incorporated Synchronization of a virtual workspace using E-mail extensions
US7917628B2 (en) * 1999-12-02 2011-03-29 Western Digital Technologies, Inc. Managed peer-to-peer applications, systems and methods for distributed data access and storage
US8793374B2 (en) * 1999-12-02 2014-07-29 Western Digital Technologies, Inc. Managed peer-to-peer applications, systems and methods for distributed data access and storage
US6754678B2 (en) * 1999-12-20 2004-06-22 California Institute Of Technology Securely and autonomously synchronizing data in a distributed computing environment
US6892210B1 (en) * 2000-12-29 2005-05-10 Worldsync, Inc. Database management and synchronization across a peer-to-peer network
FR2833446B1 (fr) * 2001-12-12 2004-04-09 Viaccess Sa Protocole de controle du mode d'acces a des donnees transmises en mode point a point ou point multi-point
US20030120699A1 (en) * 2001-12-24 2003-06-26 Storage Technology Corporation Variable synchronicity between duplicate transactions
US20060136441A1 (en) * 2002-04-02 2006-06-22 Tetsunosuke Fujisaki Method and apparatus for synchronous project collaboration
US6965674B2 (en) * 2002-05-21 2005-11-15 Wavelink Corporation System and method for providing WLAN security through synchronized update and rotation of WEP keys
US20040010510A1 (en) * 2002-07-10 2004-01-15 Timo Hotti Method and system for database synchronization
US7340502B2 (en) * 2002-10-24 2008-03-04 Microsoft Corporation Method and apparatus for maintaining consistency of a shared space across multiple endpoints in a peer-to-peer collaborative computer system
US20050037787A1 (en) * 2003-06-27 2005-02-17 Rosett-Wireless Corporation Wireless intelligent portable-server system (WIPSS)
CN101416153B (zh) * 2003-08-21 2010-09-29 微软公司 实现组织可由硬件/软件接口系统管理的信息单元的数字图象模式的系统和方法
EP1581894A4 (en) 2003-08-21 2006-04-26 Microsoft Corp SYSTEMS AND METHODS FOR PROVIDING SYNCHRONIZATION SERVICES FOR INFORMATION UNITS MAY BE MANAGED BY A HARDWARE / SOFTWARE INTERFACE SYSTEM
US7734690B2 (en) * 2003-09-05 2010-06-08 Microsoft Corporation Method and apparatus for providing attributes of a collaboration system in an operating system folder-based file system
US20070081530A1 (en) * 2003-09-11 2007-04-12 Yuji Nomura Packet relay apparatus
US7464263B2 (en) * 2004-03-25 2008-12-09 International Business Machines Corporation Method, system and program product for associating event categorization and routing with security authorization roles
US7818679B2 (en) * 2004-04-20 2010-10-19 Microsoft Corporation Method, system, and apparatus for enabling near real time collaboration on an electronic document through a plurality of computer systems
US20060218394A1 (en) * 2005-03-28 2006-09-28 Yang Dung C Organizational role-based controlled access management system
US7693958B2 (en) * 2005-06-20 2010-04-06 Microsoft Corporation Instant messaging with data sharing

Also Published As

Publication number Publication date
EP1917608A2 (en) 2008-05-07
RU2008106904A (ru) 2009-08-27
WO2007024380A3 (en) 2007-11-29
MX2008002502A (es) 2008-04-07
AU2006284414B2 (en) 2011-02-24
AU2006284414A1 (en) 2007-03-01
JP4955682B2 (ja) 2012-06-20
CN101243443A (zh) 2008-08-13
CA2616242A1 (en) 2007-03-01
EP1917608A4 (en) 2010-05-26
RU2421799C2 (ru) 2011-06-20
EG25571A (en) 2012-02-29
US20070067349A1 (en) 2007-03-22
EP1917608B1 (en) 2016-06-22
KR20080047361A (ko) 2008-05-28
KR101311145B1 (ko) 2013-09-25
NZ565968A (en) 2010-05-28
NO20080232L (no) 2008-05-21
JP2009506423A (ja) 2009-02-12
IL188662A0 (en) 2008-08-07
WO2007024380A2 (en) 2007-03-01
NO340412B1 (no) 2017-04-18
US7930346B2 (en) 2011-04-19
ZA200800961B (en) 2009-04-29

Similar Documents

Publication Publication Date Title
BRPI0615024A2 (pt) segurança em aplicativos de sincronização par-a-par
US11630841B2 (en) Traversal rights
JP4583377B2 (ja) ハードウェア/ソフトウェアインターフェースシステムにより管理可能な情報のユニットに対する関係および階層の同期サービスを実現するシステムおよび方法
JP2004295870A (ja) アプリケーション定義のシステムにおける整合性ユニットのレプリケーション
US11010484B2 (en) System and method to provide document management on a public document system
JP2007503050A (ja) ハードウェア/ソフトウェアインタフェースシステムにより管理可能な情報のユニットに対する同期処理サービスを実現するシステムおよび方法
JP7355964B2 (ja) 外部ロケーションの同期
JP2007503049A (ja) 同期スキーマの実装のためのシステム
US20230359611A1 (en) Verifying data consistency using verifiers in a content management system for a distributed key-value database
Konstantopoulos et al. A social link based private storage cloud
JP7355959B2 (ja) 外部ロケーションの同期
Zhang et al. Secure quasi-realtime collaborative editing over low-cost storage services
ZA200600645B (en) Systems and methods for data modeling in an item-based storage platform
Fuxiang et al. Design and implementation of file access and control system based on dynamic Web

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 A 8A ANUIDADE.

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 2264 DE 27/05/2014.