BRPI0609007A2 - sistemas e métodos para manipulação de dados em um sistema de armazenamento de dados - Google Patents

sistemas e métodos para manipulação de dados em um sistema de armazenamento de dados Download PDF

Info

Publication number
BRPI0609007A2
BRPI0609007A2 BRPI0609007-9A BRPI0609007A BRPI0609007A2 BR PI0609007 A2 BRPI0609007 A2 BR PI0609007A2 BR PI0609007 A BRPI0609007 A BR PI0609007A BR PI0609007 A2 BRPI0609007 A2 BR PI0609007A2
Authority
BR
Brazil
Prior art keywords
data
component
item
storage system
data storage
Prior art date
Application number
BRPI0609007-9A
Other languages
English (en)
Inventor
Amit Shukla
Gregory S Friedman
Jack Richins
Jason T Hunter
Jeffrey T Pearce
Michael J Newman
Nigel R Ellis
Richard L Negrin
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of BRPI0609007A2 publication Critical patent/BRPI0609007A2/pt

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2308Concurrency control
    • G06F16/2336Pessimistic concurrency control approaches, e.g. locking or multiple versions without time stamps
    • G06F16/2343Locking methods, e.g. distributed locking or locking implementation details
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2308Concurrency control
    • G06F16/2315Optimistic concurrency control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/289Object oriented databases
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/40Data acquisition and logging

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Storage Device Security (AREA)

Abstract

SISTEMAS E MéTODOS PARA MANIPULAçãO DE DADOS EM UM SISTEMA DE ARMAZENAMENTO DE DADOS. A presente invenção oferece um sistema e/ou um método que facilita a manipulação de dados associados a um sistema de armazenamento de dados, em que o sistema de armazenamento de dados tem pelo menos uma dentre uma característica e uma restrição associada a um modelo de dados. O modelo de dados pode representar o sistema de armazenamento de dados de modo que o sistema de armazenamento de dados seja um sistema de arquivos baseado em banco de dados. Um componente de manipulação de dados pode manipular dados associados ao modelo de dados e aplicar pelo menos uma dentre a restrição e a característica para assegurar a integridade de tal sistema. Além disso, pode-se invocar um componente de API para permitir a manipulação dos dados dentro do sistema de armazenamento de dados.

Description

