BR112016028798B1 - METHOD AND SYSTEM FOR PROVIDING CONSISTENT VIEWS OF PARTITIONED DATA IN A LARGE-SCALE EVENTUALLY CONSISTENT SERVICE - Google Patents

METHOD AND SYSTEM FOR PROVIDING CONSISTENT VIEWS OF PARTITIONED DATA IN A LARGE-SCALE EVENTUALLY CONSISTENT SERVICE Download PDF

Info

Publication number
BR112016028798B1
BR112016028798B1 BR112016028798-3A BR112016028798A BR112016028798B1 BR 112016028798 B1 BR112016028798 B1 BR 112016028798B1 BR 112016028798 A BR112016028798 A BR 112016028798A BR 112016028798 B1 BR112016028798 B1 BR 112016028798B1
Authority
BR
Brazil
Prior art keywords
user
edit
document
storage
cache
Prior art date
Application number
BR112016028798-3A
Other languages
Portuguese (pt)
Other versions
BR112016028798A8 (en
BR112016028798A2 (en
Inventor
Tarkan Sevilmis
Arshish Kapadia
Peter Adam Outcalt
Original Assignee
Microsoft Technology Licensing, Llc
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
Priority claimed from US14/308,429 external-priority patent/US10318618B2/en
Application filed by Microsoft Technology Licensing, Llc filed Critical Microsoft Technology Licensing, Llc
Publication of BR112016028798A2 publication Critical patent/BR112016028798A2/en
Publication of BR112016028798A8 publication Critical patent/BR112016028798A8/en
Publication of BR112016028798B1 publication Critical patent/BR112016028798B1/en

Links

Abstract

VISUALIZAÇÕES CONSISTENTES DOS DADOS DIVIDIDOS EM SISTEMAS EVENTUALMENTE CONSISTENTES. A presente invenção refere-se a um sistema de visualização do usuário consistente. O sistema incorpora quaisquer mudanças feitas por um usuário em quaisquer visualizações mostradas ao usuário mesmo quando as mudanças não propagaram às divisões que fornecem a visualização. O sistema separa a autoridade para edições do armazenamento replicado que permite transações eficientes e escalabilidade linear. Os documentos são lidos das divisões com base na visualização de um armazenamento. As escritas do documento são escritas em uma divisão específica do documento em um diário e aplicadas ao armazenamento. O sistema armazena uma cópia de mudanças pendentes em uma divisão específica do usuário. Quando um usuário solicita uma visualização, o sistema verifica o cache do usuário para quaisquer mudanças pendentes aplicáveis à visualização. Se quaisquer mudanças aplicáveis são encontradas, as mudanças são aplicadas antes de mostrar a visualização ao usuário. As mudanças pendentes que foram aplicadas com sucesso ao armazenamento são cortadas da divisão específica do usuário para liberar recursos.CONSISTENT VIEWS OF THE DATA SPLIT INTO EVENTUALLY CONSISTENT SYSTEMS. The present invention relates to a consistent user visualization system. The system incorporates any changes made by a user into any views shown to the user even when the changes have not propagated to the divisions providing the view. The system separates authority for issues from replicated storage that allows for efficient transactions and linear scalability. Documents are read from splits based on a storage view. Document writings are written to a specific division of the document in a journal and applied to storage. The system stores a copy of pending changes in a user-specific division. When a user requests a view, the system checks the user's cache for any pending changes applicable to the view. If any applicable changes are found, the changes are applied before showing the preview to the user. Pending changes that have been successfully applied to storage are trimmed from the user-specific division to free up resources.

Description

AntecedentesBackground

[001] Serviços em grande escala possibilitam transações por grandes volumes de dados e geralmente mantêm múltiplas réplicas de dados. Os recursos subjacentes têm finitos limites que restringem a quantidade de dados que pode ser controlada em qualquer transação única. Como resultado, os serviços de grande escala são tipicamente projetados com unidades de escala fixa. Quando a carga em um serviço excede a unidade de escala, unidades de escala adicionais podem ser adicionadas e os dados podem ser divididos em várias unidades de escala. Enquanto isso permite que o serviço acomode volumes crescentes de dados, as transações podem ser executadas por mais tempo pelos dados que foram divididos.[001] Large-scale services enable transactions for large volumes of data and often maintain multiple replicas of data. The underlying resources have finite limits that restrict the amount of data that can be controlled in any single transaction. As a result, large-scale services are typically designed with fixed-scale units. When the load on a service exceeds the scale unit, additional scale units can be added and the data can be split into multiple scale units. While this allows the service to accommodate increasing volumes of data, transactions can run longer for the data that has been split.

[002] Geralmente, os dados são replicados em mais de uma divi- sualização, por exemplo, para possibilitar que os dados sejam visualizados em diferentes formas (por exemplo, pelo primeiro nome ou pelo sobrenome). Dependendo do desenho dos mecanismos de sincronização utilizados para reconciliar os dados, as mudanças podem levar algum tempo para replicar em outras divisões. Isso apresenta um problema específico em um serviço de grande escala eventualmente consistente quando um usuário edita dados em uma divisualização, salva os dados editados e recebe a confirmação que os dados foram salvos. Enquanto os dados em cada divisualização eventualmente refletirão as mudanças do usuário (ou seja, consistência eventual), os atrasos de propagação apresentam uma situação indesejável onde as mudanças podem não parecer estarem presentes se o usuário subsequentemente puxar os dados de uma réplica antes da divisualização ser atualiza- da com as e mudanças. A perda evidente das mudanças pode ser bem confusa a um usuário após recebimento da confirmação que as mudanças foram salvas.[002] Generally, data is replicated in more than one visualization, for example, to enable the data to be visualized in different ways (for example, by first name or last name). Depending on the design of the synchronization mechanisms used to reconcile the data, changes may take some time to replicate in other divisions. This presents a particular problem on a eventually consistent large-scale service when a user edits data in a preview, saves the edited data, and receives confirmation that the data was saved. While the data in each split will eventually reflect the user's changes (i.e., eventual consistency), propagation delays present an undesirable situation where the changes may not appear to be present if the user subsequently pulls the data from a replica before the split is completed. updated with changes. Obvious loss of changes can be quite confusing to a user after receiving confirmation that the changes have been saved.

[003] Soluções convencionais para esse problema incluem utili zar esquemas de equilíbrio de carga que direcionam o usuário para a mesma divisualização; entretanto, equilíbrio de carga se torna difícil quando a divisualização apresenta uma interrupção ou quando as funções da divisualização requerem que o usuário acesse as réplicas em diferentes divisões, o que leva ao equilíbrio de carga se tornando um gargalo de escalabilidade.[003] Conventional solutions to this problem include using load balancing schemes that direct the user to the same view; however, load balancing becomes difficult when the split view experiences an outage or when the split view functions require the user to access replicas in different splits, which leads to load balancing becoming a scalability bottleneck.

[004] É com relação a essas e outras considerações que a pre sente invenção foi feita. Embora os problemas relativamente específicos tenham sido discutidos, deve ser entendido que as modalidades aqui reveladas não deveriam ser limitadas à solução dos problemas específicos identificados no histórico.[004] It is with regard to these and other considerations that the present invention was made. While relatively specific problems have been discussed, it should be understood that the modalities disclosed here should not be limited to solving the specific problems identified in the background.

Breve SumárioBrief Summary

[005] Esse sumário é fornecido para introduzir uma seleção de conceitos em uma forma simplificada que são ainda descritos abaixo da seção Descrição Detalhada. Esse sumário não é destinado a identificar recursos chave ou recursos essenciais da matéria reivindicada, nem é destinado a ser utilizado como um auxílio para determinar o escopo da matéria reivindicada.[005] This summary is provided to introduce a selection of concepts in a simplified form which are further described below in the Detailed Description section. This summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used as an aid in determining the scope of the claimed subject matter.

[006] As modalidades de um sistema de visualização do usuário consistente incluem camadas separadas para controlar solicitações de escrita e solicitações de leitura. Um diário oferece solicitações de escrita (por exemplo, escreve em documentos) em um esquema de divi- sualização consistente com as ações de escrita. Um armazenamento oferece solicitações de leitura (ou seja, leituras das visualizações) em um esquema de divisualização consistente com as ações de leitura. O diário inclui pelo menos uma divisualização com base em documento que armazena documentos. O armazenamento inclui pelo menos uma divisualização com base na visualização que armazena documentos. Se um documento está associado com mais do que uma visualização, cada visualização tipicamente mantém sua própria cópia do documento (ou seja, uma réplica). O sistema também inclui um cache do usuário armazena registros de mudanças feitos por usuários. O cache do usuário é dividido em uma base por usuário e inclui pelo menos uma divisualização específica do usuário que armazena mudanças feitas por esse usuário.[006] Embodiments of a consistent user view system include separate layers to handle write requests and read requests. A journal provides write requests (for example, writes on documents) in a display scheme consistent with write actions. A store delivers read requests (that is, reads from views) in a diview scheme consistent with read actions. The journal includes at least one document-based view that stores documents. Storage includes at least one view-based view that stores documents. If a document is associated with more than one view, each view typically maintains its own copy of the document (that is, a replica). The system also includes a user cache that stores records of changes made by users. The user cache is partitioned on a per-user basis and includes at least one user-specific view that stores changes made by that user.

[007] Como usuários realizam ações, como criar, modificar ou excluir um documento, uma solicitação de escrita é comunicada ao sistema de visualização do usuário consistente. No recebimento, o sistema de visualização do usuário consistente pode salvar a solicitação de escrita no diário. Em tempo, as solicitações de escrita salvas no diário são aplicadas no armazenamento. As mudanças em um documento são consideradas ser aceita quando salvas no diário. O reconhecimento de recebimento pode ser fornecido ao usuário que faz a mudança após a solicitação de escrita ser salva no diário ou cache do usuário. As mudanças refletidas na solicitação de escrita são geralmente não visíveis a todos os usuários até que eles sejam imersos no armazenamento; entretanto, o cache do usuário fornece um mecanismo para possibilitar que o usuário faça as mudanças e, em algumas modalidades, outros usuários associados com o documento sendo mudado, para ver as mudanças.[007] As users perform actions such as creating, modifying, or deleting a document, a write request is communicated to the consistent user view system. On receipt, the consistent user view system can save the journaling request. In time, write requests saved in the journal are applied to storage. Changes to a document are considered to be accepted when saved in the journal. Acknowledgment can be provided to the user making the change after the write request is saved to the user's journal or cache. Changes reflected in the write request are generally not visible to all users until they are immersed in storage; however, user caching provides a mechanism to enable the user making the changes, and, in some embodiments, other users associated with the document being changed, to see the changes.

[008] No recebimento de uma solicitação de leitura de um usuá rio, a visualização responsiva à solicitação de leitura é recuperada do armazenamento e qualquer registro de visualização do usuário res- ponsiva é recuperado da divisualização específica do usuário associado com o usuário que submeteu a solicitação de leitura. A visualização responsiva e os registros de visualização responsiva do usuário são imersos rapidamente e as mudanças no documento contido no registro de visualização do usuário são aplicadas à visualização para criar uma visualização atualizada para o usuário. Assim, mesmo quando as mudanças não foram completamente aplicadas ao armazenamento, as visualizações apresentadas ao editor refletem as mudanças feitas por esse editor e reconhecidas pelo sistema de visualização do usuário consistente. Por causa do sistema de visualização do usuário consistente aplicar as mudanças do editor nas visualizações mostradas ao editor, o editor vê a versão do documento que o editor espera ver. Isso reduz ou elimina a confusão e a preocupação desnecessárias apresentadas pelos editores que visualizam recentemente os documentos editados antes das mudanças serem aplicadas ao armazenamento. Ainda, por causa dos registros de visualização do usuário serem específicas a ele, as mudanças feitas por um usuário não são visíveis a qualquer outro usuário até elas serem aplicadas ao armazenamento, ou em algumas modalidades, no cache de visualização do usuário. Uma vez que uma solicitação de escrita foi aplicada com sucesso ao armazenamento, o registro de visualização do usuário pode ser excluído do cache de visualização do usuário.[008] Upon receipt of a read request from a user, the view responsive to the read request is retrieved from storage and any record of the user's responsive view is retrieved from the user-specific view associated with the user who submitted the read request. read request. The responsive view and the user's responsive view records are merged quickly and changes to the document contained in the user's view record are applied to the view to create an updated view for the user. Thus, even when changes have not been fully applied to the store, the views presented to the editor reflect the changes made by that editor and recognized by the user's consistent view system. Because the user's consistent view system applies the editor's changes to the views shown to the editor, the editor sees the version of the document that the editor expects to see. This reduces or eliminates the unnecessary confusion and worry presented by editors previewing newly edited documents before changes are applied to storage. Also, because user-view records are user-specific, changes made by a user are not visible to any other user until they are applied to storage, or in some embodiments, the user's view cache. Once a write request has been successfully applied to the store, the user's view record can be deleted from the user's view cache.

Breve Descrição dos DesenhosBrief Description of the Drawings

[009] Recursos, aspectos e vantagens adicionais da presente re velação se tornarão melhor entendidos com referência às seguintes figuras, em que os elementos não são em escala para mais claramente mostrar os detalhes e em que os números de referência semelhantes indicam elementos semelhantes através das várias visualizações: figura 1 ilustra uma arquitetura do sistema para uma modalidade do sistema de consistência de visualização eventual consistente; figura 2A é um fluxograma de uma solicitação de escrita em uma modalidade do sistema de visualização do usuário consistente; figura 2B é um fluxograma de uma solicitação de leitura que retorna um documento com mudanças pendentes que foram feitas pelo usuário que submeteu a solicitação de leitura em uma modalidade do sistema de visualização do usuário consistente; figura 2C é um fluxograma de uma solicitação de leitura que retorna um documento com mudanças pendentes que foram feitas por um usuário diferente daquele que submeteu a consulta de leitura em uma modalidade do sistema de visualização do usuário consistente; figura 2D é um fluxograma de uma solicitação de leitura que retorna um documento com mudanças pendentes que foram feitas por um usuário diferente daquele que submeteu a consulta de leitura em uma modalidade alternativa do sistema de visualização do usuário consistente; figura 3 é um fluxograma de alto nível de uma modalidade do método de visualização consistente empregado pelo sistema de visualização do usuário consistente; figura 4 é um diagrama em blocos que ilustra uma modalidade dos componentes físicos de um dispositivo computacional com o qual as modalidades da presente invenção podem ser praticadas; e figura 5 A e 5B são diagramas em blocos simplificados de um dispositivo computacional móvel com o qual as modalidades da presente invenção podem ser praticadas.[009] Additional features, aspects, and advantages of the present disclosure will become better understood with reference to the following figures, in which elements are not to scale to more clearly show details and in which like reference numerals indicate like elements through the multiple views: Figure 1 illustrates a system architecture for a consistent view eventual consistency system embodiment; Figure 2A is a flowchart of a write request in a consistent user view system mode; Figure 2B is a flowchart of a read request returning a document with pending changes that have been made by the user submitting the read request in a consistent user view system mode; Figure 2C is a flowchart of a read request returning a document with pending changes that were made by a user other than the one who submitted the read query in a consistent user view system mode; Figure 2D is a flowchart of a read request returning a document with pending changes that were made by a user other than the one who submitted the read query in an alternative mode of consistent user view system; Figure 3 is a high-level flowchart of one embodiment of the consistent visualization method employed by the consistent user visualization system; Figure 4 is a block diagram illustrating one embodiment of the physical components of a computing device with which embodiments of the present invention can be practiced; and Figure 5A and 5B are simplified block diagrams of a mobile computing device with which embodiments of the present invention can be practiced.

Descrição DetalhadaDetailed Description

[0010] Várias modalidades são descritas mais completamente abaixo com referência aos desenhos anexos, que formam uma parte desse, e que mostram modalidades exemplares específicas. Entretanto, as modalidades podem ser implementadas em forma diferentes e devem ser construídas como limitadas às modalidades aqui definidas; preferivelmente, essas modalidades são fornecidas de modo que essa revelação será completa e profunda e conduzirá completamente o es- copo das modalidades aos técnicos na área. As modalidades podem ser praticadas como métodos, sistemas ou dispositivos. Certamente, as modalidades podem tomar a forma de uma implementação de hardware, uma implementação de software ou uma implementação que combina aspectos de software e hardware. A seguinte descrição detalhada não é, portanto, considerada em um senso limitador.[0010] Various embodiments are described more fully below with reference to the accompanying drawings, which form a part thereof, and which show specific exemplary embodiments. However, the modalities can be implemented in different ways and must be construed as limited to the modalities defined here; preferably, these modalities are provided so that this disclosure will be complete and thorough and will fully convey the scope of the modalities to those skilled in the art. Modalities can be practiced as methods, systems or devices. Of course, embodiments can take the form of a hardware implementation, a software implementation, or an implementation that combines both software and hardware aspects. The following detailed description is therefore not intended in a limiting sense.

[0011] As modalidades de um sistema de visualização do usuário consistente são descritas aqui e ilustradas nas figuras anexas. O sistema incorpora quaisquer mudanças feitas por um usuário em qualquer visualização mostrada a esse usuário mesmo quando as mudanças não propagaram às divisões que fornecem a visualização. O sistema separa a autoridade para edições do armazenamento replicado possibilitando transações eficientes e escalabilidade linear. Documentos são lidos da divisualização com base nas visualizações de um armazenamento. As escritas do documento são escritas em uma área intermediária e as mudanças são eventualmente aplicadas ao armazenamento. O sistema armazena uma cópia das mudanças pendentes em uma divisualização específica do usuário. Quando um usuário solicita uma visualização, o sistema verifica o cache do usuário para quaisquer mudanças pendentes aplicáveis à visualização. Se quaisquer mudanças são encontradas, as mudanças são aplicadas antes de mostrar a visualização ao usuário. As mudanças pendentes que foram aplicadas com sucesso ao armazenamento são cortadas da divisuali- zação específica do usuário para liberar os recursos.[0011] The embodiments of a consistent user visualization system are described here and illustrated in the attached figures. The system incorporates any changes made by a user to any views shown to that user even when the changes have not propagated to the divisions providing the view. The system separates authority for edits from replicated storage enabling efficient transactions and linear scalability. Documents are read from the diview based on views from a store. Document writes are written to an intermediate area and changes are eventually applied to storage. The system stores a copy of pending changes in a user-specific view. When a user requests a view, the system checks the user's cache for any pending changes applicable to the view. If any changes are found, the changes are applied before showing the preview to the user. Pending changes that have been successfully applied to storage are clipped from the user-specific view to free up resources.

[0012] A figura 1 ilustra uma arquitetura do sistema para uma mo dalidade do sistema de visualização do usuário consistente. O sistema de visualização do usuário consistente 100 pode ser implementado em um serviço de grande escala (ou seja, Dados Grandes) que fornece acesso a e armazenamento de amplas quantidades de informação aos usuários 102. Os usuários podem acessar o serviço em grande escala a partir de uma variedade de dispositivos do cliente 104a-d através de uma rede 106, como, entre outros, a Internet, redes de área ampla, redes de área local e combinações dessas. Exemplos de dispositivos do cliente adequados incluem, entre outros, computadores desktop 104a, notebooks 104b, tablets 104c, celulares 104d, assistentes digitais pessoais, relógios inteligentes e aparelhos inteligentes (por exemplo, televisões inteligentes).[0012] Figure 1 illustrates a system architecture for a consistent user visualization system modality. The consistent user view system 100 may be implemented in a large scale service (i.e., Big Data) that provides access to and storage of vast amounts of information to users 102. Users may access the large scale service from a variety of client devices 104a-d over a network 106, such as but not limited to the Internet, wide area networks, local area networks, and combinations thereof. Examples of suitable client devices include, but are not limited to, desktop computers 104a, notebooks 104b, tablets 104c, cell phones 104d, personal digital assistants, smart watches, and smart appliances (e.g., smart televisions).

[0013] O sistema de visualização do usuário consistente 100 inclui uma camada de extremidade dianteira 108 que fornece um ponto de entrada ao serviço em grande escala. Em várias modalidades, o serviço em grande escala pode fornecer uma interface do usuário com base na web que é acessível aos dispositivos do cliente 104a-d através de um agente do usuário, como, um navegador. Em algumas modalidades, o agente do usuário pode ser um aplicativo de cliente dedicado que fornece a interface do usuário e controla as comunicações com o serviço em grande escala.[0013] The consistent user display system 100 includes a front end layer 108 that provides an entry point to the full scale service. In various embodiments, the large-scale service may provide a web-based user interface that is accessible to client devices 104a-d through a user agent such as a browser. In some embodiments, the user agent can be a dedicated client application that provides the user interface and handles communications with the service at scale.

[0014] Um modelo de objeto transacional 110 possibilita a consis tência eventual eficiente e escalável para o serviço em grande escala. As transações controladas pelo sistema de visualização do usuário consistente 100 incluem, sem limitação, solicitações de escrita 112 e solicitações de leitura 114, possibilitando que os usuários leiam, visualizem (ou seja, mostrem), criem, copiem, excluem, manipulem (ou seja, editem ou modifiquem), compartilhem, colaborem ou salvem (ou seja, escrevam) documentos e visualizações controlados pelo serviço em grande escala. O termo "documento" abrange amplamente qualquer objeto de dados controlado pelo serviço em grande escala. Em forma de exemplo, para um escritório ou serviço em grande escala com base no aplicativo de produtividade, documentos podem incluir, sem limitação, documentos de processamento de palavra, itens de correio, itens de tarefa, itens de calendário, itens de contato, apresentações, plani- lhas ou bancos de dados. O termo "visualização" abrange amplamente qualquer índice, agrupamento ou categorização de documentos com base em um valor de propriedade comum utilizado para apresentar os documentos a um usuário. Em forma de exemplo, visualizações podem possibilitar uma coleta de itens de tarefa a ser exibida pelo proprietário da tarefa ou pelo projeto com o qual a tarefa está associada.[0014] A transactional object model 110 enables efficient and scalable eventual consistency for large-scale service. Transactions controlled by consistent user view system 100 include, without limitation, write requests 112 and read requests 114, enabling users to read, view (i.e., display), create, copy, delete, manipulate (i.e. , edit or modify), share, collaborate on or save (i.e. write) documents and views controlled by the service at scale. The term "document" broadly encompasses any data object controlled by the large-scale service. By way of example, for a large scale office or service based productivity application, documents may include, without limitation, word processing documents, mail items, task items, calendar items, contact items, presentations , spreadsheets or databases. The term "view" broadly encompasses any index, grouping, or categorization of documents based on a common property value used to present the documents to a user. By way of example, views can enable a collection of task items to be viewed by the task owner or by the project with which the task is associated.

[0015] Dentro do sistema de visualização do usuário consistente 100, as solicitações de escrita 112 e as solicitações de leitura 114 são controladas por camadas separadas. Um diário 116 fornece solicitações de escrita (por exemplo, escritas em documentos) em um esquema de divisualização consistente com as ações de escrita. Um armazenamento 118 fornece solicitações de leitura 114 (ou seja, leituras das visualizações) em um esquema de divisualização consistente com as ações de leitura. Na modalidade ilustrada, o diário 116 e o armazenamento 118 são representados como um recurso de armazenamento virtualizado (por exemplo, armazenamento em nuvem) acessado através das interfaces de programação de aplicativo (APIs) correspondentes, o API do diário 120 e o API do armazenamento 122.[0015] Within the consistent user view system 100, write requests 112 and read requests 114 are handled by separate layers. A journal 116 provides writing requests (eg, writing to documents) in a divisualization scheme consistent with writing actions. A store 118 provides 114 read requests (that is, reads from views) in a divisualization scheme consistent with read actions. In the illustrated embodiment, the journal 116 and storage 118 are represented as a virtualized storage resource (e.g., cloud storage) accessed through corresponding application programming interfaces (APIs), the journal API 120 and the storage API. 122.

[0016] O diário 116 inclui pelo menos uma divisualização com ba se em documento 124 que armazena documentos. Cada divisualiza- ção é dimensionada com base no maior grupo de dados atribuído a um único recurso ou consulta. Conforme a quantidade de dados controlada pelo serviço em grande escala aumenta, o diário 116 pode ser linearmente escalado e novas divisões adicionadas. Independentemente dos números de divisões do diário, o sistema de visualização do usuário consistente 100 armazena todas as solicitações de escrita 112 associadas com qualquer dado documento na mesma divisualização do diário. Tendo uma única divisualização do diário associada com cada documento possibilita que uma fila de edição transacional seja mantida para cada documento.[0016] The journal 116 includes at least one document-based display 124 that stores documents. Each diview is sized based on the largest dataset assigned to a single feature or query. As the amount of data handled by the large-scale service increases, journal 116 can be linearly scaled and new divisions added. Regardless of the number of journal divisions, the consistent user view system 100 stores all write requests 112 associated with any given document in the same journal view. Having a single journal view associated with each document enables a transactional edit queue to be maintained for each document.

[0017] O armazenamento 118 inclui pelo menos uma divisualiza- ção com base na visualização 126 que armazena documentos. A divi- sualização do armazenamento 118 pela visualização possibilita que os documentos sejam eficientemente acessados de acordo com os diferentes critérios (por exemplo, tarefas por projeto ou proprietário e contatos pelo primeiro nome, sobrenome, empresa, divisualização ou localização). Se um documento está associado com mais de uma visualização, cada visualização tipicamente mantém sua própria cópia do documento (ou seja, uma réplica). Como com o diário 116, o armazenamento 118 pode ser linearmente escalado e novas divisões adicionadas para controlar os documentos adicionais ou visualizações.[0017] The storage 118 includes at least one view based on the view 126 that stores documents. The division of storage 118 by view makes it possible for documents to be efficiently accessed according to different criteria (eg tasks by project or owner and contacts by first name, last name, company, division or location). If a document is associated with more than one view, each view typically maintains its own copy of the document (that is, a replica). As with journal 116, storage 118 can be linearly scaled and further divisions added to handle additional documents or views.

[0018] Conforme os usuários realizam ações, como criar, modifi car, ou excluir um documento, uma solicitação de escrita 112 é comunicada ao sistema de visualização do usuário consistente 100. No recebimento, o sistema de visualização do usuário consistente 100 primeiro salva a solicitação de escrita 112 no diário 116. As mudanças em um documento são consideradas aceitas quando salvas no diário 116, mas são geralmente não visíveis a todos os usuários até eles serem imersos no armazenamento. Quando o diário 116 inclui múltiplas divisões, o sistema de visualização do usuário consistente 100 pode determinar um identificador de divisualização que indica a divisualiza- ção na qual a solicitação de escrita 112 deveria ser escrita. Em várias modalidades, o identificador de divisualização pode ser com base em um identificador de documento para o documento associado com a solicitação de escrita 112.[0018] As users perform actions, such as creating, modifying, or deleting a document, a write request 112 is communicated to the user consistent view system 100. Upon receipt, the user consistent view system 100 first saves the write request 112 to journal 116. Changes to a document are considered accepted when saved to journal 116, but are generally not visible to all users until they are merged into storage. When the journal 116 includes multiple divisions, the user consistent view system 100 may determine a view identifier that indicates the view to which the write request 112 should be written. In various embodiments, the display identifier may be based on a document identifier for the document associated with the write request 112.

[0019] O sistema de visualização do usuário consistente 100 pode utilizar o diário 116 como uma área intermediária para manter as solicitações de escrita 112 até as mudanças serem aplicadas no armazenamento 118. A aplicação das mudanças ou a edição ao armazenamento 118 se refere à aplicação de uma edição feita em uma cópia off line do documento fonte ao documento fonte no armazenamento 118, incluindo qualquer e todas as réplicas do documento fonte, ou, caso contrário, imergindo as mudanças nas visualizações apropriadas. O documento fonte se refere ao documento lido do armazenamento 118 pelo usuário. O diário 116 pode também ser utilizado quando detectar edições conflitantes em um documento. Para realizar essas funções, modalidades do sistema de visualização do usuário consistente 100 podem salvar a solicitação de escrita 112 no diário 116 pelo menos duas vezes no recebimento. Uma cópia da solicitação de escrita 112 pode ser salva como um registro de execução 128 que serve como um item de ação que identifica uma solicitação de escrita 112 que não foi completamente imersa com o armazenamento 118. A incapacidade de aplicar completamente uma solicitação de escrita 112 ao armazenamento 118 pode ser o resultado da incapacidade temporária (por exemplo, falha de recurso ou inatividade) das divisões ou dos canais de comunicações (por exemplo, Internet) entre o diário 116 e o armazenamento 118. Outra cópia da solicitação de escrita 112 pode ser salva como registro de histórico 130. O registro de históricos pode ser utilizado para finalidades como detectar edições de conflito em um documento ou manter os registros de auditoria.[0019] The consistent user view system 100 may utilize the journal 116 as an intermediate area to hold write requests 112 until changes are applied to storage 118. Applying changes or editing to storage 118 refers to applying from an edit made to an offline copy of the source document to the source document in storage 118, including any and all replicas of the source document, or otherwise, merging the changes into the appropriate views. The source document refers to the document read from storage 118 by the user. Journal 116 can also be used when detecting conflicting edits to a document. To perform these functions, embodiments of consistent user display system 100 may save write request 112 to journal 116 at least twice upon receipt. A copy of the write request 112 may be saved as an execution log 128 which serves as an action item identifying a write request 112 that was not completely merged with the storage 118. The inability to fully apply a write request 112 to storage 118 may be the result of temporary inability (e.g., resource failure or downtime) of the divisions or communications channels (e.g., Internet) between journal 116 and storage 118. Another copy of the write request 112 may be saved as a history log 130. The history log can be used for purposes such as detecting conflict edits to a document or maintaining audit trails.

[0020] Uma camada de compromisso de mudança 132 é respon sável por aplicar as edições refletidas nas solicitações de escrita 112 ao armazenamento 118. Em várias modalidades, o documento escreve fluxo do diário 116 ao armazenamento 118 assim não há mecanismos de sincronização complicados. Em várias modalidades, o sistema de visualização do usuário consistente 100 pode fazer uma primeira tentativa de aplicar os registros de execução ao armazenamento 118 conforme são criados no diário 116. Uma vez que um registro de execução foi aplicado com sucesso, o registro de execução é excluído do diário 116.[0020] A change commitment layer 132 is responsible for applying edits reflected in write requests 112 to storage 118. In various embodiments, the document writes journal stream 116 to storage 118 so there are no complicated synchronization mechanisms. In various embodiments, consistent user view system 100 may make a first attempt to apply run records to storage 118 as they are created in journal 116. Once a run record has been successfully applied, the run record is deleted from diary 116.

[0021] Uma camada de recuperação de consistência 134 é res ponsável pelo ciclo de operação da camada de compromisso de mudança 132 e finalmente fornecimento de consistência eventual. A camada de recuperação de consistência 134 pede que a camada de compromisso de mudança 132 leia através dos registros existentes mantidos no diário 116 e aplique quaisquer edições não aplicadas dos registros de execução que aparecem no diário 116 ao armazenamento 118. A camada de compromisso de mudança 132 começa com os registros de execução mais antigos para fazer as edições transacionais nos documentos na ordem que as edições foram recebidas pelo sistema de visualização do usuário consistente 100. A camada de recuperação de consistência 134 pode iniciar a operação da camada de compromisso de mudança 132 com base na ocorrência de vários eventos e/ou em uma base periódica (por exemplo, a cada N minutos, horas ou dias). Exemplos de eventos podem ser utilizados para disparar a operação da camada de compromisso de mudança 132 incluem, entre outros, inicialização do sistema, recuperação de erro e recebimento de uma solicitação de escrita 112.[0021] A consistency recovery layer 134 is responsible for the cycle of operation of the change commitment layer 132 and finally providing eventual consistency. The consistency recovery layer 134 asks the change commit layer 132 to read through the existing records held in the journal 116 and apply any unapplied edits of the run records appearing in the journal 116 to storage 118. The change commit layer 132 starts with the oldest run records to make transactional edits to the documents in the order the edits were received by the consistent user view system 100. The consistency recovery layer 134 may initiate the change commitment layer operation 132 based on the occurrence of multiple events and/or on a periodic basis (for example, every N minutes, hours, or days). Examples of events that may be used to trigger the operation of the change commitment layer 132 include, but are not limited to, system startup, error recovery, and receipt of a write request 112.

[0022] O sistema também inclui um cache do usuário 136 que ar mazena registros de mudanças feitas por usuários. O cache do usuário 136 é dividido em uma base por usuário e inclui pelo menos uma divisualização específica do usuário 140 que armazena mudanças feitas por esse usuário. Após serem armazenadas no diário 116, as solicitações de escrita 112 são também escritas em uma divisualização específica do usuário 140 associada com o usuário que faz as mudanças. O cache do usuário 136 serve como um registro de edições pendentes em um documento. Quando um usuário visualiza um documento modificado por esse usuário, quaisquer edições pendentes associadas com esse documento encontrado no cache do usuário 136 são imersas com esse documento na visualização apresentada ao usuário. Assim, mesmo se as mudanças não foram completamente aplicadas ao armazenamento 118 e todas as réplicas atualizadas, os usuários verão quaisquer edições pendentes que eles fizeram. Em várias modalidades, outros usuários afetados podem também ser capazes de ver as edições pendentes em um documento. Modalidades do cache do usuário 136 podem ser solicitadas para registros de visualização do usuário aplicáveis ao documento sendo visualizado (ou seja, a cópia off-line de um documento) permitindo que os clientes atualizem a visualização em cache dos dados com a informação que foi mudada (ou seja, a edição) sem ter que recarregar todo o documento.[0022] The system also includes a user cache 136 which stores records of changes made by users. User cache 136 is partitioned on a per-user basis and includes at least one user-specific view 140 that stores changes made by that user. After being stored in the journal 116, the write requests 112 are also written to a user-specific view 140 associated with the user making the changes. User cache 136 serves as a record of pending edits to a document. When a user views a document modified by that user, any pending edits associated with that document found in the user's cache 136 are merged with that document in the view presented to the user. So even if the changes haven't been completely applied to store 118 and all replicas have been updated, users will see any pending edits they've made. In various embodiments, other affected users may also be able to see pending edits to a document. User cache modalities 136 can be requested for user view records applicable to the document being viewed (i.e., the offline copy of a document) allowing clients to update the cached view data with information that has changed (i.e. editing) without having to reload the entire document.

[0023] Na modalidade ilustrada, o cache do usuário 136 é repre sentado como um recurso de armazenamento virtualizado (por exemplo, armazenamento em nuvem) acessado através de um API do cache do usuário 138. Embora ilustrado como um recurso separado, o cache do usuário 136 pode ser implementado como parte do diário 116 ou do armazenamento 118 por algumas modalidades do sistema 100. Em outras palavras, o diário 116 pode incluir ambas as divisões com base no documento e as divisões específicas do usuário ou o armazenamento 118 pode incluir ambas as divisões com base na visualização e as divisões específicas do usuário.[0023] In the illustrated embodiment, the user cache 136 is represented as a virtualized storage resource (for example, cloud storage) accessed through a user cache API 138. Although illustrated as a separate resource, the user cache user 136 may be implemented as part of journal 116 or storage 118 by some embodiment of system 100. In other words, journal 116 may include both document-based divisions and user-specific divisions, or storage 118 may include both view-based splits and user-specific splits.

[0024] A modalidade ilustrada da figura 1, e descrita com relação a ela, não é destinada a limitar o sistema de visualização do usuário consistente 100 a qualquer arquitetura do sistema ou implementação particular. A funcionalidade do cache do usuário 136 pode também ser fornecida em outros sistemas de consistência eventual conhecidos pelos técnicos na área, por exemplo, um sistema de consistência eventual que implementa outro mecanismo de sincronização, como um sistema com base em PAXOS. Tais sistemas de consistência eventual alternativos podem controlar ambas as solicitações de leitura 114 e as solicitações de escrita 112 através do armazenamento 118 (ou seja, o sistema de armazenamento de dados primários), podem não manter ou utilizar os registros de execução ou registros de histórico, podem omitir ou substituir os componentes selecionados, como o diário 116, a camada de compromisso de mudança 132 e a camada de recuperação de consistência 134, ou podem adicionar os componentes de adição conforme desejado ou necessário.[0024] The embodiment illustrated in Figure 1, and described in connection therewith, is not intended to limit the consistent user display system 100 to any particular system architecture or implementation. User cache functionality 136 may also be provided in other eventual consistency systems known to those skilled in the art, for example, an eventual consistency system that implements another synchronization mechanism, such as a PAXOS-based system. Such alternative eventual consistency systems may handle both read requests 114 and write requests 112 through storage 118 (i.e., the primary data storage system), may not maintain or utilize run logs or history logs. , may omit or replace selected components, such as journal 116, change commitment layer 132, and consistency recovery layer 134, or may add addition components as desired or needed.

[0025] A figura 2A é um fluxograma de uma solicitação de escrita 112 na modalidade do sistema de visualização do usuário consistente por usuário. O fluxo começa em A com um usuário 102e editando um documento 202. O documento pode ser um novo documento criado pelo usuário ou um documento existente que foi lido do serviço em grande escala (ou seja, uma cópia off-line). Quando o usuário salva as mudanças no documento, o fluxo continua em B com a criação de uma solicitação de escrita 112. A solicitação de escrita 112 pode conter o documento alterado e informações adicionais, como, entre outros, um identificador do usuário do usuário que submete a solicitação de escrita 112, a data que a solicitação de escrita 112 foi submetida, a hora que a solicitação de escrita 112 foi submetida e a versão de um documento que foi lido do armazenamento 118 (ou seja, a versão da linha de base da cópia off-line). A solicitação de escrita 112 é recebida pelo sistema de visualização do usuário consistente 100 onde é processado. Em C, um registro com base na solicitação de escrita 112 é armazenado utilizando o diário API. Em várias modalidades, os registros de execução e registros de histórico aqui descritos podem ser criados nesse momento. No fluxo D, a solicitação de escrita 112 é enviada ao cache do usuário 136 onde, no fluxo E, um registro de visualização do usuário 142 com base na solicitação de escrita 112 é armazenado utilizando o API do cache do usuário 138. A divisualização específica do usuário 140 onde o registro de visualização do usuário é armazenado pode ser com base em um identificador do usuário incluído na solicitação de escrita 112. No arma- zenamento do registro de visualização do usuário, no fluxo F, o sistema de visualização do usuário consistente 100 envia um reconhecimento 204 ao usuário. O reconhecimento indica ao usuário que as mudanças no documento foram recebidas e aceitas.[0025] Figure 2A is a flowchart of a write request 112 in user consistent per user display system mode. The flow starts at A with a user 102e editing a document 202. The document can be a new document created by the user or an existing document that has been read from the service at large (ie an offline copy). When the user saves the changes to the document, the flow continues at B with the creation of a write request 112. The write request 112 may contain the changed document and additional information such as, but not limited to, a user identifier of the user who submits the write request 112, the date the write request 112 was submitted, the time the write request 112 was submitted, and the version of a document that was read from storage 118 (that is, the baseline version of offline copy). The write request 112 is received by the consistent user display system 100 where it is processed. In C, a record based on write request 112 is stored using the journal API. In various embodiments, the run logs and history logs described herein can be created at this time. In stream D, the write request 112 is sent to the user's cache 136 where, in stream E, a record of the user's view 142 based on the write request 112 is stored using the user's cache API 138. The specific view 140 where the user view record is stored can be based on a user identifier included in the write request 112. In storing the user view record, in flow F, the consistent user view system 100 sends an acknowledgment 204 to the user. Acknowledgment indicates to the user that changes to the document have been received and accepted.

[0026] O reconhecimento do recebimento pode ser fornecido ao usuário que faz a mudança após a solicitação de escrita 112 ser salva no diário 116. Uma expectativa que as mudanças foram salvas é criada quando um usuário recebe o reconhecimento. Ainda, usuários também podem esperar ver as mudanças salvas refletidas em qualquer momento que eles visualizam o documento após o recebimento do reconhecimento. Um usuário que tenta visualizar o documento modificado após receber o reconhecimento e não ver as mudanças provavelmente ficará preocupado. Em um sistema eventualmente consistente, tal preocupação pode ser falsa se, por exemplo, as mudanças foram salvas no diário 116. Por causa do potencial para um atraso entre a hora que a solicitação de escrita está salva no diário 116 e o cache do usuário, modalidades do sistema podem adiar o reconhecimento até a solicitação de escrita 112 ser salva no cache do usuário, como na modalidade ilustrada. Aguardar pelo recebimento de reconhecimento até a solicitação de escrita 112 ser salva no cache do usuário 136 reduz a probabilidade das expectativas do usuário não serem atingidas.[0026] Acknowledgment may be provided to the user making the change after the write request 112 is saved in the journal 116. An expectation that the changes have been saved is created when a user receives the acknowledgment. Furthermore, users can also expect to see their saved changes reflected any time they view the document after receiving an acknowledgment. A user who tries to view the modified document after receiving the acknowledgment and does not see the changes is likely to become concerned. On an eventually consistent system, such a concern might be false if, for example, changes were saved to journal 116. Because of the potential for a delay between the time the write request is saved to journal 116 and the user's cache, system embodiments may defer acknowledgment until the write request 112 is saved in the user cache, as in the illustrated embodiment. Waiting to receive acknowledgment until the write request 112 is saved in the user's cache 136 reduces the likelihood that the user's expectations will not be met.

[0027] Na operação normal, o sistema de visualização do usuário consistente 100 deveria aplicar eventualmente as mudanças na solicitação de escrita 112 nos documentos correspondentes no armazenamento 118. A atualização do armazenamento 118 ocorre tipicamente em algum momento após o reconhecimento das mudanças a ser enviadas ao usuário. A quantidade de tempo até a solicitação de escrita 112 é completamente aplicada em um sistema eventualmente consistente pode ser influenciado por fatores como atrasos de propagação e comunicações ou interrupções de recurso. O fluxograma da figura 2A para intencionalmente na aplicação da solicitação de escrita 112 ao armazenamento 118 para representar um ponto onde as mudanças do usuário em um documento foram recebidas e salvas, mas onde algumas ou todas as réplicas desse documento não foram atualizadas. A aplicação incompleta das solicitações de escrita 112 é representada pelas solicitações de escrita 112 para e do armazenamento API 122 representado utilizando linhas pontilhadas.[0027] In normal operation, the consistent user view system 100 should eventually apply the changes in the write request 112 to the corresponding documents in the store 118. The update of the store 118 typically occurs at some point after acknowledging the changes to be sent to the user. The amount of time until the write request 112 is fully applied in an eventually consistent system can be influenced by factors such as propagation delays and communications or resource interruptions. The flowchart of Figure 2A intentionally stops at applying the write request 112 to storage 118 to represent a point where user changes to a document have been received and saved, but where some or all replicas of that document have not been updated. Incomplete application of write requests 112 is represented by write requests 112 to and from API storage 122 represented using dotted lines.

[0028] O fluxo continua em L como a camada de recuperação de consistência 134 lê os registros de execução do diário 116 e forma uma fila. No fluxo M, os registros de execução em fila são enviados à camada de compromisso de mudança 132 para processamento na ordem que foram recebidos. A fila é processada começando no fluxo H para cada registro de execução na fila.[0028] The flow continues at L as the consistency recovery layer 134 reads the journal run records 116 and forms a queue. In stream M, the queued execution records are sent to the change commitment layer 132 for processing in the order they were received. The queue is processed starting at stream H for each execution record in the queue.

[0029] A figura 2B é um fluxograma de uma solicitação de leitura que retorna um documento com mudanças pendentes que foram feitas pelo usuário que submeteu a solicitação de leitura em uma modalidade do sistema de visualização do usuário consistente 100. Qualquer usuário que fez mudanças em um documento responsivo a uma solicitação de leitura 114 pode ser referido como um editor e qualquer usuário que não fez mudanças em um documento responsivo a uma solicitação de leitura 114 pode ser referido como um visualizador. Tais identificações do usuário são utilizadas apenas para distinguir convenientemente entre os usuários diferentes e não são destinadas a implicar qualquer diferença substantiva nas funções, privilégios ou outras características dos usuários.[0029] Figure 2B is a flowchart of a read request that returns a document with pending changes that were made by the user who submitted the read request in a consistent user view system mode 100. Any user who made changes to a document responsive to a read request 114 may be referred to as an editor, and any user who has not made changes to a document responsive to a read request 114 may be referred to as a viewer. Such user identifications are used only to conveniently distinguish between different users and are not intended to imply any substantive difference in the roles, privileges or other characteristics of the users.

[0030] O fluxo começa em G quando o editor 102e tenta visualizar o documento 202 que estava recentemente editado pelo usuário, que dispara a geração de uma solicitação de leitura 114. A solicitação de leitura 114 é recebida pelo sistema de visualização do usuário consistente 100 onde é reparada pelo armazenamento 118. No fluxo H, o API de armazenamento recupera uma visualização da divisualização de visualização com base na solicitação de leitura 114. Exemplos dos tipos de visualizações que podem ser retornadas incluem uma coleção de documentos (por exemplo, uma lista de tarefas) ou um documento específico (por exemplo, um item de tarefa). Cada visualização pode ter sua própria réplica do documento. Por exemplo, uma réplica de uma tarefa pode aparecer em uma lista de tarefas associada com um projeto que é armazenado em uma divisualização de visualização da tarefa no armazenamento 118. Outra réplica dessa tarefa pode ser armazenada em uma divisualização de visualização do proprietário da tarefa. O estado das réplicas é o descrito com referência à figura 2A. Em outras palavras, as réplicas não foram atualizadas. Por exemplo, o diário 116 e o cache do usuário 136 podem conter a versão 2.1 do documento enquanto as réplicas no armazenamento 118 ainda estão na versão 2.0.[0030] The flow starts at G when the editor 102e tries to view the document 202 that was recently edited by the user, which triggers the generation of a read request 114. The read request 114 is received by the consistent user's view system 100 where it is serviced by storage 118. In stream H, the storage API retrieves a view from the view divisualization based on read request 114. Examples of the types of views that can be returned include a collection of documents (for example, a list to-do list) or a specific document (for example, a to-do item). Each view can have its own replica of the document. For example, a replica of a task might appear in a task list associated with a project that is stored in a preview view of the task in storage 118. Another replica of that task might be stored in an owner view of the task. The state of the replicas is as described with reference to figure 2A. In other words, the replicas were not updated. For example, journal 116 and user cache 136 may contain version 2.1 of the document while the replicas in store 118 are still at version 2.0.

[0031] O fluxo continua no fluxo I conforme o armazenamento 118 passa a solicitação de leitura 114 ao cache do usuário. O conteúdo da divisualização específica do usuário 140 associado com o editor é lido para localizar quaisquer documentos que são responsivos à solicitação de leitura 114 no fluxo J. A divisualização específica do usuário 140 pode ser selecionada com base em um identificador do usuário indicando o usuário que submeteu a solicitação de leitura 114. Nesse cenário, o documento que foi recentemente editado é responsivo à solicitação de leitura 114 e o usuário que submeteu a solicitação de leitura 114 é um editor recente do documento. O cache do usuário 136 retorna um ou mais registros de visualização responsiva do usuário associado com o documento responsivo da divisualização específica do usuário do editor 140 no fluxo K.[0031] Stream continues on stream I as store 118 passes read request 114 to user cache. The content of the user-specific view 140 associated with the editor is read to locate any documents that are responsive to the read request 114 in stream J. The user-specific view 140 may be selected based on a user identifier indicating the user who submitted read request 114. In this scenario, the document that was recently edited is responsive to read request 114 and the user who submitted read request 114 is a recent editor of the document. The user cache 136 returns one or more user responsive view records associated with the responsive document from the user specific view of the editor 140 in the K stream.

[0032] A visualização responsiva obtida no fluxo H e os registros de visualização responsiva do usuário I obtidos no fluxo K são imersos imediatamente no fluxo L e as mudanças ao documento contido no registro de visualização do usuário são aplicadas na visualização para criar uma visualização atualizada para apresentação ao editor (ou seja, uma visualização apresentada 202). Por exemplo, em uma visualização da lista de tarefas, a visualização pode ser atualizada para refletir a versão do item de tarefa no registro de visualização do usuário. Em uma visualização de documento, o conteúdo do item de tarefa pode ser atualizado com as mudanças no registro de visualização do usuário. Quando mais do que um registro de visualização responsivo do usuário é retornado, os registros de visualização responsiva do usuário são imersos na ordem recebida. A visualização apresentada é retornada ao editor no fluxo M.[0032] The responsive view taken in stream H and user I's responsive view records taken in stream K are immediately merged into stream L and changes to the document contained in the user view record are applied to the view to create an updated view for presentation to the editor (i.e., a displayed view 202). For example, in a to-do list view, the view can update to reflect the to-do item version in the user's view record. In a document view, the content of the to-do item can be updated with changes in the user's view record. When more than one user responsive view record is returned, the user responsive view records are merged in the order received. The displayed view is returned to the editor in the M stream.

[0033] Assim, mesmo quando as mudanças não foram completa mente aplicadas, as visualizações apresentadas ao editor refletem as mudanças feitas por esse editor e reconhecidas pelo sistema de visualização do usuário consistente 100. Por causa do sistema de visualização do usuário consistente 100 aplicar as mudanças do editor nas visualizações mostradas ao editor, o editor vê a versão do documento que o editor espera ver. Isso reduz ou elimina a confusão e preocupação desnecessárias apresentadas pelos editores que visualizam os documentos recentemente editados antes das mudanças serem aplicadas ao armazenamento 118.[0033] Thus, even when the changes have not been fully applied, the views presented to the editor reflect the changes made by that editor and recognized by the consistent user view system 100. Because of the consistent user view system 100 apply the editor changes to the views shown to the editor, the editor sees the version of the document that the editor expects to see. This reduces or eliminates the unnecessary confusion and worry presented by editors previewing newly edited documents before changes are applied to storage 118.

[0034] O diário 116, a camada de compromisso de mudança 132, a camada de recuperação de consistência 134 e o registro de execução sendo propagados são representados utilizando as linhas pontilhadas para representar que o sistema de visualização do usuário consistente 100 está operando para consistência eventual.[0034] The journal 116, the change commitment layer 132, the consistency recovery layer 134 and the run record being propagated are represented using the dotted lines to represent that the consistent user view system 100 is operating for consistency eventual.

[0035] A figura 2C é um fluxograma de uma solicitação de leitura 114 que retorna um documento com mudanças pendentes que foram feitas por um usuário diferente daquele que submeteu a solicitação de leitura 114 na modalidade do sistema de visualização do usuário consistente por usuário. Os fluxos de N a Q geralmente correspondem aos fluxos de G a J, conforme descrito com relação à figura 2B. Não há fluxo correspondente ao fluxo K por causa da solicitação de leitura 114 (fluxo N) ter sido submetida por um visualizador 102v em vez do editor 102e. Certamente, não há registro de visualização do usuário respon- sivo à solicitação de leitura 114 para retornar. Deve ser observado que o visualizador pode ter uma divisualização específica do usuário 140 contendo o registro de visualização dos usuários correspondente às mudanças pendentes para outros documentos. De modo alternativo, o visualizador pode não ter quaisquer mudanças pendentes e não ter uma divisualização específica do usuário 140 alocada nesse momento. O fluxo continua em R com a visualização apresentada 202 sendo mostrada ao usuário. Nesse caso, a visualização apresentada é a visualização 144 recuperada do armazenamento 118 e não contém mudanças feitas por outros editores. No geral, não seria prático ou eficiente pesquisar por todas as mudanças pendentes para cada solicitação de leitura 114 e aplicar as atualizações imediatamente às solicitações por qualquer visualizador. Ao contrário dos editores, visualizado- res são improváveis de se preocuparem pela ausência das mudanças pendentes ao documento, pois os visualizadores são improváveis de estarem cientes que essas mudanças pendentes existem.[0035] Figure 2C is a flowchart of a read request 114 that returns a document with pending changes that were made by a user other than the one who submitted the read request 114 in the user-consistent per-user view system mode. Flows from N to Q generally correspond to flows from G to J, as described with reference to Figure 2B. There is no stream matching stream K because read request 114 (stream N) was submitted by a viewer 102v instead of an editor 102e. Certainly, there is no record of viewing the user responsive to read request 114 to return. It should be noted that the viewer may have a user-specific view 140 containing the users' view record corresponding to pending changes to other documents. Alternatively, the viewer may not have any pending changes and not have a user-specific view 140 allocated at that time. The flow continues in R with the presented view 202 being shown to the user. In this case, the view presented is view 144 retrieved from storage 118 and does not contain changes made by other editors. In general, it would not be practical or efficient to search through all pending changes for every read 114 request and immediately apply the updates to the requests by any viewer. Unlike editors, viewers are unlikely to be concerned about the absence of pending changes to the document, as viewers are unlikely to be aware that these pending changes exist.

[0036] A figura 2D é um fluxograma de uma solicitação de leitura 114 que retorna um documento com mudanças pendentes que foram feitas por um usuário diferente daquele que submeteu a solicitação de leitura 114 em outra modalidade do sistema de visualização do usuário consistente. Fluxos de H a K são conforme descritos com relação à figura 2B. Mais uma vez, como na figura 2C, a solicitação de leitura 114 (fluxo N) é submetida por um usuário 102a diferente do editor 102e. Uma consulta de edição pendente é feita no diário 116 no fluxo S. A consulta de edição pendente é com base na solicitação de leitura 114. Em resposta à consulta de edição pendente, uma determinação é feita se o usuário for afetado por uma edição pendente e envia uma cópia do registro de execução relevante ao cache do usuário 136 no fluxo T. O registro de execução relevante é adicionado à divisualização específica do usuário 140 para o usuário afetado no fluxo U. Isso pode ocorrer para qualquer número de usuários afetados.[0036] Figure 2D is a flowchart of a read request 114 that returns a document with pending changes that were made by a user other than the one who submitted the read request 114 in another mode of the consistent user view system. Flows from H to K are as described with respect to figure 2B. Again, as in Fig. 2C, the read request 114 (stream N) is submitted by a user 102a other than the publisher 102e. A pending edit query is made on journal 116 on stream S. The pending edit query is based on read request 114. In response to the pending edit query, a determination is made if the user is affected by a pending edit and sends a copy of the relevant execution record to the cache of user 136 in stream T. The relevant execution record is added to the user-specific view 140 for the affected user in stream U. This can occur for any number of affected users.

[0037] Um usuário afetado é geralmente qualquer usuário que acessa uma visualização que tem uma edição pendente antes da edição ser completamente aplicada em todas as visualizações associadas. Em outras palavras, o usuário afetado é quem visualiza uma réplica de um documento fonte tendo uma edição pendente antes de todas as réplicas do documento fonte serem atualizadas. Por exemplo, o usuário afetado pode acessar um contato utilizando a visualização com base no sobrenome do contato. Esse contato pode ser submetido a uma edição pendente feita por outro usuário, por exemplo, uma mudança do número de telefone. Em um cenário, a réplica do contato da visualização do sobrenome pode ter sido atualizada com a mudança do número de telefone, mas a réplica do contato da visualização da empresa pode ainda não ser atualizada. O cenário reverso, onde o usuário inicialmente solicita o contato da visualização da empresa, também é possível. Em qualquer cenário, se o usuário afetado estava para acessar a réplica do contato de outra visualização, a informação apresentada nas duas visualizações seria inconsistente.[0037] An affected user is generally any user accessing a view that has an edit pending before the edit is fully applied to all associated views. In other words, the affected user is the one who views a replica of a source document pending editing before all replicas of the source document are updated. For example, the affected user can access a contact using the view based on the contact's last name. This contact may be subject to a pending edit by another user, for example a phone number change. In one scenario, the contact replica of the last name view might have been updated with the phone number change, but the contact replica of the company view might still not be updated. The reverse scenario, where the user initially requests contact from the business view, is also possible. In any scenario, if the affected user were to access the contact replica from another view, the information presented in the two views would be inconsistent.

[0038] Por meio da adição do registro de visualização do usuário na divisualização específica do usuário 140 para o usuário afetado, a operação do sistema de visualização do usuário consistente 100 com relação ao usuário afetado é efetivamente a mesma que a operação do sistema de visualização do usuário consistente 100 para o editor, conforme representado pelos fluxos de H a L descritos com relação à figura 2B para uma solicitação de leitura feita pelo editor. Em várias modalidades, o fluxo H pode executar simultaneamente com os fluxos de S a U e os fluxos de I a M podem seguir o fluxo U. Dessa forma, as visualizações consistentes, que refletem quaisquer mudanças pendentes, são apresentadas aos usuários afetados.[0038] By adding the user view record in the user specific view 140 for the affected user, the consistent user view system operation 100 with respect to the affected user is effectively the same as the view system operation from consistent user 100 to the publisher, as represented by the flows H to L described with respect to FIG. 2B for a read request made by the publisher. In various embodiments, the H stream can run concurrently with the S to U streams, and the I to M streams can follow the U stream. In this way, consistent views, which reflect any pending changes, are presented to affected users.

[0039] A figura 3 é um fluxograma de alto nível de uma modalida de do método de visualização consistente empregado pelo sistema de visualização do usuário consistente. O método de visualização consistente 300 começa com uma operação de escrita do documento 302 onde uma solicitação de escrita 112 é recebida. A operação de escrita do documento pode calcular os valores chave para a solicitação de escrita 112. Os valores chave podem incluir uma chave de divisualiza- ção e uma chave de fileira. A chave de divisualização identifica a divi- sualização na qual o documento é atribuído. A chave de fileira é um identificador de registro único. Em várias modalidades, a chave de fileira é o identificador de documento anexo com a versão do registro. A operação de escrita do documento pode também armazenar a solicitação de escrita 112 como um registro de histórico e/ou um registro de execução no diário 116 utilizando os valores chave. Mais especificamente, a solicitação de escrita 112 é escrita no diário 116 da divisuali- zação identificada pela chave de divisualização.[0039] Figure 3 is a high-level flowchart of one embodiment of the consistent visualization method employed by the consistent user visualization system. Consistent display method 300 begins with a document write operation 302 where a write request 112 is received. The document write operation may compute the key values for the write request 112. The key values may include a display key and a row key. The diview key identifies the diview to which the document is assigned. The row key is a unique record identifier. In various embodiments, the row key is the attached document identifier with the version of the record. The document write operation may also store the write request 112 as a history log and/or a run journal entry 116 using the key values. More specifically, the write request 112 is written to the diview journal 116 identified by the diview key.

[0040] Um cache de atualização do usuário operação 304 arma zena a solicitação de escrita 112 ou um registro de visualização do usuário com base na solicitação de escrita 112 em uma divisualização específica do usuário 140 (ou seja, cache). A divisualização específica do usuário 140 pode ser identificada com base em um identificador do usuário incluído na solicitação de escrita 112. Por exemplo, a solicitação de escrita 112 pode ser combinada com a divisualização específica do usuário 140 utilizando um valor chave correspondente ao identificador do usuário na solicitação de escrita 112. Novas divisões espe- cíficas do usuário podem ser criadas conforme necessário ou as divisões específicas do usuário existentes podem ser adicionadas quando usuários submetem as solicitações de escrita 112. As divisões específicas do usuário podem ser excluídas quando vazias ou niveladas ou cortadas, conforme os registros de execução são completamente aplicados ao armazenamento 118.[0040] A user update cache operation 304 stores the write request 112 or a user view record based on the write request 112 in a user specific view 140 (ie cache). The user-specific view 140 may be identified based on a user identifier included in the write request 112. For example, the write request 112 may be combined with the user-specific view 140 using a key value corresponding to the user identifier on write request 112. New user-specific divisions can be created as needed or existing user-specific divisions can be added when users submit write requests 112. User-specific divisions can be deleted when empty or flush or cut off as the run records are fully applied to storage 118.

[0041] Uma operação de recebimento de solicitação de leitura 306 aceita as solicitações de leitura 114 dos usuários. Uma operação de recuperação de visualização 308 obtém a visualização responsiva à solicitação de leitura da divisualização apropriada do armazenamento 118. A solicitação de leitura 114 pode ser recebida de um usuário que recentemente submeteu uma solicitação de escrita 112 (ou seja, um editor) ou um usuário que não submeter recentemente uma solicitação de escrita 112 (ou seja, um visualizador).[0041] A 306 read request receive operation accepts 114 read requests from users. A view retrieval operation 308 obtains the view responsive to the read request from the appropriate view from storage 118. The read request 114 may be received from a user who has recently submitted a write request 112 (i.e. an editor) or an user who has not recently submitted a write 112 request (ie a viewer).

[0042] Uma operação de verificação do cache do usuário 310 de termina se uma divisualização específica do usuário 140 existe para o usuário que submeteu a solicitação de leitura 114 e, se sim, se a divi- sualização específica do usuário 140 contém qualquer registro de visualização do usuário responsivo à solicitação de leitura 114. A divisu- alização específica do usuário 140 pode ser identificada com base em um identificador do usuário incluído na solicitação de leitura 114. Por exemplo, a solicitação de leitura 114 pode ser combinada com a divi- sualização específica do usuário 140 utilizando um valor chave correspondente ao identificador do usuário na solicitação de leitura 114. Se um registro de visualização do usuário responsivo estiver localizado na divisualização específica do usuário, uma operação de recuperação do registro de visualização do usuário 312 obtém o registro de visualização do usuário responsivo à solicitação de leitura 114 da divisualiza- ção específica do usuário 140 do cache do usuário. Uma operação de mesclagem 314 aplica as mudanças refletidas no registro de visualiza- ção do usuário recuperado na visualização responsiva para criar uma visualização atualizada para apresentação ao editor. Se nenhum registro de visualização do usuário responsivo existir, a visualização recuperada do armazenamento 118 não é modificada.[0042] A user cache check operation 310 determines whether a user-specific view 140 exists for the user who submitted the read request 114 and, if so, whether the user-specific view 140 contains any records of read request responsive user view 114. The user specific view 140 may be identified based on a user identifier included in the read request 114. For example, the read request 114 may be combined with the read request 114. user-specific view 140 using a key value corresponding to the user identifier in the read request 114. If a responsive user view record is located in the user-specific view, a user view record retrieval operation 312 obtains the record user-responsive view request read 114 user-specific view 140 of user cache. A merge operation 314 applies the changes reflected in the retrieved user view record in the responsive view to create an updated view for presentation to the editor. If no responsive user view record exists, the view retrieved from storage 118 is not modified.

[0043] Uma operação de visualização 316 apresenta a visualiza ção responsiva ao usuário. A visualização responsiva pode simplesmente ser a visualização retornada do armazenamento 118 se os registros de visualização responsiva do usuário não estavam localizados ou podem ser a visualização sincronizada composta pela visualização retornada do armazenamento 118 com o registro de visualização do usuário responsivo aplicado.[0043] A 316 preview operation presents the responsive preview to the user. The responsive view can simply be the view returned from store 118 if the user's responsive view records were not found or it can be the synchronized view composed of the view returned from store 118 with the user's responsive view record applied.

[0044] Uma operação de propagação 318 aplica a solicitação de escrita 112 ao armazenamento 118. Várias modalidades da operação de propagação agem em cada solicitação de escrita 112 conforme é recebida ou cada registro de execução conforme é criado. As modalidades do sistema de visualização do usuário consistente 100 repetem a operação de propagação com base na ocorrência de eventos ou em um cronograma ou base periódica até a aplicação ser bem-sucedida para fornecer consistência eventual. Uma operação de exclusão ideal 320 nivela a divisualização específica do usuário 140 ou exclui ou corta o registro de visualização do usuário da divisualização específica do usuário 140 na conclusão bem-sucedida da operação de propagação para liberar os recursos associados.[0044] A propagation operation 318 applies the write request 112 to the storage 118. Various embodiments of the propagation operation act on each write request 112 as it is received or each execution record as it is created. Embodiments of consistent user view system 100 repeat the propagation operation based on the occurrence of events either on a schedule or periodic basis until the application succeeds to provide eventual consistency. An optimal delete operation 320 flattens the user-specific diview 140 or deletes or cuts the user-view record from the user-specific diview 140 on successful completion of the seeding operation to release the associated resources.

[0045] As operações descritas acima fornecem visualizações con sistentes para o editor de um documento. O método pode opcionalmente fornecer visualizações consistentes a qualquer usuário afetado por uma edição pendente em um documento. Operações opcionais são representadas utilizando as linhas pontilhadas. Seguindo o cache de atualização do usuário operação 304 para o editor, uma determinação do usuário afetado 322 identifica outros usuários afetados pela mudança (por exemplo, outros usuários que visualizam o documento). A determinação do usuário afetado pode ser implementada pela consulta de um conjunto de registros de histórico lidos indicando os usuários que acessaram um documento específico. Tais registros lidos podem ser organizados pelo identificador de documento e ser independentes da visualização (ou seja, consultar os registros lidos do histórico não requer que a consulta abranja múltiplas divisões de visualização).[0045] The operations described above provide the editor with consistent views of a document. The method can optionally provide consistent views to any user affected by a pending edit to a document. Optional operations are represented using dotted lines. Following the user update cache operation 304 to the editor, an affected user determination 322 identifies other users affected by the change (for example, other users who view the document). Determining the affected user can be implemented by querying a read set of history records indicating the users who accessed a specific document. Such read records can be sorted by document identifier and be view-independent (ie, querying read history records does not require the query to span multiple view divisions).

[0046] Para cada usuário afetado identificado, uma operação do cache de atualização do usuário afetado 324, adiciona a edição pendente à divisualização específica do usuário 140 associada com o usuário que submeteu a solicitação de leitura 114. Em várias modalidades, a edição pendente é copiada do diário 116 ao cache do usuário 136. O método pode, então, continuar com a operação de recebimento de solicitação de leitura 306.[0046] For each affected user identified, an affected user's update cache operation 324 adds the pending edit to the user-specific view 140 associated with the user who submitted the read request 114. In various embodiments, the pending edit is copied from journal 116 to user cache 136. The method can then continue with the read request receive operation 306.

[0047] A matéria desse solicitação pode ser praticada em varieda de de modalidades como sistemas, dispositivos e outros artigos de fabricação ou como métodos. As modalidades podem ser implementadas como hardware, software, meio legível por computador, ou uma combinação desses. As modalidades e as funcionalidades descritas aqui podem operar através de uma pluralidade de sistemas computacionais incluindo, sem limitação, sistemas de desktop, sistemas computacionais com e sem fio, sistemas computacionais móveis (por exemplo, celulares, netbooks, tablet ou computadores do tipo slate, notebooks e notebooks), dispositivos portáteis, sistemas de multipro-cessador, com base em microprocessador ou eletrônicos de consumidor programável, minicomputadores e computadores mainframe.[0047] The subject of this application can be practiced in a variety of ways as systems, devices and other articles of manufacture or as methods. Embodiments may be implemented as hardware, software, computer-readable medium, or a combination thereof. Embodiments and functionality described herein may operate across a variety of computing systems including, without limitation, desktop systems, wired and wireless computing systems, mobile computing systems (e.g., cell phones, netbooks, tablet or slate-type computers, notebooks and notebooks), handheld devices, multiprocessor, microprocessor-based or programmable consumer electronics systems, minicomputers and mainframe computers.

[0048] Interfaces do usuário e informação de vários tipos podem ser exibidas através de telas de dispositivo computacional on-board ou através de unidades de exibição remotas associadas com um ou mais dispositivos computacionais. Por exemplo, interfaces do usuário e in- formação de vários tipos podem ser exibidas e interagidas com uma superfície de parede na qual as interfaces do usuário e informação de vários tipos são projetadas. A interação com a pluralidade de sistemas computacionais com a qual as modalidades da invenção podem ser praticadas inclui, entrada de tecla, entrada na tela de toque, voz ou outra entrada de áudio, entrada de gesto onde um dispositivo computacional associado é equipado com a funcionalidade de detecção (por exemplo, câmera) para capturar e interpretar os gestos do usuário para controlar a funcionalidade do dispositivo computacional e semelhantes.[0048] User interfaces and information of various types can be displayed through on-board computing device screens or through remote display units associated with one or more computing devices. For example, user interfaces and information of various types can be displayed and interacted with a wall surface onto which user interfaces and information of various types are projected. Interaction with the plurality of computer systems with which embodiments of the invention can be practiced include, key input, touch screen input, voice or other audio input, gesture input where an associated computing device is equipped with functionality sensing devices (e.g., camera) to capture and interpret user gestures to control computing device functionality, and the like.

[0049] As figuras 4 e 5 e as descrições associadas fornecem uma discussão de uma variedade de ambientes operacionais nos quais as modalidades da invenção podem ser praticadas. Entretanto, os dispositivos e sistemas ilustrados e discutidos são para finalidades de exemplo e ilustração e não são limitados de um vasto número configurações do dispositivo computacional que podem ser utilizadas para praticar as modalidades da invenção descrita acima.[0049] Figures 4 and 5 and associated descriptions provide a discussion of a variety of operating environments in which embodiments of the invention can be practiced. However, the devices and systems illustrated and discussed are for purposes of example and illustration and are not limited to the vast number of computational device configurations that can be used to practice the embodiments of the invention described above.

[0050] A figura 4 é um diagrama em blocos que ilustra componen tes físicos (ou seja, hardware) de um dispositivo computacional 400 com o qual as modalidades da invenção podem ser praticadas. Os componentes do dispositivo computacional descritos abaixo podem ser adequados para incorporar os dispositivos computacionais incluindo, entre outros, um computador pessoal, um tablet, um computador de superfície e um smartphone, ou qualquer outro dispositivo computacional aqui discutido. Em uma configuração básica, o dispositivo computacional 400 pode incluir pelo menos uma unidade de processamento 402 e uma memória do sistema 404. Dependendo da configuração e do tipo de dispositivo computacional, a memória do sistema 404 pode compreender, entre outros, armazenamento volátil (por exemplo, memória de acesso aleatório), armazenamento não volátil (por exemplo, memória somente leitura), memória flash, ou qualquer combinação dessas memórias. A memória do sistema 404 pode incluir um sistema operacional 405 e um ou mais módulos de programa 406 adequados para executar os aplicativos de software 420, como componentes do sistema de visualização do usuário consistente 100. Por exemplo, o sistema operacional 405 pode ser adequado para controlar a operação do dispositivo computacional 400. Além disso, as modalidades da invenção podem ser praticadas em conjunto com uma biblioteca de gráficos, outros sistemas operacionais, ou qualquer outro programa de aplicativo e não é limitado a qualquer aplicativo ou sistema específico. Essa configuração básica é ilustrada pelos componentes dentro de uma linha tracejada 408. O dispositivo computacional 400 pode ter recursos adicionais ou funcionalidade adicional. Por exemplo, o dispositivo computacional 400 pode também incluir dispositivos de armazenamento de dados adicionais (removível e/ou não removível) como, por exemplo, discos magnéticos, discos ópticos, ou fita. Tal armazenamento adicional é ilustrado por um dispositivo de armazenamento removível 409 e um dispositivo de armazenamento não removível 410.[0050] Figure 4 is a block diagram illustrating physical components (i.e., hardware) of a computational device 400 with which embodiments of the invention can be practiced. The computing device components described below may be suitable for incorporating computing devices including but not limited to a personal computer, a tablet, a surface computer and a smartphone, or any other computing device discussed herein. In a basic configuration, computing device 400 may include at least one processing unit 402 and system memory 404. Depending on the configuration and type of computing device, system memory 404 may comprise, among others, volatile storage (e.g., random access memory), non-volatile storage (eg, read-only memory), flash memory, or any combination of these memories. System memory 404 may include an operating system 405 and one or more program modules 406 suitable for running software applications 420, such as consistent user view system components 100. For example, operating system 405 may be suitable for controlling the operation of computational device 400. Furthermore, embodiments of the invention may be practiced in conjunction with a graphics library, other operating systems, or any other application program and is not limited to any specific application or system. This basic configuration is illustrated by components within a dashed line 408. Computing device 400 may have additional features or additional functionality. For example, computing device 400 may also include additional data storage devices (removable and/or non-removable) such as, for example, magnetic disks, optical disks, or tape. Such additional storage is illustrated by a removable storage device 409 and a non-removable storage device 410.

[0051] Conforme declarado acima, vários módulos de programa e arquivos de dados podem ser armazenados na memória do sistema 404. Durante a execução na unidade de processamento 402, os aplicativos de software 420 podem realizar os processos incluindo, entre outros, um ou mais dos estágios do método de visualização consistente 300. Outros módulos de programa que podem ser utilizados de acordo com as modalidades da presente invenção podem incluir e-mail eletrônico e aplicações de contatos, aplicações de processamento de palavra, aplicações de folha de dados, aplicações de banco de dados, aplicações de apresentação de slide, aplicações de desenho, etc.[0051] As stated above, various program modules and data files can be stored in system memory 404. While executing in processing unit 402, software applications 420 can perform processes including, but not limited to, one or more of stages of consistent visualization method 300. Other program modules that may be used in accordance with embodiments of the present invention may include electronic email and contact applications, word processing applications, datasheet applications, database, slideshow applications, drawing applications, etc.

[0052] Além disso, as modalidades da invenção podem ser prati cadas em um circuito elétrico compreendendo elementos eletrônicos discretos, embalados ou chips eletrônicos integrados contendo portas lógicas, um circuito utilizando um microprocessador, ou em um único chip contendo elementos eletrônicos ou microprocessadores. Por exemplo, as modalidades da invenção podem ser praticadas através de um sistema-em-um-chip (SOC) onde cada ou muitos dos componentes ilustrados podem ser integrados em um único circuito integrado. Tal dispositivo SOC pode incluir uma ou mais unidades de processamento, unidades de gráficos, unidades de comunicações, unidades de virtualização do sistema e várias funcionalidades de aplicação todas integradas (ou "gravadas") no substrato de chip como um único circuito integrado. Ao operar através de um SOC, a funcionalidade aqui descrita com relação aos aplicativos de software 420 pode ser operada através da lógica integrada específica de aplicação com outros componentes do dispositivo computacional 400 no único circuito integrado (chip). Modalidades da invenção podem também ser praticadas utilizando outras tecnologias capazes de realizar as operações lógicas como, por exemplo, E, OU e NÃO, incluindo entre outros, tecnologias mecânicas, ópticas, fluídicas e quânticas. Além disso, as modalidades da invenção podem ser praticadas dentro de um computador de finalidade geral ou em qualquer outro circuito ou sistema.[0052] Furthermore, embodiments of the invention can be practiced in an electrical circuit comprising discrete electronic elements, packaged or integrated electronic chips containing logic gates, a circuit utilizing a microprocessor, or in a single chip containing electronic elements or microprocessors. For example, embodiments of the invention can be practiced via a system-on-a-chip (SOC) where each or many of the illustrated components can be integrated into a single integrated circuit. Such a SOC device may include one or more processing units, graphics units, communications units, system virtualization units, and various application functionalities all integrated (or "embossed") into the chip substrate as a single integrated circuit. When operating through a SOC, functionality described herein with respect to software applications 420 may be operated through application-specific logic integrated with other components of computing device 400 on the single integrated circuit (chip). Embodiments of the invention can also be practiced using other technologies capable of performing logical operations such as, for example, AND, OR and NOT, including, among others, mechanical, optical, fluidic and quantum technologies. Furthermore, embodiments of the invention may be practiced within a general purpose computer or any other circuit or system.

[0053] O dispositivo computacional 400 pode também ter um ou mais dispositivo(s) de entrada 412 como um teclado, um mouse, uma caneta, um dispositivo de entrada de som, um dispositivo de entrada touch, etc. O(s) dispositivo(s) de saída 414 como uma tela alto- falantes, uma impressora, etc. podem também ser incluídos. Os dispositivos previamente mencionados são exemplos e outros podem ser utilizados. O dispositivo computacional 400 pode incluir uma ou mais conexões de comunicação 416 permitindo comunicações com outros dispositivos computacionais 418. Exemplos de conexões de comunicação adequados 416 incluem, entre outros, transmissor por RF, re-ceptor e/ou circuito transceptor; barramento serial universal (USB), portas paralelas e/ou seriais.[0053] The computing device 400 may also have one or more input device(s) 412 such as a keyboard, a mouse, a pen, a sound input device, a touch input device, etc. The output device(s) 414 such as a screen - speakers, a printer, etc. can also be included. The previously mentioned devices are examples and others can be used. Computing device 400 may include one or more communication connections 416 allowing communications with other computing devices 418. Examples of suitable communication connections 416 include, but are not limited to, RF transmitter, receiver, and/or transceiver circuit; universal serial bus (USB), parallel and/or serial ports.

[0054] O termo meio legível por computador como aqui utilizado pode incluir meio de armazenamento por computador. Meios de arma-zenamento por computador podem incluir meio volátil e não volátil, removível e não removível implementado em qualquer método ou tecnologia para armazenamento de informação, como instruções legíveis por computador, estruturas de dados, ou módulos de programa. A memória do sistema 404, o dispositivo de armazenamento removível 409 e o dispositivo de armazenamento não removível 410 são todos exemplos de meio de armazenamento por computador (ou seja, armazenamento de memória). Meios de armazenamento por computador podem incluir memória de acesso aleatório (RAM), memória somente leitura (ROM), memória somente leitura eletricamente apagável (EEPROM), memória flash ou outra tecnologia de memória, memória somente leitura de disco compacto (CD-ROM), discos versáteis digitais (DVD) ou outro armazenamento óptico, cassetes magnéticas, fita magnética, armazenamento em disco magnético ou outros dispositivos de armazenamento magnético, ou qualquer outro artigo de fabricação que possa ser utilizado para armazenar informação e que pode ser acessado pelo dispositivo computacional 400. Qualquer meio de ar-mazenamento por computador pode ser parte do dispositivo computacional 400.[0054] The term computer readable medium as used herein may include computer storage medium. Computer storage media may include volatile and non-volatile, removable and non-removable media implemented in any method or technology for storing information, such as computer-readable instructions, data structures, or program modules. System memory 404, removable storage device 409, and non-removable storage device 410 are all examples of computer storage medium (i.e., memory storage). Computer storage media may include random access memory (RAM), read-only memory (ROM), electrically erasable read-only memory (EEPROM), flash memory or other memory technology, compact disc read-only memory (CD-ROM) , digital versatile disks (DVD) or other optical storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other article of manufacture that can be used to store information and that can be accessed by the computing device 400. Any computer storage medium may be part of computing device 400.

[0055] As figuras 5A e 5B ilustram um dispositivo computacional móvel 500 com o qual as modalidades da invenção podem ser praticadas. Exemplos de dispositivos computacionais móveis adequados incluem, entre outros, um celular, um smartphone, um tablet, um computador de superfície e um notebook. Em uma configuração básica, o dispositivo computacional móvel 500 é um computador portátil tendo ambos os elementos de entrada e elementos de saída. O dispositivo computacional móvel 500 inclui tipicamente uma tela 505 e um ou mais botões de entrada 510 que permitem ao usuário inserir informação no dispositivo computacional móvel 500. A tela 505 do dispositivo computacional móvel 500 pode também funcionar como um dispositivo de entrada (por exemplo, uma tela sensível ao toque). Se incluído, um elemento de entrada lateral opcional 515 possibilita ainda a entrada do usuário. O elemento de entrada lateral 515 pode ser uma chave giratória, um botão, ou qualquer outro tipo de elemento de entrada manual. Nas modalidades alternativas, o dispositivo computacional móvel 500 pode incorporar mais ou menos elementos de entrada. Por exemplo, a tela 505 pode não ser uma tela sensível ao toque em algumas modalidades. Ainda em outra modalidade alternativa, o dispositivo computacional móvel 500 é um sistema de telefone portátil, como um celular. O dispositivo computacional móvel 500 pode também incluir um teclado numérico opcional 535. O teclado numérico opcional 535 pode ser um teclado numérico físico ou um teclado numérico fácil gerado na tela sensível ao toque. Em várias modalidades, os elementos de saída incluem a tela 505 para mostrar uma interface do usuário gráfica, um indicador visual 520 (por exemplo, um diodo emissor de luz), e/ou um transdutor de áudio 525 (por exemplo, um alto-falante). Em algumas modalidades, o dispositivo computacional móvel 500 incorpora um transdutor de vibração para fornecer ao usuário feedback tátil. Ainda em outra modalidade, o dispositivo computacional móvel 500 incorpora as portas de entrada e/ou saída, como uma entrada de áudio (por exemplo, uma tomada de microfone), uma saída de áudio (por exemplo, uma tomada de fone de ouvido) e uma saída de vídeo (por exemplo, uma porta HDMI) para enviar sinais ou receber sinais de um dis-positivo externo.[0055] Figures 5A and 5B illustrate a mobile computing device 500 with which embodiments of the invention can be practiced. Examples of suitable mobile computing devices include, but are not limited to, a mobile phone, smartphone, tablet, surface computer and notebook computer. In a basic configuration, mobile computing device 500 is a portable computer having both input elements and output elements. Mobile computing device 500 typically includes a screen 505 and one or more input buttons 510 that allow the user to enter information into mobile computing device 500. Screen 505 of mobile computing device 500 can also function as an input device (e.g., a touch screen). If included, an optional 515 side entry element further allows user entry. The side input element 515 can be a rotary switch, a button, or any other type of manual input element. In alternative embodiments, mobile computing device 500 may incorporate more or less input elements. For example, screen 505 may not be a touch screen in some embodiments. In yet another alternative embodiment, mobile computing device 500 is a portable telephone system, such as a cell phone. Mobile computing device 500 may also include an optional numeric keypad 535. Optional numeric keypad 535 may be a physical numeric keypad or an easy numeric keypad generated on the touch screen. In various embodiments, output elements include screen 505 for displaying a graphical user interface, a visual indicator 520 (e.g., a light-emitting diode), and/or an audio transducer 525 (e.g., a loudspeaker). speaker). In some embodiments, the mobile computing device 500 incorporates a vibration transducer to provide the user with haptic feedback. In yet another embodiment, the mobile computing device 500 incorporates input and/or output ports, such as an audio input (e.g., a microphone jack), an audio output (e.g., a headphone jack) and a video output (eg an HDMI port) for sending signals to or receiving signals from an external device.

[0056] A figura 5B é um diagrama em blocos que ilustra a arquite tura de uma modalidade de um dispositivo computacional móvel. Isso é, o dispositivo computacional móvel 500 pode incorporar um sistema (ou seja, uma arquitetura) 502 para implementar algumas modalidades. Em uma modalidade, o sistema 502 é implementado como um smartphone capaz de executar um ou mais aplicativos (por exemplo, navegadores, clientes de e-mail, notas, gerenciadores de contato, mensagem a clientes, clientes/jogadores de jogos e mídia). Em algumas modalidades, o sistema 502 é integrado como um dispositivo computacional, como um assistente digital pessoal integrado (PDA) e telefone sem fio.[0056] Figure 5B is a block diagram illustrating the architecture of an embodiment of a mobile computing device. That is, the mobile computing device 500 may incorporate a system (i.e., an architecture) 502 for implementing some embodiments. In one embodiment, system 502 is implemented as a smartphone capable of running one or more applications (eg, browsers, email clients, notes, contact managers, messaging clients, game and media clients/players). In some embodiments, system 502 is integrated with a computing device, such as an integrated personal digital assistant (PDA) and cordless telephone.

[0057] Um ou mais programas de aplicativo 565 podem ser carre gados na memória 562 e executados ou em associação com o sistema operacional 564. Exemplos dos programas de aplicativo incluem programas de discador de telefone, programas de e-mail, programas de gerenciamento de informação pessoal (PIM), programas de processamento de texto, programas de planilhas, programas de navegador da Internet, programas de mensagens e assim por diante. O sistema 502 também inclui uma área de armazenamento não volátil 568 dentro da memória 562. A área de armazenamento não volátil 568 pode ser utilizada para armazenar informação persistente que deveria ser perdida se o sistema 502 for desligado. Os programas de aplicativo 565 podem utilizar e armazenar informação na área de armazenamento não volátil 568, como e-mail ou outras mensagens utilizadas por um aplicativo de e-mail e similar. Um aplicativo de sincronização (não mostrado) também reside no sistema 502 e é programado para interagir com um aplicativo de sincronização correspondente residente em um computador hospedeiro para manter a informação armazenada na área de armazenamento não volátil 568 sincronizada com a informação correspondente armazenada no computador hospedeiro. Como deve ser observado, outros solicitaçãos podem ser carregados na memória 562 e executados no dispositivo computacional móvel 500, incluindo os aplicativos de software aqui descritos.[0057] One or more application programs 565 can be loaded into memory 562 and run on or in association with the operating system 564. Examples of application programs include telephone dialer programs, e-mail programs, personal information (PIM), word processing programs, spreadsheet programs, Internet browser programs, messaging programs, and so on. System 502 also includes an area of non-volatile storage 568 within memory 562. Non-volatile storage area 568 may be used to store persistent information that would be lost if system 502 were to shut down. Application programs 565 can utilize and store information in non-volatile storage area 568, such as e-mail or other messages used by an e-mail application and the like. A synchronization application (not shown) also resides on system 502 and is programmed to interface with a corresponding synchronization application residing on a host computer to keep information stored in non-volatile storage area 568 synchronized with corresponding information stored on the host computer. . As will be appreciated, other applications may be loaded into memory 562 and executed on mobile computing device 500, including the software applications described herein.

[0058] O sistema 502 tem uma fonte de alimentação 570, que po de ser implementada como uma ou mais baterias. A fonte de alimentação 570 pode ainda incluir uma fonte de alimentação externa, como um adaptador AC ou uma base de carregamento de energia que suplementa ou recarrega as baterias.[0058] The system 502 has a power supply 570, which can be implemented as one or more batteries. Power supply 570 may further include an external power source, such as an AC adapter or a power charging cradle that supplements or recharges the batteries.

[0059] O sistema 502 pode também incluir um rádio 572 que reali za a função de transmitir e receber as comunicações de frequência de rádio. O rádio 572 facilita a conectividade sem fio entre o sistema 502 e o mundo externo através de um transportador de comunicações ou provedor de serviços. As transmissões para e do rádio 572 são conduzidas sob o controle do sistema operacional 564. Em outras palavras, as comunicações recebidas pelo rádio 572 podem ser disseminadas aos programas de aplicativo 565 através do sistema operacional 564 e vice-versa.[0059] System 502 may also include a radio 572 that performs the function of transmitting and receiving radio frequency communications. The 572 radio facilitates wireless connectivity between the 502 system and the outside world through a communications carrier or service provider. Transmissions to and from radio 572 are conducted under the control of operating system 564. In other words, communications received by radio 572 can be disseminated to application programs 565 through operating system 564 and vice versa.

[0060] O indicador visual 520 pode ser utilizado para fornecer notifi cações visuais, e/ou uma interface de áudio 574 pode ser utilizada para produzir notificações sonoras através do transdutor de áudio 525. Na modalidade ilustrada, o indicador visual 520 é um diodo emissor de luz (LED) e o transdutor de áudio 525 é um alto-falante. Esses dispositivos podem ser diretamente acoplados à fonte de alimentação 570 de modo que quando ativados, eles permanecem ligados por uma duração estabelecida pelo mecanismo de notificação embora o processador 560 e outros componentes possam encerrar para conservar a carga da bateria. O LED pode ser programado para permanecer ligado indefinidamente até o usuário tomar ação para indicar o status ligado do dispositivo. A interface de áudio 574 é utilizada para fornecer sinais sonoros para e receber sinais sonoros do usuário. Por exemplo, além de ser acoplada ao transdutor de áudio 525, interface de áudio 574 pode também ser acoplada a um microfone para receber entrada sonora, como para facilitar uma conversa telefônica. De acordo com as modalidades da presente invenção, o microfone também pode servir como um sensor de áudio para facilitar o controle de notificações, conforme será descrito abaixo. O sistema 502 pode ainda incluir uma interface de vídeo 576 que permite uma operação de uma câmera on-board 530 para registrar as imagens estáticas fluxos de vídeo e similares.[0060] The visual indicator 520 can be used to provide visual notifications, and/or an audio interface 574 can be used to produce sound notifications through the audio transducer 525. In the illustrated embodiment, the visual indicator 520 is an emitter diode of light (LED) and the 525 audio transducer is a loudspeaker. These devices can be directly coupled to power supply 570 so that when activated, they remain on for a duration set by the notification mechanism although processor 560 and other components may shut down to conserve battery power. The LED can be programmed to remain on indefinitely until the user takes action to indicate the device's on status. Audio interface 574 is used to provide audio signals to and receive audio signals from the user. For example, in addition to being coupled to audio transducer 525, audio interface 574 may also be coupled to a microphone to receive sound input, such as to facilitate a telephone conversation. According to the embodiments of the present invention, the microphone can also serve as an audio sensor to facilitate the control of notifications, as will be described below. System 502 may further include a video interface 576 that allows operation of an on-board camera 530 to record still images, video streams and the like.

[0061] Um dispositivo computacional móvel 500 que implementa o sistema 502 pode ter recursos adicionais ou funcionalidades adicionais. Por exemplo, o dispositivo computacional móvel 500 pode também incluir dispositivos de armazenamento de dados adicionais (removível e/ou não removível) como, discos magnéticos, discos ópticos, ou fita. Tal armazenamento adicional é ilustrado pela área de armazenamento não volátil 568.[0061] A mobile computing device 500 that implements system 502 may have additional features or additional functionality. For example, mobile computing device 500 may also include additional data storage devices (removable and/or non-removable) such as magnetic disks, optical disks, or tape. Such additional storage is illustrated by non-volatile storage area 568.

[0062] Dados/informações geradas ou capturadas pelo dispositivo computacional móvel 500 e armazenadas através do sistema 502 podem ser armazenados localmente no dispositivo computacional móvel 500, conforme descrito acima, ou os dados podem ser armazenados em qualquer número de meios que podem ser acessados pelo dispositivo através do rádio 572 ou através de uma conexão cabeada entre o dispositivo computacional móvel 500 e um dispositivo computacional separado associado com o dispositivo computacional móvel 500, por exemplo, um computador de servidor em uma rede computacional distribuída, como a Internet. Como deve ser observado tais da- dos/informações podem ser acessados através do dispositivo compu-tacional móvel 500 através do rádio 572 ou através de uma rede computacional distribuída. De forma similar, tais dados/informações podem ser prontamente transferidos entre os dispositivos computacionais para armazenamento e uso de acordo com a transferência e meios de armazenamento de dados/informações bem conhecidos, incluindo email eletrônico e sistemas de compartilhamento de dados/informações colaborativos.[0062] Data/information generated or captured by the mobile computing device 500 and stored through the system 502 can be stored locally on the mobile computing device 500, as described above, or the data can be stored on any number of media that can be accessed by the device via radio 572 or via a wired connection between mobile computing device 500 and a separate computing device associated with mobile computing device 500, for example, a server computer on a distributed computing network such as the Internet. As should be noted, such data/information may be accessed via mobile computing device 500 via radio 572 or via a distributed computing network. Similarly, such data/information can be readily transferred between computing devices for storage and use in accordance with transfer and well-known data/information storage media, including electronic email and collaborative data/information sharing systems.

[0063] A descrição e a ilustração de uma ou mais modalidades fornecidas nesse solicitação são destinadas a fornecer uma revelação completa do escopo completo da matéria aos técnicos no assunto e não destinada a limitar ou restringir o escopo da invenção conforme reivindicado em qualquer forma. As modalidades, exemplos e detalhes fornecidos nesse solicitação são considerados suficientes para conduzir a posse e permitir que os técnicos no assunto pratiquem o melhor modo, de acordo com a invenção reivindicada. As descrições das estruturas, operações e ações consideradas bem conhecidas pelos técnicos no assunto podem ser breves ou omitidas para evitar obscurecer aspectos menos conhecidos ou aspectos únicos da matéria desse solicitação. A invenção reivindicada não deve ser construída como limi-tada a qualquer modalidade, exemplo, ou detalhe fornecido nesse solicitação a menos que expressamente declarado aqui. Independentemente de ser mostrado ou descrito coletiva ou separadamente, os vários recursos (ambos estrutural ou metodológico) são destinados a ser seletivamente incluídos ou omitidos para produzir uma modalidade com um conjunto particular de recursos. Ainda, qualquer ou todas as funções e ações mostradas ou descritas podem ser realizadas em qualquer ordem ou simultaneamente. Tendo fornecida a descrição e ilustração do presente solicitação, um técnico no assunto pode imaginar variações, modificações e modalidades alternativas que ficam dentro do espírito dos aspectos mais amplos do conceito inventivo geral incorporado nesse solicitação que não sai do escopo mais amplo da invenção reivindicada.[0063] The description and illustration of one or more embodiments provided in this application are intended to provide a complete disclosure of the complete scope of the subject matter to those skilled in the art and not intended to limit or restrict the scope of the invention as claimed in any way. The embodiments, examples and details provided in this application are considered sufficient to conduct possession and allow those skilled in the art to best practice in accordance with the claimed invention. Descriptions of structures, operations, and actions considered well known to those skilled in the art may be brief or omitted to avoid obscuring lesser known or unique aspects of the subject matter of this solicitation. The claimed invention is not to be construed as limited to any embodiment, example, or detail provided in this application unless expressly stated herein. Whether shown or described collectively or separately, the various features (both structural and methodological) are intended to be selectively included or omitted to produce a modality with a particular set of features. Additionally, any or all of the functions and actions shown or described can be performed in any order or simultaneously. Having provided the description and illustration of the present application, a person skilled in the art can imagine variations, modifications and alternative embodiments that are within the spirit of the broader aspects of the general inventive concept embodied in this application that do not depart from the broader scope of the claimed invention.

Claims (15)

1. Método para fornecer exibições consistentes de dados particionados em um serviço de grande escala eventualmente consistente caracterizado pelo fato de que compreende: armazenar uma edição em uma cópia off-line de um documento fonte em uma primeira unidade de armazenamento antes de ser aplicada ao documento fonte, a edição enviada por um usuário, o documento fonte armazenado em uma segunda unidade de armazenamento, e em que a edição não é aplicada imediatamente ao documento fonte, e em que a primeira unidade de armazenamento e a segunda unidade de armazenamento são implementadas como armazenamento em nuvem; adicionar a edição a uma partição específica do usuário até que a edição tenha sido aplicada ao documento fonte, em que a partição específica do usuário é incluída em um cache de usuário particionado por usuário e em que o cache de usuário é implementado como um armazenamento em nuvem e o cache de usuário é fornecido como um recurso separado da primeira unidade de armazenamento e da segunda unidade de armazenamento; e responder a solicitações de leitura enviadas pelo usuário que fez a edição abrangendo o documento fonte antes que a edição fosse aplicada ao documento fonte da segunda unidade de armazenamento mesclada com a edição do cache de usuário.1. Method for providing consistent views of partitioned data in an eventually consistent large-scale service, characterized in that it comprises: storing an edit to an offline copy of a source document on a first storage unit before being applied to the document source, the edit submitted by a user, the source document stored in a second storage unit, and where the edit is not immediately applied to the source document, and where the first storage unit and the second storage unit are implemented as cloud storage; add the edit to a user-specific partition until the edit has been applied to the source document, whereupon the user-specific partition is added to a user-partitioned user cache, and where the user cache is implemented as an on-premises store. cloud and user cache is provided as a separate feature of the first storage unit and the second storage unit; and responding to read requests submitted by the editing user covering the source document before the edit is applied to the source document from the second storage unit merged with the user cache edit. 2. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que ainda compreende a etapa de confirmar o recebimento da edição para o usuário após a edição ter sido armazenada na partição específica do usuário.2. Method, according to claim 1, characterized in that it further comprises the step of confirming receipt of the edit to the user after the edit has been stored in the user-specific partition. 3. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que ainda compreende a etapa de excluir a edição da partição específica do usuário quando a edição tiver sido aplicada ao documento fonte armazenado na segunda unidade de armazenamento.3. Method, according to claim 1, characterized in that it further comprises the step of deleting the user-specific partition edition when the edition has been applied to the source document stored in the second storage unit. 4. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que a etapa de responder a solicitações de leitura enviadas pelo usuário que fez a edição abrangendo o documento fonte antes da aplicação da edição compreende ainda as etapas de: recuperar o documento fonte da segunda unidade de arma-zenamento; recuperar a edição do documento fonte da partição específica do usuário para o usuário que fez a edição em resposta à solicitação de leitura; e aplicar a edição da partição específica do usuário ao documento fonte ao responder à solicitação de leitura do usuário que fez a edição.4. Method, according to claim 1, characterized by the fact that the step of responding to reading requests sent by the user who made the edit covering the source document before applying the edit also comprises the steps of: retrieving the source document the second storage unit; retrieve the user-specific partition source document edit for the user who made the edit in response to the read request; and apply the user-specific partition edit to the source document by responding to the read request from the user who made the edit. 5. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que ainda compreende: receber uma solicitação de leitura enviada por um segundo usuário, a solicitação de leitura abrangendo o documento fonte antes da edição ser aplicada; identificar a edição aplicável ao documento fonte; adicionar a edição à partição específica do usuário para o segundo usuário.5. Method according to claim 1, characterized in that it further comprises: receiving a read request sent by a second user, the read request covering the source document before the edit is applied; identify the edition applicable to the source document; add edition to user specific partition for second user. 6. Método, de acordo com a reivindicação 5, caracterizado pelo fato de que ainda compreende a etapa de responder a uma solicitação de leitura enviada pelo segundo usuário com o documento fonte da segunda unidade de armazenamento mesclado com a edição da partição específica do usuário para o segundo usuário.6. Method, according to claim 5, characterized in that it further comprises the step of responding to a read request sent by the second user with the source document of the second storage unit merged with the edition of the user-specific partition to the second user. 7. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que ainda compreende as etapas de: receber uma solicitação de gravação enviada pelo usuário, a solicitação de gravação compreendendo a edição do documento fonte feita pelo usuário; e receber, do usuário, uma solicitação de leitura abrangendo o documento fonte antes que a edição seja aplicada.7. Method, according to claim 1, characterized in that it further comprises the steps of: receiving a recording request sent by the user, the recording request comprising the editing of the source document made by the user; and receiving a read request covering the source document from the user before the edit is applied. 8. Sistema para fornecer visualizações consistentes de dados particionados em um serviço de grande escala eventualmente consistente para um usuário editando os dados compreendendo: um primeiro sistema de armazenamento armazenando dados particionados e atendendo solicitações de gravação; um segundo sistema de armazenamento armazenando dados particionados e atendendo a solicitações de leitura; um cache associado ao usuário que fez a edição; caracterizado pelo fato de que o primeiro sistema de ar-mazenamento e o segundo sistema de armazenamento são implementados como armazenamento em nuvem, o cache de usuário é implementado como um armazenamento em nuvem e o cache de usuário é fornecido como um recurso separado do primeiro sistema de armazenamento e do segundo sistema de armazenamento; e um dispositivo de computação tendo um processador e uma memória, o dispositivo de computação operável para: armazenar, no primeiro sistema de armazenamento, uma edição de um documento a partir dos dados particionados para aplicação no segundo sistema de armazenamento; armazenar a edição do documento no cache associado ao usuário que fez a edição até que a edição seja aplicada ao segundo sistema de armazenamento; e responder a uma solicitação de leitura do documento afetado pela edição e enviada pelo usuário que efetuou a edição com o do- cumento do segundo sistema de armazenamento atualizado usando a edição do cache associado ao usuário que efetuou a edição.8. System for providing consistent views of partitioned data in an eventually consistent large-scale service to a user editing the data, comprising: a first storage system storing partitioned data and servicing write requests; a second storage system storing partitioned data and servicing read requests; a cache associated with the user who made the edit; characterized in that the first storage system and the second storage system are implemented as cloud storage, the user cache is implemented as a cloud storage, and the user cache is provided as a separate feature of the first system storage and second storage system; and a computing device having a processor and a memory, the computing device operable to: store, in the first storage system, an edition of a document from the partitioned data for application in the second storage system; storing the document edit in the cache associated with the user who made the edit until the edit is applied to the second storage system; and responding to a read request for the document affected by the edit sent by the user who performed the edit with the document from the second storage system updated using the edit from the cache associated with the user who performed the edit. 9. Sistema, de acordo com a reivindicação 8, caracterizado pelo fato de que o dispositivo de computação é ainda operável para confirmar o recebimento de uma edição após armazenar a edição do documento no cache associado ao usuário que fez a edição.9. System according to claim 8, characterized in that the computing device is still operable to confirm receipt of an edit after storing the document edit in the cache associated with the user who made the edit. 10. Sistema, de acordo com a reivindicação 8, caracterizado pelo fato de que o dispositivo de computação é ainda operável para excluir a edição do cache quando a edição tiver sido aplicada ao segundo sistema de armazenamento.10. System according to claim 8, characterized in that the computing device is still operable to delete the edition from the cache when the edition has been applied to the second storage system. 11. Sistema, de acordo com a reivindicação 8, caracterizado pelo fato de que o dispositivo de computação é ainda operável para receber uma solicitação de leitura abrangendo o documento afetado pela edição e enviado pelo usuário que fez a edição antes da edição ser aplicada à partição baseada em visualização da segunda sistema de armazenamento.11. System according to claim 8, characterized in that the computing device is still operable to receive a read request covering the document affected by the edit and sent by the user who made the edit before the edit is applied to the partition view-based second storage system. 12. Sistema, de acordo com a reivindicação 11, caracterizado pelo fato de que o dispositivo de computação é ainda operável para responder à solicitação de leitura com o documento do segundo sistema de armazenamento atualizado usando a edição do cache associado ao usuário que fez a edição.12. System according to claim 11, characterized in that the computing device is still operable to respond to the read request with the document from the second storage system updated using the edit from the cache associated with the user who made the edit . 13. Sistema, de acordo com a reivindicação 8, caracterizado pelo fato de que o dispositivo de computação é ainda operável para atribuir um número de versão à edição armazenada na partição específica do usuário que é diferente do número da versão do documento que está sendo editado.13. System according to claim 8, characterized in that the computing device is further operable to assign a version number to the edition stored in the user-specific partition that is different from the version number of the document being edited . 14. Sistema, de acordo com a reivindicação 8, caracterizado pelo fato de que ainda compreende: um cache associado a um segundo usuário do sistema; e em que o dispositivo de computação pode ser operado para: receber, do segundo usuário, uma solicitação de leitura englobando o documento afetado pela edição; e adicionar a edição ao cache para o segundo usuário.14. System, according to claim 8, characterized in that it further comprises: a cache associated with a second user of the system; and wherein the computing device is operable to: receive, from the second user, a read request encompassing the document affected by the edit; and add the edit to the cache for the second user. 15. Método para fornecer exibições consistentes de dados particionados em um serviço de grande escala eventualmente consistente para um usuário editando os dados compreendendo as etapas de: receber uma solicitação de gravação enviada por um usuário, a solicitação de gravação compreendendo uma edição feita pelo usuário em um documento a partir dos dados particionados; armazenar a edição em um primeiro sistema de armazenamento atendendo a solicitações de gravação para aplicação a um segundo sistema de armazenamento atendendo a solicitações de leitura; caracterizado pelo fato de que o primeiro sistema de ar-mazenamento e o segundo sistema de armazenamento são implementados como armazenamento em nuvem; armazenar em cache a edição em uma partição específica do usuário até que a edição tenha sido aplicada ao segundo sistema de armazenamento, em que a partição específica do usuário é incluída em um cache de usuário particionado por usuário e em que o cache de usuário é implementado como uma nuvem armazenamento, e o cache de usuário é fornecido como um recurso separado do primeiro sistema de armazenamento e do segundo sistema de ar-mazenamento; reconhecer a aceitação da edição para o usuário após a edição ter sido armazenada na partição específica do usuário; excluir a edição da partição específica do usuário quando a edição foi aplicada ao segundo sistema de armazenamento; receber, do usuário, uma solicitação de leitura abrangendo o documento afetado pela edição antes que a edição tenha sido aplicada ao segundo sistema de armazenamento; recuperar o documento do segundo sistema de armazenamento em resposta à solicitação de leitura; recuperar a edição do documento a partir da partição específica do usuário em resposta à solicitação de leitura; aplicar a edição do cache de usuário ao documento para produzir um documento atualizado; e retornar, ao usuário, o documento atualizado em resposta à requisição de leitura.15. Method for providing consistent views of partitioned data in an eventually consistent large-scale service to a user editing the data comprising the steps of: receiving a write request submitted by a user, the write request comprising an edit made by the user on a document from the partitioned data; storing the issue in a first storage system servicing write requests for application to a second storage system servicing read requests; characterized in that the first storage system and the second storage system are implemented as cloud storage; cache the edition in a user-specific partition until the edition has been applied to the second storage system, whereupon the user-specific partition is added to a user-partitioned user cache, and where the user cache is implemented as a cloud storage, and the user cache is provided as a separate feature of the first storage system and the second storage system; acknowledge acceptance of the edit to the user after the edit has been stored in the user-specific partition; delete the user-specific partition edition when the edition was applied to the second storage system; receiving, from the user, a read request covering the document affected by the edit before the edit has been applied to the second storage system; retrieving the document from the second storage system in response to the read request; retrieve the edit of the document from the user-specific partition in response to the read request; apply user cache editing to the document to produce an up-to-date document; and return, to the user, the updated document in response to the read request.
BR112016028798-3A 2014-06-18 2015-06-16 METHOD AND SYSTEM FOR PROVIDING CONSISTENT VIEWS OF PARTITIONED DATA IN A LARGE-SCALE EVENTUALLY CONSISTENT SERVICE BR112016028798B1 (en)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/308,429 US10318618B2 (en) 2014-06-18 2014-06-18 Consistent views of partitioned data in eventually consistent systems
US14/308,429 2014-06-18
PCT/US2015/035907 WO2015195588A1 (en) 2014-06-18 2015-06-16 Consistent views of partitioned data in eventually consistent systems

Publications (3)

Publication Number Publication Date
BR112016028798A2 BR112016028798A2 (en) 2017-08-22
BR112016028798A8 BR112016028798A8 (en) 2021-06-08
BR112016028798B1 true BR112016028798B1 (en) 2023-07-04

Family

ID=

Similar Documents

Publication Publication Date Title
US10318618B2 (en) Consistent views of partitioned data in eventually consistent systems
CN106663103B (en) Scalable eventual consistency system using logical document logs
AU2014284461B2 (en) Syncing content clipboard
US10397319B2 (en) Server-side selective synchronization
US9374326B2 (en) Providing information for shared content
US20170068469A1 (en) Remote Shared Virtual Disk Snapshot Creation
US11474977B2 (en) Snapshot isolation in a distributed storage system
AU2022201538A1 (en) Control transfer of shared content
US9298797B2 (en) Preserving content item collection data across interfaces
US20190121874A1 (en) Storage space manager
EP2915066A2 (en) System and method for providing linked note-taking
CN108140043B (en) Read-write protocol for attaching only distributed database
US11496552B2 (en) Intent tracking for asynchronous operations
TW201539218A (en) Encoded associations with external content items
BR112016028798B1 (en) METHOD AND SYSTEM FOR PROVIDING CONSISTENT VIEWS OF PARTITIONED DATA IN A LARGE-SCALE EVENTUALLY CONSISTENT SERVICE
AU2021437124B2 (en) Intent tracking for asynchronous operations