BR112017005646B1 - Funções de partição composta - Google Patents

Funções de partição composta Download PDF

Info

Publication number
BR112017005646B1
BR112017005646B1 BR112017005646-1A BR112017005646A BR112017005646B1 BR 112017005646 B1 BR112017005646 B1 BR 112017005646B1 BR 112017005646 A BR112017005646 A BR 112017005646A BR 112017005646 B1 BR112017005646 B1 BR 112017005646B1
Authority
BR
Brazil
Prior art keywords
data
partition
partitions
partition function
existing
Prior art date
Application number
BR112017005646-1A
Other languages
English (en)
Other versions
BR112017005646B8 (pt
BR112017005646A2 (pt
Inventor
Jacek A. Korycki
David A. Van Brink
Original Assignee
Microsoft Technology Licensing, Llc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Technology Licensing, Llc filed Critical Microsoft Technology Licensing, Llc
Publication of BR112017005646A2 publication Critical patent/BR112017005646A2/pt
Publication of BR112017005646B1 publication Critical patent/BR112017005646B1/pt
Publication of BR112017005646B8 publication Critical patent/BR112017005646B8/pt

Links

Images

Classifications

    • 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/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • G06F16/278Data partitioning, e.g. horizontal or vertical partitioning
    • 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/22Indexing; Data structures therefor; Storage structures
    • G06F16/2282Tablespace storage structures; Management thereof
    • 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/22Indexing; Data structures therefor; Storage structures
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/25Integrating or interfacing systems involving database management systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/953Querying, e.g. by the use of web search engines
    • G06F16/9535Search customisation based on user profiles and personalisation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Document Processing Apparatus (AREA)
  • Management Or Editing Of Information On Record Carriers (AREA)
  • Storage Device Security (AREA)

Abstract

FUNÇÕES DE PARTIÇÃO COMPOSTA. A presente invenção refere-se às técnicas de função de partição composta que são aqui descritas e podem ser usadas para o reparticionamento de um banco de dados sem mover os dados existentes. Em uma ou mais implementações, um banco de dados é particionado em um primeiro arranjo associado a uma primeira função de partição. O banco de dados é particionado para formar um segundo arranjo associado a uma segunda função de partição. Um registro de associação de chave para as entradas de dados nas partições existentes no momento do reparticionamento é criado, que pode ser utilizado para reconhecer os dados correspondentes para o primeiro arranjo. Uma função de partição composta é definida para as operações de banco de dados subsequentes, que são configuradas para aplicar a primeira função de partição aos dados que têm as chaves encontradas no registro de associação de chave e aplicar a segunda função de partição a outros dados que têm as chaves que não são encontradas no registro de associação de chave.

Description

ANTECEDENTES
[001] Os usuários estão cada vez mais confiando em recursos baseados em nuvem para atividades on-line, tais como a realização de negócios e comunicações pessoais, reuniões on-line, compartilhamento de tela, chats de vídeo, mensagens e de outra forma usando vários recursos disponíveis de prestadores de serviços. Vários dados de aplicativos e de usuários associados às interações do usuário podem ser mantidos em bancos de dados associados aos recursos. Em geral, um banco de dados pode incluir muitas partições individuais diferentes ou nós de banco de dados aos quais os dados são alocados. As partições podem ser distribuídas por vários dispositivos físicos e servidores diferentes. As entradas de dados podem ser associadas a identificadores, tais como valores chave que indicam qual das partições corresponde aos dados. Os identificadores podem ser utilizados para alocar e fazer referência aos dados para executar as operações, como adicionar, acessar e modificar as entradas de dados correspondentes.
[002] Com o tempo, a quantidade de dados armazenados em um banco de dados cresce e, em algum momento, a capacidade de armazenamento pode ser expandida para acomodar o volume de dados e solicitações. Uma abordagem de expansão de banco de dados tradicional envolve parar os serviços para e/ou acessar o banco de dados, adicionando novo armazenamento/partições ao banco de dados e, em seguida, realocar todos os dados pré-existentes em todo o novo arranjo de partições. Nessa abordagem, os dados pré-existentes são movidos para novos locais e esse processo de movimentação pode ser bastante demorado para os bancos de dados em grande escala. Como tal, as técnicas tradicionais de expansão de banco de dados podem ser bastante perturbadoras para os serviços fornecidos aos usuários e levam uma quantidade considerável de tempo para processar e reinserir os dados em novos locais no arranjo atualizado de partições.
SUMÁRIO
[003] As técnicas de função de partição composta são aqui descritas, podendo ser utilizadas para reparticionar um banco de dados sem mover os dados existentes. Em uma ou mais implementações, um banco de dados é particionado em um primeiro arranjo associado a uma primeira função de partição. O banco de dados é reparticionado para formar um segundo arranjo associado a uma segunda função de partição. Um registro de associação de chave é criado para as entradas de dados nas partições existentes no momento do reparticionamento, que pode ser usado para reconhecer os dados que correspondem ao primeiro arranjo. Em uma abordagem, o registro de associação de chave é configurado como um filtro Bloom que representa, de forma compacta, as chaves ou outros identificadores associados ao primeiro arranjo de partições. Uma função de partição composta que incorpora a primeira função de partição e a segunda função de partição é definida e usada para as operações de banco de dados subsequentes no segundo arranjo. A função de partição composta é configurada para aplicar a primeira função de partição aos dados com chaves encontradas no registro de associação de chave e para aplicar a segunda função de partição a outros dados com chaves que não são encontradas no registro de associação de chave. O reparticionamento é executado de modo que as entradas de dados existentes no momento do reparticionamento mantêm suas respectivas localizações em partições do primeiro arranjo.
[004] Este Sumário é fornecido para introduzir uma seleção de conceitos em uma forma simplificada que são descritos mais adiante na Descrição Detalhada. Esse Sumário não se destina a identificar as principais características ou características essenciais do objeto reivindicado, nem se destina a ser utilizado como um auxílio para determinar o âmbito do objeto reivindicado.
BREVE DESCRIÇÃO DOS DESENHOS
[005] A descrição detalhada é descrita com referência às figuras anexas. Nas figuras, o(s) dígito(s) mais à esquerda de um número de referência identifica (m) a figura na qual o número de referência aparece pela primeira vez. O uso dos mesmos números de referência em diferentes exemplos na descrição e nas figuras pode indicar itens semelhantes ou idênticos. As entidades representadas nas figuras podem ser indicativas de uma ou mais entidades e, assim, a referência pode ser feita de forma intercambiável para formas no singular ou no plural das entidades na discussão a seguir.
[006] A figura 1 é uma ilustração de um exemplo de ambiente operacional que é operável para utilizar as técnicas para funções de partição composta;
[007] A figura 2 ilustra um arranjo de exemplo de partições para um sistema de banco de dados de acordo com uma ou mais implementações;
[008] A figura 3 representa outro arranjo de exemplo de partições para um sistema de banco de dados que representa uma expansão do sistema da figura 2 de acordo com uma ou mais implementações;
[009] A figura 4 representa outro arranjo de exemplo de partições para um sistema de banco de dados de acordo com uma ou mais implementações;
[0010] A figura 5 representa uma representação de atribuição de partições a fendas de acordo com uma ou mais implementações;
[0011] A figura 6 é um diagrama de fluxo que representa um procedimento de exemplo no qual uma função de partição composta é definida de acordo com uma ou mais implementações;
[0012] A figura 7 é um diagrama de fluxo que representa um procedimento de exemplo no qual uma função de partição composta é utilizada para encaminhar solicitações para um arranjo de partições de acordo com uma ou mais implementações;
[0013] A figura 8 ilustra um sistema de exemplo que tem dispositivos e componentes que podem ser utilizados para implementar os aspectos das técnicas descritas aqui.
DESCRIÇÃO DETALHADA VISÃO GERAL
[0014] Ao longo do tempo, a quantidade de dados armazenados em um banco de dados pode crescer e, em algum momento, a capacidade de armazenamento pode ser expandida para acomodar o volume de dados e solicitações. Uma abordagem de expansão de banco de dados tradicional envolve fechar o banco de dados para criar novas partições e distribuir todos os dados pré-existentes através do novo arranjo de partições, o que é demorado e prejudicial para os usuários.
[0015] As técnicas de função de partição composta são aqui descritas, podendo ser utilizadas para reparticionar um banco de dados sem mover os dados existentes. Em uma ou mais implementações, um banco de dados é particionado em um primeiro arranjo associado a uma primeira função de partição. O banco de dados é reparticionado para formar um segundo arranjo associado a uma segunda função de partição. Um registro de associação de chave é criado para as entradas de dados nas partições existentes no momento do reparticionamento, que pode ser usado para reconhecer os dados que correspondem ao primeiro arranjo. Em uma abordagem, o registro de associação de chave é configurado como um filtro Bloom que representa, de forma compacta, as chaves ou outros identificadores associados ao primeiro arranjo de partições. Uma função de partição composta que incorpora a primeira função de partição e a segunda função de partição é definida e usada para as operações de banco de dados subsequentes na segundo arranjo. A função de partição composta é configurada para aplicar a primeira função de partição aos dados com chaves encontradas no registro de associação de chave e para aplicar a segunda função de partição a outros dados com chaves que não são encontradas no registro de associação de chave. O reparticionamento é executado de modo que as entradas de dados existentes no momento do reparticionamento mantêm suas respectivas localizações em partições do primeiro arranjo.
[0016] Com o uso de técnicas de função de partição composta como aqui descritas, é possível manter os dados existentes na sua respectiva localização dentro de um arranjo de partições durante o reparticionamento de um banco de dados. Como tal, grandes quantidades de dados não precisam ser movidas, o que reduz o tempo associado ao reparticionamento. Além disso, o uso de um filtro Bloom ou outra representação comprimida de associação de chave permite avaliações rápidas para distinguir entre os dados associados a arranjos de partição diferentes (por exemplo, períodos de partição) e selecionar as funções de partição corretas para o gerenciamento de solicitações de dados. Além disso, o registro de associação de chave é configurado para ter um tamanho relativamente pequeno, o que torna o registro gerenciável e a distribuição do registro para a utilização por diferentes servidores, partições e componentes do sistema de banco de dados viável.
[0017] Na discussão a seguir, um ambiente de exemplo é primeiro, que pode utilizar as técnicas aqui descritas. Os exemplos de detalhes e procedimentos são, em seguida, descritos, que podem ser implementados no ambiente de exemplo, bem como em outros ambientes. Consequentemente, os detalhes do exemplo e procedimentos não estão limitados ao ambiente de exemplo e o ambiente de exemplo não está limitado aos detalhes de exemplo e procedimentos. Por último, discute-se um sistema e componentes de exemplo do sistema, que podem ser utilizados para implementar os aspectos das técnicas aqui descritas.
AMBIENTE DE EXEMPLO
[0018] A figura 1 é uma ilustração de um ambiente 100 em uma implementação de exemplo que é operável para utilizar as técnicas aqui descritas. O ambiente ilustrado 100 inclui um dispositivo cliente 102, outro dispositivo cliente 104 e um provedor de serviço 106 que são acoplados de forma comunicativa através de uma rede 108. O dispositivo cliente 102, outro dispositivo cliente 104 e o provedor de serviço 106 podem ser implementados por um ou mais dispositivos de computação e também podem ser representativos de uma ou mais entidades.
[0019] Um dispositivo de computação pode ser configurado de várias maneiras. Por exemplo, um dispositivo de computação pode ser configurado como um computador que é capaz de se comunicar através da rede 108, tal como um computador desktop, uma estação móvel, um dispositivo de entretenimento, um descodificador acoplado de forma comunicativa a um dispositivo de exibição, um telefone sem fio, um console de jogos, e assim por diante. Assim, o dispositivo de computação pode variar a partir de dispositivos de recurso completos com recursos substanciais de memória e processador (por exemplo, computadores pessoais, consoles de jogos) até um dispositivo de baixo recurso com memória e/ou recursos de processamento limitados (por exemplo, decodificadores tradicionais, consoles de jogos portáteis). Adicionalmente, embora um dispositivo de computação único seja mostrado em alguns casos, o dispositivo de computação pode ser representativo de uma pluralidade de dispositivos diferentes, como múltiplos servidores do provedor de serviço 106 utilizados por uma empresa para executar as operações e assim por diante. Os exemplos adicionais de sistemas de computação e dispositivos adequados para implementar as técnicas aqui descritas são descritos abaixo em relação à figura 8.
[0020] Embora a rede 108 seja ilustrada como a Internet, a rede pode assumir uma grande variedade de configurações. Por exemplo, a rede 108 pode incluir uma rede de área ampliada (WAN), uma rede de área local (LAN), uma rede sem fio, uma rede telefônica pública, uma intranet, uma rede ponto a ponto, e assim por diante. Além disso, embora uma única rede 108 seja mostrada, a rede 108 pode ser configurada para incluir múltiplas redes.
[0021] O dispositivo cliente 102 é ainda ilustrado como incluindo um sistema operacional 110. O sistema operacional 110 é configurado para abstrair a funcionalidade subjacente do dispositivo subjacente para aplicativos 112 que são executáveis no dispositivo cliente 102. Por exemplo, o sistema operacional 110 pode abstrair a funcionalidade de processamento, de memória, de rede e/ou de exibição de modo que os aplicativos 112 podem ser gravados sem saber "como" essa funcionalidade subjacente é implementada. Os aplicativos 112, por exemplo, podem fornecer os dados ao sistema operacional 110 para serem processados e apresentados por um dispositivo de exibição como ilustrado sem compreender como esse processamento será executado. Uma variedade de aplicativos 112 tipicamente associados aos dispositivos de cliente é observada como incluindo, mas não se limitando a, um conjunto de produtividade que integra os múltiplos módulos de produtividade de escritório, um navegador da web, jogos, um reprodutor de multimídia, um processador de texto, um programa de planilha eletrônica, um gestor de foto, e assim por diante.
[0022] O dispositivo cliente 102 e outro dispositivo cliente são, cada um, ilustrados como incluindo um módulo de comunicação 114. Os módulos de comunicação são representativos da funcionalidade para permitir vários tipos de comunicações através da rede 108. Os exemplos dos módulos de comunicação incluem um aplicativo de comunicação de voz (por exemplo, VoIP), um aplicativo de comunicação de vídeo, um aplicativo de mensagens, um aplicativo de compartilhamento de conteúdo, um navegador para acessar o conteúdo da web e as combinações dos mesmos. O módulo de comunicação 114, por exemplo, permite que diferentes modalidades de comunicação sejam combinadas para proporcionar diversos cenários de comunicação. Isso inclui, mas não se limita a implementar a funcionalidade integrada para indicações de presença de usuários, comunicações de vídeo, colaboração on-line e experiências de reunião, mensagens instantâneas (IM) e chamadas de voz. Além disso, o módulo de comunicação pode ser operável para acessar recursos on-line (por exemplo, conteúdo e serviços), navegar em páginas e sites da web, estabelecer conexões de comunicação com provedores de serviço e outros clientes e permitir várias outras interações através de interfaces de usuário 116 que podem ser emitidas através de módulos de comunicação. Em pelo menos algumas implementações, o módulo de comunicação 114 representa um aplicativo que é implementado e instalado de modo local em um dispositivo cliente. Adicional ou alternativamente, o módulo de comunicação 114 pode ser implementado, total ou parcialmente, como um aplicativo remoto que é acessado e executada através de um navegador da web (por exemplo, um aplicativo da web), como um serviço remoto a partir de um provedor, com o uso de técnicas o ponto a ponto, e assim por diante.
[0023] O provedor de serviço 106 inclui a funcionalidade operável para gerenciar vários recursos 118 que podem ser disponibilizados através da rede 108, tal como através de um gestor de recurso 120 como representado na figura 1. O gestor de recurso 120 representa várias funcionalidades para gerenciar os recursos 118 e os dados relacionados aos recursos como discutido aqui. O provedor de serviço 106 pode proporcionar vários recursos 118 por meio de páginas da web ou outras interfaces de usuário 116 que são comunicadas através da rede para emissão por um ou mais clientes através de um navegador da web ou outro aplicativo cliente. O provedor de serviço 106 é configurado para gerenciar o acesso aos recursos 118, o desempenho dos recursos e a configuração das interfaces de usuário 116 para fornecer os recursos 122 e assim por diante. O provedor de serviço 106 pode representar um ou mais dispositivos de servidor utilizados para fornecer os vários recursos 118.
[0024] Além disso, o gestor de recurso 120 pode ser configurado para implementar as funções de partição 122 para gerenciar os bancos de dados 124 associados aos recursos 118 que podem ser particionados e reparticionados em uma pluralidade de partições 126 (também referidas como fragmentos). Em geral, uma função de partição é configurada definir como os dados são alocados em um arranjo de partições e também pode ser usada para rotear as solicitações de dados para as partições adequadas. Pelo menos algumas das funções de partição 122 podem ser funções de partição composta que são configuradas e operam da maneira descrita acima e abaixo. Os detalhes adicionais que - referem-se à formação e ao uso de funções de partição composta podem ser encontrados em relação às figuras a seguir.
[0025] Em pelo menos algumas modalidades, os clientes podem acessar os recursos 118 fornecidos por um provedor de serviço 106 através das contas de cliente/usuário às quais os clientes são autenticados. Por exemplo, para acessar os recursos 118, um dispositivo cliente pode fornecer um nome de usuário e uma senha que são autenticados por um serviço de autenticação. Quando a autenticação for bem-sucedida (por exemplo, o cliente "é quem ele diz ser"), o serviço de autenticação pode passar um código (token) (ou outro identificador/segredo de autenticação adequado) para permitir o acesso aos recursos correspondentes. Uma autenticação única pode corresponder a um ou mais recursos, de modo que a autenticação em uma única conta por um "única conexão" pode proporcionar acesso a recursos individuais, recursos de vários provedores de serviço 106 e/ou a um conjunto completo de recursos disponíveis a partir de um provedor de serviço 106.
[0026] Em geral, os recursos 118 que são acessíveis por um provedor de serviço 106 podem incluir qualquer combinação adequada de serviços e/ou conteúdos tipicamente disponibilizados através de uma rede por um ou mais provedores. Alguns exemplos de serviços incluem, mas não estão limitados a, um serviço de pesquisa, um serviço de email, um serviço de mensagens instantâneas, um conjunto de produtividade on-line, um serviço de colaboração (por exemplo, um serviço que integra a funcionalidade para uma ou mais chamadas VoIP, reunião e conferência on-line, compartilhamento de tela, um serviço de comunicações e colaboração unificadas (UC&C), mensagens instantâneas, chats de vídeo, comunicação de voz e assim por diante) e um serviço de autenticação para controlar o acesso dos clientes aos recursos 118. O conteúdo pode incluir várias combinações de texto, fluxos de multimídia, documentos, arquivos de aplicativos, fotos, animações de arquivos de áudio/vídeo, imagens, páginas da web, aplicativos da web, aplicativos de dispositivos, conteúdo para exibição por um navegador ou outro aplicativo cliente e similares.
[0027] Tendo considerado o ambiente de exemplo anterior, considera-se agora uma discussão de alguns detalhes de exemplo e procedimentos para as técnicas de função de partição composta de acordo com uma ou mais implementações.
DETALHES DA FUNÇÃO DE PARTIÇÃO COMPOSTA
[0028] Essa seção discute os detalhes das técnicas procedimentos de exemplo de função de partição composta, que podem ser utilizados para reparticionar um banco de dados sem mover os dados existentes de acordo com uma ou mais implementações. Em geral, o particionamento é uma técnica que pode ser usada para dimensionar os bancos de dados. O particionamento pode envolver a divisão de entradas de registros/dados em subconjuntos disjuntos chamados partições 126 (também referidos como fragmentos). O particionamento pode basear-se em identificadores adequados para os registros, um exemplo dos quais são as chaves primárias dos registros. As partições podem ser fisicamente distribuídas em vários servidores e/ou dispositivos de armazenamento diferentes (por exemplo, nós de banco de dados). Em uma abordagem, cada partição pode ser atribuída a um servidor de banco de dados separado, de modo que existe um mapeamento de um para um entre as partições e os nós de banco de dados. Além disso, ou em alternativa, uma ou mais partições podem ser logicamente particionadas entre servidores/dispositivos de armazenamento, de tal modo que o espaço alocado para uma determinada partição pode estar localizado em dois ou mais nós de banco de dados individuais.
[0029] Nesse contexto, um determinado arranjo de partições tem uma quantidade finita de capacidade de armazenamento que é consumida à medida que o banco de dados é preenchido com os dados. Em algum momento, um limite de capacidade pode ser alcançado, no qual a capacidade de armazenamento pode precisar ser expandida para permitir a continuação do funcionamento do banco de dados. A expansão do banco de dados pode envolver a adição de uma ou mais partições para um arranjo existente de partições para criar outro arranjo de partições com mais capacidade de armazenamento. A expansão do banco de dados é também aqui referida como repartição. A repartição pode ocorrer para um sistema equilibrado, no qual cada nó de banco de dados está se tornando igualmente saturado, quer em relação ao volume de dados armazenados ou taxa de solicitações de acesso aos dados. Nesse caso, o armazenamento adicional (por exemplo, outro servidor/dispositivo de armazenamento) pode ser adicionado com uma nova função de partição configurada para aproveitar o armazenamento adicional. A repartição também pode ocorrer para um sistema equilibrado de forma desigual, no qual alguns nós de banco de dados estão perto dos limites de armazenamento, enquanto outros nós estão levemente carregados e têm espaço de sobra. Nessa situação os nós de banco de dados podem permanecer os mesmos, mas uma nova função de partição pode ser definida que é configurada para favorecer os nós menos utilizados no lugar os nós mais carregados.
[0030] De acordo com as técnicas aqui descritas, a repartição pode ser realizada de modo que as entradas de dados localizadas em partições existentes no momento da repartição mantêm as suas respectivas localizações. Em outras palavras, os dados que já estão no banco de dados no momento do reparticionamento não são movidos como resultado do reparticionamento, o que resulta em tempo de processamento e utilização de recurso reduzidos. Isso pode ser alcançado com o uso de uma função de partição composta como aqui discutido, que é configurada para aplicar de maneira seletiva múltiplas funções de partição subjacentes que correspondem aos arranjos sucessivos das partições ou "períodos de partição", para o tratamento de solicitações de dados. Para isso, a função de partição composta pode incluir ou fazer uso de registros de associação de chave para reconhecer as períodos de partição às quais cada solicitação de dados corresponde e aplicar uma função de partição adequada para o período de partição que é reconhecida para lidar com a solicitação.
[0031] Considere agora os exemplos das figuras 2 a 5, que ilustram os detalhes e conceitos adicionais com relação às funções de partição composta e registros de associação de chave, bem como reparticionamento com o uso de funções de partição composta. Em particular, a figura 2 representa, em geral, em 200, um arranjo de exemplo de partições para um sistema de banco de dados de acordo com uma ou mais implementações. No exemplo ilustrado, é representado um servidor 202 que pode estar associado a um provedor de serviço 106 como discutido em relação à figura 1. O servidor 202 pode ser configurado para proporcionar a funcionalidade associada a um aplicativo da web 204 e/ou outros recursos 118. O servidor 202 também inclui um gestor de recurso 120 que pode operar, como aqui discutido, para gerenciar as interações com o aplicativo da web 204 e armazenamento de dados associados ao aplicativo da web em um banco de dados correspondente. Os dados podem ser armazenados através de dispositivos de armazenamento nos quais as partições 126 para o banco de dados são definidas e que podem ser implementadas através de um ou mais servidores, que pode ou não incluir o servidor 202. Em uma implementação, uma ou mais das partições 126 para um banco de dados podem ser fornecidas através do servidor 202.
[0032] O gestor de recurso 120 no exemplo ilustrado é configurado para implementar uma função de partição p1 206(1) para o arranjo das partições representadas na figura 2, que incluem duas partições de exemplo, ou seja, a partição 208(0) e a partição 208(1). Os dados são representados em um formato de valor de chave, onde a chave é uma chave primária de um registro de dados e o valor representa o conteúdo do registro de dados. As solicitações de dados podem ser feitas para acessar os dados e executar as operações sobre os dados que incluem, mas não limitados a adicionar registros, exclusão de registros, modificação de dados, operações de leitura, operações de gravação e assim por diante. Para acessar os dados para executar as operações, o aplicativo solicitante usa a chave (ou outro identificador comparável) para localizar o nó de banco de dados para uma partição que corresponde à chave indicada. Uma vez feito isso, os dados podem ser acessados a partir do nó e/ou partição selecionados de acordo com protocolos, formatos e/ou tecnologia de banco de dados específicos para o sistema de banco de dados, que podem ser diferentes para sistemas diferentes.
[0033] A função de partição p1 206(1) e as funções de partição 122 permitem, em geral, uma seleção determinística de partições com base nas chaves correspondentes. Em outras palavras, a função seleciona de maneira consistente a mesma partição para uma determinada chave para que os dados possam ser localizados de forma confiável. Várias configurações das funções de partição 122 são observadas. Em uma abordagem, as funções de partição podem ser configuradas como funções hash que, quando aplicadas a valores de chave para as solicitações de dados, retornam os dados que identificam as partições do banco de dados que correspondem aos valores de chave.
[0034] A título de exemplo e não de limitação, uma função de partição p pode ter a forma p(k) = hash(k) mod N, em que k é a chave, hash é uma função hashing e N é um número de partições para um determinado arranjo. Nesse exemplo, a função de partição retorna um número de partição contando de 0 a N-1. A função hash funciona para atribuir um grande valor inteiro a uma coluna (ou matriz de bytes) que representa a chave k ou outros dados de identificação. As funções hash utilizadas nessa forma podem ser configuradas para proporcionar uma distribuição uniforme de valores. Em alternativa, uma função de hash pode ser selecionada/configurada para alcançar uma distribuição de valores que podem ser usados para distorcer a colocação de dados em uma partição específica (por exemplo, partições subutilizadas). A função módulo mod N converte o grande valor inteiro em um intervalo de 0 a N-1, que pode ser usado como identificadores para as partições individuais no arranjo das partições. Consequentemente, a função de partição pode ser concebida para distribuir os dados entre os nós de banco de dados/partições de acordo com um esquema de distribuição refletido pela função de partição.
[0035] No exemplo da figura 2, a função de partição p1 206(1) é configurada para mapear os registros para as chaves k1 e k2 para a primeira partição, que é a partição 208(0) nesse exemplo. Em outras palavras, a função de partição p1 206(1) avaliada para as chaves k1 e k2 retorna um identificador para a partição 208(0), que é o valor zero nesse caso (por exemplo, (p1(k1) = p1(k2) = 0). Em conformidade, os registros de dados/valores que correspondem às chaves k1 e k2 podem ser armazenadas e acessadas a partir de servidores/armazenamento associados à partição 208(0), como representado na figura 2. A função de partição p1 206(1) também é configurada para mapear os registros para as chaves k3 e k4 para a segunda partição, partição 208(1). Aqui, a função avaliada para as chaves k3 e k4 retorna um identificador para a partição 208(1), que é o valor um nesse caso (por exemplo, (p1(k3) = p1(k4) = 1). Por conseguinte, os registros/valores de dados que correspondem às chaves k3 e k4 podem ser armazenadas e acessadas a partir de servidores/armazenamento associados à partição 208(1), como representado na figura 2.
[0036] Agora, se for alcançado um limite de capacidade para o sistema de exemplo ilustrado na figura 2, a capacidade adicional pode ser adicionada incluindo servidores/armazenamento adicionais e reparticionamento do banco de dados através do novo arranjo de partições. Considere, por exemplo, a expansão de N para N' > N, em que, por exemplo, N' = N + 1, ou N'= 2*N. Um novo arranjo das partições é regido por uma nova função de partição criada para acomodar a capacidade/partições adicionais. Novos dados podem, em seguida, ser alocados ao sistema expandido com o uso de uma nova função de partição, que pode ter a forma p'(k) = hash(k) mod N', como discutido acima. A localização dos dados existentes é regida pela função de partição anterior (por exemplo, a função de partição p1 206(1)) e, portanto, a nova função de partição pode não localizar de forma confiável os dados existentes, uma vez que, em geral, as duas funções não estão alinhadas) # p'(k)). Uma solução tradicional consiste em interromper o serviço de banco de dados por um período de tempo, reiterando sobre registros existentes e executando uma operação de remoção e reintrodução de acordo com a nova função de partição para permitir o uso subsequente da nova função de partição. Conforme mencionado anteriormente, isso pode ser bastante perturbador e demorado para os bancos de dados com um grande volume de dados e solicitações.
[0037] Contudo, as técnicas de função de divisão composta aqui descritas podem ser utilizadas para reparticionar um banco de dados sem mover os dados existentes. Em geral, a função de partição composta usa os registros de associação de chave para diferentes arranjos de partição para selecionar a função de partição correspondente a ser usada para uma determinada operação de banco de dados. Nesse caso, a função de partição pela qual dados específicos foram alocados inicialmente para o banco de dados continua a ser usada para os dados específicos, mesmo após o reparticionamento. Os registros de associação de chave permitem a seleção da função correta a ser aplicada e a função de partição composta é projetada para usar uma combinação de duas ou mais funções de partição individuais, cada uma que corresponde a um período de partição diferente.
[0038] Para ilustrar, considere a figura 3 que representa, em geral, em 300, outro arranjo de exemplo de partições para um sistema de banco de dados que representa uma expansão do sistema da figura 2 de acordo com uma ou mais implementações. Nesse exemplo, uma partição adicional 208(2) é representada como sendo incluída no arranjo das partições da figura 3. Adicionalmente, o gestor de recurso 120 é ilustrado como implementando uma função de partição composta 302 que rege a alocação de dados para o arranjo das partições da figura 3. A função de partição composta 302 é configurada para combinar a função anterior para o arranjo da figura 2, a função de partição p1 206(1), com uma nova função, a função de partição p2 206(2), estabelecida para o rearranjo de partições mostradas na figura 3. A função de partição composta 302 é também configurada para incluir ou fazer uso de um registro de chave b1 304 (1) que pode ser utilizado para reconhecer a correspondência de valores de chave com a função de partição individual incorporada na função de partição composta 302. Em uma abordagem, o registro de chave 304 (1) fornece um mecanismo para identificar quais valores de chave estão associados à função anterior (função de partição p1 206(1)) e, portanto, selecionar esta função para o tratamento de solicitações de dados correspondentes. A função de partição p2 206 (2) pode ser utilizada para outras solicitações de dados que não correspondem a valores de chave contidos no registro de chave b1 304 (1).
[0039] Nesse exemplo, entradas/valores de data associados às chaves k1, k3, k3 e k4 estão pré-existindo no sistema e são distribuídos através de duas partições como mostrado na figura 2. O reparticionamento pode ocorrer para adicionar uma partição adicional como mostrado na figura 3. Nas implementações, o sistema de banco de dados pode ser interrompido para criar uma partição adicional e instalar a função de partição composta. Como parte do reparticionamento, as chaves existentes no sistema (por exemplo, k1, k2, k3 e k4) são processadas para criar uma associação de chaves de registros no momento do reparticionamento, que é representada pelo registro de chave b1 304(1). Observa-se que esse processamento pode demorar de maneira significativa menos tempo, em relação ao tempo que demoraria, para mover os registros existentes de acordo com a nova função de partição.
[0040] A função de partição composta 302 pode ser definida da seguinte maneira. A função de partição p1 206(1) é a função de partição original para o arranjo de duas partições e pode ter a forma p1(k) = hash(k) mod 2. A função de partição p2 206(2) é a nova função de partição estabelecida para o arranjo expandido de três partições e pode ter a forma (p2k) = hash(k) mod 3. Agora, a função de partição composta 302 representada como p'(k) pode ser expressa como: p'(k) = p1(k) para qualquer k para o qual b1 (k) = verdadeiro, ou p’(k) = p2(k) caso contrário.
[0041] Em outras palavras, uma verificação é realizada para ver se um valor de chave está incluído no registro de chave b1 304(1). Se for encontrado o valor da chave, p1 é utilizado para processar uma solicitação/operação correspondente. Caso contrário, se o valor da chave não for encontrado, p2 é utilizado para processar uma solicitação/operação correspondente. Com o uso da função de partição composta 302, os registros existentes podem permanecer em seus locais originais, uma vez que eles ainda estão localizados com o uso de p1. Novos registros podem preencher os dados através do arranjo de partição, incluindo a nova partição com o uso de p2. Consequentemente, todo o conjunto de nós de banco de dados é utilizado adiante.
[0042] Os registros de associação de chave, como o registro de chave b1 304(1) da figura 3, podem ser configurados de qualquer maneira adequada para distinguir entre as chaves associadas a diferentes arranjos de partição e/ou períodos de partição. As listas brutas de chaves que correspondem a cada arranjo/período podem ser utilizadas em uma ou mais implementações. No entanto, o tamanho da lista bruta de chaves pode dificultar a distribuição das listas para diferentes servidores e nós de banco de dados e pode ocupar uma quantidade considerável de memória. Consequentemente, uma representação compacta de chaves em um formato compactado pode ser utilizada em adição ou em alternativa à utilização de listas brutas. Uma variedade de diferentes estruturas de dados compactados é observada, que pode ser configurada para identificar as chaves que correspondem às entradas de dados existentes em um banco de dados no momento do reparticionamento. Os exemplos de estruturas de dados compactados incluem, mas não estão limitados a um mapa de bits, conjuntos, matrizes, e filtros, para nomear alguns exemplos.
[0043] Outro exemplo de uma estrutura de dados compactada que pode adequada para os registros de associação de chave em uma ou mais implementações é um filtro Bloom. Um filtro Bloom é uma estrutura de dados que é projetado para lembrar de uma associação de conjunto para um conjunto de valores de uma forma eficiente quanto ao espaço. Em particular, dado um conjunto de chaves S = {k1, ... kN}, um filtro Bloom pode ser criados para "lembrar" a existência de cada chave no conjunto S. Uma vez que é eficiente quanto ao espaço, o filtro Bloom não se limita a lembrar a lista de todas as chaves. Em vez disso, o filtro Bloom mantém um vetor de bits, em que para cada chave k a partir do conjunto S, um bit é fixo no índice hash(k) mod M, em que hash é uma função hash (que pode ou não ser diferente das funções hash associadas às funções de partição), e M é o comprimento do vetor de bits. A fim de determinar a associação de conjunto de qualquer chave k, uma pesquisa é realizada para o bit na posição hash(k) mod M. Se o bit for definido, a chave é um membro do conjunto, caso contrário, não é. O vetor é muito eficiente quanto ao espaço e, assim, torna-se possível armazenar o filtro Bloom na memória de nós do banco de dados, mesmo para grandes números de chaves, tipicamente encontrados em bancos de dados que suportam grandes aplicativos.
[0044] Observa-se que o filtro Bloom é uma estrutura de dados probabilística que produz alguns erros de falsos positivos. Por exemplo, uma chave K2 que não é um membro do conjunto S pode interferir para o mesmo valor que a chave k1, que é um membro de S. Esse erro é conhecido como uma colisão da função hash. A taxa de erro é pequena, mas é ainda possível. Assim, para um pequeno número de chaves que não são membros de S, o filtro Bloom pode classificá-las como membros definidos de maneira incorreta. A probabilidade de erros pode ser minimizada através da extensão do comprimento do vetor de bits e/ou com a utilização de várias funções hash e resolução da associação com base no exame das várias configurações de bits indicadas por essas funções hash. Assim, um filtro Bloom pode ser configurado para controlar de maneira seletiva o erro ao especificar o comprimento do vetor de bits e ai escolher uma ou mais funções hash a serem usadas para o filtro Bloom. Na prática, uma troca pode ser feita para definir uma taxa de erro aceitável submetida às limitações no espaço de armazenamento consumido pelo filtro Bloom e latência/custo para o cálculo das funções hash. A taxa de erro é aceitável uma vez que se o filtro Bloom reconhecer incorretamente uma chave para os novos dados como sendo um membro de um conjunto, ele fará isso de maneira consistente. Assim, os dados podem ser localizados de forma confiável, mesmo se forem posicionados com o uso de uma função de partição anterior. Além disso, o filtro Bloom não retornar os falsos negativos para as chaves que são membros do conjunto (por exemplo, chaves de registros pré-existentes) e, portanto, os dados antigos podem permanecer e ser localizados de maneira confiável em locais originais. Em uma abordagem de uma configuração, o filtro de Bloom pode incluir definir uma tolerância configurável que determina a frequência na qual os falsos erros positivos são produzidos. Por sua vez, um grau de compacidade do filtro Bloom depende da tolerância configurável. Por exemplo, um maior grau de compacidade pode ser alcançado, definindo a tolerância configurável para produzir ou "tolerar" mais falsos erros positivos. Na prática, um grau muito elevado de compactação pode ser obtido desde que as entradas de dados reconhecidas incorretamente ainda possam ser localizadas de forma confiável com o uso de uma função de um período anterior. Em outras palavras, o efeito dos erros de filtro Bloom pode ser desprezível, de modo que uma frequência de erros relativamente grande pode ser tolerável e, portanto, as configurações muito compactas de filtros Bloom podem ser utilizadas.
[0045] Considerando agora um exemplo representado pela figura 3, em que quatro novos registros são adicionados ao sistema após o reparticionamento. Para os fins desse exemplo, presume-se que o registro de chave b1 304(1) é configurado como um filtro Bloom, conforme agora descrito. As chaves k1, k3, K3 e K4 são pré-existentes no sistema e serão reconhecidas como sendo membros do filtro Bloom. Por conseguinte, as solicitações associadas a essas chaves são regidas pela função de partição p1 206(1). As chaves k5 e k6 são reveladas como não membros do filtro Bloom e podem ser atribuídas pela função de partição p2 206(2) para a partição 208(1). A chave k7 também não é encontrada no filtro Bloom, e atribuída pela função de partição p2 206(2) para a nova partição de banco de dados 3. A chave k8 é um caso interessante, uma vez que é uma nova chave que surgiu após a repartição, ainda devido ao erro de filtro Bloom como discutido acima, é erroneamente classificada como um membro e, portanto, designada pela função de partição p1 206(1) para a partição 208(1). Como - observa-se, porém, isso não causa um problema com a integridade dos dados ou capacidade de localizar os dados que correspondem à chave k8 uma vez que, o filtro Bloom irá, de maneira consistente, reconhecer incorretamente a chave k8 e, portanto, encaminhar de forma confiável as solicitações para os dados.
[0046] Observa-se ainda que o processo de reparticionamento aqui descrito pode ser realizado várias vezes, por sucessivos períodos de partição. Os conceitos discutidos acima em relação às figuras 1 a 3 podem ser aplicados a um caso generalizado que envolve várias operações de reparticionamento. Por exemplo, a função p1 anterior, no exemplo precedente, pode ser uma função de partição composta diferente que corresponde a um reparticionamento anterior. Em outras palavras, a função de partição composta constituída por um arranjo de corrente de partições pode incorporar uma ou mais funções de partição compostas para os arranjos anteriores.
[0047] Para ilustrar ainda, considera-se a figura 4, que descreve, em geral, em 400, outro exemplo de arranjo de partições para um sistema de banco de dados de acordo com uma ou mais implementações. Em particular, a figura 4 ilustra um caso generalizado de várias partições de banco de dados (1 a N) e várias operações de repartição, cada uma das quais causa o movimento dos dados existentes para novos locais no arranjo de partições. Nesse exemplo, a vida útil do sistema de banco de dados pode ter uma série de sucessivos períodos de partição (1 a M). Cada período de partição está associada a uma respectiva função de partição 122 que define como alocar e localizar os dados para as partições existentes para esse período de partição. Além disso, o reparticionamento representa o fim de um período de partição anterior e o início de um novo período de partição. Os filtros Bloom ou outros registros de associação de chave existentes no final de cada período podem ser estabelecidos como parte do reparticionamento. Assim, o período diferente de partição pode estar associado a diferentes registros de associação de chave que podem ser utilizados para reconhecer as funções de partição de correção 122 para aplicar à solicitação de dados.
[0048] O período de petição atual M é regido por uma função de partição composta 402, que é uma combinação de várias funções de partição com base hash p1...pM que têm referências 206(1)... 206(M) para cada período de partição. Além disso, os registros de chave b1...bm-1 que têm referências 304(1)... 304(M-1) são descritos como sendo estabelecidos para cada um das períodos de petição antes do período atual. A função de partição composta 402 pode ser configurada para verificar se um valor de chave é encontrado em qualquer um dos registros de chave e, em seguida, aplicar uma função de partição correspondente, quando a associação em um dos registros de chave é determinada. Em uma abordagem, a verificação começa ao varificar o registro de chave para o período mais antigo e, em seguida, progride através de cada período do mais antigo para o mais novo, até que uma correspondência seja encontrada. Se correspondência não for encontrada em qualquer um dos registros principais, a função de partição pM (206(M)) para o período atual é selecionada e aplicada. Nesse contexto, a função de partição composta 402 pode ser expressa da seguinte forma:
[0049] se k for encontrado no filtro b1, em seguida, definir p(k) = p1(k)
[0050] senão, se k for encontrado no filtro p2, em seguida, definir p(k) = p2(k)
[0051] ...continuar com as avaliações para períodos interveniente
[0052] senão, se k for encontrado no filtro bM-1, em seguida, definir p(k) = pM-1(k)
[0053] senão, definir p(k) = pM(k)
[0054] Uma representação da função de partição composta 402 no pseudocódigo é como a seguir:
[0055] Repetir para i a partir de 1 até M
[0056] se b1(k) = verdadeiro
[0057] retornar p1(k)
[0058] retornar pM(k)
[0059] De acordo com a discussão anterior, uma função de partição composta configurada para aplicar de maneira seletiva as funções de partição a dois ou mais períodos de partição pode ser definida para governar as operações de banco de dados e as solicitações para um período atual. Em uma ou mais implementações, a função de partição composta é configurada para proporcionar uma distribuição substancialmente igual de novos registros de dados através das partições no arranjo corrente de partições. Dependendo da distribuição de dados que existe no momento da repartição, no entanto, a distribuição de novos dados pode ou não criar um equilíbrio de carga aceitável, uma vez que uma partição recém-adicionada pode ter muito mais espaço de armazenamento disponível do que as partições existentes, nas quais os dados antigos já estão armazenados.
[0060] Por exemplo, considere um sistema com partições N expandidas para N' com o uso de funções de partição de hash(k) mod N e hax(k) mod N'. Para o propósito de exemplo, presume-se que N = 2 e N'= 3, como nos exemplos das figuras 2 e 3, respectivamente. As funções de partição correspondente p1(k) = hash(k) mod 2 e p2(k) = hash(k) mod 3 irão colocar alguns dados em uma nova partição, mas as partições existentes provavelmente estarão mais carregadas devido às condições de carga no momento do reparticionamento. A alocação pode, portanto, resultar em um sistema desequilibrado.
[0061] Por conseguinte, uma característica de reequilíbrio pode também ser fornecida em conjunto com as técnicas de função de partição composta aqui discutidas. Em uma abordagem, o recurso de reequilíbrio pode ser fornecido como uma opção que pode ser alternado entre ligado ou desligado, de maneira seletiva, à alocação de curva de novos dados para partições novas e/ou subutilizadas. Além disso, ou em alternativa, o gestor de recursos 120 pode ser configurado para implementar automaticamente o reequilíbrio com base em fatores como a capacidade disponível de partições, volume de solicitações, taxa de aumento de dados, e assim por diante. Em geral, o recurso de reequilíbrio pode envolver a utilização de uma função hash modificada, configurada para incorporar um coeficiente de curva para causar a alocação de novos dados para uma ou mais partições designadas com maior frequência do que outras partições. Por exemplo, um fator de curva pode causar uma distribuição desigual de dados para alocar mais dados para as novas partições adicionadas a um arranjo reconfigurado, do que para as partições antigas existentes antes de uma operação de reparticionamento. Várias técnicas para distorcer a alocação em direção a uma determinada partição são observadas. Por exemplo, um fator de curva pode operar para especificar um intervalo configurável em que as solicitações são atribuídos a uma partição selecionada, mesmo se a função hash indicar uma partição diferente. Assim, o sistema pode ser configurado para atribuir automaticamente as solicitações para a partição selecionada no intervalo (por exemplo, a cada terceira ou quarta solicitação). Em outra abordagem, o fator de curva pode ser alterado de maneira dinâmica com base nas cargas relativas das partições, de modo que mais solicitações são alocadas para a partição selecionada inicialmente, mas ao longo do tempo, a função gradualmente pode voltar a fazer distribuições uniformes. Por exemplo, o fator de curva pode variar de acordo com uma função de diminuição que faz com que o efeito do fator de curva diminua ao longo do tempo à medida que a partição selecionada é preenchida com os dados.
[0062] Em outra abordagem, o fator de curva é implementado por meio de uma função de partição modificada que usa um conceito de atribuição para direcionar a alocação para as novas partições em um arranjo. Aqui, a função de partição modificada define várias fendas que estão em maior número do que o número de partições. Então, as fendas são logicamente atribuídas às partições, de modo que uma nova partição ou partição selecionada pode ser atribuída a mais do que uma das fendas. A função hash é configurada para retornar os dados que identificam as fendas e para alocar os dados para as partições correspondentes. Uma vez que os valores retornados pela função hash abrangem o número de fendas, os dados serão atribuídos mais frequentemente para uma partição que é atribuída a mais de uma das fendas em relação às partições atribuídas a apenas uma fenda.
[0063] Para ilustrar, considera-se figura 5, que mostra, em geral, em 500, uma representação de atribuição de partições às fendas, de acordo com uma ou mais implementações. Aqui, as três partições 208(0), 208(1), 208(2) do exemplo na figura 3 são mostradas. Uma série de fendas 502 é definida e atribuída às partições. Nesse exemplo, quatro fendas 502 são atribuídas a três partições 208(0), 208(1), 208(2) com cada uma da partição 208(0) e da partição 208(1) (por exemplo, as partições antigas) sendo atribuída a uma fenda e a partição 208(2) (por exemplo, a nova partição) sendo atribuída a duas fendas.
[0064] Para uma função de partição que tem a forma geral p(k) = hash(k) mod N, não como acima, a modificação para implementar a inclinação envolve a substituição do valor N pelo valor S, em que S é o número de fendas. Além disso, os dados indicativos de atribuições de fenda podem ser mantidos para mapear a identificação de fenda devolvida para as partições reais. Em seguida, o particionamento é calculado em duas etapas: (1) calcular a fenda = hash (k) mod S, em que S é o número de fendas (2) mapear a fenda para a partição com o uso dos dados indicativos de atribuição de fenda
[0065] À medida que os novos dados chegam, mais chaves são mapeadas para a nova partição e, consequentemente, a nova partição é preenchida em um ritmo mais rápido do que as partições antigas e assume mais da carga. Por fim, o sistema pode aproximar-se do equilíbrio entre as partições, em tal momento, continuar a inclinação no sentido da partição mais recente pode causar um desequilíbrio para retornar, dessa vez com a partição mais nova oferecendo muito mais carga. Para abordar essa questão, outra operação de reparticionamento, como descrito, aqui pode ser realizada, que usa as mesmas partições, mas provoca uma mudança de função hash inclinada de volta para a função "padrão" que não usa fendas ou fatores de inclinação. Aqui, o reparticionamento adicional é realizado para mudar e atualizar a função de partição, sem acrescentar mais capacidade. Após esse reparticionamento adicional, o sistema vai ser equilibrado e expandido.
PROCEDIMENTOS DE EXEMPLO
[0066] A discussão a seguir descreve as técnicas que podem ser implementadas com o uso dos sistemas e dispositivos anteriormente descritos. Os aspectos de cada um dos procedimentos podem ser implementados em hardware, firmware ou software, ou uma combinação dos mesmos. Os procedimentos são apresentados como um conjunto de blocos que especificam as operações executadas por um ou mais dispositivos e não estão necessariamente limitados às ordens mostradas para realizar as operações pelos respectivos blocos. Em partes da discussão a seguir, pode ser feita referência ao ambiente 100 da figura 1 e aos exemplos das figuras 2 a 5. A título de exemplo, os aspectos dos procedimentos podem ser realizados por um dispositivo de computação configurado de maneira adequada, como por um ou mais dispositivos servidores associados a um provedor de serviço 106 configurado para fornecer recursos 118 e/ou um gestor de recursos 120.
[0067] A funcionalidade, as características e os conceitos descritos em relação aos exemplos das figuras 1 a 5 podem ser utilizados no contexto dos processos aqui descritos. Além disso, a funcionalidade, as características e os conceitos descritos em relação a diferentes procedimentos abaixo podem ser trocados entre os diferentes procedimentos e não estão limitados a aplicação no contexto de um procedimento individual. Além disso, os blocos associados a diferentes procedimentos representativos e às figuras correspondentes aqui descritas podem ser aplicados em conjunto e/ou combinados de maneiras diferentes. Por conseguinte, a funcionalidade, as características e os conceitos individuais descritos em relação a diferentes ambientes, dispositivos, componentes e procedimentos de exemplo ao longo desse documento podem ser utilizados em quaisquer combinações adequadas e não são limitados a combinações específicas representadas pelos exemplos enumerados.
[0068] A figura 6 é um diagrama de fluxo que descreve um procedimento de exemplo 600, em que uma função de partição composta é definida de acordo com uma ou mais implementações. Um banco de dados é particionado com uma primeira função de partição (bloco 602). Por exemplo, um gestor de recursos 120 pode operar para gerenciar um banco de dados 124 associado aos recursos 118, como discutido anteriormente. O banco de dados 124 pode ser particionado em várias partições 126, que são definidas e/ou geridas por meio de uma função de partição 122 implementada pelo gestor de recursos 120, ou de outra forma.
[0069] Subsequentemente, o banco de dados é reparticionado (bloco 604). O reparticionamento pode ser iniciado automaticamente ou sob a direção de um usuário. O reparticionamento pode ser realizado quando a capacidade de armazenamento de um dispositivo existente de partição atinge um nível limite de utilização. Nesse caso, o reparticionamento pode envolver a adição de mais capacidade de armazenamento. Além disso, ou alternativamente, o reparticionamento pode ser realizado por outras razões, como para reequilibrar as partições, como aqui discutido, para alterar a função de partição para atingir um objetivo de alocação específico, para desfazer uma função hash inclinada para voltar a uma repartição equilibrada, e assim por diante.
[0070] Como parte do reparticionamento, um registro de associação de chave é criado para as entradas de dados localizadas em partições existentes em um momento de reparticionamento (bloco 606) e uma ou mais novas partições associadas a uma segunda função de partição são adicionadas (608). Várias técnicas podem ser usadas para implementar um registro de associação de chave, tal como discutido previamente aqui. Por exemplo, um filtro de Bloom ou outra estrutura de dados compactada podem ser utilizados para registrar os valores de chave ou outros identificadores adequados associados às entradas de dados localizadas em partições existentes no momento do reparticionamento. Além disso, novas partições podem ser adicionadas para aumentar a capacidade de armazenamento e criar um novo arranjo de partições. Tal como aqui discutido, o novo arranjo das partições está associado a uma segunda função de partição que representa as novas partições e é configurado para distribuir novos dados através de ambas as partições novas e antigas.
[0071] Além disso, uma função de partição composta é definida para as operações de banco de dados subsequentes que são configuradas para aplicar a primeira função de partição aos dados que têm os valores de chave encontrados no registro de associação de chave ou para não aplicar a segunda função de partição para os dados que não têm os valores de chave encontrados no registro de associação de chave (bloco 610). Em seguida, a função de partição composta é aplicada para gerenciar as solicitações de dados associadas ao banco de dados (bloco 612). Em geral, a função de partição composta é configurada para utilizar um registro ou registros de associação de chave para mapear os principais valores/identificadores para os dados para as funções de partição correspondentes associadas a diferentes períodos de partição. As solicitações de dados podem, em seguida, ser tratados de acordo com as funções de partição correspondentes retornadas pela aplicação da função de partição composta. O uso da abordagem da função de partição composta aqui discutida permite que o reparticionamento seja realizado de tal forma que as entradas de dados localizadas em partições existentes no momento do reparticionamento mantenham seus respectivos locais. Em outras palavras, os dados antigos não são movidos. Vários exemplos e detalhes relativos às funções de partição composta que podem ser utilizados em conjunto com o processo 600 foram discutidos anteriormente em relação às figuras 1 a 5.
[0072] A figura 7 é um diagrama de fluxo que descreve um procedimento de exemplo 700, em que uma função de partição composta é utilizada para encaminhar as solicitações para um arranjo de partições de acordo com uma ou mais implementações. Um registro de identificadores é estabelecido para os dados que correspondem a uma primeira função de partição associada a um primeiro arranjo de uma ou mais partições para um banco de dados (bloco 702). O registro de identificadores pode ser configurado como um filtro Bloom como descrito aqui ou outra estrutura de dados adequada que pode ser utilizada para indicar a associação de dados com relação a um arranjo de uma ou mais partições (por exemplo, um período de partição). Os identificadores podem ser configurados como valores chave, tal como aqui discutido, embora outros identificadores também sejam observados, tais como cadeias de caracteres de identificação, um valor hash para o conteúdo de dados, e assim por diante. O primeiro arranjo de uma ou mais partições pode corresponder a uma configuração inicial de um banco de dados (por exemplo, um período de partição inicial). Além disso, ou em alternativa, o primeiro arranjo de uma ou mais partições pode resultar do reparticionamento de um arranjo para um período anterior, em cujo caso a primeira função de partição pode ser configurada como uma função composta.
[0073] A disposição das partições para o banco de dados é reconfigurada para adicionar pelo menos uma partição adicional para aumentar a capacidade de armazenamento em um arranjo reconfigurado (bloco 704). Aqui, o reparticionamento pode ocorrer como discutido anteriormente para adicionar capacidade adicional ao sistema. O reparticionamento resulta em um arranjo reconfigurado que pode ter mais partições que o primeiro arranjo. De forma adequada, uma função de partição composta é gerada que combina a primeira função de partição associada a um primeiro arranjo e uma segunda função de partição associada ao arranjo reconfigurado, a função de partição composta é configurada para usar o registro de identificadores para determinar se aplica a primeira função de partição ou a segunda função de partição para o encaminhamento de solicitações de dados entre as partições para o banco de dados (bloco 706). Em seguida, as solicitações de dados são encaminhadas com o uso da função de partição composta (bloco 708). Como descrito anteriormente, uma função de partição composta pode ser gerada, que é responsável por dois ou mais períodos de partição sucessivos associados a diferentes arranjos de partições. As disposições diferentes podem ser associadas a diferentes funções de partição individuais e/ou a diferentes números de partições (embora o mesmo número de partições possa ser utilizado para dois ou mais períodos em alguns cenários, por exemplo, de reequilíbrio). Diferentes períodos/arranjos também podem ser associados aos respectivos registros de identificadores que podem ser utilizados para reconhecer a associação de dados/solicitações dentro de períodos específicos. As funções de partição adequadas são, em seguida, mapeadas para os dados/solicitações e usadas para encaminhas os dados/solicitação às partições correspondentes. Uma função de partição composta é configurada para combinar duas ou mais funções de partição associadas aos sucessivos períodos de partição com cada período de partição que corresponde a um arranjo específico de partições para o banco de dados. Vários exemplos e detalhes adicionais com relação às funções de partição composta que podem ser utilizadas em conjunto com o processo 700 foram discutidos anteriormente em relação às figuras 1 a 6.
[0074] Considerando alguns procedimentos de exemplo, considere- se agora uma discussão de um sistema e dispositivos de exemplo que podem ser utilizados para implementar os aspectos das técnicas aqui descritas em uma ou mais implementações.
SISTEMA E DISPOSITIVO DE EXEMPLO
[0075] A figura 8 ilustra um sistema de exemplo, em geral, em 800, que inclui um exemplo de dispositivo 802 que é representativo de um ou mais sistemas e/ou dispositivos de computação que podem implementar as várias técnicas de computação aqui descritas. O dispositivo de computação 802 pode ser, por exemplo, um servidor de um provedor de serviço, um dispositivo associado ao cliente (por exemplo, um dispositivo cliente), um sistema integrado, e/ou qualquer outro dispositivo de computação ou sistema de computação adequado.
[0076] O dispositivo de computação 802 de exemplo, tal como ilustrado, inclui um sistema de processamento 804, um ou mais meios legíveis por computador 806, e uma ou mais interfaces I/O 808, que estão acopladas de forma comunicativa uma à outra. Embora não mostrado, o dispositivo de computação 802 pode ainda incluir um barramento de sistema ou outro sistema de transferência de comando e dados que acopla os vários componentes um ao outro. Um barramento de sistema pode incluir qualquer uma ou uma combinação de diferentes estruturas de rede, como um barramento de memória ou controlador de memória, um barramento periférico, um barramento serial universal, e/ou um processador ou barramento local que utiliza qualquer uma de uma variedade de arquiteturas de barramento. Uma variedade de outros exemplos é também observada, tais como as linhas de controle e de dados.
[0077] O sistema de processamento 804 é representativo da funcionalidade de executar uma ou mais operações com o uso de hardware. Por conseguinte, o sistema de processamento 804 é ilustrado como incluindo os elementos de hardware de 810 que podem ser configurados como processadores, blocos funcionais, e assim por diante. Isso pode incluir a aplicação em hardware como um ASIC ou outro dispositivo lógico formado com o uso de um ou mais semicondutores. Os elementos de hardware 810 não são limitados pelos materiais a partir dos quais são formados ou os mecanismos de tratamento utilizados ali. Por exemplo, os transformadores podem ser constituídos por semicondutor(s) e/ou (por exemplo, transistores, circuitos eletrônicos integrados (ICs)). Em tal contexto, as instruções do processador executável podem ser instruções executáveis de maneira eletrônica.
[0078] A mídia legível por computador 806 é ilustrada como incluindo memória/armazenamento 812. A memória/armazenamento/812 representa a capacidade de memória/armazenamento associada a um ou mais meios legíveis por computador. A memória/armazenamento 812 poderá incluir os meios voláteis (como a memória de acesso aleatório (RAM)) e/ou os meios de comunicação social não voláteis (como a memória somente leitura (ROM), a memória flash, os discos ópticos, dos iscos magnéticos, e assim por diante). A memória/armazenamento 812 poderá incluir os meios fixo (por exemplo, RAM, ROM, um disco rígido fixo, e assim por diante), bem como a mídia removível (por exemplo, a memória flash, um disco rígido removível, um disco óptico, e assim por diante). O meio legível por computador 806 pode ser configurado de uma variedade de outras maneiras, como descrito abaixo.
[0079] A(s) interface(s) de entrada e saída 808 são representativas de funcionalidade para permitir que um usuário insira os comandos e as informações ao dispositivo de computação 802, e também para permitir que a informação seja apresentada ao usuário e/ou outros componentes ou dispositivos que utilizam vários dispositivos de entrada/saída. Os exemplos de dispositivos de entrada incluem um teclado, um dispositivo de controle do cursor (por exemplo, um mouse), um microfone, um scanner, a funcionalidade de toque (por exemplo, sensores capacitivos ou outros que são configurados para detectar o toque físico), uma câmara (por exemplo, que pode utilizar comprimentos de onda visíveis ou não visíveis, tais como as frequências de infravermelhos para detectar o movimento que não envolve o toque como gestos), e assim por diante. Os exemplos de dispositivos de saída incluem um dispositivo de exibição (por exemplo, um monitor ou projetor), altofalantes, uma impressora, uma placa de rede, o dispositivo de resposta tátil, e assim por diante. Portanto, o dispositivo de computação 802 pode ser configurado em uma variedade de modos, como descrito abaixo, para ter suporte para a interação do usuário.
[0080] Várias técnicas podem ser aqui descritas no contexto geral de elementos de hardware, software ou módulos de programa. Em geral, tais módulos incluem rotinas, programas, objetos, componentes, elementos, estruturas de dados, e assim por diante, que executam tarefas específicas ou implementam os tipos específicos de dados abstratos. Os termos "módulo" "funcionalidade" e "componente", como aqui utilizado, representam, em geral, software, firmware, hardware, ou uma combinação dos mesmos. As características das técnicas aqui descritas são independentes da plataforma, o que significa que as técnicas podem ser aplicadas em uma variedade de plataformas de computação comerciais, que têm uma variedade de processadores.
[0081] Uma implementação dos módulos e técnicas descritas pode ser armazenada ou transmitida através de alguma forma de mídia legível por computador. Os meios legíveis por computador podem incluir uma variedade de meios que podem ser acessados pelo dispositivo de computação 802. A título de exemplo, e não limitativo, os meios legíveis por computador podem incluir os "meios de armazenamento legíveis por computador" e os "meios de comunicação".
[0082] Os "meios de armazenamento legíveis por computador" referem-se aos meios e/ou dispositivos que permitem o armazenamento de informações em contraste com a simples transmissão de sinal, ondas portadoras, ou sinais per se. Assim, a mídia de armazenamento legível por computador não inclui o sinal que tem os meios de comunicação ou sinais por si só. A mídia de armazenamento legível por computador inclui hardware, como meios voláteis e não voláteis, removíveis e não removíveis, e/ou dispositivos de armazenamento implementados em um método ou tecnologia adequada para o armazenamento de informação, tais como instruções legíveis por computador, estruturas de dados, módulos de programas, elementos lógicos/circuitos, ou outros dados. Os exemplos de meios de armazenamento legível por computador podem incluir, mas não estão limitados a, RAM, ROM, EEPROM, memória flash ou outra tecnologia de memória, CD-ROM, discos digitais versáteis (DVD) ou outro armazenamento óptico, discos rígidos, fitas magnéticas, fita magnética, disco magnético ou outros dispositivos de armazenamento magnético, ou outro dispositivo de armazenamento, meios tangíveis, ou artigo de fabricação adequado para armazenar a informação desejada e que pode ser acessada por um computador.
[0083] "Os meios de comunicação" podem se referir a um meio de suporte de sinal que é configurado para transmitir as instruções para o hardware do dispositivo de computação 802, tal como através de uma rede. Os meios de comunicação podem incorporar, tipicamente, as instruções legíveis por computador, estruturas de dados, módulos de programas ou outros dados em um sinal de dados modulado, tal como ondas portadoras, sinais de dados, ou outro mecanismo de transporte. Os meios de sinal também incluem qualquer mídia de liberação de informações. O termo "sinal de dados modulado" significa um sinal que tem uma ou mais das suas características estabelecidas ou alteradas de modo a codificar a informação no sinal. A título de exemplo, e não como limitação, os meios de comunicação incluem os meios com fios, como uma rede com fio ou conexão direta com fio, e s meios de comunicação sem fio, como meios acústicos, RF, infravermelho e outros meios de comunicação sem fio.
[0084] Tal como descrito anteriormente, os elementos de hardware 810 e os meios legíveis por computador 806 são representativos de instruções, módulos, dispositivo de lógica programável e/ou dispositivo de lógica fixo implementado em uma forma de hardware que pode ser utilizado em algumas modalidades para implementar pelo menos alguns dos aspectos das técnicas aqui descritas. Os elementos de hardware podem incluir componentes de um circuito integrado ou o sistema integrado, um circuito integrado de aplicação específica (ASIC), um arranjo de porta programável em campo (FPGA), um CPLD (CPLD), e outras implementações em silício ou outros dispositivos de hardware. Neste contexto, um elemento de hardware pode operar como um dispositivo de processamento que realiza as tarefas do programa definidas por instruções, módulos, e/ou lógica incorporada pelo elemento de hardware, bem como um dispositivo de hardware utilizado para armazenar as instruções para execução, por exemplo, os meios de armazenamento legíveis por computador descrito anteriormente.
[0085] As combinações do supracitado pode também ser utilizado para implementar várias técnicas e os módulos aqui descritos. Assim, software, hardware ou módulos de programa, incluindo aplicativos 112, módulo de comunicação 114, gestor de recursos 120 e outros módulos do programa podem ser implementados como uma ou mais instruções e/ou lógica concretizadas em alguma forma de meios de armazenamento legíveis por computador e/ou por um ou mais elementos de hardware 810. O dispositivo de computação 802 pode ser configurado para implementar as instruções e/ou funções particulares correspondentes ao software e/ou módulos de hardware. Por conseguinte, a implementação de módulos, um módulo que é executável pelo dispositivo de computação 802 uma vez que o software pode ser conseguido, pelo menos parcialmente em hardware, por exemplo, através do uso de meios de armazenamento legíveis por computador e/ou elementos de hardware 810 do sistema de processamento. As instruções e/ou funções podem ser executáveis/operáveis por um ou mais artigos de fabricação (por exemplo, um ou mais dispositivos de computação 802 e/ou sistemas de processamento 804) para implementar as técnicas, módulos e exemplos aqui descritos.
[0086] Tal como adicionalmente ilustrado na figura 8, o sistema exemplo 800 permite ambientes ubíquos para uma experiência de usuário contínua ao executar aplicativos em um computador pessoal (PC), um dispositivo de televisão, e/ou um dispositivo móvel. Os serviços e aplicativos são executados de forma substancial semelhante em todos os três ambientes para uma experiência de usuário comum para realizar a transição de um dispositivo para o próximo ao utilizar um aplicativo, um jogo de vídeo, assistir a um vídeo, e assim por diante.
[0087] No exemplo de sistema 800, vários dispositivos são interligados por meio de um dispositivo de computação central. O dispositivo de computação central pode ser local para os vários dispositivos ou pode ser localizado remotamente a partir dos vários dispositivos. Em uma modalidade, o dispositivo de computação central pode ser uma nuvem de um ou mais computadores de servidor que estão conectados aos vários dispositivos através de uma rede, Internet, ou outro link de comunicação de dados.
[0088] Em uma modalidade, essa arquitetura interligação permite que a funcionalidade seja liberada em vários dispositivos para proporcionar uma experiência comum e transparente para o usuário dos vários dispositivos. Cada um dos múltiplos dispositivos pode ter diferentes requisitos físicos e capacidades, e o dispositivo central de computação utiliza uma plataforma para permitir a realização de uma experiência com o dispositivo que é adaptado para o dispositivo e, ainda, comum a todos os dispositivos. Em uma modalidade, uma classe de dispositivos alvo é criada e as experiências foram adaptadas para a classe genérica de dispositivos. Uma classe de dispositivos pode ser definida por características físicas, pelos tipos de utilização, ou por outras características comuns dos dispositivos.
[0089] Em várias implementações, o dispositivo de computação 802 pode assumir uma variedade de configurações diferentes, tais como para utilizações em computador 814, móvel 816, e televisão 818. Cada uma dessas configurações inclui os dispositivos que podem ter, em geral, diferentes construções e recursos, e assim o dispositivo de computação 802 pode ser configurado de acordo com uma ou mais das diferentes classes de dispositivos. Por exemplo, o dispositivo de computação 802 pode ser implementado como um classe de computador 814 de um dispositivo que inclui um computador pessoal, computador desktop, um computador de múltiplas telas, o computador portátil, netebook, e assim por diante.
[0090] O dispositivo de computação 802 pode também ser implementado como a classe móvel 816 do dispositivo que inclui os dispositivos móveis, como um telefone móvel, leitor de música portátil, dispositivo de jogos portátil, um computador tablet, um computador de múltiplas telas, e assim por diante. O dispositivo de computação 802 pode também ser implementado como a classe de televisão 818 de dispositivo que inclui os dispositivos com ou conectados, em geral, a maiores telas em ambientes de visualização casuais. Estes dispositivos incluem televisores, decodificadores, consoles de jogos, e assim por diante.
[0091] As técnicas aqui descritas podem ser suportadas por essas várias configurações do dispositivo de computação 802 e não estão limitadas aos exemplos específicos das técnicas aqui descritas. Isso é ilustrado por meio da inclusão do gestor de recursos 120 no dispositivo de computação 802. A funcionalidade do gestor de recurso 120 e outros módulos também pode ser implementada no todo ou em parte através do uso de um sistema distribuído, como mais uma "nuvem" 820 através uma plataforma 822, tal como descrito abaixo.
[0092] A nuvem 820 inclui e/ou é representante de uma plataforma 822 por recursos 824. A plataforma 822 simplifica a funcionalidade subjacente de hardware (por exemplo, servidores) e recursos de software da nuvem 820. Os recursos 824 podem incluir aplicativos e/ou dados que podem ser utilizados enquanto o processamento de computador está sendo executado em servidores que são remotos a partir do dispositivo de computação 802. Os recursos 824 também podem incluir serviços fornecidos através da Internet e/ou através de uma rede de assinantes, como uma rede celular ou Wi-Fi.
[0093] A plataforma 822 pode simplificar os recursos e funções para conectar o dispositivo de computação 802 a outros dispositivos de computação. A plataforma 822 pode também servir para simplificar o dimensionamento de recursos para proporcionar um nível correspondente de escala para a busca encontrada para os meios 824 que são implementados através da plataforma 822. Por conseguinte, em uma modalidade do dispositivo interligado, a execução da funcionalidade descrita aqui pode ser distribuída em todo sistema 800. Por exemplo, a funcionalidade pode ser implementada em parte no dispositivo de computação 802, bem como através da plataforma 822 que simplifica a funcionalidade da nuvem 820.
IMPLEMENTAÇÕES DE EXEMPLO
[0094] As implementações de exemplo de funções de partição composta aqui descritas incluem, mas não estão limitadas a, uma ou quaisquer combinações de um ou mais dos exemplos que se seguem:
[0095] Um método implementado por um dispositivo de computação que compreende: um banco de dados de particionamento com uma primeira função de partição; e o reparticionamento do banco de dados ao: criar um registro de associação de chave para as entradas de dados localizadas em partições existentes em um momento de reparticionamento; adicionar uma ou mais novas partições associadas a uma segunda função de partição; definir uma função de partição composta para as operações de banco de dados subsequentes configuradas para: aplicar a primeira função de partição aos dados que têm valores de chave encontrados no registro de associação de chave; ou aplicar a segunda função de partição para os dados que não têm valores de chave encontrados no registro de associação de chave.
[0096] Um método tal como descrito acima, em que o reparticionamento é realizado de tal modo que as entradas de dados localizadas em partições existentes no momento do reparticionamento mantêm as respectivas posições.
[0097] Um método tal como descrito acima, em que o registro de associação de chave é configurado para gravar os valores de chave associados às entradas de dados localizadas nas partições existentes no momento da reparticionamento.
[0098] Um método tal como descrito acima, em que o registro de associação de chave compreende uma estrutura de dados compactada configurada para identificar as chaves que correspondem às entradas de dados existentes no banco de dados no momento da reparticionamento.
[0099] Um método tal como descrito acima, em que o registro de associação de chave compreende um filtro Bloom.
[00100] Um método tal como descrito acima, em que a função de partição composta é configurada para combinar duas ou mais funções de partição associadas a sucessivos períodos de partição, cada período de partição que corresponde a um arranjo particular de partições para o banco de dados.
[00101] Um método tal como descrito acima, em que a primeira função de partição e a segunda função de partição são configuradas como funções hash que, quando aplicadas a valores de chave para as solicitações de dados, retornam os dados que identificam as partições do banco de dados que corresponde aos valores de chave.
[00102] Um método tal como descrito acima, em que a primeira função de partição compreende uma função composta anterior estabelecida para um reparticionamento anterior do banco de dados para aumentar a capacidade de armazenamento adicional, a função de partição composta que é definida e configurada para aplicar a função composta anterior para os dados que têm valores de chave encontrados no registro de associação de chave e a segunda função de partição para outros dados.
[00103] Um método tal como descrito acima, em que a função de partição combinada é configurada para a alocação para inclinar os dados no sentido de colocação de novas entradas de dados sobre as novas partições para equilibrar a distribuição de dados em partições do banco de dados.
[00104] Um método como descrito acima, em que a função de partição combinada reconhece incorretamente pelo menos alguns valores-chave para as novas entradas de dados como sendo encontrados no registro de associação de chave, de forma que as entradas de dados associadas as valores de chave reconhecidos incorretamente são alocadas para e localizadas de maneira consistente dentro as partições existentes no momento do reparticionamento.
[00105] Um dispositivo de computação que compreende: um sistema de processamento; e um ou mais módulos que, quando executados pelo sistema de processamento, realizam as operações de reparticionamento de um banco de dados para aumentar a capacidade de armazenamento, incluindo: a criação de um registro de associação de chave para as entradas de dados localizadas em partições do banco de dados existentes no momento da repartição, as partições do banco de dados existentes em um momento de reparticionamento associada a uma primeira função de partição; adicionar uma nova partição associada a uma segunda função de partição; e definir uma função de partição composta para o tratamento de solicitações de banco de dados subsequentes configuradas para: aplicar a primeira função de partição às solicitações de dados, incluindo os valores de chave encontrados no registro de associação de chave; ou aplicar a segunda função de partição às solicitações de dados, incluindo os valores de chave que não são encontrados no registro de associação de chave, de tal forma que as entradas de dados localizadas em partições existentes no momento da reparticionamento mantêm os seus respectivos locais nas partições existentes no momento da reparticionamento.
[00106] O dispositivo de computação acima, em que o registro de associação de chave é configurado como um filtro Bloom que tem valores de bit definidos para as chaves associadas às entradas de dados existentes no momento do reparticionamento para indicar a associação para as chaves através do filtro de Bloom.
[00107] O dispositivo de computação dos acima, em que: o filtro Bloom produz falsos erros positivos de acordo com uma tolerância configurável que faz com que pelo menos uma porção de entrada de dados criada depois do particionamento seja pouco reconhecida e tratada com o uso da primeira função de partição, os falsos erros positivos sendo consistentes, de tal forma que as entradas de dados reconhecidas incorretamente são seguramente localizadas com o uso da primeira função de partição; e um grau de compacidade do filtro Bloom depende da tolerância configurável.
[00108] A computação acima, em que a função de partição composta é configurada para combinar a segunda função de partição com uma pluralidade de funções de partição individuais associadas a várias operações anteriores para repartir o banco de dados.
[00109] O dispositivo de computação acima, em que a segunda função de partição é configurada para alocar os dados pelas partições do banco de dados existente no momento da reparticionamento e na nova partição.
[00110] Um método implementado por um dispositivo de computação, que compreende: criar um registro de identificadores de dados que correspondem a uma primeira função de partição associada a um primeiro arranjo de uma ou mais partições para um banco de dados; reconfigurar o arranjo de partições do banco de dados para adicionar pelo menos uma partição adicional para aumentar a capacidade de armazenamento em um arranjo reconfigurado; gerar uma função de partição composta que combina a primeira função de partição associada ao primeiro arranjo e uma segunda função de partição associada ao arranjo reconfigurado, a função de partição composta configurada para usar o registro de identificadores para determinar se a aplica a primeira função de partição ou a segunda função de partição para o encaminhamento de solicitações de dados entre as partições para o banco de dados; e encaminhar as solicitações de dados com o uso da função de partição composta.
[00111] Um método como descrito acima, em que roteamento de solicitações de dados com o uso da função de partição composta compreende para cada solicitação de dados: usar o registro de identificadores para determinar se um identificador associado à solicitação de dados está incluído no registro de identificadores; e quando o identificador estiver incluído, encaminhar a solicitação de dados com o uso da primeira função de partição; ou quando o identificador não estiver incluído, encaminhar a solicitação de dados com o uso da segunda função de partição.
[00112] Um método tal como descrito acima, em que as solicitações de dados compreendem as solicitações para acessar, adicionar ou modificar as entradas de dados na partição do banco de dados.
[00113] Um método tal como descrito acima, em que as entradas de dados existentes antes da reconfiguração não são movidas para diferentes locais, como resultado da reconfiguração.
[00114] Um método tal como descrito acima, em que a segunda função de partição compreende uma função hash modificada e configurada para incorporar um fator de curva para causar a alocação de novos dados para pelo menos uma partição adicional adicionada para o arranjo reconfigurado mais frequentemente do que uma ou mais partições existentes para o primeiro arranjo.
Conclusão
[00115] Embora o assunto tenha sido descrito na linguagem específica para as características estruturais e/ou atos metodológicas, deve ser entendido que o assunto definido nas concretizações anexas não é necessariamente limitado às características ou aos atos específicos e descritos. Em vez disso, as características e atos específicos são divulgados como exemplos de formas de implementação do assunto reivindicado.

Claims (13)

1. Método implementado por um dispositivo de computação (202), caracterizado pelo fato de que compreende etapas de: particionar um banco de dados (124) com uma primeira função de partição (206(1)) para alocar partições existente (208(0), 208(1)); e reparticionar subsequentemente o banco de dados (124) ao: criar um registro de associação de chave para entradas de dados localizadas nas partições existentes existindo em um momento de reparticionamento, em que o registro de associação de chave é configurado para registrar valores de chave associados a entradas de dados localizadas nas partições existentes como existentes no momento de reparticionamento e em que o reparticionamento é realizado de modo que as entradas de dados localizadas nas partições existentes como existentes no momento de reparticionamento mantêm os seus respectivos locais; adicionar uma ou mais novas partições (208(2)) com uma segunda função de partição (206(2)); definir uma função de partição composta (302) para operações de banco de dados subsequentes configurada para: aplicar a primeira função de partição (206(1)) a dados tendo valores de chave encontrados no registro de associação de chave; ou aplicar a segunda função de partição (206(2)) a dados tendo valores de chave não encontrados no registro de associação de chave; de modo que entradas de dados localizadas nas partições existentes existindo no momento de reparticionamento mantêm os seus respectivos locais nas partições existentes como existentes no momento de reparticionamento.
2. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que o registro de associação de chave compreende uma estrutura de dados compactada configurada para identificar chaves correspondendo a entradas de dados existindo no banco de dados (124) no momento de reparticionamento.
3. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que o registro de associação de chave compreende um filtro Bloom.
4. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que a função de partição composta (302) é configurada para combinar mais que duas funções de partição (206(1), ..., 206(M)), cada uma das mais que duas funções de partição (206(1), ..., 206(M)) correspondendo a um arranjo sucessivo de partições (208(0), 208(1); 208(0), 208(1), 208(2); 208(0), ..., 208(N-1)) para o banco de dados (124).
5. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que a primeira função de partição (206(1)) e a segunda função de partição (206(2)) são configuradas como funções hash que, quando aplicadas a valores de chave para solicitações de dados, retornam dados identificando partições do banco de dados (124) correspondendo aos valores de chave.
6. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que a primeira função de partição (206(1)) compreende uma função composta anterior estabelecida para um reparticionamento anterior do banco de dados (124) para adicionar capacidade de armazenamento adicional, e em que a função de partição composta (302) que é definida e configurada para aplicar a função composta anterior para dados tendo valores de chave encontrados no registro de associação de chave e a segunda função de partição (206(2)) para outros dados.
7. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que a função de partição composta (302) é configurada para inclinar alocação de dados no sentido de posicionar novas entradas de dados nas novas partições para equilibrar uma distribuição de dados através das partições do banco de dados (124).
8. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que a função de partição composta (302) reconhece incorretamente pelo menos alguns valores de chave para novas entradas de dados como sendo encontrados no registro de associação de chave, de modo que entradas de dados associadas a valores de chave reconhecidos incorretamente são alocadas para e localizadas de maneira consistente dentro das partições existentes no momento do reparticionamento.
9. Dispositivo de computação, caracterizado pelo fato de que compreende: um sistema de processamento; e um ou mais módulos que, quando executados pelo sistema de processamento, realizam etapas de: particionar um banco de dados (124) com uma primeira função de partição (206(1)) para alocar partições existente (208(0), 208(1)); e reparticionar subsequentemente o banco de dados (124) ao: criar um registro de associação de chave para entradas de dados localizadas nas partições existentes do banco de dados (124) existentes no momento de reparticionamento, em que o registro de associação de chave é configurado para registrar valores de chave associados a entradas de dados localizadas nas partições existentes como existentes no momento de reparticionamento; adicionar uma nova partição (208(2)) com uma segunda função de partição (206(2)); e definir uma função de partição composta (302) para tratar de solicitações de banco de dados subsequentes configurada para: aplicar a primeira função de partição (206(1)) a solicitações de dados incluindo valores de chave encontrados no registro de associação de chave; ou aplicar a segunda função de partição (206(2)) a solicitações de dados incluindo valores de chave não encontrados no registro de associação de chave; de modo que entradas de dados localizadas nas partições existentes existindo no momento de reparticionamento mantêm os seus respectivos locais nas partições existentes como existentes no momento de reparticionamento.
10. Dispositivo de computação, de acordo com a reivindicação 9, caracterizado pelo fato de que o registro de associação de chave é configurado como um filtro Bloom tendo valores de bit estabelecidos para chaves associadas a entradas de dados existentes no momento de reparticionamento para indicar associação para as chaves através do filtro Bloom.
11. Dispositivo de computação, de acordo com a reivindicação 10, caracterizado pelo fato de que: o filtro Bloom produz falsos erros positivos de acordo com uma tolerância configurável que faz com que pelo menos uma porção de entradas de dados criadas após o particionamento seja reconhecida incorretamente e tratada usando a primeira função de partição (206(1)), os falsos erros positivos sendo consistentes de tal forma que entradas de dados reconhecidas incorretamente são seguramente localizadas usando a primeira função de partição (206(1)); e um grau de compacidade do filtro Bloom depende da tolerância configurável.
12. Dispositivo de computação, de acordo com a reivindicação 9, caracterizado pelo fato de que a função de partição composta (302) é configurada para combinar a segunda função de partição (206(2)) com uma pluralidade de funções de partição individuais associadas a várias operações anteriores para reparticionamento do banco de dados (124).
13. Dispositivo de computação, de acordo com a reivindicação 9, caracterizado pelo fato de que a segunda função de partição (206(2)) é configurada para alocar dados através das partições existentes (208(0), 208(1)) do banco de dados (124) e da nova partição (208(2)).
BR112017005646A 2014-10-21 2015-10-14 Método implementado por um dispositivo de computação e dispositivo de computação para funções de partição composta BR112017005646B8 (pt)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/519,952 2014-10-21
US14/519,952 US9875263B2 (en) 2014-10-21 2014-10-21 Composite partition functions
PCT/US2015/055413 WO2016064629A1 (en) 2014-10-21 2015-10-14 Composite partition functions

Publications (3)

Publication Number Publication Date
BR112017005646A2 BR112017005646A2 (pt) 2017-12-12
BR112017005646B1 true BR112017005646B1 (pt) 2023-05-02
BR112017005646B8 BR112017005646B8 (pt) 2023-10-24

Family

ID=54352513

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112017005646A BR112017005646B8 (pt) 2014-10-21 2015-10-14 Método implementado por um dispositivo de computação e dispositivo de computação para funções de partição composta

Country Status (11)

Country Link
US (2) US9875263B2 (pt)
EP (1) EP3210134B1 (pt)
JP (1) JP6588977B2 (pt)
KR (2) KR102376713B1 (pt)
CN (1) CN107077497B (pt)
AU (1) AU2015336357B2 (pt)
BR (1) BR112017005646B8 (pt)
CA (1) CA2964461C (pt)
MX (1) MX2017005095A (pt)
RU (1) RU2701124C2 (pt)
WO (1) WO2016064629A1 (pt)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10372574B1 (en) * 2014-06-17 2019-08-06 Amazon Technologies, Inc. Skew detector for data storage system
US9875263B2 (en) 2014-10-21 2018-01-23 Microsoft Technology Licensing, Llc Composite partition functions
EP3128716B1 (en) * 2014-11-05 2019-09-04 Huawei Technologies Co., Ltd. Data processing method and apparatus
US11005950B1 (en) * 2015-02-10 2021-05-11 Marvell Asia Pte, Ltd. Optimized bloom filter
US10372700B2 (en) * 2015-03-30 2019-08-06 International Business Machines Corporation Data filtering using a plurality of hardware accelerators
US20170371910A1 (en) * 2016-06-28 2017-12-28 Microsoft Technology Licensing, Llc Real-time shard rebalancing for versioned entity repository
US11138178B2 (en) * 2016-11-10 2021-10-05 Futurewei Technologies, Inc. Separation of computation from storage in database for better elasticity
US10503714B2 (en) 2017-06-02 2019-12-10 Facebook, Inc. Data placement and sharding
US10585915B2 (en) * 2017-10-25 2020-03-10 International Business Machines Corporation Database sharding
US10732889B2 (en) * 2018-03-12 2020-08-04 Dell Products, L.P. Information handling system with multi-key secure erase of distributed namespace
US11080255B2 (en) * 2018-07-09 2021-08-03 Oracle International Corporation Space-efficient bookkeeping for database applications
US20200142591A1 (en) * 2018-11-07 2020-05-07 Kaminario Technologies Ltd. Snapshot managing system
CN111767268B (zh) * 2020-06-23 2023-12-01 陕西合友网络科技有限公司 数据库表分区方法、装置、电子设备及存储介质
US11941002B1 (en) 2022-03-31 2024-03-26 Amazon Technologies, Inc. Dynamically sort data

Family Cites Families (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6125370A (en) * 1998-04-01 2000-09-26 International Business Machines Corporation Repartitioning data
US6269375B1 (en) * 1998-04-01 2001-07-31 International Business Machines Corporation Rebalancing partitioned data
US6321238B1 (en) * 1998-12-28 2001-11-20 Oracle Corporation Hybrid shared nothing/shared disk database system
US7080101B1 (en) 2000-12-01 2006-07-18 Ncr Corp. Method and apparatus for partitioning data for storage in a database
JP3806609B2 (ja) * 2001-04-27 2006-08-09 株式会社日立製作所 並列データベースシステムおよび分散ファイルシステム
US7266823B2 (en) * 2002-02-21 2007-09-04 International Business Machines Corporation Apparatus and method of dynamically repartitioning a computer system in response to partition workloads
US7249135B2 (en) * 2004-05-14 2007-07-24 Microsoft Corporation Method and system for schema matching of web databases
WO2006089092A2 (en) * 2005-02-16 2006-08-24 Ziyad Dahbour Hierarchal data management
US8504521B2 (en) * 2005-07-28 2013-08-06 Gopivotal, Inc. Distributed data management system
US7779010B2 (en) 2007-12-12 2010-08-17 International Business Machines Corporation Repartitioning live data
JP5203733B2 (ja) * 2008-02-01 2013-06-05 株式会社東芝 コーディネータサーバ、データ割当方法及びプログラム
US7774311B2 (en) * 2008-07-17 2010-08-10 International Business Machines Corporation Method and apparatus of distributing data in partioned databases operating on a shared-nothing architecture
US8078825B2 (en) 2009-03-11 2011-12-13 Oracle America, Inc. Composite hash and list partitioning of database tables
US20100312749A1 (en) 2009-06-04 2010-12-09 Microsoft Corporation Scalable lookup service for distributed database
US8676753B2 (en) * 2009-10-26 2014-03-18 Amazon Technologies, Inc. Monitoring of replicated data instances
US8341376B1 (en) 2009-12-09 2012-12-25 Amdocs Software Systems Limited System, method, and computer program for repartitioning data based on access of the data
US8935232B2 (en) * 2010-06-04 2015-01-13 Yale University Query execution systems and methods
CN101916261B (zh) 2010-07-28 2013-07-17 北京播思软件技术有限公司 一种分布式并行数据库系统的数据分区方法
US8549004B2 (en) 2010-09-30 2013-10-01 Hewlett-Packard Development Company, L.P. Estimation of unique database values
US8560584B2 (en) 2010-12-15 2013-10-15 Teradata Us, Inc. Database partition management
US8793250B1 (en) * 2010-12-17 2014-07-29 Amazon Technologies, Inc. Flexible partitioning of data
US8554762B1 (en) * 2010-12-28 2013-10-08 Amazon Technologies, Inc. Data replication framework
US20130046793A1 (en) * 2011-08-19 2013-02-21 Qualcomm Incorporated Fast matching of image features using multi-dimensional tree data structures
US8775464B2 (en) * 2012-10-17 2014-07-08 Brian J. Bulkowski Method and system of mapreduce implementations on indexed datasets in a distributed database environment
KR101544356B1 (ko) * 2012-10-31 2015-08-13 삼성에스디에스 주식회사 메타데이터 및 트랜잭션 발생량을 고려한 동적 샤딩 기능을 지원하는 분산 데이터베이스 관리 방법 및 그 구성 노드
US8799284B2 (en) 2012-11-30 2014-08-05 Futurewei Technologies, Inc. Method for automated scaling of a massive parallel processing (MPP) database
CN103336792B (zh) * 2013-06-07 2016-11-23 华为技术有限公司 数据分区方法和装置
US9870416B2 (en) * 2014-04-24 2018-01-16 International Business Machines Corporation Method for rebalancing data partitions
US9875263B2 (en) 2014-10-21 2018-01-23 Microsoft Technology Licensing, Llc Composite partition functions

Also Published As

Publication number Publication date
AU2015336357B2 (en) 2020-07-16
CN107077497B (zh) 2020-07-28
EP3210134A1 (en) 2017-08-30
JP2017538194A (ja) 2017-12-21
MX2017005095A (es) 2017-07-05
BR112017005646B8 (pt) 2023-10-24
AU2015336357A1 (en) 2017-04-13
EP3210134B1 (en) 2020-01-01
WO2016064629A1 (en) 2016-04-28
KR102486243B1 (ko) 2023-01-09
BR112017005646A2 (pt) 2017-12-12
CA2964461A1 (en) 2016-04-28
US9875263B2 (en) 2018-01-23
KR102376713B1 (ko) 2022-03-18
KR20170073605A (ko) 2017-06-28
CN107077497A (zh) 2017-08-18
US20180144009A1 (en) 2018-05-24
JP6588977B2 (ja) 2019-10-09
RU2017113620A (ru) 2018-10-23
CA2964461C (en) 2023-02-28
US20160110391A1 (en) 2016-04-21
RU2701124C2 (ru) 2019-09-24
US10360199B2 (en) 2019-07-23
KR20220038827A (ko) 2022-03-29
RU2017113620A3 (pt) 2019-04-22

Similar Documents

Publication Publication Date Title
BR112017005646B1 (pt) Funções de partição composta
US9971823B2 (en) Dynamic replica failure detection and healing
JP6542909B2 (ja) ファイル操作方法及び装置
US9641598B1 (en) Contextually unique identifier generation service
US9372879B1 (en) Balanced append tree data structure
US11636072B2 (en) Parallel processing of a keyed index file system
US20140059519A1 (en) Enabling multi-tenancy for a commerce server
US11546307B2 (en) Method to implement multi-tenant/shared Redis cluster using envoy
US20200387404A1 (en) Deployment of virtual node clusters in a multi-tenant environment
US10033817B2 (en) Stateless technique for distributing data uploads
US20180322187A1 (en) Dynamic alternate keys for use in file systems utilizing a keyed index
US11698796B2 (en) Method and system for a semi-dictatorial determination of stackable system roles in an information handling system
US11736458B2 (en) Method and system for securely applying a stackable system role to an information handling system
US11249952B1 (en) Distributed storage of data identifiers
US11915038B2 (en) Method and system for collectively-determining stackable system roles in an information handling system environment
US11900126B2 (en) Method and system for self determining a stackable system role for an information handling system
US11520781B2 (en) Efficient bulk loading multiple rows or partitions for a single target table
US20220342717A1 (en) Method and system for a semi-democratic determination of stackable system roles in an information handling system environment
US20200226269A1 (en) Hash protection within an object storage library

Legal Events

Date Code Title Description
B06U Preliminary requirement: requests with searches performed by other patent offices: procedure suspended [chapter 6.21 patent gazette]
B350 Update of information on the portal [chapter 15.35 patent gazette]
B350 Update of information on the portal [chapter 15.35 patent gazette]
B09A Decision: intention to grant [chapter 9.1 patent gazette]
B16A Patent or certificate of addition of invention granted [chapter 16.1 patent gazette]

Free format text: PRAZO DE VALIDADE: 20 (VINTE) ANOS CONTADOS A PARTIR DE 14/10/2015, OBSERVADAS AS CONDICOES LEGAIS

B16C Correction of notification of the grant [chapter 16.3 patent gazette]

Free format text: REFERENTE AO DESPACHO 16.1 PUBLICADO NA RPI 2730 DE 02.05.2023, QUANTO AO TITULO