"SISTEMAS E MÉTODOS PARA MANIPULAÇÃO DE DADOS EM UM SISTEMA DE ARMAZENAMENTO DE DADOS" CAMPO TÉCNICO
A presente invenção se refere em geral a bancos de 5 dados, e, mais especificamente, a sistemas e/ou métodos que facilitam a manipulação de dados com base em um modelo de dados e/ou implementação de segurança associada a um respectivo sistema de armazenamento de dados. ANTECEDENTES DA INVENÇÃO 10 Os avanços na tecnologia de computadores (por e-
xemplo, a velocidade dos microprocessadores, a capacidade das memórias, a largura de banda para transferência de dados, a funcionalidade dos softwares, entre outros) contribuíram muito para o aumento da aplicação de computadores em 15 várias indústrias. Geralmente, sistemas de servidores cada vez mais poderosos, geralmente configurados como uma matriz de servidores, são disponibilizados para atender as solicitações feitas por fontes externas, como a Rede Mundial de Computadores, por exemplo. 20 Com o aumento da quantidade de dados eletrônicos
disponíveis, torna-se cada vez mais importante armazenar os dados de maneira controlável para tornar as pesquisas e recuperações de dados rápidas e amigáveis ao usuário. Hoje em dia, é comum adotar a política de armazenar os dados eletrô-25 nicos em um ou vários bancos de dados. Em geral, entende-se por um tipico banco de dados uma coleção organizada de informações com dados estruturados de forma que um programa de computador consiga pesquisar e selecionar fragmentos de da-dos com rapidez, por exemplo. Geralmente, os dados contidos em um banco de dados são organizados em uma ou mais tabelas. Tais tabelas são organizadas como uma matriz de linhas e colunas.
Além disso, as tabelas podem incluir um conjunto de registros, em que cada registro inclui um conjunto de campos. Os registros geralmente são indexados como linhas dentro de uma tabela e os campos de registro geralmente são indexados como colunas, de modo que um par de linha/coluna de índices possa referenciar dados específicos dentro de uma tabela. Por exemplo, uma linha pode armazenar um registro de dados completo relacionado a uma operação de venda, uma pessoa ou um projeto. Similarmente, as colunas da tabela podem definir partes distintas das linhas que possuem o mesmo formato de dados geral, em que as colunas podem definir os campos dos registros.
Cada um dos fragmentos de dados, isoladamente, geralmente não contém muitas informações úteis. Os aplicativos com banco de dados tornam os dados mais úteis por ajudarem os usuários a organizar e processar os dados. Os aplicativos com banco de dados permitem que o usuário compare, classifique, ordene, mescle, separe e interconecte os dados, de modo a gerar informações úteis com base nos dados. A capacidade e versatilidade dos bancos de dados cresceram tanto que agora é possível ter uma capacidade de armazenamento praticamente infinita utilizando os bancos de dados. Entretanto, os sistemas de banco de dados convencionais têm capacidade de consulta limitada ao tempo, à extensão de arquivo, ao local eao tamanho. Por exemplo, para pesquisar a vasta quantidade de dados associados a um banco de dados, a pesquisa geralmente se limita ao nome do arquivo, ao tamanho do arquivo, à data de criação, etc. tornando tais técnicas falhas e inefi-5 cientes.
Com o aumento continuo da criação de dados por parte dos usuários finais, agravam-se os problemas e dificuldades envolvendo a busca, relacionamento, manipulação e armazenamento dos dados. Os usuários finais gravam documen-
tos, armazenam fotos, copiam músicas de discos compactos, recebem e-mails, guardam cópias dos e-mails enviados, etc. Por exemplo, no simples processo de criar um disco compacto de músicas, o usuário final pode criar megabytes de dados. Todas as tarefas como a de copiar músicas do disco compacto,
converter o arquivo para um formato adequado, criar uma capa para caixa de CD e projetar um rótulo de disco compacto exigem a criação de dados.
Os problemas com dados não são exclusividade dos usuários, são questões comuns entre os programadores. Os
programadores criam e escrevem um grande número de aplicativos, desde aplicativos pessoais até aplicativos empresariais de alta complexidade. Durante a criação e a programação, os programadores muitas vezes, se não sempre, reúnem dados. Ao obter tais dados, é necessário armazená-los. Em outras pala-
vras, os problemas e dificuldades envolvidos na busca, no relacionamento, na manipulação e no armazenamento dos dados afetam tanto o programador como o usuário final. Em particular, deve-se assegurar a integridade dos dados em qualquermanipulação de tais dados sem abalar ou invocar quaisquer condições de instabilidade nos sistemas e bancos de dados convencionais .
SUMÁRIO DA INVENÇÃO
A seguir, será apresentado um sumário simplificado da invenção a fim de propiciar uma compreensão básica de alguns aspectos da invenção. Este sumário não se trata de uma visão geral extensa da invenção, nem tem a intenção de identificar elementos principais ou fundamentais da invenção ou de delinear o escopo da invenção. Seu único propósito é o de apresentar alguns conceitos da invenção numa forma simplificada para servir de prelúdio à descrição mais detalhada oferecida mais adiante.
A presente invenção se refere a sistemas e/ou métodos que facilitam a manipulação de dados com base, ao menos em parte, em um modelo de dados associado a características e/ou restrições. Um modelo de dados pode representar um sistema de armazenamento de dados (por exemplo, um sistema de armazenamento de arquivos baseado em banco de dados), em que tal modelo é um modelo hierárquico de entidades e subentidades persistentes que podem representar informações, dentro de um sistema de armazenamento de dados, como instâncias de tipos complexos. De modo a facilitar a manipulação dos dados, um componente de manipulação de dados pode proporcionar procedimentos de manipulação de dados associados aos sistemas de armazenamento de dados e ao mesmo tempo a-plicar e/ou implementar ao menos uma característica e/ou restrição. Em outras palavras, o componente de manipulaçãode dados persiste os dados dentro do sistema de armazenamento de dados durante qualquer manipulação de dados adequada .
De acordo com um aspecto da presente invenção, o componente de manipulação de dados pode incluir um componente de procedimento que fornece ao menos um procedimento, em que o procedimento manipula dados. 0 procedimento sobre os dados pode implementar uma cópia, uma atualização, uma substituição, uma obtenção, uma atribuição de valor, uma criação, uma exclusão, uma movimentação, uma modificação, etc. Além do mais, o componente de manipulação de dados pode incluir um componente de aplicação que impõe e/ou implementa uma característica e/ou restrição associada ao modelo de dados que representa um sistema de armazenamento de dados. U-tilizando uma característica e/ou restrição em associação com a manipulação de dados, é possível manter a integridade do modelo de dados em todo o sistema de armazenamento de dados .
De acordo com outro aspecto da presente invenção, o componente de manipulação de dados pode utilizar uma interface de programação de aplicativos (API). A API pode ser de livre acesso aos clientes (por exemplo, um chamador) , em que a API é uma área de superfície pública que pode chamar uma ou várias rotinas privadas de implementação para executar uma solicitação do cliente. Em um aspecto, a API pode oferecer as rotinas (por exemplo, nenhuma sub-rotina pode ser envolvida). A API pode ser utilizada para permitir que o usuário chame e/ou utilize ao menos um procedimento associado à manipulação de dados dentro do sistema de armazenamentode dados e ao mesmo tempo mantenha ao menos uma característica e/ou restrição associada. A API também pode utilizar um componente de definição de API que pode definir várias funções e procedimentos, possibilitando a execução de operações apropriadas dentro do sistema de armazenamento de dados .
De acordo com ainda outro aspecto, o componente de manipulação de dados pode incluir um componente de travamen-to que facilite o suporte a múltiplos chamadores simultâneos e ao mesmo tempo elimine bloqueios. Por exemplo, imagine uma situação em que existem vários chamadores simultâneos solicitando posse sobre um conjunto comum de recursos de tal maneira que nenhuma das solicitações pode ser cumprida, pois cada chamador está aguardando pelo outro, podendo assim o-correr um bloqueio. Em tal caso, o componente de bloqueio pode bloquear (por exemplo, os chamadores são bloqueados), e a única saida desta situação é evitar um dos chamadores. 0 componente de bloqueio pode também dar suporte a vários chamadores simultâneos, de modo que uma lógica de bloqueio complexo possa garantir o sucesso ou falha das solicitações individuais . Além disso, o componente de manipulação de dados pode incluir um componente de simultaneidade otimista que utiliza uma técnica de simultaneidade otimista, a qual presume que a probabilidade de um primeiro processo efetuar uma alteração praticamente ao mesmo tempo em que o segundo processo é baixa e um bloqueio não será empregado até que a alteração seja confirmada no sistema de armazenamento de dados . Quando um acesso simultâneo por vários chamadores gera suposições de um chamador em particular acerca de que um es-tado do armazenamento é inválido, as suposições inválidas podem ser detectadas e as solicitações de alteração de dados são rejeitadas pelo sistema até que o chamador sincronize novamente a interpretação do estado do sistema e envie novamente a solicitação. Esta técnica pode melhorar o desempenho do sistema, pois elimina a necessidade de executar as instruções para remover um bloqueio. Além do mais, essa técnica pode reduzir os bloqueios no sistema, pois elimina a necessidade de remover bloqueios de longo prazo .
De acordo com outro aspecto da presente invenção, o componente de manipulação de dados pode incluir um componente de segurança que oferece técnicas de segurança capazes de corresponder às várias manipulações de dados empregadas por tal sistema. 0 componente de segurança pode utilizar um perfil de usuário e/ou diversas medidas de segurança, como por exemplo, sem a isto se limitar, uma identificação, uma senha, indícios biométricôs (por exemplo, impressão digital, leitura de retina, indutância, . . . ) , reconhecimento de voz, etc. para garantir a integridade e validade dos dados de manipulação da entidade em particular. Além do mais, o componente de manipulação de dados pode incluir um componente de erro que fornece um código de erro no caso de a manipulação de dados envolver uma característica e/ou restrição que não será cumprida. 0 código de erro pode ser implementado para indicar que a manipulação de dados está incompleta, e o código de erro pode corresponder a um texto descrevendo um erro . Em outros aspectos da presente invenção, são proporcionados métodos que facilitam a manipulação de dados e ao mes-mo tempo agem conforme um modelo de dados.
A descrição seguinte e os desenhos anexos apresentam em detalhes certos aspectos ilustrativos da invenção. Entretanto, esses aspectos indicam nada mais do que algumas das diversas formas em que os princípios da invenção podem ser empregados, e a presente invenção pretende incluir todos tais aspectos e seus equivalentes. Outras vantagens e aspectos novos da invenção irão transparecer na descrição detalhada seguinte da invenção, quando considerada em combinação com os desenhos.
BREVE DESCRIÇÃO DOS DESENHOS
A Fig. 1 ilustra um diagrama de blocos de um sistema exemplificativo que facilita a manipulação de dados com base, ao menos em parte, em um modelo de dados com respectivas características.
A Fig. 2 ilustra um diagrama de blocos de um sistema exemplificativo que facilita a manipulação dos dados dentro das características de um sistema de armazenamento de dados.
A Fig. 3 ilustra um diagrama de blocos do sistema exemplificativo que facilita a implementação da integridade e segurança de dados com a manipulação dos dados associados a um sistema de armazenamento de dados.
A Fig. 4 ilustra um diagrama de blocos de um sistema exemplificativo que facilita a implementação de uma API que manipula dados associados a um sistema de armazenamento de dados.
A Fig. 5 ilustra um diagrama de bloco de um siste-ma exemplificativo que facilita a chamada de uma API que manipula dados dentro das características de um sistema de armazenamento de dados .
A Fig. 6 ilustra um diagrama de blocos de um sistema exemplif icativo que facilita a chamada de uma API que manipula dados dentro das características de um sistema de armazenamento de dados.
A Fig. 7 ilustra um diagrama de blocos de um sistema exemplificativo que facilita a manipulação de dados dentro de um sistema de armazenamento de dados utilizando um componente API.
A Fig. 8 ilustra um digrama de blocos de um sistema exemplificativo que facilita a manipulação dos dados com base, ao menos em parte, em um modelo de dados.
A Fig. 9 ilustra uma metodologia exemplificativa para chamar uma manipulação de dados com base, ao menos em parte, em um sistema baseado em banco de dados, e ao mesmo tempo aplicar ao menos uma restrição de modelo.
A Fig. 10 ilustra uma metodologia exemplificativa para manipulação de dados baseada ao menos em um modelo de dados com as respectivas características sendo aplicadas.
A Fig. 11 ilustra um ambiente em rede exemplifica-tivo, em que os novos aspectos da presente invenção podem ser colocados em prática.
A Fig. 12 ilustra um ambiente operacional exempli-ficativo que pode ser empregado de acordo com a presente invenção .
DESCRIÇÃO DA INVENÇÃOConforme utilizados neste pedido, os termos wcomponente", "sistema", "interface" e similares tencionam referir-se a uma entidade relacionada a computadores, seja em hardware, software (por exemplo, em execução) e/ou em firm-ware. Por exemplo, um componente pode ser um processo em e-xecução em um processador, um processador, um objeto, um arquivo executável, um programa ou um computador. A titulo i-lustrativo, tanto um aplicativo em execução num servidor quanto o servidor podem ser um componente. Um ou mais componentes podem residir dentro de um processo e um componente pode estar localizado em um computador ou ser distribuído entre dois ou mais computadores.
A presente invenção é descrita com referência aos desenhos, nos quais números de referência similares referem-se a elementos similares por todas as partes. Na descrição que se segue, para fins de explanação, são apresentados numerosos detalhes específicos a fim de propiciar uma compressão meticulosa da presente invenção. É evidente, entretanto, que a presente invenção pode ser praticada sem esses detalhes específicos. Em outros casos, estruturas e dispositivos bem conhecidos são ilustrados na forma de diagrama de blocos para facilitar a descrição da presente invenção.
Voltando-se agora às figuras, a Fig. 1 ilustra um sistema 100 que facilita a manipulação de dados baseado ao menos em um modelo de dados com uma respectiva característica dele. O modelo de dados 102 pode ser um modelo complexo baseado ao menos em uma estrutura de banco de dados, em que um item, um subitem, uma propriedade e um relacionamento sãodefinidos para permitir a representação das informações dentro de um sistema de armazenamento de dados como instâncias de tipos complexos- 0 modelo de dados 102 pode utilizar um conjunto de blocos básicos de construção para criar e gerenciar objetos ricos, persistentes, e ligações entre os objetos. Pode-se definir um item como a menor unidade de consistência dentro do modelo de dados 102 capaz de ser independentemente protegida, serializada, sincronizada, copiada, gravada como cópia reserva / recuperada, etc. O item é uma instância de um tipo, e todos os itens no modelo de dados 102 podem ser armazenados em uma única extensão global de itens. O modelo de dados 102 pode se basear em ao menos um item e/ou em uma estrutura de recipientes. Além do mais, o modelo de dados 102 pode ser uma plataforma de armazenamento expondo metadados ricos que são armazenados em arquivos como itens. Deve-se apreciar que o modelo de dados 102 pode representar um sistema de armazenamento de arquivos baseado em banco de dados para dar suporte à funcionalidade discutida acima, em que quaisquer atributos e/ou características adequadas podem ser implementadas. Além do mais, o modelo de dados 102 pode representar um sistema de armazenamento de arquivos baseado-em banco de dados que utiliza uma estrutura hierárquica de recipientes, em que um recipiente é um item que pode conter zero ou mais itens. O conceito de recipientes é implementado via uma propriedade "container ID" dentro da classe associada. Um armazenamento também pode ser um recipiente, de modo que o armazenamento possa ser uma unidade fisica organizacional e de gerenciabi1idade. Além disso , oarmazenamento representa um recipiente raiz para uma árvore de recipientes dentro da estrutura hierárquica. Além do mais, o modelo de dados 102 pode representar um sistema de armazenamento de dados que é um sistema baseado em banco de dados que define um modelo hierárquico de ao menos uma- entidade persistente e zero ou mais subentidades por cada entidade para representar informações como um tipo complexo .
Um componente de manipulação de dados 104 pode manipular dados relacionados ao modelo de dados 102 e ao mesmo tempo garantir a integridade e estabilidade dos dados associadas às características de tal modelo de dados 102. O modelo de dados 102 pode incluir quaisquer características e/ou diretrizes adequadas associadas ao sistema de armazenamento de arquivos baseado em banco de dados. O componente de manipulação de dados 104 pode oferecer uma função mover, excluir, copiar, criar, atualizar, substituir, etc., a ao menos um objeto e ao mesmo tempo garantir a estabilidade do sistema (por exemplo, obedecendo a quaisquer características associadas ao sistema de armazenamento de arquivos baseado em banco de dados representado pelo modelo de dados 102) . Por exemplo, um modelo de dados 102 pode representar um sistema de armazenamento de arquivos baseado em banco de dados que tem a característica de que cada ID para um recipiente é único. Continuando com o exemplo, o componente de manipulação de dados 104 pode empregar qualquer manipulação de dados adequada (por exemplo, copiar, atualizar, substituir, obter, definir, criar, excluir, mover, . .•) e ao mesmo tempo aplicar e/ou preservar a singularidade do ID para os recipien-tes. Deve-se apreciar que as funções descritas anteriormente não devem ser interpretadas como limitações à presente invenção e que qualquer manipulação de dados adequada envolvendo o modelo de dados 102 pode ser empregada enquanto mantendo qualquer característica adequada relacionada a ele. Além do mais, deve-se entender que o componente de manipulação de dados 104 pode manipular dados correspondendo à estrutura hierárquica (por exemplo, utilizando ao menos dentre um armazenamento e um recipiente, ..-) com base no modelo de dados 102 .
De acordo com um aspecto da presente invenção, a manipulação dos dados pode se basear ao menos em parte em uma informação digitada por um usuário utilizando, por exemplo, uma interface de programação de aplicativos (API) (não ilustrada) . Ao empregar a API, as interações e/ou manipulações que envolvem o modelo de dados 102 e o sistema de armazenamento de arquivos baseado em banco de dados podem ser implementadas ao mesmo tempo em que se mantém / aplica qualquer característica adequada associada a ele. Deve-se apreciar e compreender que a API pode ser chamada pelo componente de manipulação de dados 104, por um componente separado incorporado no componente de manipulação de dados 104 e/ou por qualquer combinação dos citados.
O sistema 100 adicionalmente inclui um componente de interface 106, que fornece vários adaptadores, conectores, canais, caminhos de comunicação, etc., para integrar o componente de manipulação de dados 104 em praticamente qualquer sistema operacional e de banco de dados. Além disso, ocomponente de interface 106 pode fornecer vários adaptadore s, conectores, canais, caminhos de comunicação, etc., que possibilitam interação com os dados e com o componente de manipulação de dados 104. Deve-se apreciar que, embora o componente de interface 106 seja incorporado ao componente de manipulação de dados 104, tal implementação não se limita a isto. Por exemplo, o componente de interface 106 pode ser um componente independente para receber ou transmitir os dados em relação ao sistema 100 .
A Fig. 2 ilustra um sistema 200 que facilita a manipulação de dados dentro das características de um sistema de armazenamento de dados. Um sistema de armazenamento de dados 202 pode ser um sistema de armazenamento de arquivos baseado em banco de dados que representa instâncias de dados como tipos complexos pela utilização de pelo menos uma estrutura hierárquica. O sistema de armazenamento de dados 202 pode incluir ao menos uma característica que é aplicada para garantir que as características do sistema de armazenamento de dados 202 enquanto os dados são manipulados. Deve-se a-preciar que um modelo de dados (não ilustrado) pode representar o sistema de armazenamento de dados 202. Além do mais, um item, um subi tem, uma propriedade e um relacionamento podem ser definidos dentro do sistema de armazenamento de dados 202 para permitir a representação das informações como instâncias de tipos complexos. O sistema de armazenamento de dados 202 pode ser um modelo de dados que pode descrever um formato dos dados, declarar restrições para implicar certa consistência semântica nos dados e definir associ-ações semânticas entre os dados. 0 sistema de armazenamento de dados 202 pode utilizar um conjunto de blocos básicos de construção para a criação e gerenciamento de obj etos ricos persistentes e ligações entre os objetos.
Por exemplo, os blocos de construção podem incluir um "Item", um "ItemExtension", um "Link" e um "ItemFrag-ment". Pode-se definir "Item" como a menor unidade de consistência dentro do sistema de armazenamento de dados 202, que pode ser independentemente protegida, serializada, sincronizada , copiada, gravada como cópia reserva / recuperada, etc. Por exemplo, os itens podem ser a menor unidade de consistência, mas o limite em torno de um item pode incluir ligações, extensões de item e fragmentos de item que podem pertencer logicamente ao item. Assim, um item pode ser uma linha em uma tabela, mas também pode se referir à linha do item e todas as suas partes secundárias. Em outras palavras, o item pode ser excluído, copiado, etc. com a garantia de que tal operação será aplicada precisamente ao item e todas as suas partes. O item é uma instância de um tipo, e todos os itens no sistema de armazenamento de dados 202 podem ser armazenados em uma única extensão global de itens. Um "Ite-mExtension" é um tipo de item que é estendido utilizando uma extensão de entidade. A extensão de entidade pode ser definida em um esquema com respectivos atributos (por exemplo, um nome, um tipo de item estendido, uma declaração de propriedade, ...). O "ItemExtension" pode ser implementado para agrupar um conjunto de propriedades que podem ser aplicadas ao tipo de item que é estendido. Um "Link" é um tipo de en-tidade que define uma associação entre duas instâncias de item, em que as ligações são direcionadas (por exemplo, um item é uma origem da ligação e a outra é o destino da ligação) . Um "ItemFragment" é um tipo de entidade que permite a declaração de grandes coleções em tipos de item e/ou extensões de item, em que os elementos da coleção podem ser uma entidade. Deve-se apreciar e compreender que o sistema de armazenamento de dados 202 pode representar qualquer sistema de armazenamento de arquivos baseado em banco de dados adequado que ofereça a representação dos dados como instâncias de tipos complexos, e a descrição anterior não deve ser vista como limitação à presente invenção. O sistema de armazenamento de dados 202 pode ser substancialmente similar à representação do modelo de dados 102 representado na Fig. 1.
Um componente de manipulação de dados 204 pode proporcionar a manipulação dos dados dentro do sistema de armazenamento de dados 202 e ao mesmo tempo aplicar ao menos uma característica associada a tal sistema de armazenamento de dados 202. O componente de manipulação de dados 204 pode proporcionar uma manipulação, como por exemplo, mas sem a isto se limitar, copiar, atualizar, substituir, obter, definir, criar, excluir, mover, etc. nos dados (por exemplo, representados por instâncias de tipos complexos) . Deve-se a-preciar que o componente de manipulação de dados 204 pode ser substancialmente similar ao componente de manipulação de dados 104 conforme descrito na Fig. 1.
0 componente de manipulação de dados 204 pode incluir um componente de procedimento 206 que proporciona fun-ções específicas para manipular os dados de acordo com as características associadas ao sistema de armazenamento de dados 202. Em outras palavras, o componente de procedimento 206 pode proporcionar técnicas de manipulação relacionadas ao sistema de armazenamento de dados 202. Por exemplo, o componente de procedimento 206 pode incluir copiar, mover, substituir, definir, excluir, criar, obter, atualizar os dados e/ou a representação dos dados como instâncias de tipos complexos. Deve-se apreciar que o componente de procedimento 206 pode proporcionar qualquer técnica e/ou função de manipulação de dados adequada capaz de ser implementada com o sistema de armazenamento de dados 2 02. Embora o componente de procedimento 206 seja descrito como incorporado ao componente de manipulação de dados 204, a presente invenção não se limita a isso. O componente de procedimento 206 também pode ser um componente independente ou incorporado ao sistema de armazenamento de dados 202 (por exemplo, que pode ser uma instanciação de um conceito de modelo de dados).
O componente de manipulação de dados 204 também pode incluir um componente de aplicação 208 para incorporar ao menos uma característica do sistema de armazenamento de dados 202 com a manipulação dos dados. Conforme discutido anteriormente, o sistema de armazenamento de dados 202 pode incluir qualquer número adequado de características que possam proporcionar diretrizes sobre a manipulação dos dados dentro de tal sistema de armazenamento de dados 202. Em outras palavras, o componente de aplicação 208 permite a manipulação dos dados dentro do sistema de armazenamento de da-dos 202 sem interferir nas restrições de modelo de dados relacionadas ao sistema de armazenamento de dados 202. Deve-se apreciar que o componente de aplicação 208 pode ser incorporado ao componente de manipulação de dados 204 (conforme i-lustrado), um componente independente incorporado ao sistema de armazenamento de dados 202, e qualquer combinação desses.
Por exemplo, o sistema de armazenamento de dados 202 pode utilizar um item, um recipiente e uma hierarquia de estrutura de armazenamento (conforme discutido acima). O componente de aplicação 208 pode implementar características relacionadas a um ID de recipiente associado ao sistema de armazenamento de dados 202. Por exemplo, o componente de a-plicação 208 pode proporcionar ao menos um do seguinte: (1) O ID de recipiente para conter um ID de item não nulo de um item no armazenamento (por exemplo, isso pode ser implementado com as funções de manipulação e/ou com as técnicas "Createltem", "CreateComplexItems", "Moveitem" e "Replacel-tem" discutidas abaixo); (2) o ID do recipiente não é atualizado utilizando a função de manipulação e/ou a técnica "Updateltem" (discutida abaixo); e (3) o ID do recipiente pode ser alterado via uma chamada para "MoveItem". Deve-se apreciar e compreender que a presente invenção não se limita aos nomes de referência das funções e/ou técnicas acima.
Em outro exemplo, o componente de aplicação 2Q8 pode implementar uma semântica de transação junto com a manipulação dos dados. O componente de aplicação 208 pode implementar as seguintes semânticas de transação: (1) se nenhuma transação estiver ativa, pode-se retornar um código deerro e um lote não é processado; e (2) faz-se uma tentativa de validar e aplicar a operação. Caso a validação e aplicação da operação tenham êxito, pode-se retornar o controle ao chamador com os efeitos da operação não confirmada na transação fornecida pelo chamador. Caso a validação ou a aplicação da operação falhe, a transação falha e cria-se um erro, podendo-se retornar o controle ao chamador. Uma transação que falhou significa que o chamador pode emitir consultar nessa transação, mas não pode confirmar a transação (por e-xemplo, uma chamada para confirmar pode resultar em um erro) . Deve-se apreciar que a solicitação API pode ter êxito total ou falhar completamente. Uma API complexa pode fazer ao menos uma alteração em uma tabela de armazenamento subjacente e pode implementar um conjunto complexo de testes de consistência e/ou integridade. Além do mais, deve-se apreciar que o sistema 200 nunca será deixado em um estado inconsistente e/ou inválido.
A Fig. 3 ilustra um sistema 300 que facilita a implementação da integridade e segurança de dados com a manipulação dos dados associados a um sistema de armazenamento de dados. O sistema de armazenamento de dados 302 pode ser um sistema de armazenamento de arquivos baseado em banco de dados que se baseia ao menos em parte em um modelo de dados, em que os dados são representados como instâncias de tipos complexos. Um componente de manipulação de dados 304 pode proporcionar manipulação de dados associada ao sistema de armazenamento de dados 302. O componente de manipulação de dados 304 pode incluir um componente de procedimento 306 quepode proporcionar ao menos uma função e/ou técnica envolvida na manipulação dos dados dentro do sistema de armazenamento de dados 302. Além do mais, o componente de manipulação de dados 304 pode incluir um componente de aplicação 308 que constitui ao menos uma característica e/ou diretriz respectiva do sistema de armazenamento de dados 302, em que tal característica garante a implementação de uma restrição de modelo de dados com a manipulação dos dados. Deve-se apreciar e compreender que o sistema de armazenamento de dados 302, o componente de manipulação de dados 304, o componente de procedimento 306 e o componente de aplicação 308 podem ser substancialmente similares ao sistema de armazenamento de dados 202, ao componente de manipulação de dados 204, ao componente de procedimento 206 e ao componente de aplicação 308, respectivamente, na Fig 3.
O componente de manipulação de dados 304 pode incluir um armazenamento de dados 310 para facilitar o armazenamento e/ou o acesso a ao menos um procedimento associado à manipulação de dados dentro do sistema de armazenamento de dados 302. Por exemplo, o armazenamento de dados 310 pode armazenar um procedimento (por exemplo, código) que pode ser utilizado por uma API, e a manipulação de dados pode ser recebida por um usuário e chamada enquanto mantendo ao menos uma característica associada ao sistema de armazenamento de dados 302. Em outro exemplo, o armazenamento de dados 310 pode armazenar várias características associadas ao sistema de armazenamento de dados 320 e/ou vários dados de API (por exemplo, subrotinas, etc.). Em um exemplo, o armazenamentode dados 310 pode ser uma unidade de disco rigido. 0 armazenamento de dados 310 pode ser, por exemplo, tanto memória volátil como não-volátil, ou pode incluir tanto a memória volátil quanto não-volátil. A titulo de ilustração, em vez de limitação, a memória não-volátil pode incluir memória somente para leitura (ROM), ROM programável (PROM), ROM ele-tricamente programável (EPROM), ROM eletricamente programável e apagável (EEPROM) ou memória flash. A memória volátil pode incluir memória de acesso aleatório (RAM), que age como uma memória cache externa. A titulo de ilustração e de limitação, a RAM está disponível em várias formas, tal como RAM estática (SRAM), RAM dinâmica (DRAM), DRAM sincrona (SDRAM), SDRAM de taxa de dados dupla (DDR SDRAM), SDRAM aperfeiçoada (ESDRAM), DRAM Synchlink (SLDRAM), RAM direta Rambus (RDRAM), RAM dinâmica direta Rambus (DRDRAM) e RAM Rambus dinâmica (RDRAM). 0 armazenamento de dados 310 dos sistemas e métodos em questão deverá abranger, sem a isto se limitar, esses e outros tipos adequados de memória. Além disso, deve-se apreciar que o armazenamento de dados 310 pode ser um servidor e/ou um banco de dados .
O componente de manipulação de dados 304 também pode incluir um componente de segurança 312 para oferecer ao menos um atributo de segurança ao sistema 300. Por exemplo, o componente de segurança 304 pode utilizar um perfil de u-suário de modo que as funções de manipulação de dados e/ou técnicas especificas sejam associadas a ele. Além do mais, o componente de segurança 304 pode utilizar várias medidas de segurança, tal como, mas sem a isto se limitar, uma identi-ficação, uma senha, indícios biométricos (por exemplo, impressão digital, leitura de retina, indutância, . ..), reconhecimento de voz, etc. para assegurar a integridade e validade dos dados de manipulação da entidade em particular. 0 componente de segurança 312 também pode empregar qualquer ' atributo de segurança adequado associado ao sistema de armazenamento de dados 302. Em outras palavras, o componente de segurança 312 pode implementar regras de segurança, de modo a fazer cumprir as restrições de segurança do sistema de armazenamento de dados 302.
A Fig. 4 ilustra um sistema 400 que facilita a implementação de uma API que manipula dados associados a um sistema de armazenamento de dados. O sistema de armazenamento de dados 402 pode ser um sistema de armazenamento de arquivos baseado em banco de dados tendo ao menos uma característica associada a ele, em que o sistema de armazenamento de dados 402 pode ser representado por um modelo de dados (não ilustrado). Um componente de manipulação de dados 404 pode permitir uma manipulação de dados que inclui, sem a isto se limitar, uma cópia, uma movimentação, uma substituição, uma definição, uma exclusão, uma criação, uma obtenção e uma atualização dos dados respectivos ao sistema de armazenamento de dados 402. Deve-se apreciar que o sistema de armazenamento de dados 402 e o componente de manipulação de dados 4 04 podem utilizar funcionalidades substancialmente similares às do sistema de armazenamento de dados 302, do sistema de armazenamento de dados 202, do componente de manipulação de dados 304 e do componente de manipulação de da-dos 204, na Fig. 3 e 2, respectivamente.
0 componente de manipulação de dados 404 também pode incluir um componente API 406 (doravante denominado "API 406"), o qual permite a uma entidade manipular dados no sistema de armazenamento de dados 402. A entidade pode ser, sem a isto se limitar, um usuário, um computador, um banco de dados, etc. A API 406 pode receber ao menos uma entrada do usuário, de modo que a entrada do usuário seja um comando e/ou função envolvendo a manipulação de dados dentro do sistema de armazenamento de dados 402. Embora descrita como incorporada ao componente de manipulação de dados 4 04, deve-se apreciar que a API 406 pode ser um componente independente, pode ser incorporada ao sistema de armazenamento de dados 402 e/ou uma combinação desses. Além do mais, a API 406 pode utilizar vários dos componentes discutidos anteriormente para oferecer a manipulação de dados utilizando procedimentos particulares e ao mesmo tempo aplicar características respectivas ao sistema de armazenamento de dados 402.
A Fig. 5 ilustra um sistema 500 que facilita a chamada de uma interface de programação de aplicativos (API) que manipula dados dentro das características de um sistema de armazenamento de dados. O sistema de armazenamento de dados 502 pode ser um sistema de armazenamento de arquivos baseado em banco de dados com ao menos uma característica de definição, e o sistema de armazenamento de dados 502 pode ser baseado ao menos em parte em um modelo de dados (não i-lustrado). Um componente de manipulação de dados 504 pode permitir uma manipulação de dados que inclui, sem a isto selimitar, copiar, mover, substituir, definir, excluir, criar, obter e atualizar os dados respectivos ao sistema de armazenamento de dados 502. Deve-se apreciar que o sistema de armazenamento de dados 502 e o componente de manipulação de dados 504 podem ser substancialmente similares ao sistema de armazenamento de dados 402, ao sistema de armazenamento de dados 302, ao sistema de armazenamento de dados 202, ao componente de manipulação de dados 404, ao componente de manipulação de dados 304 e ao componente de manipulação de dados 204, na Fig. 4, Fig. 3 e Fig. 2, respectivamente.
O componente de manipulação de dados 504 pode incluir um componente API 506 (denominado "API 506") . A API 506 pode oferecer as manipulações de dados (por exemplo, criação, atualização e exclusão de dados dentro de um armazenamento) por meio da execução dos procedimentos armazenados. A API 506 pode permitir, por exemplo, que um usuário implemente a manipulação de dados enquanto mantém a integridade e/ou a pureza das características associadas ao sistema de armazenamento de dados 502. A manipulação dos dados pode se basear ao menos em parte em uma entrada de um usuário com a utilização, por exemplo, da API 506. Ao empregar a API 506, é possível implementar as interações e/ou manipulações envolvendo o sistema de armazenamento de dados 502 enquanto se mantém/aplica qualquer característica adequada associada a ele. Deve-se apreciar e compreender que a API 506 pode ser chamada pelo componente de manipulação de dados 504, por um componente separado, incorporado ao componente de manipulação de dados 504 e/ou por qualquer combinação desses .O componente de manipulação de dados 504 também pode incluir um componente de travamento 508 que facilita o acesso simultâneo a dados com um ou mais aplicativos pela utilização de estratégias apropriadas de bloqueio que garantem a integridade. Por exemplo, imagine uma situação em que existem múltiplos chamadores que solicitam posse sobre um conjunto comum de recursos de tal maneira que nenhuma das solicitações individuais pode ser cumprida, pois cada chama-dor está aguardando pelo outro (por exemplo, pode ocorrer um bloqueio). Em tal caso, o componente de bloqueio 508 permitir o aos chamadores serem bloqueados (por exemplo, por bloqueio) , e a única salda nesse caso é evitar um dos chamadores . Para evitar essa situação, o componente de bloqueio 508 pode dar suporte a vários chamadores simultâneos, de modo que uma lógica de bloqueio complexo possa assegurar automaticamente o sucesso ou falha das solicitações individuais. Além do mais, o componente de bloqueio 508 pode detectar e reagir aos bloqueios. O componente de bloqueio 508 pode manter a consistência dos dados por meio do acesso serializado a certas partes do sistema de armazenamento de dados (por exemplo, um armazenamento) via bloqueio. 0 bloqueio pode ser feito em nivel granular, em que os recursos no sistema de armazenamento de dados (por exemplo, o armazenamento) que são afetados por uma determinada manipulação e/ou operação podem ser bloqueados enquanto durar tal manipulação e/ou o-peração. Deve-se apreciar que diferentes operações e/ou a operação substancialmente similar podem entrar no bloco sincronizado em uma ordem diferente, podendo ocorrer o bloquei-o. Por exemplo, o componente de bloqueio 508 pode evitar um bloqueio com uma perda significativa de desempenho. Além disso, o componente de bloqueio 50 pode fornecer um código de erro de bloqueio à API 506 para informar sobre tal situação.
O componente de manipulação de dados 504 pode incluir um componente de simultaneidade otimista 510. A API 506 pode utilizar simultaneidade otimista para realizar a manipulação e/ou alterações nos dados dentro do sistema de armazenamento de dados 502. A simultaneidade ocorre quando ao menos dois processos tentam atualizar dados essencialmente similares praticamente ao mesmo tempo. O componente de simultaneidade otimista 510 utiliza simultaneidade otimista, a qual presume que a probabilidade de outro processo efetuar uma alteração praticamente ao mesmo tempo é baixa, portanto, ela não entra no bloco sincronizado até que a alteração este j a pronta para ser confirmada no sistema de armazenamento de dados (por exemplo, o armazenamento) . Ao empregar tal técnica, o componente de simultaneidade otimista 510 reduz o tempo de bloqueio e oferece melhor desempenho ao banco de dados. Quando um acesso simultâneo por vários chamadores gera suposições de um chamador em particular acerca de que um estado do armazenamento é inválido, as suposições inválidas podem ser detectadas e as solicitações de alteração de dados são rejeitadas pelo sistema até que o chamador sincronize novamente a interpretação do estado do sistema e envie novamente a solicitação.
Por exemplo, o componente de simultaneidade otimista 510 pode manter um simbolo associado ao item que sealtera a cada modificação do item. 0 simbolo é passado para o chamador quando os dados são lidos na memória. 0 chamador pode passar o simbolo de volta para o armazenamento como um parâmetro para uma operação de atualização. 0 armazenamento pode comparar o simbolo passado com o valor de simbolo atual no armazenamento. Se os simbolos forem iguais, então a gravação terá êxito e será implementada. No entanto, se a versão do chamador na memória for um valor diferente do que está no armazenamento, isso significa que o item foi modificado por outro aplicativo e a gravação irá falhar.
Em outro exemplo, é examinada uma falha devido ao
acesso simultâneo por dois aplicativos. Na tabela abaixo, há dois aplicativos em execução simultânea no sistema de arma-zenamento de dados 502 que tentarão modificar o item._
<table>table see original document page 28</column></row><table><table>table see original document page 29</column></row><table>
A API 506 pode dar suporte a essa técnica retor-
nando as informações de simbolo a cada operação de criação e/ou atualização. Por exemplo, o parâmetro de simbolo de salda das funções de criação pode ser chamado de "concurrency-Token". A API 506 também pode usar as informações de simbolo como um parâmetro de entrada nas operações de atualizaçãoe/ou exclusão. As informações de simbolo passadas para as operações de atualização e/ou exclusão também podem ser chamadas de "concurrencyToken". Deve-se apreciar que o parâmetro pode ser tanto um parâmetro de entrada quanto de saida. Na entrada, o "concurrencyToken" é o valor que é recebido quando o objeto foi lido em uma memória cache, criado e/ou atualizado. Esse pode ser o "expected value" (valor esperado) no armazenamento se não houver gravação no objeto. Na saida, o armazenamento pode retornar o novo "concurrencyTo-ken" do objeto após a operação ser completada com êxito.
0 parâmetro xxconcurrencyToken" pode ser do tipo B1GINT (por exemplo, um número inteiro de 64 bits). Deve-se apreciar que o parâmetro pode ser uma marcação de hora do banco de dados, contudo, não pode ter o valor aumentado. Recuperar um item de cópia de segurança pode gerar uma condição atrasada em relação ao tempo. A única operação suportada entre dois "concurrencyTokens" é para igualdade / desigualdade. 0 nome da coluna nas vistas é "LastUpdateLocalTS" para itens, extensões de itens, ligações e fragmentos de itens. Para os descritores de segurança, o nome da coluna é "SDLas-tUpdateLocalTS".
A Fig. 6 ilustra um sistema 600 que facilita a chamada de uma API que manipula dados dentro das características de um sistema de armazenamento de dados. 0 sistema de armazenamento de dados 602 pode ser um sistema de armazenamento de arquivos baseado em banco de dados que se baseia ao menos em parte em um modelo de dados, onde os dados são representados como instâncias de tipos complexos. Um componen-te de manipulação de dados 604 pode fornecer manipulação de dados associada ao sistema de armazenamento de dados 602. O componente de manipulação de dados 604 pode chamar um componente API 606 (doravante denominado "API 606") . A API 606 pode fornecer as manipulações de dados (por exemplo, criar, atualizar e excluir dados dentro de um armazenamento) pela execução dos procedimentos armazenados. A API 606 pode permitir ao usuário, por exemplo, implementar a manipulação de dados enquanto assegura a integridade e/ou pureza das características associadas ao sistema de armazenamento de dados 602. O sistema de armazenamento de dados 602, o componente de manipulação de dados 604 e a API 606 podem ser substancialmente similares ao sistema de armazenamento de dados 502, 402, 302 e 202, ao componente de manipulação de dados 504, 404, 304 e 204, à API 506, 406 nas Figuras 5, 4, 3 e 2, respectivamente .
O componente de manipulação de dados 604 pode incluir um componente de estrutura de dados 608 que pode empregar ao menos uma estrutura de dados utilizada pela API 606. Por exemplo, o componente de estrutura de dados 608 pode utilizar vários sinônimos e/ou tipos de lista genéricos. Em um exemplo, as seguintes tabelas podem definir o sinônimo e um tipo de linguagem de consulta estruturada (SQL) , e um tipo de lista e uma linguagem comum em tempo de execução (CLR) correspondente. Deve-se apreciar que as seguintes ta-belas são exemplos e a presente invenção não se limita a isto.
<table>table see original document page 31</column></row><table><table>table see original document page 32</column></row><table>
0 componente de estrutura de dados 608 pode empre-
gar um tipo de definição de alteração. A API 606 e o componente de manipulação de dados 604 podem fornecer operações 5 de atualização e/ou modificações no nivel de granularidade de propriedade. Ao usar tal técnica, um chamador pode passar os dados alterados para o método de atualização mantendo o tamanho da operação proporcional ao tamanho dos dados alterados. As atualizações granulares podem ser descritas utili-
zando o tipo ChangeDefinition. No sistema de armazenamento de dados 602, os objetos persistem em um armazenamento, em que uma célula particular de uma tabela uma instância armazenada de Contact ou algum outro tipo complexo tendo propriedades que poderiam ser complexas. Deve-se apreciar e com-
preender que o tipo ChangeDefinition pode modelar um conjun-to de alterações que pode ser aplicado a um objeto estruturado .
Por exemplo, para atualizar o campo nome de um contato, o chamador pode criar uma instância de um objeto ChangeDefinition, preencher o objeto com dois nós (por exemplo, um que descreve o tipo do item e um que contém o nome do campo) . Em seguida, um cliente pode passar ao menos um dentre uma versão compilada da ChangeDefinition e uma lista dos valores correspondentes para o método UpdateItem, que efetua as modificações no armazenamento. Deve-se apreciar que o modelo substancialmente similar pode requerer a modificação de um arquivo em uma extensão de item e/ou ligação.
Uma instância ChangeDefinition modela cada alteração de propriedade utilizando uma estrutura de árvore, em que cada nivel na árvore pode corresponder a um nivel aninhado de propriedades dentro do tipo de objeto. Uma alteração em um valor de propriedade é representada por um nó folha, que é chamado de nó de atribuição- 0 tipo do nó de a-tribuição pode ser atribuição- Esses nós podem representar uma atribuição para uma propriedade e conter um nome de propriedade. Os nós que não são folha (exceto o raiz) representam um tipo aninhado que é um membro de propriedade de nivel superior e/ou de outra propriedade do tipo aninhada. Isso pode ser chamado de nó transversal. Os nós transversais contêm uma lista de nós (atribuição ou transversal) e, opcionalmente, um tipo que é usado pelo armazenamento para implementar a forma apropriada. 0 tipo do nó transversal é "Path-Component" .O componente de estrutura de dados 608 pode construir uma ChangeDefinition pela criação de nós transversais e de atribuição. Por exemplo, os nós podem ser adicionados pela ChangeDefinition, em que a classe ChangeDefinition possui métodos para criar nós e percorrer a árvore. Em um exemplo, a classe ChangeDefinition não é um tipo definido pelo usuário (UDT). Em outro exemplo, o que se segue são tipos de atribuição definidos: 1) atribuir um valor escalar em uma profundidade; 2) atribuir uma instância do tipo aninhada em uma profundidade; e 3) atribuir uma coleção (por exemplo, multiset e/ou sqlList) em uma profundidade. Deve-se apreciar e compreende que as propriedades escalares (por exemplo, propriedades XML e FileStream) podem ser substituídas. Em outro exemplo, tais propriedades escalares são parcialmente atualizadas. Assim que a árvore estiver completa, o componente de estrutura de dados 608 pode utilizar o método Compile, que pode retornar uma descrição das propriedades que podem ser alteradas no formato binário (por exemplo, também chamada de definição de alteração compilada). Em um exemplo, o valor pode ser passado como o parâmetro changeDefinition no método Update.
O que segue é um exemplo de uma implementação do componente de estrutura de dados 608, e não deve ser interpretado como uma limitação à presente invenção .
Um chamador pode ser responsável por construir a lista de valores que correspondem às propriedades descritas na árvore ChangeDefinition. Quando o chamador adicionar um nó de atribuição à árvore ChangeDefinition, pode-se atribuirum índice ao nó de atribuição. 0 índice pode ser igual a n -1 (onde n é o número de inserções na árvore até o momento atual). Por exemplo, o primeiro nó de atribuição obtém índice zero, o segundo nó de atribuição obtém índice um, etc. 0 índice também pode ser retornado ap chamador de addAssign-ment. Em seguida, o chamador constrói um objeto Assignment-Value que contém o valor da propriedade adicionada à árvore ChangeDefinition. 0 AssignmentValue é então adicionado ao AssignmentValueList, de modo que sua localização no Assign-mentValueList possa ser mapeada para o índice no nó de atribuição da árvore ChangeDefinition. 0 nó de atribuição pode ser adicionado à ChangeDefinition e o objeto AssignmentValue correspondente pode ser adicionado ao AssignmentValueList usando o método add, que acrescenta o objeto AssignmentVaue ao final da lista. 0 AssingmentValueList resultante é o valor que é passado para o parâmetro valueList dos métodos Update .
0 componente de manipulação de dados 604 também pode incluir um componente de erro 610 para tratar um erro associado a uma operação e/ou manipulação de dados conflitante com uma característica do sistema de armazenamento de dados 602. Por exemplo, a API 606 assegura o domínio do item atual, em que o- domínio do item é uma área lógica que o item define e/ou inclui com propriedades, entidades e/ou subenti-dades associadas. Se um item for referenciado (por exemplo, tanto por meio de um item como por meio de uma ligação, extensão de item ou fragmento de item) que está fora do domínio do item, o item irá aparecer como se não existisse.Emoutras palavras, pode-se empregar o código de erro "The item does not exist" (Item não existente).
0 componente de erro 610 pode invocar códigos de erro. O código de erro pode ser implementado pára indicar a manipulação de dados incompleta, em que o código de erro pode corresponder ao texto que descreve um erro. Os procedimentos e/ou operações referentes à manipulação dos dados dentro do sistema de armazenamento de dados 602 podem retornar um valor inteiro que pode ser o código de retorno para a função (por exemplo, excluir, copiar, mover, obter, definir, atualizar, . . . ) . Em um exemplo, o valor pode ser zero se a operação for bem sucedida ou um valor diferente de zero caso a operação falhe. Cada respectivo procedimento/operação e/ou função de manipulação pode estar associado a um código de erro. Por exemplo, a API 606 pode retornar um código de erro, em vez de exibir um texto. O código de erro pode então ser ligado a uma mensagem de texto correspondente, em que as mensagens de texto podem ser recuperadas, se necessário, de uma tabela no banco de dados.
A Fig. 7 ilustra um sistema 700 que facilita a manipulação dos dados dentro de um sistema de armazenamento de dados utilizando um componente API. 0 sistema de armazenamento de dados 7 02 pode ser um sistema de armazenamento de arquivos baseado em banco de dados que se baseia ao menos em parte em um modelo de dados, em que os dados são representados como instâncias de tipos complexos. Um componente de manipulação de dados 7 04 pode fornecer manipulação de dados associada ao sistema de armazenamento de dados 702 garantin-do a aplicação de ao menos uma característica associada ao sistema de armazenamento de dados 702. O componente de manipulação de dados 704 pode invocar um componente API 706 (doravante denominado "API 7 06") . A API 706 pode oferecer as manipulações de dados (por exemplo, copiar, atualizar, substituir, obter, definir, criar, excluir, mover, etc.) pela execução dos procedimentos armazenados em resposta à recepção de uma entrada do usuário. A API 706 pode receber uma entrada do usuário referente a uma solicitação/comando de manipulação de dados, em que tal entrada do usuário é executada ao mesmo tempo em que se assegura a integridade e/ou pureza das características associadas ao sistema de armazenamento de dados 702. Deve-se apreciar que o sistema de armazenamento de dados 702, o componente de manipulação de dados 704 e a API 706 podem ser substancialmente similares ao sistema de armazenamento de dados 602, 502, 402, 302 e 202, ao componente de manipulação de dados 604, 504, 404, 304 e 204 e à API 606, 506, 406 nas Figuras 6, 5, 4, 3 e 2, respectivamente .
0 componente de manipulação de dados 704 pode incluir um componente de definição de API 708 que define procedimentos e/ou operações que permitem ao usuário manipular dados associados ao sistema de armazenamento de dados 7 02 sem invalidar quaisquer restrições do modelo de dados (utilizado para desenvolver o sistema de armazenamento de dados 702) . O componente de definição de API 708 pode implementar qualquer função e/ou procedimento adequado em relação à manipulação dos dados dentro do sistema de armazenamento dedados 702. Deve-se apreciar que a descrição seguinte dos procedimentos é um exemplo e que a presente invenção não se limita a isto. Além do mais, os nomes de referência de procedimentos, funcionalidades, propriedades e descrições apresentados a seguir não limitam a presente invenção.
O componente de definição de API 708 pode utilizar um procedimento para criar um item dentro do sistema de armazenamento de dados 702, e, mais especificamente, para criar um item dentro de um armazenamento dentro do sistema de armazenamento de dados 702. Por exemplo, a tabela a seguir fornece os parâmetros associados ao procedimento "create i-
tem".
<table>table see original document page 38</column></row><table><table>table see original document page 39</column></row><table><table>table see original document page 40</column></row><table><table>table see original document page 41</column></row><table>
Conforme descrito acima, o procedimento "create
item" pode ter vários códigos de erro associados a ele baseado ao menos em parte em assegurar as restrições relacionadas ao sistema de armazenamento de dados 702. Tais códigos de erro podem ser qualquer formato adequado, em que o código pode representar uma mensagem de texto descrevendo o erro correspondente. Por exemplo, um código de erro pode ser gerado quando um usuário tentar criar uma pasta armazenada em arquivo. Em outro exemplo, um código de erro pode ser gerado se um item do tipo arquivo genérico não for armazenado em arquivo.
Seguindo o procedimento ilustrativo de "create i-tem", cada item tem uma propriedade denominada Containerld, que é o Itemld do Item de recipiente. O item de recipiente já deve existir no armazenamento e ser acessível pelo ponto de conexão do cliente. Se o chamador não fornecer um Creati-onTime (por exemplo, fornecer um valor nulo) para o item, o armazenamento irá definir o CreationTime como a hora atual. Se o chamador não fornecer um LastModificatioNTime (por e-xemplo, fornecer um valor nulo) para o item, o armazenamento irá definir o LastModificationTime como a hora atual. Se ambos os valores não forem fornecidos, o armazenamento iráfornecer horas substancialmente similares ao item. Creation-Time e ao item.LastModification.
Em outro exemplo, o componente de definição de API 708 pode empregar um SecurityDescriptor. A inclusão de um SecurityDescriptor opcional satisfaz o requisito de o cliente poder criar automaticamente um novo item e definir de forma explicita os parâmetros de verificação e segurança. Deve-se apreciar que o SecurityDescriptor pode trabalhar em cooperação com um componente de segurança (não ilustrado) conforme previamente discutido. Além do mais, o componente de definição de API 708 pode definir a implementação de um item marcado para exclusão. Caso exista um item marcado para exclusão no armazenamento que possua exatamente o mesmo id de item que o passado para o procedimento, o procedimento não irá falhar. O item marcado para exclusão será ressuscitado e os novos dados passados para esta chamada de Createl-tem serão colocados no item ressuscitado.
Conforme discutido acima, um concurrencyToken é retornado para permitir que os clientes usem detecção de si-multaneidade otimista nas atualizações subseqüentes para o item. 0 concurrency|Token retornado é o simbolo para o item. Em outro exemplo, quando um agente do sistema de arquivos chama Createltem, o componente de API 706 não irá gerar uma auditoria. A chamada será feita no contexto do usuário (por exemplo, exec_as_htoken) e a verificação de acesso será feita na API 706. A auditoria do sistema de arquivos (por exemplo, um sistema de armazenamento de arquivos tradicional, em que um sistema baseados em bits emprega uma API de tamanhode bit similar em combinação com um sistema operacional) para esse evento será gerada pelo agente do sistema de arquivos. Além do mais, o componente de definição de API 708 pode fornecer várias aplicação em relação a um item armazenado em arquivo. Por exemplo, se o item for um item armazenado em arquivo (por exemplo, o sinalizador "isFileBacked" está definido como verdadeiro), então é possivel aplicar o seguinte: 1) FileBackedltem não pode estar contido em outra árvore de itens armazenados em arquivo (por exemplo, para o item pai, EntityState.RootFileBackedltemld deve ser NULL (nulo)); e 2) Somente os itens declarados como do tipo "Compoundltem" podem ser armazenados em arquivo.
O componente de definição de API 708 pode implementar um procedimento para criar ao menos um item complexo. O procedimento pode criar vários itens no armazenamento associado ao sistema de armazenamento de dados 702. Deve-se apreciar que o componente de definição de API 708 pode criar um conjunto de extensões de item e um conjunto de ligações com cada item. O tipo Complexltem é um UDT imutável. Ele é basicamente um recipiente para passar os dados associados à operação/procedimento. A seguir, temos um exemplo de definição de um Complexltem.
Public class Complexltem
{Public Complexltem(Item item, sqlInt32promotionStatus, SqlBoolean isFileBacked, SqlString namespaceName,SqlBoolean isGhost, SyncEntityVersion synclnfo, ItemSyncMetadata syncMetadata); public void AddLink(Link link, 5 SyncEntitylnformation synclnfo,
LinkSyncMetadata syncMetadata);
public void AddltemExtension(ItemExtension itemEx-
tension,
SyncEntityVersion synclnfo); 10 Public void AddltemFragment(IteraFragment itemFrag-
ment,
SyncEntityVersion synclnfo); }
Além disso, a tabela a seguir apresenta um exemplo 15 dos parâmetros associados ao procedimento "create complex item" (criar item complexo) ._
<table>table see original document page 44</column></row><table><table>table see original document page 45</column></row><table>
Deve-se apreciar que o componente de definição de
API 708 pode fornecer a seguinte funcionalidade. As semânticas de transação são de forma que os itens são adicionados automaticamente. Se houver alguma falha durante a função, 5 nenhum dos itens complexos é inseridos no armazenamento. Se a lista complexltems estiver vazia, então a operação não realiza nenhuma operação e retorna sucesso. Caso exista um i-tem marcado para exclusão no armazenamento com o mesmo ID de item que qualquer um dos itens passados para o procedimento, 10 este irá falhar. A lista de extensões de item pode ser nulo ou não nula, com zero ou mais entradas. A lista de ligações pode ser nula ou não nula, com zero ou mais entradas. A lista de fragmentos de item pode ser nula ou não nula, com zeroou mais entradas. A lista de fragmentos de item pode ser nula ou não nula, com zero ou mais entradas. Um concurrencyTo-ken é retornado para permitir que os clientes usem detecção de simultaneidade otimista nas atualizações subseqüentes. 0 5 valor concurrencyToken irá se aplicar a todos os itens, ligações e extensões de item criados como resultado desta operação. Com respeito a um item armazenado em arquivo, pode-se aplicar o seguinte: 1) FileBackedltem não pode estar contido em outra árvore de itens armazenados em arquivo (por exem-
pio, para o item pai, EntityState. RootFileBackedltemld deve ser NULO); e 2) Somente os itens declarados como do tipo "Compoundltem" podem ser armazenados em arquivo.
O componente de definição de API 708 pode implementar um procedimento para criar uma ligação no armazena-
mento dentro do sistema de armazenamento de dados 7 02. Por exemplo, a seguinte tabela pode representar vários parâmetros associados ao procedimento utilizado para criar uma ligação,_
<table>table see original document page 46</column></row><table><table>table see original document page 47</column></row><table>
Deve-se apreciar que o componente de definição de
API 708 assegura várias características associadas ao sistema de armazenamento de dados 702. Por exemplo, o id do item de destino pode apontar para um item válido do tipo correto 5 (conforme especificado no esquema para este tipo de ligação) e/ou o id do item de destino deve ser nulo. O CreateLink pode ser utilizado para criar uma ligação entre os itens existentes no sistema de armazenamento de dados 7 02. Deve-se a-preciar que, se existir uma ligação marcada para exclusão no
armazenamento com id de ligação e id de item de origem substancialmente similares às passadas para o procedimento, o procedimento não irá falhar. A ligação marcada para exclusão pode ser ressuscitada, e os novos dados passados para essa chamada de CreateLink serão colocados na ligação ressuscita-
da. Além disso, um concurrencyToken pode ser retornado para permitir que os cliente usem detecção de simultaneidade otimista nas atualizações subseqüentes para essa ligação.
O componente de definição de API 708 pode empregar um procedimento para criar uma extensão de item dentro do
armazenamento. Por exemplo, a seguinte tabela pode representar vários parâmetros associados ao procedimento utilizado para criar a extensão de item.<table>table see original document page 48</column></row><table>0 concurrencyToken utilizado acima pode ser retor-
nado para permitir que um cliente utilize detecção de simul-taneidade otimista nas atualizações subseqüentes para essa extensão de item.
0 componente de definição de API 708 pode invocar um procedimento para modificar um item dentro do armazenamento, em que o armazenamento são dados persistentes relacionados ao sistema de armazenamento de dados 702. A tabela a seguir é um exemplo de parâmetros e descrições que corres-pondem à modificação de um procedimento "item"._
<table>table see original document page 48</column></row><table><table>table see original document page 49</column></row><table><table>table see original document page 50</column></row><table><table>table see original document page 51</column></row><table>
A origem de uma ligação é imutável e não pode ser
alterada usando esse procedimento armazenado. O destino de uma ligação é mutável e pode ser alterado chamando Update-Link. O tipo do id do item de destino pode ser nulo ou não nulo. Se for não nulo, ele pode apontar para um item que e-xiste no armazenamento e pode corresponder ao tipo declarado na ligação.
Além disso, o componente de definição de API 7 08 pode modificar um ItemExtension no armazenamento. A tabela aseguir é um exemplo de um procedimento utilizado pelo componente de definição de API 708 e ilustra várias propriedades e/ou descrições associadas a ele._
<table>table see original document page 52</column></row><table><table>table see original document page 53</column></row><table>
Além do mais, o componente de definição de API 708
pode invocar um procedimento com a API 706 que permite a um item ser excluído do armazenamento. A seguir há uma tabela com exemplos de parâmetros e descrições do procedimento para excluir um item do armazenamento.
<table>table see original document page 53</column></row><table>Caso o item não seja encontrado, o procedimento retornará sucesso. Quaisquer ligações no armazenamento que tenham como destino o item podem ter a propriedade TargetI-temld estabelecida como nulo. Estabelecer o Targetltemld como nulo pode ter sucesso independentemente das permissões reais que o chamador tem sobre os Links. Ao excluir um item, as ligações como origem neste item, os ItemExtensions e I-5 temFragments associados ao item podem ser excluídos. A exclusão pode ter êxito se o item não tiver filhos (por exemplo, não existem itens com um id de recipiente igual ao ite-mid). Em um exemplo, não há como forçar uma exclusão em cascata de uma árvore de itens. Isso só pode ser implementado
pelo chamador. Se o id do item for marcado para exclusão, será retornado sucesso, seja qual for o estado dos valores de concurrencyToken/LastUpdateTS. Se o concurrencyToken não corresponder e o item NÂO for marcado para exclusão, pode ser retornado um código de erro. O agente do sistema de ar-
quivos pode chamar Deleteltem em seu próprio contexto. Nenhuma verificação ou auditoria de acesso seria feita na API 706.
O componente de definição de API 708 pode invocar um procedimento para excluir uma ligação no armazenamento. A 20 tabela abaixo é um exemplo de parâmetros e descrições que
correspondem à exclusão de um procedimento de ligação.
<table>table see original document page 54</column></row><table><table>table see original document page 55</column></row><table><table>table see original document page 56</column></row><table>
O componente de definição de API 708 pode invocar um procedimento para modificar um ItemFragment no armazena-mento. Esse procedimento armazenado pode ser gerado por tipo de modo que o nome do tipo e o nome da propriedade ItemFragment sejam contidos no nome do procedimento armazenado. Para esclarecer melhor, tome como referência o "CreateltemFrag-
ment" conforme discutido acima. A tabela a seguir é um exemplo dos parâmetros e descrições que correspondem à modifica-ção de um ItemFragment no armazenamento._
<table>table see original document page 57</column></row><table><table>table see original document page 58</column></row><table>
0 componente de definição de API 708 pode definir
e/ou implementar um procedimento para excluir um ItemFrag-ment no armazenamento. Segue abaixo uma tabela que representa vários parâmetros como um exemplo do procedimento para exclusão do ItemFragment dentro do sistema de armazenamento de dados 702.
<table>table see original document page 58</column></row><table><table>table see original document page 59</column></row><table><table>table see original document page 60</column></row><table>
0 concurrencyToken é retornado para permitir que
os clientes usem detecção por simultaneidade otimista nas atualizações subseqüentes para o descritor de segurança. 0 concurrencyToken pode ser associado ao descritor de seguran-5 ça. Em um exemplo, o concurrencyToken para o descritor de segurança não está relacionado ao valor concurrencyToken do item que corresponde ao itemld. 0 agente do sistema de arquivos pode chamar GetltemSecurity em seu próprio contexto.
0 componente de definição de API 708 pode definir o descritor de segurança de um item no armazenamento. A tabela a seguir é um exemplo de um procedimento para definir o descritor de segurança utilizado pela API 706 e ilustra vá-rias propriedades e/ou descrições associadas a ele.
<table>table see original document page 61</column></row><table>O componente de definição de API 708 pode empregar
um procedimento que move um Item de um recipiente para outro e/ou alterar o namespaceName do item. A tabela a seguir é um exemplo de vários parâmetros associados a tal procedimento.
<table>table see original document page 62</column></row><table>Se o item a ser movido ou o novo recipiente não for acessivel pelo ponto de conexão atual, o procedimento pode retornar um erro. Essa operação pode falhar caso já e-xista um item com o mesmo nome no recipiente de destino. Há três formas válidas de se usar esta função. Esses usos são reunidos na tabela a seguir:_
<table>table see original document page 63</column></row><table>
Independente da forma em que Moveltem é chamado
(por exemplo, para mover o item e/ou renomear o item), o valor LastUpdateTS (conforme retornado no concurrencyToken) para o Item pode ser atualizado. 0 agente do sistema de arquivos pode chamar Moveltem no contexto do usuário. Nenhuma verificação ou auditoria de acesso no arquivo/diretório sendo renomeado. As verificações e auditorias de acesso feitas no novo pai determinam se o usuário tem permissão para mover o item para o novo destino.
0 componente de definição de API 708 pode empregar um procedimento que substitui um Item por um novo Item, que pode ser de um tipo diferente. A tabela a seguir é um exemplo de vários parâmetros associados a tal procedimento.<table>table see original document page 64</column></row><table>
A operação Replaceitem pode ser usada para substi-tuir um objeto Item por outro objeto item. Esses objetos podem ser referidos como Oldltem e Newltem. Oldltem e Newltem podem ter o mesmo Itemld, mas podem ter tipos diferentes. Por exemplo, uma aplicação em que essa operação será usada é a Propriedade promotion. A descrição a seguir pode ser associada à operação Replaceltem: 1) o ID do recipiente não pode ser alterado (para obter essa funcionalidade, o chamador deverá chamar Moveltem); 2) 0 namespaceName existente não será alterado; 3) Sempre excluir os itens que são originados do Item sendo substituído se o item estiver armazenado em arquivo; 4) Se a operação "replace item" fizer com que uma ligação que aponta para o item seja inválida (devido ao fato de a restrição do tipo de destino não ser mais válida), Replaceltem falha; 5) Se a operação "replace item" fizer com que uma ligação originada do item seja inválida (devido ao fato de a restrição do tipo de origem não ser mais válida) , Replaceltem falha; 6) Todas as unidades de alteração do novo item são definidas como valores padrão. Pode haver ao menos duas exceções. Se o item participar na sincronia, então pode transferir o valor Changelnformation.Synclnformation. Crea-tionSyncVersion do item antigo para o novo item. Além disso, se o item participar na sincronia e estiver armazenado em arquivo, a unidade de alteração para o fluxo de arquivos é transmitida do item antigo para o novo item; 7) Todas as propriedades baseadas em arquivo têm de ser especificadas. Ao contrário do Createltem, não há herança de propriedades de Arquivo da pasta pai caso elas não sejam definidas pelo usuário; 8) Para os itens armazenados em arquivo, quaisquerdados de fluxo de arquivos não são modificados a menos que o sinalizador DeleteltemOwnedContent seja especificado (refira-se à tabela abaixo);
<table>table see original document page 66</column></row><table>
e 9) Replaceltem não permite que um item troque de um tipo de Item Genérico para um tipo de Item Composto ou vice versa (consulte tabela abaixo).<table>table see original document page 67</column></row><table>
A Fig. 8 ilustra um sistema 800 que utiliza inte-
ligência para facilitar a manipulação de dados com base ao menos em parte em um modelo de dados com respectivas características. O sistema 800 pode incluir um sistema de armazenamento dados 802 (que pode ser representado por uma representação de modelo de dados), um componente de manipulação de dados 804, e uma interface 106, todos os quais podem ser substancialmente similares aos respectivos componentes descritos nas figuras anteriores. O sistema 800 também inclui um componente inteligente 806. O componente inteligente 806 pode ser utilizado pelo componente de manipulação de dados 804 para facilitar a manipulação dos dados (por exemplo, copiar, atualizar, substituir, obter, definir, criar, excluir, mover, etc.) de acordo com ao menos uma característica associada ao sistema de armazenamento de dados 802. Por exemplo, o componente inteligente 806 pode ser utilizado'para analisar características associadas ao sistema de armazenamento de dados 802 e/ou assegurar a integridade das características referentes ao sistema de armazenamento de dados 802.Deve-se entender que o componente inteligente 806 pode raciocinar sobre ou inferir os estados do sistema, ambiente e/ou usuário a partir de um conjunto de observações capturado via eventos e/ou dados. A inferência pode ser empregada para identificar um contexto ou ação especifica, ou pode gerar uma distribuição de probabilidade pelos estados, por exemplo, A inferência pode ser probabilistica - isto é, o cálculo de uma distribuição de probabilidade pelos estados de interesse baseado na consideração dos dados e eventos. A inferência também pode se referir a técnicas empregadas para compor eventos de nivel superior a partir de um conjunto de eventos e/ou dados. Tal inferência resulta na construção de novos eventos ou ações a partir de um conjunto de eventos observados e/ou dados de evento armazenados, quer ou não os eventos estejam correlacionados em estreita proximidade temporal, e quer os eventos e dados provenham de uma ou várias fontes de dados e eventos. Vários esquemas de classificação (treinados de forma explicita e/ou implícita) e/ou sistemas (por exemplo, máquinas de vetor de suporte, redes neurais, sistemas especialistas, redes Bayesianas, lógica difusa, mecanismos de fusão de dados, etc.) podem ser empregados em conexão com a realização da ação automática e/ou inferida relativa à presente invenção.
Um classificador é uma função que mapeia um vetor de atributos de entrada, x = (xl, x2, x3, x4, xn) , para uma confiança que a entrada pertence a uma classe, isto é, f (x) = confiança(classe). Tal classificação pode empregar uma a-nálise de base probabilistica e/ou estatística (por exemplo,fatorando nas utilidades e custos de análise) para prognosticar ou inferir uma ação que um usuário deseja efetuar automaticamente, Uma máquina de vetor de suporte (SVM) é um exemplo de classificador que pode ser empregado. 0 funcionamento da SVM consiste em encontrar uma hipersuperficie no espaço de possíveis entradas, hipersuperficie esta que tenta dividir os critérios de ativação dos eventos não ativadores. Intuitivamente, isso torna a classificação correta para testar dados que são semelhantes, porém não idênticos aos dados de treino. Outras abordagens de classificação de modelo direcionadas e não direcionadas incluem, por exemplo, naive-Bayes, redes Bayesianas, árvores de decisão, redes neurais, modelos de lógica difusa e modelos de classificação probabi-listica que oferecem diferentes modelos de independência podem ser empregadas. A classificação, conforme utilizada neste documento, também inclui a regressão estatística que é utilizada para desenvolver modelos de prioridade.
As Figs. 9 e 10 ilustram metodologias de acordo com a presente invenção. Para simplificar a explicação, as metodologias são retratadas e descritas como uma série de atos. Deve-se entender e apreciar que a presente invenção não se limita aos atos ilustrados e/ou pela ordem dos atos, por exemplo, os atos podem ocorrer em várias ordens e/ou simultaneamente, e com outros atos não apresentados e descritos neste documento. Além disso, nem todos os atos ilustrados são necessários para implementar as metodologias de a-cordo com a presente invenção. Além disso, os versados na técnica irão compreender e apreciar que as metodologias po-deriam ser representadas alternativamente como uma série de estados inter-relacionados via um diagrama de estados ou via eventos.
A Fig. 9 ilustra uma metodologia 900 que facilita a invocação de uma manipulação de dados dentro de um sistema baseado em banco de dados e ao mesmo tempo impõe ao menos uma restrição de modelo. No número de referência 902, pode-se utilizar um modelo de dados para representar um sistema de armazenamento de dados. O modelo de dados pode ser um modelo complexo baseado ao menos em parte em uma estrutura de banco de dados, em que um item, um subitem, uma propriedade e um relacionamento são definidos para permitir a representação das informações dentro de um sistema de armazenamento de dados como instâncias de tipos complexos. O modelo de dados pode utilizar um conjunto de blocos básicos de construção para criar e gerenciar objetos ricos persistentes e ligações entre os objetos. Deve-se apreciar que o modelo de dados pode incluir ao menos uma característica que reflita na estrutura e/ou na funcionalidade do sistema de armazenamento de dados representado. Em outras palavras, o modelo de dados pode conter restrições que podem ser aplicadas para assegurar a integridade do modelo de dados, do sistema de armazenamento de dados e dos dados associados a ele.
No número de referência 904, pode-se terminar uma característica associada ao sistema de armazenamento de dados (baseado no modelo de dados) .A característica, por e-xemplo, pode consistir de diretrizes, restrições, esquemas, etc. para proporcionar o sistema de armazenamento de dadosde acordo com tais características. Empregando tais características, é possível assegurar a integridade e exatidão do modelo de dados correspondente. No número de referência 906, pode-se invocar uma manipulação de dados pela implementação de pelo menos um procedimento. Enquanto oferecendo qualquer manipulação de dados adequada em relação ao sistema de armazenamento de dados, a característica de tal sistema de armazenamento de dados é aplicada para proporcionar um ambiente estável. Em um exemplo, pode-se empregar uma API para permitir qualquer manipulação de dados apropriada em combinação com o sistema de armazenamento de dados. Por exemplo, a API pode ser utilizada por um usuário, que pode modificar os dados . Deve-se apreciar que a manipulação de dados pode incluir, sem a isto se limitar, copiar, atualizar, substituir, obter, definir, criar, excluir, mover, etc. Por exemplo, o sistema de armazenamento de dados pode incluir um sistema hierárquico de recipientes, em que tal característica é a-pliçada durante qualquer procedimento utilizado para. manipular dados dentro do sistema de armazenamento de dados.
A Fig. 10 ilustra uma metodologia 1000 para manipular dados baseado ao menos em parte em um modelo de dados com as respectivas características sendo aplicadas. No número de referência 1002, pode-se utilizar um modelo de dados para representar um sistema de armazenamento de dados. 0 sistema de armazenamento de dados pode ser um sistema de arquivos baseado em banco de dados, em que as informações são representadas como instâncias complexas de tipos. No número de referência 1004, determina-se uma característica associa-da ao sistema de armazenamento de dados representado. A característica pode incluir, sem a isto se limitar, uma restrição, uma diretriz, uma regra, um objetivo, um esquema e qualquer outro elemento adequado associado ao sistema de armazenamento de dados que estimule uma implementação precisa.
No número de referência 1006, a manipulação dos dados pode ser invocada utilizando pelo menos um procedimento. A manipulação dos dados pode ser fornecida por uma API, em que um usuário pode chamar ao menos um procedimento, e o procedimento pode corresponder a pelo menos uma manipulação de dados. Deve-se apreciar que a manipulação de dados é invocada enquanto se mantém e/ou impõe a (s) característica(s) associada(s) ao sistema de armazenamento de dados. No número de referência 1008, um código de erro pode ser utilizado e/ou pode-se empregar segurança. O código de erro pode ser gerado e utilizado, por exemplo, quando a manipulação de dados violar as características do sistema de armazenamento de dados. Deve-se apreciar que o código de erro pode ser exibido para um usuário via a API, em que o código pode corresponder a uma tabela de consulta que relaciona o código a uma mensagem de texto. A segurança associada às manipulações de dados e/ou à API podem incluir vários niveis de autorização e/ou identificações e/ou senhas. Em outras palavras, cada manipulação de dados pode estar relacionada a um nivel de segurança, onde somente um certo nivel de segurança pode implementar tais procedimentos e/ou uma identificação e senha são necessários.
No número de referência 1010, pode-se implementarsimultaneidade otimista e/ou bloqueio em relação às manipulações de dados dentro do sistema de armazenamento de dados. A simultaneidade otimista pressupõe que a probabilidade de outro processo realizar uma alteração praticamente ao mesmo tempo é baixa, portanto, ela não entra no bloco sincronizado até que a alteração estej a pronta para ser confirmada no sistema de armazenamento de dados (por exemplo, armazenamento) - 0 uso de tal técnica reduz o tempo de bloqueio e oferece melhor desempenho do banco de dados. Em um exemplo, pode-se manter um simbolo para associar ao item as modificações a cada modificação do item. Em outras palavras, a simultaneidade otimista pode facilitar o acesso aos dados entre dois aplicativos simultâneos. Além disso, o bloqueio pode facilitar o suporte a múltiplos chamadores simultâneos. Por exemplo, imagine uma situação em que existem vários chamadores simultâneos solicitando a posse de um conjunto comum de recursos de tal forma que nenhuma das solicitações pode ser cumprida, pois cada chamador está aguardando o outro. Em tal caso, o sistema pode bloquear os chamadores (por exemplo, impedir os chamadores) , sendo que a única saida de tal caso é evitar os chamadores. Para evitar essa situação, o bloqueio pode suportar vários chamadores simultâneos de modo que uma lógica de bloqueio complexa possa assegurar automaticamente o sucesso ou falha das solicitações individuais. Além do mais, pode-se suportar vários chamadores simultâneos de modo que uma lógica de bloqueio complexo possa assegurar automaticamente ou sucesso ou falha das solicitações individuais .De modo a oferecer um melhor contexto para a implementação dos vários aspectos da presente invenção, as Figs. 11 e 12 e a discussão a seguir visam a oferecer uma breve descrição geral de um ambiente de computação adequado, no qual é possivel implementar os vários aspectos da presente invenção. Embora a invenção tenha sido descrita acima no contexto geral de instruções executáveis por computador de um programa de computador que funciona em um computador local e / ou em um computador remoto, os versados na técnica irão reconhecer que a invenção também pode ser implementada em combinação com outros módulos de programa. Geralmente, os módulos de programa incluem rotinas, programas, componentes, estruturas de dados, etc. que realizam tarefas especificas e/ou implementam tipos de dados abstratos específicos.
Além do mais, os versados na técnica irão apreciar que os métodos inventivos podem ser praticados com outras configurações de sistema de computador, inclusive em sistemas de computador com um ou vários processadores, microcomputadores , computadores de grande porte, bem como em computadores pessoais, dispositivos de computação portáteis, componentes eletrônicos programáveis pelo consumidor e/ou baseados em microprocessador, e similares, cada um dos quais pode ser comunicar operativãmente com um ou vários dispositivos associados. Os aspectos ilustrados da invenção também podem ser praticados em ambiente de computação distribuída, em que certas tarefas são efetuadas por dispositivos de processamento remotos que são ligados por meio de uma rede de comunicações. Entretanto, alguns, se não todos, os aspectosda invenção podem ser praticados em computadores independentes. Em um ambiente de computação distribuída, os módulos de programa podem estar localizados em dispositivos de armazenamento em memória remota e/ou local.
A Fig. 11 é um diagrama de blocos esquemático de um ambiente de computação 1100 exemplificativo com o qual a presente invenção pode interagir. O sistema 1100 inclui um ou mais clientes 1110. Os clientes 1110 podem ser hardware e/ou software (por exemplo, encadeamentos, processos, dispositivos de computação) . O sistema 1100 também inclui um ou mais servidores 1120. 0(s) servidor(es) 1120 pode(m) ser hardware e/ou software (por exemplo, encadeamentos, processos, dispositivos de computação). Os servidores 1120 podem conter encadeamentos para realizar transformações, por exemplo, pelo uso da presente invenção.
Uma possível comunicação entre um cliente 1110 e um servidor 112 0 pode ser na forma de um pacote de dados a-daptado para ser transmitido entre dois ou mais processos de computador. O sistema 1100 inclui uma estrutura de comunicação 1140 que pode ser empregada para facilitar as comunicações entre o(s) cliente (s) 1110 e o(s) servidor(es) 1120. 0(s) cliente(s) 1110 é(são) operativamente conectado(s) a um ou mais armazenamentos de dados do cliente 1150 que podem ser empregados para armazenar informações locais para o(s) cliente(s) 1110. De forma similar, o(s) servidor(es) 1120 é(são) operativamente conectado(s) a um ou mais armazenamentos de dados do servidor 1130 que podem ser empregados para armazenar informações locais para o(s) servidor(es) 1140.Com referência à Fig. 12, um ambiente exemplificativo 1200 para implementação de vários aspectos da invenção inclui um computador 1212. O computador 1212 inclui uma unidade de processamento 1214, uma memória do sistema 1216 e um barramento do sistema 1218. O barramento do sistema 1218 a-copla componentes do sistema, incluindo, mas sem a isto se limitar, a memória do sistema 1216 à unidade de processamento 1214. A unidade de processamento 1214 pode ser qualquer um dentre vários processadores disponíveis. Microprocessadores duplos e outras arquiteturas com múltiplos processadores também podem ser empregadas como a unidade de processamento 1214.
O barramento do sistema 1218 pode ser qualquer um dentre vários tipos de estruturas de barramento, inclusive o barramento de memória ou controlador de memória, um barramento periférico ou barramento externo, e/ou um barramento local usando qualquer uma das várias arquiteturas de barramento disponíveis, incluindo, sem a isto se limitar, a Arquitetura Padrão da Indústria (ISA), a Arquitetura de Micro-canal (MSA), a ISA Estendida (EISA), a interface IDE, o barramento Local VESA (VLB), a Interconexão de Componentes Periféricos (PCI), o barramento Card, o Barramento Serial Universal (USB), a Porta Gráfica Acelerada (AGP), o barramento da Associação Internacional de Placas de Memória para Computador Pessoal (PCMCIA), Firewire (IEEE 1394) e a Interface Small Computer Systems Interface (SCSI) .
A memória do sistema 1216 inclui a memória volátil 1220 e a memória não volátil 1222. O sistema básico de en-trada/saida (BIOS), contendo as rotinas básicas para transferir informações entre os elementos dentro do computador 1212, tal como durante a inicialização, é armazenado na memória não volátil 1222. A titulo de ilustração, e não de limitação, a memória não volátil 1222 pode incluir a memória somente para leitura (ROM), a ROM programável (PROM), a ROM eletricamente programável (EPROM) , a ROM eletricamente programável e apagável (EEPROM) ou memória flash. A memória volátil 1220 inclui a memória de acesso aleatório (RAM), que age como uma memória cache externa. A titulo de ilustração e não de limitação, a RAM está disponível em diversas formas, tal como RAM estática (SRAM), RAM dinâmica (DRAM), DRAM sin-crona (SDRAM), SDRAM com dupla taxa de dados (DDR SDRAM), SDRAM aperfeiçoada (ESDRAM), DRAM Synchlink (SLDRAM), RAM Rambus direta (RDRAM), RAM dinâmica Rambus direta (DRDRAM) e RAM dinâmica Rambus (RDRAM).
O computador 1212 também inclui meios de armazenamento em computador removíveis/não removíveis e voláteis/não voláteis. A Fig. 12 ilustra, por exemplo, um armazenamento em disco 1224. O armazenamento em disco 1224 inclui, sem a isto se limitar, dispositivos como uma unidade de disco magnético, unidade de disco flexível, unidade de fita, unidade Jaz, unidade Zip, unidade LS-100, cartão de memória flash ou cartão memory stick. Além disso, o armazenamento em disco 1224 pode incluir meios de armazenamento separadamente ou em combinação com outros meios de armazenamento, inclusive, mas sem a isto se limitar, uma unidade de disco óptico tal como um dispositivo de disco compacto ROM (CD-ROM), unidade de CDregravável (Unidade CD-R), unidade de CD regravável (Unidade CD-RW) ou uma unidade de disco versátil digital ROM (DVD-ROM) . Para facilitar a conexão dos dispositivos de armazenamento em disco 1224 ao barramento do sistema 1218, geralmente é usada uma interface removível ou não removível, tal como a interface 1226.
Deve-se apreciar que a Fig. 12 descreve o software que atua como um intermediário entre os usuários e os recursos básicos do computador descritos no ambiente de operação adequado 1200. Tal software inclui um sistema operacional 1228. O sistema operacional 1228, que pode ser armazenado no armazenamento em disco 1224, serve para controlar e alocar recursos do sistema de computador 1212. As aplicações do sistema 1230 tiram vantagem do gerenciamento de recursos do sistema operacional 1228 por meio dos módulos de programa 1232 e dados de programa 1234 armazenados tanto na memória do sistema 1216 quanto no armazenamento em disco 1224. Deve-se apreciar que a presente invenção pode ser implementada com vários sistemas operacionais ou combinações de sistemas operacionais.
Um usuário entra com comandos ou informações no computador 1212 por meio do(s) dispositivo(s) de entrada 1236. Os dispositivos de entrada 1236 incluem, sem a isto se limitar, um dispositivo de apontamento tal como um mouse, trackball, caneta, teclado de toque, teclado, microfone, joystick, controle de jogo, antena parabólica, scanner, placa sintonizadora de TV, câmera digital, webcam, entre outros. Esses e outros dispositivos de entrada se conectam àunidade de processamento 1214 por meio do barramento do sistema 1218 pela(s) porta(s) de interface 1238. A(s) porta(s) de interface 1238 inclui(em), por exemplo, uma porta serial, uma porta paralela, uma porta de jogo e um barramento serial universal (USB). 0(s) dispositivo(s) de saida 1240 usa(m) parte do mesmo tipo de portas que o(s) dispositivo(s) de entrada 1236. Assim, por exemplo, uma porta USB pode ser usada para fornecer entrada ao computador 1212 e para transmitir informações do computador 1212 para um dispositivo de saida 1240. O adaptador de saida 1242 é apresentado para ilustrar que há alguns dispositivos de saida 1240 como monitores, alto-falantes e impressoras, dentre outros dispositivos de entrada 1240, que exigem adaptadores especiais. Os adaptadores de saida 1242 incluem a titulo de ilustração e não de limitação, placas de video e som que fornecem um meio de conexão entre o dispositivo de saida 1240 e o barramento do sistema 1218. Deve-se observar que outros dispositivos e/ou sistemas de dispositivos oferecem tanto capacidades de entrada como de saida, tal como o(s) computador(es) remoto(s) 1244.
O computador 1212 pode operar em um ambiente em rede usando conexões lógicas com um ou mais computadores remotos, tal como o (s) computador(es) remoto(s) 1244. 0(s) computador(es) remoto(s) 1244 pode(m) ser um computador pessoal, um servidor, um roteador, um PC em rede, uma estação de trabalho, um dispositivo baseado em microprocessador, um dispositivo não-hierarquizado ou outro nó comum da rede, entre outros, e tipicamente incluem grande parte ou todos os elementos descritos em relação ao computador 1212. Para finsde brevidade, apenas um dispositivo de armazenamento em memória 1246 é ilustrado com o(s) computador(es) remoto(s) 124 4. 0(s) computador (es) remoto(s) 124 4 é (são) conectado(s) logicamente ao computador 1212 por meio de uma interface de rede 1248 e então conectado(s) fisicamente pela conexão de comunicação 1250. A interface de rede 124 8 abrange redes de comunicação com e sem fio, tal como redes locais (LAN) e redes de longa distância (WAN). As tecnologias LAN incluem Interface de Dados Distribuídos por Fibra Óptica (FDDI) , Interface de Dados Distribuídos por Fios de Cobre (CDDI) , E-thernet, Rede em Anel ("Token Ring"), dentre outras. As tecnologias WAN incluem, sem a isto se limitar, ligações ponto-a-ponto, redes de comutação de circuitos como Redes Digitais de Serviços Integrados (ISDN) e suas variações, redes de comutação de pacotes e Linhas Digitais do Assinante (DSL).
A(s) conexão(ões) de comunicação 1250 se refere ao hardware/software empregado para conectar a interface de rede 1248 ao barramento 1218. Embora a conexão de comunicação 1250 seja ilustrada para mais clareza dentro do computador 1212, ela também pode ser externa ao computador 1212. O hardware/software necessário para conexão com a interface de rede 1248 inclui, apenas para fins exemplificativos, tecnologias internas e externas, tais como modems, incluindo modems de grade telefônica regular, modems, modems a cabo a modems DSL, adaptadores ISDN e placas Ethernet.
O que foi descrito acima inclui exemplos da presente invenção. Evidentemente, não é possível descrever cada combinação possível dos componentes ou metodologias parafins de descrição da presente invenção, porém, os versados na técnica poderão reconhecer que são possiveis várias outras combinações e permutações da presente invenção. Por conseqüência, a presente invenção pretende abranger todas essas alterações, modificações e variações enquadradas dentro da essência e âmbito das reivindicações anexas.
Em particular e com respeito às várias funções e-fetuadas pelos componentes, dispositivos, circuitos, sistemas e outros anteriormente descritos, os termos (incluindo uma referência para um "meio") usados para descrever tais componentes deverão corresponder, salvo indicação ao contrário, a qualquer componente que desempenhe a função especificada do componente descrito (por exemplo, um equivalente funcional), mesmo não sendo estruturalmente equivalente à estrutura revelada, que desempenhe a função nos aspectos i-lustrativos da invenção ilustrados neste documento. A esse respeito, também será reconhecido que a invenção inclui um sistema, bem como um meio legível por computador tendo instruções executáveis por computador para executar os atos e/ou eventos dos vários métodos da invenção.
Além disso, embora um aspecto particular da invenção possa ter sido revelado com respeito a apenas uma de várias implementações, tal aspecto pode ser combinado com um ou mais outros aspectos das outras implementações conforme pode ser desejado e vantajoso para qualquer aplicação especifica ou particular. Além do mais, na medida em que os termos "inclui" e "incluindo", e suas variações, são usados tanto na descrição detalhada como nas reivindicações, essestermos pretendem ser inclusivos de maneira similar ao termo "compreendendo".

Claims (20)

REIVINDICAÇÕES
1. Sistema que facilita a manipulação de dados, CARACTERIZADO por compreender:um modelo de dados que representa, em parte, instâncias complexas de tipos e que inclui pelo menos uma dentre uma restrição e uma característica; eum componente de manipulação de dados que manipula dados associados ao modelo de dados e aplica pelo menos uma dentre a restrição e a característica.
2. Sistema, de acordo com a reivindicação 1, CARACTERIZADO pelo fato de que o modelo de dados representa um sistema de armazenamento de dados que é um sistema baseado em banco de dados que define um modelo hierárquico de pelo menos uma entidade persistente e zero ou mais subentidades por cada entidade para representar informações como um tipo complexo.
3. Sistema, de acordo com a reivindicação 1, CARACTERIZADO pelo fato de que a manipulação dos dados é pelo menos um comando dentre copiar, atualizar, substituir, obter, definir, criar, excluir, mover e modificar.
4. Sistema, de acordo com a reivindicação 1, CARACTERIZADO adicionalmente por compreender um componente de segurança que pode empregar uma técnica de segurança que corresponde à manipulação de dados para invocar o sistema de armazenamento de dados.
5. Sistema, de acordo com a reivindicação 4, CARACTERIZADO pelo fato de que a técnica de segurança é pelo menos um dentre uma identificação, uma senha, indicios bio-métricos, reconhecimento de voz, e um nivel de segurança associado a um usuário.
6. Sistema, de acordo com a reivindicação 2, CARACTERIZADO adicionalmente por compreender um componente API que persiste os dados associados ao sistema de armazenamento de dados dentro de um banco de dados, em que pelo menos um procedimento é usado para aplicar pelo menos uma dentre a restrição e a característica do modelo de dados.
7. Sistema, de acordo com a reivindicação 2, CARACTERIZADO adicionalmente por compreender um componente de procedimento que propicia pelo menos um procedimento para manipular dados de acordo com pelo menos uma dentre a restrição e a característica associada ao sistema de armazenamento de dados.
8. Sistema, de acordo com a reivindicação 2, CARACTERIZADO adicionalmente por compreender um componente de aplicação que incorpora pelo menos uma dentre uma característica e uma restrição do sistema de armazenamento de dados com a manipulação dos dados.
9. Sistema, de acordo com a reivindicação 2, CARACTERIZADO adicionalmente por compreender um componente de bloqueio que propicia uma lógica complexa de bloqueio para assegurar um destes resultados: o êxito automático de uma solicitação individual; e a falha automática de uma solicitação individual.
10. Sistema, de acordo com a reivindicação 2, CARACTERIZADO adicionalmente por compreender um componente de simultaneidade otimista que utiliza uma técnica de simul-taneidade otimista, em que tal técnica pressupõe que a probabilidade de um primeiro processo efetuar uma alteração praticamente ao mesmo tempo em que um segundo processo é baixa e não é empregada até que a alteração seja confirmada 5 no sistema de armazenamento de dados.
11. Sistema, de acordo com a reivindicação 2, CARACTERIZADO adicionalmente por compreender um componente de erro que pode apresentar um código de erro quando a manipulação de dados não aplicar pelo menos uma dentre a carac- teristica e a restrição, em que o código de erro pode corresponder a um texto que descreve um erro e o procedimento não é implementado.
12. Sistema, de acordo com a reivindicação 3, CARACTERIZADO adicionalmente por compreender um componente de estrutura de dados que pode empregar pelo menos uma estrutura de dados para ser implementada pelo componente de API.
13. Sistema, de acordo com a reivindicação 12, CARACTERIZADO pelo fato de que o componente de estrutura de dados utiliza pelo menos um dentre um tipo sinônimo e um ti- po de lista genética.
14. Sistema, de acordo com a reivindicação 12, CARACTERIZADO pelo fato de que o componente de estrutura de dados emprega um tipo de definição de alteração que propicia uma atualização granular, e que um usuário pode passar dados alterados para um método de atualização e ao mesmo tempo manter o tamanho do procedimento proporcional ao tamanho dos dados alterados.
15. Sistema, de acordo com a reivindicação 13,CARACTERIZADO adicionalmente por compreender um componente de definição de API que define pelo menos um dos seguintes procedimentos para ser empregado com o componente de API: 1) um criar item; 2) um criar item complexo; 3) um criar ligação; 4) um criar extensão de item; 5) um atualizar item; 6) um atualizar ligação; 7) um atualizar extensão de item; 8) um excluir item; 9) um excluir ligação; 10) um excluir extensão de item; 11) um criar fragmento de item; 12) um atualizar fragmento de item; 13) um excluir fragmento de item; 14) um obter segurança de item; 15) um definir segurança de item; 16) um mover item; e 17) um substituir item.
16. Sistema, de acordo com a reivindicação 3, CARACTERIZADO pelo fato de que o componente de API recebe uma entrada de um usuário para manipular dados.
17. Meio legivel por computador, CARACTERIZADO por ter nele armazenado os componentes do sistema de acordo com a reivindicação 1.
18. Método implementado por computador que facilita a manipulação de dados, CARACTERIZADO por compreender:utilizar um modelo de dados para representar um sistema de armazenamento de dados que é um sistema de arquivos baseado em banco de dados;determinar pelo menos uma dentre uma característica e uma restrição associada ao sistema de armazenamento de dados;manipular os dados dentro do sistema de armazenamento de dados e ao mesmo tempo aplicar pelo menos uma dentre a característica e a restrição; einvocar uma API para permitir que um usuário manipule os dados.
19. Pacote de dados que se comunica entre um componente de manipulação de dados e uma interface, o pacote de dados sendo CARACTERIZADO por facilitar o método de acordo com a reivindicação 18.
20. Sistema implementado por computador que facilita a manipulação de dados, CARACTERIZADO por compreender:dispositivos para representar um sistema de arma-10 zenamento de dados com pelo menos uma dentre uma característica e uma restrição com um modelo de dados;dispositivos para manipular dados associados ao modelo de dados e aplicar pelo menos uma dentre a restrição e a característica; e 15 dispositivos invocar uma API para manipular dados.
BRPI0609007-9A 2005-04-21 2006-03-09 sistemas e métodos para manipulação de dados em um sistema de armazenamento de dados BRPI0609007A2 (pt)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/111,557 US20060242104A1 (en) 2005-04-21 2005-04-21 Systems and methods for manipulating data in a data storage system
PCT/US2006/008268 WO2006115589A2 (en) 2005-04-21 2006-03-09 Manipulating data in a data storage syste

Publications (1)

Publication Number Publication Date
BRPI0609007A2 true BRPI0609007A2 (pt) 2010-01-12

Family

ID=37188257

Family Applications (1)

Application Number Title Priority Date Filing Date
BRPI0609007-9A BRPI0609007A2 (pt) 2005-04-21 2006-03-09 sistemas e métodos para manipulação de dados em um sistema de armazenamento de dados

Country Status (12)

Country Link
US (1) US20060242104A1 (pt)
EP (1) EP1872280A4 (pt)
JP (1) JP5108749B2 (pt)
KR (1) KR20070121664A (pt)
CN (1) CN101617290B (pt)
AU (1) AU2006240541B2 (pt)
BR (1) BRPI0609007A2 (pt)
CA (1) CA2598592A1 (pt)
MX (1) MX2007011690A (pt)
RU (1) RU2413984C2 (pt)
TW (1) TW200701018A (pt)
WO (1) WO2006115589A2 (pt)

Families Citing this family (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7454435B2 (en) * 2005-05-03 2008-11-18 Microsoft Corporation Systems and methods for granular changes within a data storage system
US8087088B1 (en) * 2006-09-28 2011-12-27 Whitehat Security, Inc. Using fuzzy classification models to perform matching operations in a web application security scanner
US7769789B2 (en) * 2007-05-11 2010-08-03 Oracle International Corporation High performant row-level data manipulation using a data layer interface
US8032548B2 (en) * 2007-07-31 2011-10-04 Oracle International Corporation Efficient network data transfer
US8880564B2 (en) * 2007-10-11 2014-11-04 Microsoft Corporation Generic model editing framework
JP4612699B2 (ja) * 2008-03-11 2011-01-12 株式会社東芝 監視診断装置及び遠隔監視診断システム
US20090241134A1 (en) * 2008-03-24 2009-09-24 Microsoft Corporation Remote storage service api
US8863092B2 (en) * 2011-02-10 2014-10-14 Microsoft Corporation Mechanism for compatibility and preserving framework refactoring
US8538934B2 (en) * 2011-10-28 2013-09-17 Microsoft Corporation Contextual gravitation of datasets and data services
US9098269B2 (en) * 2013-01-04 2015-08-04 Microsoft Technology Licensing, Llc System and method to ensure resource access safety with immutable object types
CN103268321B (zh) * 2013-04-19 2016-04-27 中国建设银行股份有限公司 高并发交易数据处理方法和装置
CN103336789A (zh) * 2013-06-06 2013-10-02 华为技术有限公司 一种数据库系统的锁操作方法及设备
US9430523B2 (en) 2013-09-06 2016-08-30 Sap Se Entity-relationship model extensions using annotations
US9442977B2 (en) 2013-09-06 2016-09-13 Sap Se Database language extended to accommodate entity-relationship models
US9176801B2 (en) 2013-09-06 2015-11-03 Sap Se Advanced data models containing declarative and programmatic constraints
US9639572B2 (en) 2013-09-06 2017-05-02 Sap Se SQL enhancements simplifying database querying
US9619552B2 (en) 2013-09-06 2017-04-11 Sap Se Core data services extensibility for entity-relationship models
US9575819B2 (en) 2013-09-06 2017-02-21 Sap Se Local buffers for event handlers
US9354948B2 (en) 2013-09-06 2016-05-31 Sap Se Data models containing host language embedded constraints
US9361407B2 (en) 2013-09-06 2016-06-07 Sap Se SQL extended with transient fields for calculation expressions in enhanced data models
EP3103065A4 (en) 2014-02-04 2017-07-26 Hewlett-Packard Development Company, L.P. Item identifier assignment
WO2016008087A1 (en) 2014-07-15 2016-01-21 Microsoft Technology Licensing, Llc Managing multiple data models over data storage system
EP3170100A4 (en) * 2014-07-15 2017-12-06 Microsoft Technology Licensing, LLC Data model change management
WO2016008088A1 (en) 2014-07-15 2016-01-21 Microsoft Technology Licensing, Llc Data retrieval across multiple models
CN105518670B (zh) 2014-07-15 2021-09-07 微软技术许可有限责任公司 用于模型查询的数据模型索引
US20160042097A1 (en) * 2014-08-07 2016-02-11 Brigham Young University System and method for concurrent multi-user analysis of design models
US10409835B2 (en) * 2014-11-28 2019-09-10 Microsoft Technology Licensing, Llc Efficient data manipulation support
US10599662B2 (en) * 2015-06-26 2020-03-24 Mcafee, Llc Query engine for remote endpoint information retrieval
CN105159966A (zh) * 2015-08-25 2015-12-16 航天恒星科技有限公司 创建目录实体的方法、装置和目录实体处理系统
US11157517B2 (en) 2016-04-18 2021-10-26 Amazon Technologies, Inc. Versioned hierarchical data structures in a distributed data store
US10671639B1 (en) 2017-03-30 2020-06-02 Amazon Technologies, Inc. Selectively replicating changes to hierarchial data structures
US10423342B1 (en) 2017-03-30 2019-09-24 Amazon Technologies, Inc. Scaling events for hosting hierarchical data structures
US10860550B1 (en) 2017-03-30 2020-12-08 Amazon Technologies, Inc. Versioning schemas for hierarchical data structures
CN110008031B (zh) * 2018-01-05 2022-04-15 北京金山云网络技术有限公司 设备操作方法、集群系统、电子设备及可读取存储介质
CN109240848A (zh) * 2018-07-27 2019-01-18 阿里巴巴集团控股有限公司 一种数据对象标识生成方法及装置
RU2715524C1 (ru) * 2019-08-23 2020-02-28 Федеральное государственное унитарное предприятие "Центральный институт авиационного моторостроения имени П.И. Баранова" Способ автоматизированного формирования электронной информационной модели силовой установки и устройство для его реализации
CN111897818A (zh) * 2020-07-31 2020-11-06 平安普惠企业管理有限公司 数据存储方法、装置、电子设备及存储介质
US20230185940A1 (en) * 2021-12-13 2023-06-15 Docusign, Inc. Batch processing of audit records

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5230073A (en) * 1986-07-21 1993-07-20 Bell Communications Research, Inc. System and method for accessing and updating a continuously broadcasted stored database
US5448726A (en) * 1989-10-23 1995-09-05 International Business Machines Corporation Data base management system with data dictionary cache including a single loadable object descriptor
JP2575543B2 (ja) * 1990-04-04 1997-01-29 インターナショナル・ビジネス・マシーンズ・コーポレイション 同時アクセス管理方法
US5263155A (en) * 1991-02-21 1993-11-16 Texas Instruments Incorporated System for selectively registering and blocking requests initiated by optimistic and pessimistic transactions respectively for shared objects based upon associated locks
US5956715A (en) * 1994-12-13 1999-09-21 Microsoft Corporation Method and system for controlling user access to a resource in a networked computing environment
JPH09297684A (ja) * 1996-03-05 1997-11-18 Fujitsu Ltd オブジェクト・ネットワークによる情報処理装置
JPH09259018A (ja) * 1996-03-25 1997-10-03 Nippon Telegr & Teleph Corp <Ntt> データエントリ装置及びデータエントリ方法
JPH09319629A (ja) * 1996-05-27 1997-12-12 Hitachi Ltd データベース設計支援ツール
CA2272708A1 (en) * 1996-11-27 1998-06-04 Kurt E. Godwin File directory and file navigation system
US6240413B1 (en) * 1997-12-22 2001-05-29 Sun Microsystems, Inc. Fine-grained consistency mechanism for optimistic concurrency control using lock groups
US6327343B1 (en) * 1998-01-16 2001-12-04 International Business Machines Corporation System and methods for automatic call and data transfer processing
US6507662B1 (en) * 1998-09-11 2003-01-14 Quid Technologies Llc Method and system for biometric recognition based on electric and/or magnetic properties
US6370537B1 (en) * 1999-01-14 2002-04-09 Altoweb, Inc. System and method for the manipulation and display of structured data
WO2001035278A1 (en) * 1999-11-10 2001-05-17 Fakhouri Sameh A A decision based system for managing distributed resources and modeling the global optimization problem
US6772154B1 (en) * 2000-11-16 2004-08-03 Sun Microsystems, Inc. Implementation of nested databases using flexible locking mechanisms
DE10058391C2 (de) * 2000-11-24 2003-06-18 Siemens Ag Vorrichtung zur Objektbearbeitung
US6922694B2 (en) * 2001-11-14 2005-07-26 Sun Microsystems, Inc. Lock delegation with space-efficient lock management
US6910039B2 (en) * 2001-11-14 2005-06-21 Sun Microsystems, Inc. Validation technique for bulk lock delegation
US7590643B2 (en) * 2003-08-21 2009-09-15 Microsoft Corporation Systems and methods for extensions and inheritance for units of information manageable by a hardware/software interface system
US7349913B2 (en) * 2003-08-21 2008-03-25 Microsoft Corporation Storage platform for organizing, searching, and sharing data
US7483923B2 (en) * 2003-08-21 2009-01-27 Microsoft Corporation Systems and methods for providing relational and hierarchical synchronization services for units of information manageable by a hardware/software interface system
US20060059127A1 (en) * 2004-09-15 2006-03-16 International Business Machines Corporation Method, system, and storage medium for facilitating application development
US20060095332A1 (en) * 2004-09-30 2006-05-04 Sap Aktiengesellschaft System and method for providing access to an application through a common interface for application extensions
US7516122B2 (en) * 2004-12-02 2009-04-07 Computer Associates Think, Inc. System and method for implementing a management component that exposes attributes

Also Published As

Publication number Publication date
AU2006240541A1 (en) 2006-11-02
TW200701018A (en) 2007-01-01
RU2413984C2 (ru) 2011-03-10
MX2007011690A (es) 2007-11-15
CN101617290B (zh) 2012-09-05
JP5108749B2 (ja) 2012-12-26
KR20070121664A (ko) 2007-12-27
EP1872280A2 (en) 2008-01-02
CA2598592A1 (en) 2006-11-02
RU2007138949A (ru) 2009-04-27
AU2006240541B2 (en) 2011-10-27
JP2008538632A (ja) 2008-10-30
EP1872280A4 (en) 2010-03-17
US20060242104A1 (en) 2006-10-26
CN101617290A (zh) 2009-12-30
WO2006115589A2 (en) 2006-11-02
WO2006115589A3 (en) 2009-06-04

Similar Documents

Publication Publication Date Title
BRPI0609007A2 (pt) sistemas e métodos para manipulação de dados em um sistema de armazenamento de dados
KR102444729B1 (ko) 클라이언트 동기화 서비스를 위한 원격 트리 업데이트
US11550763B2 (en) Versioning schemas for hierarchical data structures
US7467163B1 (en) System and method to manipulate large objects on enterprise server data management system
US11574070B2 (en) Application specific schema extensions for a hierarchical data structure
KR20200062348A (ko) 고속 카피가능 데이터베이스를 효율적으로 구현하기 위한 방법들 및 장치
Tesoriero Getting started with OrientDB
Dewan et al. A survey of cloud storage facilities
US9922046B2 (en) Scalable distributed metadata file-system using key-value stores
US7617250B2 (en) Semantic file system
US11599514B1 (en) Transactional version sets
US11698893B2 (en) System and method for use of lock-less techniques with a multidimensional database
US11048669B2 (en) Replicated state management using journal-based registers
Deineko et al. Features of Database Types
US11100129B1 (en) Providing a consistent view of associations between independently replicated data objects
US11709809B1 (en) Tree-based approach for transactionally consistent version sets
US11657088B1 (en) Accessible index objects for graph data structures
JP2023529649A (ja) 活動状態のファイルシステムを移行するための方法、機器、およびシステム
US11886422B1 (en) Transactional protocol for snapshot isolation without synchronized clocks
Zablocki Couchbase essentials
Silva Data modeling with NoSQL: How, when and why
Leff et al. Eds: An elastic data-service for situational applications
Eisl Conflict Aware Network File System Based on a Relational Database
Albadri et al. VennTags: a file management system based on overlapping sets of tags
Ostrovsky et al. CRUD and Key-Based Operations

Legal Events

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

Free format text: REFERENTE A 9A ANUIDADE.

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

Free format text: REFERENTE AO DESPACHO 8.6 PUBLICADO NA RPI 2307 DE 24/03/2015.