BR112018010857B1 - Método e aparelho de consulta de dados, e sistema de banco de dados - Google Patents
Método e aparelho de consulta de dados, e sistema de banco de dados Download PDFInfo
- Publication number
- BR112018010857B1 BR112018010857B1 BR112018010857-0A BR112018010857A BR112018010857B1 BR 112018010857 B1 BR112018010857 B1 BR 112018010857B1 BR 112018010857 A BR112018010857 A BR 112018010857A BR 112018010857 B1 BR112018010857 B1 BR 112018010857B1
- Authority
- BR
- Brazil
- Prior art keywords
- join
- predicate
- query plan
- rule
- query
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
- G06F16/24534—Query rewriting; Transformation
- G06F16/24542—Plan optimisation
- G06F16/24545—Selectivity estimation or determination
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
- G06F16/24534—Query rewriting; Transformation
- G06F16/24542—Plan optimisation
- G06F16/24544—Join order optimisation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Operations Research (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
MÉTODO E APARELHO DE CONSULTA DE DADOS, E SISTEMA DE BANCO DE DADOS. Um método e um dispositivo de consulta de dados, e um sistema de banco de dados são fornecidos. O método inclui: receber um pedido de consulta de dados (S1110); gerar um plano de consulta original de acordo com o pedido de consulta de dados (S1120); obter um conjunto de planos de consulta candidatos de acordo com o plano de consulta original (S1130); reestruturar de um predicado de junção no plano de consulta original (S1140); determinar informação básica de um predicado de junção reestruturado no plano de consulta original (S1150); determinar uma condição de restrição do predicado de junção reestruturado no plano de consulta original (S1160); determinar um plano de consulta de custo igual para o plano de consulta original de acordo com a informação básica do predicado de junção reestruturado no plano de consulta original e a condição de restrição do predicado de junção reestruturado no plano de consulta original (S1170); e realizar consulta de acordo com o plano de consulta de custo igual para o plano de consulta original (S1180). De acordo com o método e o aparelho de consulta de dados, e o sistema de (...).
Description
[001] A presente invenção refere-se ao campo das tecnologias de informação e, mais especificamente, a um método e aparelho de consulta de dados, e um sistema de banco de dados.
[002] Uma linguagem de consulta estruturada (Structured Query Language, SQL) é uma linguagem padrão de um sistema de gerenciamento de banco de dados relacional. A linguagem de consulta estruturada é uma linguagem não procedural avançada e descritiva. Ou seja, a linguagem de consulta estruturada permite que um usuário obtenha dados necessários em uma estrutura de dados de alta camada, mas a linguagem de consulta estruturada não exige que o usuário especifique um método para obter os dados, ou seja, um plano de consulta em um sentido geral. O plano de consulta pode ser representado por uma árvore. Um nó folha da árvore indica uma tabela de entrada, e um nó intermediário indica uma operação. Geralmente, uma consulta SQL tem muitos planos de consulta de custo igual, e tempos de execução de planos de consulta diferentes variam. Portanto, em um sistema de banco de dados, há um componente otimizador de consulta para selecionar um plano de consulta ideal (isto é, um tempo de execução é o mais curto).
[003] Uma função principal do otimizador de consulta é determinar um plano de consulta de custo igual para um plano de consulta original e selecionar um plano de consulta ideal. No entanto, na técnica anterior, alguns planos de consulta de custo igual são omitidos e, consequentemente, o desempenho da consulta é afetado.
[004] Modalidades da presente invenção fornecem um método e aparelho de consulta de dados, e um sistema de banco de dados, de modo a melhorar o desempenho da consulta de dados.
[005] De acordo com um primeiro aspecto, uma modalidade da presente invenção fornece um método de consulta de dados, em que o método é executado por um sistema de banco de dados, o sistema de banco de dados é executado em um dispositivo de computador e o método inclui: receber um pedido de consulta de dados; gerar um plano de consulta original de acordo com o pedido de consulta de dados; reestruturar um predicado de junção no plano de consulta original; determinar informação básica de um predicado de junção reestruturado no plano de consulta original; determinar, com base em uma regra de operação de junção, uma condição de restrição do predicado de junção reestruturado no plano de consulta original; determinar um plano de consulta de custo igual para o plano de consulta original de acordo com a informação básica do predicado de junção reestruturado no plano de consulta original e a condição de restrição do predicado de junção reestruturado no plano de consulta original; e realizar consulta de acordo com o plano de consulta de custo igual para o plano de consulta original.
[006] Nas modalidades da presente invenção, o plano de consulta de custo igual para o plano de consulta original é determinado de acordo com a informação básica do predicado e a condição de restrição obtida com base na regra de operação de junção, e uma quantidade relativamente grande de planos de consulta de custo igual para o plano de consulta original podem ser obtidos, de modo que o desempenho de consulta de dados possa ser melhorado.
[007] Em algumas implementações, a determinação de um plano de consulta de custo igual para o plano de consulta original de acordo com a informação básica do predicado de junção reestruturado no plano de consulta original e a condição de restrição do predicado de junção reestruturado no plano de consulta original inclui: determinar um conjunto de planos de consulta de custo igual para o plano de consulta original de acordo com a informação básica do predicado de junção reestruturado no plano de consulta original e a condição de restrição do predicado de junção reestruturado no plano de consulta original; e a realização de consulta de acordo com o plano de consulta de custo igual para o plano de consulta original inclui: selecionar um plano de consulta a partir do conjunto de planos de consulta de custo igual para executar a consulta.
[008] Em algumas implementações, o método inclui ainda: obter um conjunto de planos de consulta candidatos de acordo com o plano de consulta original, onde planos de consulta candidatos para o plano de consulta original devem ser obtidos, tanto quanto possível aqui; e, de preferência, um algoritmo de enumeração de plano de consulta pode ser usado para enumerar todos os planos de consulta candidatos para o plano de consulta original, e um algoritmo de enumeração típico pode ser usado, por exemplo, um algoritmo de programação dinâmica usado no Sistema IBM R; e a determinação de um conjunto de planos de consulta de custo igual para o plano de consulta original de acordo com a informação básica do predicado de junção reestruturado no plano de consulta original e a condição de restrição do predicado de junção reestruturado no plano de consulta original inclui: determinar o conjunto de planos de consulta de custo igual a partir do conjunto de planos de consulta candidatos de acordo com a informação básica do predicado de junção reestruturado no plano de consulta original e a condição de restrição do predicado de junção reestruturado no plano de consulta original.
[009] Nas modalidades da presente invenção, o plano de consulta de custo igual para o plano de consulta original é determinado a partir do conjunto de planos de consulta candidatos de acordo com a informação básica do predicado e a condição de restrição obtida com base na regra de operação de junção, e todos planos de consulta de custo igual para o plano de consulta original podem ser obtidos, de modo que o desempenho de consulta de dados possa ser melhorado.
[0010] Em algumas implementações, a reestruturar de um predicado de junção no plano de consulta original inclui: transformar todos os predicados de junção de uma operação de junção interna no plano de consulta original em uma forma normal conjuntiva, e combinar predicados de junção com uma mesma tabela de entrada; e combinar todos os predicados de junção de uma operação de junção não interna no plano de consulta original em um predicado de junção.
[0011] Em algumas implementações, a informação básica do predicado de junção inclui uma tabela de entrada do predicado de junção, uma tabela de entrada do predicado de junção incluída em uma sub-árvore esquerda de uma operação de junção em que o predicado de junção está localizado, uma tabela de entrada do predicado de junção incluída em uma sub-árvore direita da operação de junção em que o predicado de junção está localizado, e um tipo de junção da operação de junção em que o predicado de junção está localizado.
[0012] Em algumas implementações, a regra de operação de junção inclui uma regra de nível operacional e uma regra de nível de predicado, em que a regra de nível operacional inclui uma regra de troca de nível operacional: e1 oap12 e2 = e2 oap12 e1, uma regra de combinação de nível operacional: (e1 oap12 e2) obp23 e3 = e1 oap12 (e2 obp23 e3), uma regra de permutação à esquerda de nível operacional: (e1 oap12 e2) obp13 e3 = (e1 obp13 e3) oap12 e2, e uma regra de permutação à direita de nível operacional: e1 oap13 (e2 obp23 e3) = e2 obp23 (e1 oap13 e3), a regra de nível de predicado inclui uma regra de combinação de nível de predicado: (ei oapi2 β2) obpAp23 e3 = ei oapi2Ap (e2 obp23 es) , uma regra de permutação à esquerda de nível de predicado: (ei oapi2 62) obpisAp es = (ei obpi3 es) oapi2Ap e2, e uma regra de permutação à direita de nível de predicado: ei oapApis (e2 obp2s es) = e2 obpAp2s (ei oapis es), ei é uma expressão de consulta, oa e ob são operações de junção, e pij é um predicado de junção entre ei e ej.
[0013] Em algumas implementações, a determinação, com base em uma regra de operação de junção, de uma condição de restrição do predicado de junção reestruturado no plano de consulta original inclui: atravessar, para cada nó de operação de junção oB no plano de consulta original, cada nó de operação de junção oA em uma sub-árvore que usa oB como um nó raiz; e quando oA está em uma sub-árvore esquerda da sub-árvore que usa oB como o nó raiz, se oA e oB não satisfazem a regra de combinação de nível operacional e a regra de combinação de nível de predicado, adicionar uma primeira condição de restrição a cada predicado de junção reestruturado em oB; e se oA e oB não satisfazem a regra de permutação à esquerda de nível operacional e a regra de permutação à esquerda de nível de predicado, adicionar uma segunda condição de restrição a cada predicado de junção reestruturado em oB; ou quando oA está em uma sub-árvore direita da sub-árvore que usa oB como nó raiz, se oA e oB não satisfazem a regra de combinação de nível operacional e a regra de combinação de nível de predicado, adicionar uma segunda condição de restrição a cada predicado de junção reestruturado em oB; e se oA e oB não satisfazem a regra de permutação à direita de nível operacional e a regra de permutação à direita de nível de predicado, adicionar uma primeira condição de restrição a cada predicado de junção reestruturado em oB; Onde a primeira condição de restrição é T(e2) -> T(ei) AT (paiApa2A... Apan), a segunda condição de restrição é T(ei) -> T(e2) AT (pa1Apa2A...Apan), T(e1) indica uma tabela de entrada original incluída em uma sub-árvore esquerda ei de uma sub- árvore que utiliza oA como um nó raiz, T(e2) indica um tabela de entrada original incluída na sub-árvore direita e2 da sub- árvore que usa oA como o nó raiz, T(paiApa2A... Apan) indica uma tabela de entrada original incluída em um predicado de junção reestruturado pa1Apa2A... Apan em oA, e T1 -> T2 indica que se uma primeira sub-árvore que usa uma operação de junção em que um predicado de junção restrito por T1 -> T2 está localizado como um nó raiz inclui qualquer tabela de entrada em T1, a primeira sub-árvore inclui todas as tabelas de entrada em T2.
[0014] Em algumas implementações, a determinação de um plano de consulta de custo igual para o plano de consulta original de acordo com a informação básica do predicado de junção reestruturado no plano de consulta original e a condição de restrição do predicado de junção reestruturado no plano de consulta original inclui: determinar que um primeiro plano de consulta candidato P’ é um plano de consulta de custo igual para o plano de consulta original P se P’ satisfizer as seguintes condições: um tipo de junção de cada primeira operação de junção de P’ é uma junção interna, a primeira operação de junção é uma operação de junção tendo pelo menos dois predicados de junção reestruturados e um tipo de junção de uma operação de junção que está em P e que é correspondente a cada predicado de junção nos pelo menos dois predicados de junção reestruturados é uma junção interna; para cada predicado de junção p em cada operação de junção ob’ em P’, quando ob’ não satisfaz a regra de troca de nível operacional, T1(p) em P’ e T1(p) em P são iguais e Tr(p) em P’ e Tr(p) em P são iguais, onde T1(p) indica uma tabela de entrada de p incluída em uma sub-árvore esquerda de uma operação de junção em que p está localizado, e Tr(p) indica uma tabela de entrada de p incluída em uma sub-árvore direita da operação de junção em que p está localizado; ou quando ob’ satisfaz a regra de troca de nível operacional, T1(p) em P’ e T1(p) em P são iguais, e Tr(p) em P’ e Tr(p) em P são iguais; ou T1(p) em P’, e Tr(p) em P são iguais e Tr(p) em P’ e T1(p) em P são iguais; e para cada predicado de junção p em cada operação de junção ob’ em P’, p satisfaz uma condição de restrição para p em P.
[0015] Em algumas implementações, a seleção de um plano de consulta a partir do conjunto de planos de consulta de custo igual para executar a consulta inclui: selecionar um plano de consulta com custos mínimos a partir do conjunto de planos de consulta de custo igual para executar a consulta.
[0016] De acordo com um segundo aspecto, uma modalidade da presente invenção fornece um aparelho de consulta de dados. O aparelho inclui um módulo para executar o método de acordo com o primeiro aspecto.
[0017] De acordo com um terceiro aspecto, uma modalidade da presente invenção fornece um aparelho de consulta de dados. O aparelho inclui um processador, uma memória e uma interface de comunicação. O processador é acoplado à memória e à interface de comunicação. A memória é configurada para armazenar uma instrução, o processador é configurado para executar a instrução e a interface de comunicação é configurada para se comunicar com outro elemento de rede sob controle do processador. O processador executa o método de acordo com o primeiro aspecto quando o processador executa a instrução.
[0018] De acordo com um quarto aspecto, uma modalidade da presente invenção fornece um sistema de banco de dados. O sistema de banco de dados inclui o aparelho de consulta de dados de acordo com o segundo aspecto ou o terceiro aspecto e um banco de dados.
[0019] Em algumas implementações, um plano de consulta de custo igual para um plano de consulta original é um plano de consulta obtido a partir do plano de consulta original por meio de transformação usando pelo menos uma das quatro regras de nível operacional e três regras de nível de predicado.
[0020] Em algumas implementações, um espaço de plano de consulta de custo igual inclui planos de consulta obtidos de um plano de consulta original por meio de transformação usando pelo menos uma das quatro regras de nível operacional e três regras de nível de predicado.
[0021] Para descrever mais claramente as soluções técnicas nas modalidades da presente invenção, descrevem-se resumidamente os desenhos anexos necessários para descrever as modalidades da presente invenção. Aparentemente, os desenhos anexos na descrição seguinte mostram apenas algumas modalidades da presente invenção, e uma pessoa com conhecimentos normais na matéria pode ainda derivar outros desenhos destes desenhos anexos sem esforços criativos.
[0022] A Figura 1a e Figura 1b são diagramas esquemáticos de cenários de aplicação de acordo com uma modalidade da presente invenção;
[0023] A Figura 1c é um exemplo de uma operação de junção de acordo com uma modalidade da presente invenção;
[0024] A Figura 2 é um exemplo de um plano de consulta de custo igual de acordo com uma modalidade da presente invenção;
[0025] A Figura 3 é um exemplo de uma regra de troca de nível operacional de acordo com uma modalidade da presente invenção;
[0026] A Figura 4 é um exemplo de uma regra de combinação de nível operacional de acordo com uma modalidade da presente invenção;
[0027] A Figura 5 é um exemplo de uma regra de permutação à esquerda de nível operacional de acordo com uma modalidade da presente invenção;
[0028] A Figura 6 é um exemplo de uma regra de permutação à direita de nível operacional de acordo com uma modalidade da presente invenção;
[0029] A Figura 7 é um exemplo de uma regra de combinação de nível de predicado de acordo com uma modalidade da presente invenção;
[0030] A Figura 8 é um exemplo de uma regra de permutação à esquerda de nível de predicado de acordo com uma modalidade da presente invenção;
[0031] A Figura 9 é um exemplo de uma regra de permutação à direita de nível de predicado de acordo com uma modalidade da presente invenção;
[0032] A Figura 10 é um exemplo de um plano de consulta de custo igual de acordo com uma modalidade da presente invenção;
[0033] A Figura 11 é um fluxograma esquemático de um método de consulta de dados de acordo com uma modalidade da presente invenção;
[0034] A Figura 12 é um exemplo de um plano de consulta de acordo com uma modalidade da presente invenção;
[0035] A Figura 13 A e Figura 13B são um fluxograma para determinar uma condição de restrição de um predicado em um plano de consulta original de acordo com uma modalidade da presente invenção;
[0036] A Figura 14 é um diagrama esquemático da adição de uma condição de restrição de acordo com uma modalidade da presente invenção;
[0037] A Figura 15 é outro diagrama esquemático de adição de uma condição de restrição de acordo com uma modalidade da presente invenção;
[0038] A Figura 16 é um exemplo de determinação de um plano de consulta de custo igual de acordo com uma modalidade da presente invenção;
[0039] A Figura 17 é um diagrama de blocos esquemático de um aparelho de consulta de dados de acordo com uma modalidade da presente invenção;
[0040] A Figura 18 é um diagrama de blocos esquemático de um sistema de banco de dados de acordo com uma modalidade da presente invenção; e
[0041] A Figura 19 é um diagrama estrutural esquemático de um aparelho de consulta de dados de acordo com uma modalidade da presente invenção.
[0042] O que segue descreve de forma clara e completa as soluções técnicas nas modalidades da presente invenção com referência aos desenhos anexos nas modalidades da presente invenção. Aparentemente, as modalidades descritas são uma parte e não todas as modalidades da presente invenção. Todas as outras modalidades obtidas por um especialista na técnica com base nas modalidades da presente invenção sem esforços criativos cairão dentro do âmbito de proteção da presente invenção.
[0043] As soluções técnicas nas modalidades da presente invenção podem ser aplicadas a um sistema de banco de dados. A Figura 1a e Figura 1b são diagramas esquemáticos de cenários de aplicação de acordo com uma modalidade da presente invenção. A Figura 1a é um sistema de banco de dados com um único servidor e a Figura 1b é um sistema de banco de dados distribuído.
[0044] Como mostrado na Figura 1a, o sistema de banco de dados (isto é, um servidor) com um único servidor inclui um sistema de gerenciamento de banco de dados e um banco de dados e é configurado para processar um pedido de consulta de um cliente e retornar um resultado de consulta ao cliente. O sistema de gerenciamento de banco de dados inclui um componente de gerenciamento, como um otimizador de consulta, e é configurado para gerenciar o sistema de banco de dados. Para este cenário, um método nas modalidades da presente invenção pode ser executado pelo servidor, ou pelo sistema de gerenciamento de banco de dados no servidor, ou pelo otimizador de consulta no sistema de gerenciamento de banco de dados.
[0045] Como mostrado na Figura 1b, o sistema de banco de dados distribuído inclui uma pluralidade de servidores e um sistema de gerenciamento distribuído, e é configurado para processar um pedido de consulta de um cliente e retornar um resultado de consulta ao cliente. Cada servidor inclui um sistema de gerenciamento de banco de dados e um banco de dados, e o sistema de gerenciamento distribuído inclui um componente de gerenciamento, como um otimizador de consulta, e é configurado para gerenciar o sistema de banco de dados distribuído. Para este cenário, um método nas modalidades da presente invenção pode ser executado pelo sistema de banco de dados distribuído, ou pelo sistema de gerenciamento distribuído no sistema de banco de dados distribuído, ou pelo otimizador de consulta no sistema de gerenciamento distribuído.
[0046] Para facilitar a compreensão das modalidades da presente invenção, o seguinte descreve primeiro os termos relacionados com um sistema de banco de dados.
[0047] Em várias modalidades da presente invenção, uma operação de junção também pode ser referida como uma operação ou junção, e a operação de junção combina duas ou mais tabelas em um banco de dados em uma tabela de resultados. Um predicado de junção também pode ser referido como um predicado, e o predicado de junção é usado para descrever uma relação de colunas em duas ou mais tabelas. A operação de junção combina tabelas em um banco de dados usando o predicado de junção.
[0048] A operação de junção é classificada em uma junção interna (inner join), uma junção externa esquerda/direita (left/right outer join), uma junção externa completa (full outer join), uma semi-junção esquerda/direita (left/right semi-join), e uma anti-junção esquerda/direita (left/right anti-join).
[0049] A junção interna (inner join) é a operação de junção mais comum em um banco de dados. A junção interna combina colunas de duas tabelas (por exemplo, R e S) juntas com base em um predicado de junção, para gerar uma nova tabela de resultados. A operação compara cada linha da tabela R com cada linha da tabela S e localiza uma combinação que satisfaz o predicado de junção. Quando o predicado de junção é satisfeito, as linhas correspondidas em R e S são combinadas em uma linha em uma tabela de resultados por coluna (lado a lado).
[0050] A junção externa esquerda (left outer join) é uma expansão da junção interna. Uma diferença entre a junção externa esquerda e a junção interna é que se a junção externa esquerda for executada para as duas tabelas R e S, se não houver nenhuma linha correspondida na tabela direita S para uma linha em uma tabela esquerda (isto é, a tabela R) para satisfazer o predicado de junção, em vez de descartar diretamente um valor na linha da tabela esquerda na junção interna, a junção externa esquerda ainda retorna um registro, onde o registro retém todos os valores da coluna na tabela esquerda, mas um valor em cada coluna correspondente à linha da tabela direita é nulo (NULL). A junção externa direita (right outer join) é semelhante à junção externa esquerda, e a única diferença é que, se não houver uma linha correspondente na tabela esquerda para uma linha na tabela direita, um valor em cada coluna da tabela esquerda em um registro retornado pela operação é nulo. A junção externa completa (full outer join) é semelhante à junção externa esquerda/direita, e a única diferença é que, independentemente da tabela esquerda ou para a tabela direita, se não houver nenhuma linha correspondida para uma linha na tabela, a operação retorna um registro, e um valor de coluna na tabela com nenhuma linha correspondida no registro é nulo.
[0051] A semi-junção esquerda (left semi-join) retorna somente as linhas, na tabela esquerda, que têm linhas correspondidas na tabela direita (isto é, satisfazer o predicado de junção). A semi-junção direita (right semijoin) retorna apenas as linhas, na tabela direita, que possuem linhas correspondidas na tabela esquerda (ou seja, satisfazem o predicado de junção).
[0052] A anti-junção esquerda (left anti-join) retorna apenas as linhas, na tabela esquerda, que não possuem linha correspondente na tabela direita (ou seja, não satisfaz o predicado de junção). A anti-junção direita (right antijoin) retorna apenas as linhas, na tabela direita, que não possuem linha correspondida na tabela esquerda (ou seja, satisfazendo o predicado de junção). Pode ser aprendido a partir das definições de semi-junção e anti-junção que a anti-junção e a semi-junção são conjuntos complementares um para o outro.
[0053] A Figura 1c mostra exemplos das várias operações de junção anteriores. Na Figura 1c, que uma operação de junção é executada para a tabela R e a tabela S é usada como exemplo. O predicado de junção é R.b = S.c, e os resultados das várias operações de junção são mostrados na Figura 1c.
[0054] A Figura 2 mostra um exemplo de um plano de consulta de custo igual. Como mostrado na Figura 2, para uma consulta SQL R/A-.-R.-'A:.-^, Ri, R2 e R3 representam tabelas de entrada, ' representa uma operação de junção interna, e p12 e p23 representam um predicado de junção entre R1 e R2 e um predicado de junção entre R2 e R3, respectivamente. Ambos os dois planos de consulta na Figura 2 são planos de consulta de custo igual para a consulta.
[0055] Em várias modalidades da presente invenção, uma regra de operação de junção inclui uma regra de nível operacional e uma regra de nível de predicado. A regra de nível operacional inclui uma regra de troca de nível operacional, uma regra de combinação de nível operacional, uma regra de permutação à esquerda de nível operacional e uma regra de permutação direita de nível operacional. A regra de nível de predicado inclui uma regra de combinação de nível de predicado, uma regra de permutação à esquerda de nível de predicado e uma regra de permutação à direita de nível de predicado. Na descrição a seguir, o significado de cada símbolo é mostrado na Tabela 1.
[0056] A regra de troca de nível operacional é e1 oap12 e2 = e2 oap12 e1. A Figura 3 é um exemplo da regra de troca de nível operacional. A Tabela 2 é uma tabela de operação de junção da regra de troca de nível operacional e mostra se cada operação de junção satisfaz a regra de troca de nível operacional. + indica que a operação de junção satisfaz a regra de troca de nível operacional e - indica que a operação de junção não satisfaz a regra de troca de nível operacional. Deve ser entendido que a junção externa direita, a semi-junção direita e a anti-junção direita podem ser transformadas em operações de junção esquerdas correspondentes e, portanto, apenas as operações de junção esquerda são consideradas nesta especificação.
[0057] A regra de combinação de nível operacional é (e1 oap12 e2) obp23 e3 = e1 oap12 (e2 obp23 e3). A Figura 4 é um exemplo da regra de combinação de nível operacional. A Tabela 3 é uma tabela de operação de junção da regra de combinação de nível operacional e mostra se quaisquer duas operações de junção satisfazem a regra de combinação de nível operacional. + indica que as duas operações de junção satisfazem a regra de combinação de nível operacional e - indica que as duas operações de junção não atendem à regra de combinação de nível operacional. + com um sobrescrito indica que a regra de combinação é satisfeita sob uma condição. Ou seja, somente quando uma condição no sobrescrito é satisfeita, as duas operações de junção correspondentes podem satisfazer a regra de combinação. 1 p23 rejeita nulo em A (e2) 2 p12 e p23 rejeitam nulo em A (e2)
[0058] A regra de permutação à esquerda de nível operacional é (e1 oap12 e2) obp13 e3 = (e1 obp13 e3) oap12 e2. A Figura 5 é um exemplo da regra de permutação à esquerda de nível operacional. A Tabela 4 é uma tabela de operação de junção da regra de permutação à esquerda de nível operacional, e mostra se quaisquer duas operações de junção satisfazem a regra de permutação à esquerda de nível operacional. + indica que as duas operações de junção satisfazem a regra de permutação à esquerda de nível operacional e - indica que as duas operações de junção não satisfazem a regra de permutação à esquerda de nível operacional. + com um sobrescrito indica que a regra de permutação à esquerda é satisfeita sob uma condição. Ou seja, somente quando uma condição no sobrescrito é satisfeita, as duas operações de junção correspondentes podem satisfazer a regra de permutação à esquerda. 1 p12 rejeita nulo em A (e1) 2 p13 rejeita nulo em A (e3) 3 p12 e p13 rejeitam nulo em A (e1)
[0059] A regra de permutação direita de nível operacional é e1 oap13 (e2 obp23 e3) = e2 obp23 (e1 oap13 e3). A Figura 6 é um exemplo da regra de permutação direita de nível operacional. A Tabela 5 é uma tabela de operação de junção da regra de permutação à direita de nível operacional e mostra se quaisquer duas operações de junção satisfazem a regra de permutação direita de nível operacional. + indica que as duas operações de junção satisfazem a regra de permutação direita de nível operacional e - indica que as duas operações de junção não satisfazem a regra de permutação direita de nível operacional. + com um sobrescrito indica que a regra de permutação à direita é satisfeita sob uma condição. Ou seja, somente quando uma condição no sobrescrito é satisfeita, as duas operações de junção correspondentes podem satisfazer a regra de permutação à direita.
1 p13 e p23 rejeitam nulo em A (e3)
[0060] Na regra de nível operacional anterior, um predicado de junção em uma operação e a operação são unidas, ou seja, o predicado de junção não pode se mover entre as operações. Diferente da regra de nível operacional, em uma regra de nível de predicado, um predicado pode se mover entre operações.
[0061] A regra de combinação de nível predicado é (ei oapi2 e2) obpAp23 e3 = ei oapi2Ap (e2 obp23 es). A indica uma operação lógica AND, p indica um predicado de junção, exceto p23, e p não é nulo. A Figura 7 é um exemplo da regra de combinação de nível de predicado.
[0062] A regra de permutação à esquerda de nível de predicado é (ei oapi2 e2) obpi3Ap e3 = (ei obpi3 e3) oapi2Ap e2. A indica uma operação lógica AND, p indica um predicado de junção, exceto pi3, e p não é nulo. A Figura 8 é um exemplo da regra de permutação à esquerda de nível de predicado.
[0063] A regra de permutação de nível de predicado é ei oapApi3 (e2 obp23 e3) = e2 obpAp23 (ei oapi3 e3). A indica uma operação lógica AND, p indica um predicado de junção, exceto pi3, e p não é nulo. A Figura 9 é um exemplo da regra de permutação à direita de nível de predicado.
[0064] A Tabela 6 é uma tabela de operação de junção da regra de nível de predicado, e mostra se quaisquer duas operações de junção satisfazem a regra de nível de predicado. + indica que as duas operações de junção satisfazem a regra de nível de predicado e - indica que as duas operações de junção não satisfazem a regra de nível de predicado. As tabelas de operação de junção das três regras de nível de predicado precedentes são as mesmas, ou seja, a Tabela 6 representa as tabelas de operação de junção de todas as três regras de nível de predicado.
[0065] Nas modalidades da presente invenção, todos os planos de consulta que podem ser obtidos por meio de transformação utilizando as regras de nível operacional ou regras de nível de predicado anteriores são planos de consulta de custo igual. Isto é, um espaço de plano de consulta de custo igual nas modalidades da presente invenção é todos os planos de consulta que podem ser obtidos por meio da transformação por utilização de pelo menos uma das quatro regras de nível operacional e as três regras de nível de predicado. Se uma regra é satisfeita entre as operações pode ser determinado por consultar uma tabela de operação de junção da regra.
[0066] Comparado com um espaço de plano de consulta de custo igual obtido por meio de transformação utilizando apenas a regra de nível operacional, o espaço de plano de consulta de custo igual nas modalidades da presente invenção é mais completo. Ou seja, se a transformação for executada usando apenas a regra de nível operacional, nem todos os planos de consulta de custo igual podem ser obtidos. Por exemplo, como mostrado na Figura 10, relativo a um plano de consulta original à esquerda, um predicado de junção entre operações é movido em dois planos de consulta candidatos à direita e, portanto, os dois planos de consulta candidatos não podem ser obtidos ao transformar o plano de consulta original à esquerda usando as quatro regras anteriores. No entanto, os dois planos de consulta candidatos à direita são realmente equivalentes ao plano de consulta original à esquerda.
[0067] Nas modalidades da presente invenção, um plano de consulta de custo igual para um plano de consulta original é determinado com base nas regras de nível operacional e nas regras de nível de predicado, e todos os planos de consulta de custo igual para o plano de consulta original podem ser obtidos.
[0068] A Figura 11 mostra um fluxograma esquemático de um método de consulta de dados 1100 de acordo com uma modalidade da presente invenção. O método 1100 é executado por um sistema de banco de dados e o sistema de banco de dados é executado em um dispositivo de computador. Especificamente, o método é executado por um aparelho de consulta de dados em execução no computador. O aparelho de consulta de dados pode ser um aparelho no sistema de banco de dados, tal como um otimizador de consulta, ou pode ser o sistema de banco de dados.
[0069] S1110. Receber um pedido de consulta de dados.
[0070] Por exemplo, o pedido de consulta de dados pode ser uma entrada de pedido de consulta de dados por um usuário usando uma linguagem SQL.
[0071] S1120. Gerar um plano de consulta original de acordo com o pedido de consulta de dados.
[0072] Depois que o pedido de consulta de dados é recebido, o pedido de consulta de dados é analisado para obter o plano de consulta original.
[0073] Opcionalmente, S1130. Obter um conjunto de planos de consulta candidatos de acordo com o plano de consulta original.
[0074] O conjunto de planos de consulta candidato inclui todos os planos de consulta candidatos para o plano de consulta original. Neste passo, um algoritmo de enumeração de plano de consulta pode ser usado para enumerar todos os planos de consulta candidatos para o plano de consulta original. Por exemplo, um algoritmo de enumeração típico inclui um algoritmo de programação dinâmica usado no Sistema IBM R.
[0075] Depois que todos os planos de consulta candidatos para o plano de consulta original forem enumerados, um plano de consulta de custo igual para o plano de consulta original pode ser determinado a partir de todos os planos de consulta candidatos.
[0076] Este passo é um passo opcional. Isto é, nesta modalidade da presente invenção, o plano de consulta de custo igual ou um conjunto de planos de consulta de custo igual pode ser obtido diretamente do plano de consulta original usando o seguinte passo ou um conjunto de planos de consulta de custo igual pode ser obtido do conjunto de planos de consulta candidatos usando o passo a seguir.
[0077] S1140. Reestruturar um predicado de junção no plano de consulta original.
[0078] Especificamente, todos os predicados de junção de uma operação de junção interna no plano de consulta original são transformados em uma forma normal conjuntiva, e predicados de junção com uma mesma tabela de entrada são combinados; e todos os predicados de junção de uma operação de junção não interna no plano de consulta original são combinados em um predicado de junção.
[0079] Ou seja, uma maneira de reestruturar é atravessar cada nó de operação de junção no plano de consulta original, e o processamento é executado de acordo com um tipo de junção do nó de operação de junção nos dois casos a seguir:
[0080] Se a operação de junção é uma junção interna, todos os predicados na operação de junção são transformados na forma normal conjuntiva (conjunctive normal form, CNF), isto é, uma forma P1AP2A...Apn, e predicados tendo uma mesma tabela de entrada são combinados.
[0081] Se a operação de junção não for uma junção interna, todos os predicados na operação de junção serão combinados em um predicado.
[0082] S1150. Determinar informação básica de um predicado de junção reestruturado no plano de consulta original.
[0083] Em várias modalidades da presente invenção, a informação básica do predicado de junção inclui uma tabela de entrada do predicado de junção, uma tabela de entrada do predicado de junção incluída em uma sub-árvore esquerda de uma operação de junção em que o predicado de junção está localizado, uma tabela de entrada do predicado de junção incluída em uma sub-árvore direita da operação de junção em que o predicado de junção está localizado, e um tipo de junção da operação de junção em que o predicado de junção está localizado.
[0084] Especificamente, para um predicado p, informação básica do predicado p inclui: T(p): uma tabela de entrada incluída em p; T1(p): uma tabela de entrada de p que é incluída em uma sub-árvore esquerda de uma operação na qual p está localizado; Tr(p): uma tabela de entrada de p que é incluída em uma sub-árvore direita da operação em que p é localizado; e O(p): um tipo de junção da operação em que p é localizado.
[0085] Por exemplo, para um predicado de junção p = {R1.a + R2.b = R3.c} de um nó raiz mostrado na Figura 12, informação básica de p é a seguinte: T(p): {R1, R2, R3}; T1(p): {R1, R2}; Tr(p): {R3}; e O(p): uma junção interna.
[0086] S1160. Determinar, com base em uma regra de operação de junção, uma condição de restrição do predicado de junção reestruturado no plano de consulta original.
[0087] Especificamente, para cada nó de operação de junção oB no plano de consulta original, cada nó de operação de junção oA em uma sub-árvore que usa oB como um nó raiz é atravessado; e quando oA está em uma sub-árvore esquerda da sub-árvore que usa oB como o nó raiz, se oA e oB não satisfazem a regra de combinação de nível operacional e a regra de combinação de nível de predicado, uma primeira condição de restrição será adicionada a cada predicado de junção reestruturado em oB; e se oA e oB não satisfazem a regra de permutação à esquerda de nível operacional e a regra de permutação à esquerda de nível de predicado, uma segunda condição de restrição é adicionada a cada predicado de junção reestruturado em oB; quando oA está em uma sub-árvore direita da sub-árvore que usa oB como nó raiz, se oA e oB não satisfazem a regra de combinação de nível operacional e a regra de combinação de nível de predicado, uma segunda condição de restrição será adicionada a cada predicado de junção reestruturado em oB; e se oA e oB não satisfazem a regra de permutação à direita de nível operacional e a regra de permutação à direita de nível de predicado, uma primeira condição de restrição é adicionada a cada predicado de junção reestruturado em oB; Onde a primeira condição de restrição é T(e2) -> T(ei) AT (paiApa2A... Apan), a segunda condição de restrição é T(ei) -> T(e2) AT (pa1Apa2A...Apan), T(e1) indica uma tabela de entrada original incluída em uma sub-árvore esquerda ei de uma sub- árvore que utiliza oA como um nó raiz, T(e2) indica um tabela de entrada original incluída na sub-árvore direita e2 da sub- árvore que usa oA como o nó raiz, T(paiApa2A... Apan) indica uma tabela de entrada original incluída em um predicado de junção reestruturado paiApa2A... Apan em oA, Ti -> T2 indica que se uma primeira sub-árvore que usa uma operação de junção em que um predicado de junção restrito por Ti -> T2 está localizado como um nó raiz inclui qualquer tabela de entrada em Ti, a primeira sub-árvore inclui todas as tabelas de entrada em T2 e A é um símbolo de conjunto de interseções.
[0088] Por exemplo, a Figura i3A e Figura i3B mostra um fluxograma para determinar uma condição de restrição de um predicado em um plano de consulta original. Um procedimento mostrado na Figura i3A e Figura i3B incluem percurso de duas camadas. Para uma camada externa, cada nó de operação oB (um predicado reestruturado em oB é pbiApb2A...Apbn) no plano de consulta original é percorrido; para uma camada interna, cada nó de operação oA (um predicado reestruturado em oA é paiApa2A... Apan) em uma sub-árvore de consulta que usa oB como um nó raiz é percorrido. Em seguida, uma condição de restrição é adicionada a cada predicado em oB de acordo com uma relação entre oA e oB nos dois casos a seguir:
[0089] Se oA é em uma sub-árvore esquerda de oB, uma condição de restrição é adicionada a cada predicado pbi em oB de acordo com um método mostrado na Figura i4.
[0090] Se oA é em uma sub-árvore direita de oB, uma condição de restrição é adicionada a cada predicado pbi em oB de acordo com um método mostrado na Figura 15.
[0091] S1170. Determinar um plano de consulta de custo igual para o plano de consulta original de acordo com a informação básica do predicado de junção reestruturado no plano de consulta original e a condição de restrição do predicado de junção reestruturado no plano de consulta original.
[0092] Opcionalmente, um conjunto de planos de consulta de custo igual para o plano de consulta original pode ser determinado de acordo com a informação básica do predicado de junção reestruturado no plano de consulta original e a condição de restrição do predicado de junção reestruturado no plano de consulta original. Um plano de consulta no conjunto de planos de consulta de custo igual é o plano de consulta de custo igual para o plano de consulta original.
[0093] Neste passo, opcionalmente, se o conjunto de planos de consulta candidatos para o plano de consulta original é obtido em um modo de enumeração, o conjunto de planos de consulta de custo igual pode ser determinado a partir do conjunto plano de consulta candidato, isto é, se cada plano de consulta candidato é um plano de consulta de custo igual para o plano de consulta original é determinado. Se não houver nenhum conjunto de planos de consulta candidatos, um plano de consulta candidato poderá ser obtido do plano de consulta original a cada vez e se o plano de consulta candidato é um plano de consulta de custo igual para o plano de consulta original é determinado.
[0094] Especificamente, é determinado que um primeiro plano de consulta candidato P’ é um plano de consulta de custo igual para o plano de consulta original P se P’ satisfizer as seguintes condições: um tipo de junção de cada primeira operação de junção de P’ é uma junção interna, a primeira operação de junção é uma operação de junção tendo pelo menos dois predicados de junção reestruturados e um tipo de junção de uma operação de junção que está em P e que é correspondente a cada predicado de junção nos pelo menos dois predicados de junção reestruturados é uma junção interna (esta condição pode ser referida como consistência de tipo de junção); para cada predicado de junção p em cada operação de junção ob’ em P’, quando ob’ não satisfaz a regra de troca de nível operacional, T1(p) em P’ e T1(p) em P são iguais e Tr(p) em P’ e Tr(p) em P são iguais, onde T1(p) indica uma tabela de entrada de p incluída em uma sub-árvore esquerda de uma operação de junção em que p está localizado e Tr(p) indica uma tabela de entrada de p incluída em uma sub-árvore direita da operação de junção em que p está localizado; quando ob’ satisfaz a regra de troca de nível operacional, T1(p) em P’ e T1(p) em P são iguais, e Tr(p) em P’ e Tr(p) em P são iguais; ou T1(p) em P’ e Tr(p) em P são iguais, e Tr(p) em P’ e T1(p) em P são iguais (esta condição pode ser referida como consistência de informação de tabela de entrada); e para cada predicado de junção p em cada operação de junção ob’ em P’, p satisfaz uma condição de restrição para p em P (esta condição pode ser referida como consistência de condição de restrição), e se o conjunto de planos de consulta candidatos para o plano de consulta original é obtido anteriormente, o primeiro plano de consulta candidato P’ aqui pode ser qualquer plano de consulta candidato no conjunto de planos de consulta candidato.
[0095] Todos os planos de consulta de custo igual para o plano de consulta original podem ser obtidos na maneira anterior. Ou seja, o conjunto de planos de consulta de custo igual obtido nesta modalidade da presente invenção é o mais completo.
[0096] S1180. Realizar consulta de acordo com o plano de consulta de custo igual para o plano de consulta original.
[0097] Opcionalmente, um plano de consulta pode ser selecionado no conjunto de planos de consulta de custo igual para executar a consulta. Ou seja, o plano de consulta é selecionado a partir do conjunto de planos de consulta de custo igual obtido anteriormente para executar a consulta. Especificamente, um plano de consulta com custos mínimos pode ser selecionado conjunto de planos de consulta de custo igual para executar a consulta e um resultado de consulta é retornado.
[0098] Porque o conjunto de planos de consulta de custo igual nesta modalidade da presente invenção inclui todos os planos de consulta de custo igual para o plano de consulta original, um plano de consulta ótimo pode ser selecionado nesta modalidade da presente invenção. Considerando que diferentes planos de consulta diferem em desempenho por dezenas ou até mesmo centenas de páginas, o desempenho da consulta de dados pode ser significativamente melhorado utilizando o método nesta modalidade da presente invenção.
[0099] Portanto, de acordo com o método de consulta de dados nesta modalidade da presente invenção, o plano de consulta de custo igual para o plano de consulta original é determinado de acordo com a informação básica do predicado e a condição de restrição obtida com base na regra de operação de junção, e todos os planos de consulta de custo igual para o plano de consulta original podem ser obtidos, de modo que o desempenho de consulta de dados possa ser melhorado.
[00100] O conjunto de planos de consulta de custo igual nesta modalidade da presente invenção inclui todos os planos de consulta que podem ser obtidos do plano de consulta original por meio de transformação usando pelo menos uma das quatro regras de nível operacional e três regras de nível de predicado. O método para determinar o plano de consulta de custo igual para o plano de consulta original é dado nos passos anteriores S1140 a S1170. O seguinte descreve o método para determinar o plano de consulta de custo igual para o plano de consulta original em detalhes com referência a um exemplo específico. Deve ser notado que isto se destina meramente a ajudar uma pessoa perita na arte a compreender melhor esta modalidade da presente invenção, mas não pretende limitar o âmbito desta modalidade da presente invenção.
[00101] A Figura 16 mostra três planos de consulta P, P’ e P”. OT representa uma operação de junção interna, 0 representa um anti-junção esquerda, P é um plano de consulta original, e P’ e P” são planos de consulta candidatos. Se os planos de consulta candidatos P’ e P” são equivalentes ao plano de consulta original P pode ser determinado da seguinte maneira.
[00102] 1. Predicados de junção no plano de consulta original P são reestruturados, e informação básica de predicados de junção reestruturados são determinados, onde P inclui três operações de junção (ou seja, ^:<.:AP34, Ep23, e »pi2) no total. Para a operação de junção 'A::4A;:3;, porque a operação de junção é uma junção interna, predicados da operação de junção precisam ser transformados em uma forma normal conjuntiva (uma forma normal conjuntiva de p14Ap34 é p14Ap34) . Porque as tabelas de entrada de p14 e p34 são diferentes, p14 e p34 não podem ser combinadas em um predicado. Para uma operação de junção Ep23, porque a operação de junção não é uma junção interna, um predicado (isto é, p23) da operação de junção é considerado como um predicado. Da mesma forma, um predicado de uma operação de junção 'A::.- ainda é p12 após ser reestruturado. Depois dos predicados serem reestruturados, a informação básica dos predicados reestruturados é determinada. A Tabela 7 lista a informação básica dos predicados reestruturados em P.
[00103] 2. Condição de restrição dos predicados de junção reestruturados são determinados: A operação ^p14Ap3.4 tem duas operações descendentes (ou seja, 'A::.- e Ep23) e, portanto, se as duas operações descendentes e a operação satisfazem uma regra correspondente deve ser determinado para obter condições de restrição dos predicados p14 e p34. A operação descendente 'A A.- e a operação Wp14Ap34 satisfazem uma regra de combinação de nível operacional e uma regra de combinação de nível de predicado e satisfazem ainda mais uma regra de permutação à esquerda de nível operacional e uma regra de permutação à esquerda de nível de predicado e, portanto, nenhuma regra de restrição precisa ser adicionada. A operação descendente Ep23 e a operação AAA:-: não satisfazem a regra de combinação de nível operacional e a regra de combinação de nível predicado, e, portanto, uma regra R3 -> R2 precisa ser adicionada a p14 e p34. Em adição, Ep23 e a operação ^pA4Ap3 4 não satisfazem a regra de permutação à esquerda de nível de predicado, mas satisfazem a regra de permutação à esquerda de nível operacional, e, portanto, nenhuma regra de restrição precisa ser adicionada adicionalmente. De igual modo, condições de restrição de predicados das operações AA- e Ep23 e operações descendentes das operações AA- e Ep23 podem ser obtidas determinando se as operações AA.-- e Ep23 e as operações descendentes das operações ^pA< e Ep23 satisfazem uma regra correspondente. A Tabela 8 lista as condições de restrição dos predicados reestruturados no plano de consulta original P.
[00104] 3. Um plano de consulta de custo igual é determinado de acordo com a informação básica e as condições de restrição dos predicadoss: O plano de consulta candidato P’ não é equivalente ao plano de consulta original P porque P' viola consistência de tipo de junção (uma operação para um nó raiz de P’ inclui dois predicados, mas um tipo de operação do nó não é uma junção interna, e um tipo de junção de uma operação que está em P e que corresponde a p23 também não é uma junção interna). O plano de consulta candidato P” satisfaz a consistência de tipo de junção (uma operação »pi2Ap34 em P” é uma junção interna, e as operações na consulta original P que correspondem a p12 e p34 também são junções internas), consistência de informação de tabela de entrada (informação de tabela de entrada de um predicado em P” e informação de tabela de entrada do predicado na tabela são consistentes), e consistência de condição de restrição (o predicado em P” satisfaz a condição de restrição mostrada na tabela) e, portanto, P” é equivalente ao plano de consulta original P.
[00105] De acordo com o método para determinar o plano de consulta de custo igual nesta modalidade da presente invenção, todos os planos de consulta de custo igual para o plano de consulta original podem ser obtidos e o desempenho da consulta de dados pode ser melhorado.
[00106] Deve ser entendido que os números de sequência dos processos anteriores não significam sequências de execução em várias modalidades da presente invenção. As sequências de execução dos processos devem ser determinadas de acordo com as funções e a lógica interna dos processos e não devem ser interpretadas como qualquer limitação aos processos de implementação das modalidades da presente invenção.
[00107] O precedente descreveu em detalhe o método de consulta de dados de acordo com uma modalidade da presente invenção. O seguinte descreve um aparelho de consulta de dados e um sistema de banco de dados de acordo com uma modalidade da presente invenção. O aparelho de consulta de dados e o sistema de banco de dados podem executar o método de consulta de dados na modalidade anterior da presente invenção.
[00108] A Figura 17 mostra um diagrama de blocos esquemático de um aparelho de consulta de dados 1700 de acordo com uma modalidade da presente invenção. O aparelho 1700 pode ser um aparelho em um sistema de banco de dados, por exemplo, um otimizador de consulta. Como mostrado na Figura 17, o aparelho 1700 inclui: um módulo de recepção 1710, configurado para receber um pedido de consulta de dados; um módulo de geração 1720, configurado para gerar um plano de consulta original de acordo com o pedido de consulta de dados; um módulo de reestruturação 1740, configurado para reestruturar um predicado de junção no plano de consulta original; um módulo de determinação 1750, configurado para: determinar informação básica de um predicado de junção reestruturado no plano de consulta original; determinar, com base em uma regra de operação de junção, uma condição de restrição do predicado de junção reestruturado no plano de consulta original; e determinar um plano de consulta de custo igual para o plano de consulta original de acordo com a informação básica do predicado de junção reestruturado no plano de consulta original e a condição de restrição do predicado de junção reestruturado no plano de consulta original; e um módulo de consulta 1780, configurado para executar a consulta de acordo com o plano de consulta de custo igual para o plano de consulta original.
[00109] De acordo com o aparelho de consulta de dados nesta modalidade da presente invenção, o plano de consulta de custo igual para o plano de consulta original é determinado de acordo com a informação básica do predicado e a condição de restrição obtida com base na regra de operação de junção e todos planos de consulta de custo igual para o plano de consulta original podem ser obtidos, de modo que o desempenho de consulta de dados possa ser melhorado.
[00110] Opcionalmente, em uma modalidade da presente invenção, o módulo de determinação 1750 é especificamente configurado para determinar um conjunto de planos de consulta de custo igual para o plano de consulta original de acordo com a informação básica do predicado de junção reestruturado no plano de consulta original e a condição de restrição do predicado de junção reestruturado no plano de consulta original; e o módulo de consulta 1780 é especificamente configurado para selecionar um plano de consulta a partir do conjunto de planos de consulta de custo igual para executar a consulta.
[00111] Opcionalmente, em uma modalidade da presente invenção, o aparelho 1700 pode ainda incluir: um módulo de obtenção 1730, configurado para obter um conjunto de planos de consulta candidatos de acordo com o plano de consulta original; Onde neste caso, o módulo de determinação 1750 é especificamente configurado para determinar o conjunto de planos de consulta de custo igual a partir do conjunto de planos de consulta candidatos de acordo com a informação básica do predicado de junção reestruturado no plano de consulta original e a condição de restrição do predicado de junção reestruturado no plano de consulta original.
[00112] Opcionalmente, em uma modalidade da presente invenção, o módulo de reestruturação 1740 é especificamente configurado para: transformar todos os predicados de junção de uma operação de junção interna no plano de consulta original em uma forma normal conjuntiva, e combinar predicados de junção tendo uma mesma tabela de entrada; e combinar todos os predicados de junção de uma operação de junção não interna no plano de consulta original em um predicado de junção.
[00113] Opcionalmente, em uma modalidade da presente invenção, a informação básica do predicado de junção inclui uma tabela de entrada do predicado de junção, uma tabela de entrada do predicado de junção incluída em uma sub-árvore esquerda de uma operação de junção em que o predicado de junção é localizado, uma tabela de entrada do predicado de junção incluída em uma sub-árvore direita da operação de junção em que o predicado de junção está localizado, e um tipo de junção da operação de junção em que o predicado de junção está localizado.
[00114] Opcionalmente, em uma modalidade da presente invenção, a regra de operação de junção inclui uma regra de nível operacional e uma regra de nível de predicado, onde a regra de nível operacional inclui uma regra de troca de nível operacional: e1 oap12 e2 = e2 oap12 e1, uma regra de combinação de nível operacional: (e1 oap12 e2) obp23 e3 = e1 oap12 (e2 obp23 e3), uma regra permutação à esquerda de nível operacional: (e1 oap12 e2) obp13 e3 = (e1 obp13 e3) oap12 e2, e uma regra de permutação à direita de nível operacional: e1 oap13 (e2 obp23 e3) = e2 obp23 (e1 oap13 e3), a regra de nível de predicado inclui uma regra de combinação de nível de predicado: (e1 oapi2 e2) obpAp23 e3 = ei oapi2Ap (e2 obp23 e3) , uma regra de permutação à esquerda de nível de predicado: (e1 oap12 e2) obpi3Ap e3 = (ei obpi3 e3) oapi2Ap β2, e uma regra permutação à direita de nível de predicado: ei oa pApi3 (e2 obp23 e3) = e2 obpAp23 (ei oapi3 e3), ei é uma expressão de consulta, oa e ob são operações de junção, e pij é um predicado de junção entre ei e ej.
[00115] Opcionalmente, em uma modalidade da presente invenção, o módulo de determinação i750 é especificamente configurado para: percorrer, para cada nó de operação de junção oB no plano de consulta original, cada nó de operação de junção oA em uma sub-árvore que usa oB como um nó raiz; e quando oA está em uma sub-árvore esquerda da sub-árvore que usa oB como o nó raiz, se oA e oB não satisfazem a regra de combinação de nível operacional e a regra de combinação de nível de predicado, incluir uma primeira condição de restrição em cada predicado de junção reestruturado em oB; e se oA e oB não satisfazem a regra de permutação à esquerda de nível operacional e a regra de permutação à esquerda de nível de predicado, adicionar uma segunda condição de restrição a cada predicado de junção reestruturado em oB; quando oA está em uma sub-árvore direita da sub-árvore que usa oB como o nó raiz, se oA e oB não satisfazem a regra de combinação de nível operacional e a regra de combinação de nível de predicado, incluir uma segunda condição de restrição em cada predicado de junção reestruturado em oB; e se oA e oB não satisfazem a regra de permutação à direita de nível operacional e a regra de permutação à direita de nível de predicado, adicionar uma primeira condição de restrição a cada predicado de junção reestruturado em oB; Onde a primeira condição de restrição é T(e2) -> T(ei) AT (paiApa2A... Apan), a segunda condição de restrição é T(ei) -> T(e2) AT (pa1Apa2 A...Apan), T(e1) indica uma tabela de entrada original incluída em uma sub-árvore esquerda ei de uma sub- árvore que utiliza oA como um nó raiz, T(e2) indica um tabela de entrada original incluída na sub-árvore direita e2 da sub- árvore que usa oA como o nó raiz, T(paiApa2A... Apan) indica uma tabela de entrada original incluída em um predicado de junção reestruturado paiApa2A... Apan em oA e Ti -> T2 indica que se uma primeira sub-árvore que usa uma operação de junção em que um predicado de junção restrito por Ti -> T2 está localizado como um nó raiz inclui qualquer tabela de entrada em Ti, a primeira sub-árvore inclui todas as tabelas de entrada em T2.
[00116] Opcionalmente, em uma modalidade da presente invenção, o módulo de determinação i750 é especificamente configurado para: determinar que um primeiro plano de consulta candidato P’ é um plano de consulta de custo igual para o plano de consulta original P se P’ satisfizer as seguintes condições: um tipo de junção de cada primeira operação de junção de P’ é uma junção interna, a primeira operação de junção é uma operação de junção tendo pelo menos dois predicados de junção reestruturados e um tipo de junção de uma operação de junção que está em P e que é correspondente a cada predicado de junção nos pelo menos dois predicados de junção reestruturados é uma junção interna; para cada predicado de junção p em cada operação de junção ob’ em P’, quando ob’ não satisfaz a regra de troca de nível operacional, T1(p) em P’ e T1(p) em P são iguais e Tr(p) em P’ e Tr(p) em P são iguais, onde T1(p) indica uma tabela de entrada de p incluída em uma sub-árvore esquerda de uma operação de junção em que p está localizado e Tr(p) indica uma tabela de entrada de p incluída em uma sub-árvore direita da operação de junção em que p está localizado; quando ob’ satisfaz a regra de troca de nível operacional, T1(p) em P’ e T1(p) em P são iguais, e Tr(p) em P’ e Tr(p) em P são iguais; ou T1(p) em P’ e Tr(p) em P são iguais e Tr(p) em P’ e T1(p) em P são iguais; e para cada predicado de junção p em cada operação de junção ob’ em P’, p satisfaz uma condição de restrição para p em P.
[00117] Opcionalmente, em uma modalidade da presente invenção, o módulo de consulta 1780 é especificamente configurado para: selecionar um plano de consulta com custos mínimos a partir do conjunto de planos de consulta de custo igual para executar a consulta.
[00118] O aparelho de consulta de dados 1700 de acordo com esta modalidade da presente invenção pode corresponder a um corpo de execução do método de consulta de dados de acordo com as modalidades da presente invenção e às operações e/ou funções anteriores dos módulos no aparelho 1700 são utilizadas, respectivamente, para implementar os procedimentos correspondentes dos métodos anteriores. Por uma questão de brevidade, os detalhes não são descritos aqui novamente.
[00119] A Figura 18 mostra um diagrama de blocos esquemático de um sistema de banco de dados 1800 de acordo com uma modalidade da presente invenção. Como mostrado na Figura 18, o sistema de banco de dados 1800 inclui o aparelho de consulta de dados anterior 1700 de acordo com as modalidades da presente invenção e um banco de dados 1810. O sistema de banco de dados 1800 pode executar o método de consulta de dados de acordo com as modalidades da presente invenção, e realizar consulta no banco de dados 1810.
[00120] A Figura 19 mostra uma estrutura de um aparelho de consulta de dados de acordo com outra modalidade da presente invenção. O aparelho inclui pelo menos um processador 1902 (por exemplo, uma CPU), pelo menos uma interface de rede 1905 ou outra interface de comunicações, uma memória 1906 e pelo menos um barramento de comunicações 1903 que é configurado para implementar conexão e comunicação entre esses aparelhos. O processador 1902 é configurado para executar um módulo executável armazenado na memória 1906, tal como um programa de computador. A memória 1906 pode incluir uma memória de acesso aleatório de alta velocidade (RAM, read only memory) e pode ainda incluir uma memória não volátil (non-volatile memory) como, pelo menos, uma memória de disco magnético. Uma conexão de comunicação com pelo menos um outro elemento de rede é implementada usando pelo menos uma interface de rede 1905 (que pode ser com fio ou sem fio).
[00121] Em algumas implementações, a memória 1906 armazena um programa 19061, e o processador 1902 executa o programa 19061 para executar o método de consulta de dados de acordo com a modalidade anterior da presente invenção.
[00122] Deve ser entendido que, o termo "e/ou" nesta modalidade da presente invenção descreve apenas uma relação de associação para descrever objetos associados e representa que podem existir três relações. Por exemplo, A e/ou B podem representar os três casos a seguir: Apenas A existe, A e B existem e somente B existe. Além disso, o caractere "/" nesta especificação geralmente indica um relacionamento "ou" entre os objetos associados.
[00123] Uma pessoa com conhecimentos normais da técnica pode estar ciente de que, em combinação com os exemplos descritos nas modalidades divulgadas nesta especificação, unidades e passos de algoritmo podem ser implementados por hardware eletrônico, software de computador ou uma combinação dos mesmos. Para descrever claramente a permutabilidade entre o hardware e o software, o precedente descreveu geralmente composições e passos de cada exemplo de acordo com funções. Se as funções são executadas por hardware ou software, depende de determinadas aplicações e condições de restrição de projeto das soluções técnicas. Uma pessoa perita na técnica pode usar métodos diferentes para implementar as funções descritas para cada aplicação particular, mas não deve ser considerado que a implementação vai além do âmbito da presente invenção.
[00124] Pode ser claramente entendido por uma pessoa perita na arte que, com a finalidade de descrição conveniente e breve, para um processo de trabalho detalhado do sistema, aparelho e unidade anterior, pode ser feita referência a um processo correspondente nas modalidades de método anteriores, e detalhes não são descritos aqui novamente.
[00125] Nas várias modalidades fornecidas neste pedido, deve ser entendido que o sistema, aparelho e método divulgados podem ser implementados de outras maneiras. Por exemplo, a modalidade descrita do aparelho é meramente um exemplo. Por exemplo, a divisão de unidades é simplesmente divisão de funções lógicas e pode ser outra divisão na implementação real. Por exemplo, uma pluralidade de unidades ou componentes podem ser combinados ou integrados em outro sistema, ou alguns recursos podem ser ignorados ou não executados. Além disso, os acoplamentos mútuos ou acoplamentos diretos ou conexões de comunicação exibidos ou discutidos podem ser implementados através de algumas interfaces, acoplamentos indiretos ou conexões de comunicação entre os aparelhos ou unidades, ou conexões elétricas, conexões mecânicas ou conexões em outras formas.
[00126] As unidades descritas como partes separadas podem ou não estar fisicamente separadas, e as partes exibidas como unidades podem ou não ser unidades físicas, podem estar localizadas em uma posição, ou podem ser distribuídas em uma pluralidade de unidades de rede. Uma parte ou todas as unidades podem ser selecionadas de acordo com as necessidades reais para atingir os objetivos das soluções das modalidades da presente invenção.
[00127] Além disso, as unidades funcionais nas modalidades da presente invenção podem ser integradas em uma unidade de processamento, ou cada uma das unidades pode existir sozinha fisicamente, ou duas ou mais unidades são integradas em uma unidade. A unidade integrada pode ser implementada em uma forma de hardware ou pode ser implementada na forma de uma unidade funcional de software.
[00128] Quando a unidade integrada é implementada na forma de uma unidade funcional de software e vendida ou usada como um produto independente, a unidade integrada pode ser armazenada em um meio de armazenamento legível por computador. Com base nesse entendimento, as soluções técnicas da presente invenção, essencialmente, ou a parte que contribui para a técnica anterior, ou todas ou parte das soluções técnicas, podem ser implementadas na forma de um produto de software. O produto de software é armazenado em um meio de armazenamento e inclui várias instruções para instruir um dispositivo de computador (que pode ser um computador pessoal, um servidor ou um dispositivo de rede) para executar todos ou parte dos passos dos métodos descritos nas modalidades da presente invenção. O meio de armazenamento anterior inclui: qualquer meio que armazene código de programa, como uma unidade flash USB, um disco rígido removível, uma memória somente de leitura (ROM, read only memory), uma memória de acesso aleatório (RAM, Random Acess memory), um disco magnético ou um disco óptico.
[00129] As descrições precedentes são apenas modalidades específicas da presente invenção, mas não se destinam a limitar o âmbito de proteção da presente invenção. Qualquer modificação ou substituição prontamente determinada por um especialista na técnica dentro do âmbito técnico divulgado na presente invenção cairá no âmbito de proteção da presente invenção. Portanto, o escopo de proteção da presente invenção estará sujeito ao escopo de proteção das reivindicações.
Claims (12)
1. Método de consulta de dados, caracterizado pelo fato de que o método é executado por um otimizador de consulta de um sistema de banco de dados, o sistema de banco de dados é executado em um dispositivo de computador, o método compreende: receber (S1110) um pedido de consulta de dados a partir de um cliente; gerar (S1120) um plano de consulta original de acordo com o pedido de consulta de dados; reestruturar (S1140) um predicado de junção no plano de consulta original; determinar (S1150) informação básica de um predicado de junção reestruturado no plano de consulta original; determinar (S1160), com base em uma regra de operação de junção, uma condição de restrição do predicado de junção reestruturado no plano de consulta original, em que a regra de operação de junção compreende uma regra de nível operacional e uma regra de nível de predicado, em que a regra de nível operacional compreende uma regra de troca de nível operacional: e1 oap12 e2 = e2 oap12 e1, uma regra de combinação de nível operacional: (e1 oap12 e2) obp23 e3 = e1 oap12 (e2 obp23 e3), uma regra de permutação à esquerda de nível operacional: (e1 oap12 e2) obp13 e3 = (e1 obp13 e3) oap12 e2, e uma regra de permutação à direita de nível operacional: e1 oap13 (e2 obp23 e3) = e2 obp23 (e1 oap13 e3), a regra de nível de predicado compreende uma regra de combinação de nível de predicado: (ei oapi2 62) obpAp23 e3 = ei oapi2Ap (e2 obp23 es) , uma regra de permutação à esquerda de nível de predicado: (e1 oapi2 e2) obpi3Ap e3 = (ei obpi3 es) oapi2Ap e2, e uma regra de permutação à direita de nível de predicado: ei oapApis (e2 obp23 es) = e2 obpAp23 (ei oapis es), em que ei é uma expressão de consulta, oa e ob são operações de junção, e pij é um predicado de junção entre ei e ej; determinar (Sii70) um conjunto de planos de consulta de custo igual compreendendo uma pluralidade de planos de consulta de custo igual para o plano de consulta original de acordo com a informação básica do predicado de junção reestruturado no plano de consulta original e a condição de restrição do predicado de junção reestruturado no plano de consulta original; e realizar (Sii80) consulta em uma base de dados de um servidor de acordo com um plano de consulta de custo igual com custos mínimos selecionado a partir do conjunto de planos de consulta de custo igual compreendendo a pluralidade de planos de consulta de custo igual para o plano de consulta original.
2. Método, de acordo com a reivindicação i, caracterizado pelo fato de que, o método compreende ainda: obter (Siis0) um conjunto de planos de consulta candidatos de acordo com o plano de consulta original; e a determinação (Sii70) de um conjunto de planos de consulta de custo igual compreendendo uma pluralidade de planos de consulta de custo igual para o plano de consulta original de acordo com a informação básica do predicado de junção reestruturado no plano de consulta original e a condição de restrição do predicado de junção reestruturado no plano de consulta original compreende: determinar o conjunto de planos de consulta de custo igual a partir do conjunto de planos de consulta candidatos de acordo com a informação básica do predicado de junção reestruturado no plano de consulta original e a condição de restrição do predicado de junção reestruturado no plano de consulta original.
3. Método, de acordo com qualquer uma das reivindicações 1 a 2, caracterizado pelo fato de que, a reestruturação (S1140) de um predicado de junção no plano de consulta original compreende: transformar todos os predicados de junção de uma operação de junção interna no plano de consulta original em uma forma normal conjuntiva, e combinar predicados de junção tendo uma mesma tabela de entrada; e combinar todos os predicados de junção de uma operação de junção não interna no plano de consulta original em um predicado de junção.
4. Método, de acordo com qualquer uma das reivindicações 1 a 3, caracterizado pelo fato de que, a informação básica do predicado de junção compreende uma tabela de entrada do predicado de junção, uma tabela de entrada do predicado de junção que é compreendida em uma sub-árvore esquerda de uma operação de junção em que o predicado de junção está localizado, uma tabela de entrada do predicado de junção que é compreendido em uma sub-árvore direita da operação de junção em que o predicado de junção está localizado, e um tipo de junção da operação de junção em que o predicado de junção está localizado.
5. Método, de acordo com qualquer uma das reivindicações 1 a 4, caracterizado pelo fato de que, a determinação (S1170) de um conjunto de planos de consulta de custo igual compreendendo uma pluralidade de planos de consulta de custo igual para o plano de consulta original de acordo com a informação básica do predicado de junção reestruturado no plano de consulta original e a condição de restrição do predicado de junção reestruturado no plano de consulta original compreende: determinar que um primeiro plano de consulta candidato P’ é um plano de consulta de custo igual para o plano de consulta original P se P’ satisfizer as seguintes condições: um tipo de junção de cada primeira operação de junção de P’ é uma junção interna, a primeira operação de junção é uma operação de junção tendo pelo menos dois predicados de junção reestruturados e um tipo de junção de uma operação de junção que está em P e que é correspondente a cada predicado de junção nos pelo menos dois predicados de junção reestruturados é uma junção interna; para cada predicado de junção p em cada operação de junção ob’ em P’, quando ob’ não satisfaz a regra de troca de nível operacional, T1(p) em P’ e T1(p) em P são iguais, e Tr(p) em P’ e Tr(p) em P são iguais, em que T1(p) indica uma tabela de entrada de p compreendida em uma sub-árvore esquerda de uma operação de junção em que p está localizado, e Tr(p) indica uma tabela de entrada de p compreendida em uma sub- árvore direita da operação de junção em que p está localizado; ou quando ob’ satisfaz a regra de troca de nível operacional, T1(p) em P’ e T1(p) em P são iguais, e Tr(p) em P’ e Tr(p) em P são iguais; ou T1(p) em P’ e Tr(p) em P são iguais e Tr(p) em P’ e T1(p) em P são iguais; e para cada predicado de junção p em cada operação de junção ob’ em P’, p satisfaz uma condição de restrição para p em P.
6. Aparelho de consulta de dados (1700), caracterizado pelo fato de que compreende: um módulo de recepção (1710), configurado para receber um pedido de consulta de dados a partir de um cliente; um módulo de geração (1720), configurado para gerar um plano de consulta original de acordo com o pedido de consulta de dados; um módulo de reestruturação (1740), configurado para reestruturar um predicado de junção no plano de consulta original; um módulo de determinação (1750), configurado para: determinar informação básica de um predicado de junção reestruturado no plano de consulta original; determinar, com base em uma regra de operação de junção, uma condição de restrição do predicado de junção reestruturado no plano de consulta original; e determinar um conjunto de planos de consulta de custo igual compreendendo uma pluralidade de planos de consulta de custo igual para o plano de consulta original de acordo com a informação básica do predicado de junção reestruturado no plano de consulta original e a condição de restrição do predicado de junção reestruturado no plano de consulta original, em que a regra de operação de junção compreende uma regra de nível operacional e uma regra de nível de predicado, em que a regra de nível operacional compreende uma regra de troca de nível operacional: e1 oap12 e2 = e2 oap12 e1, uma regra de combinação de nível operacional: (e1 oap12 e2) obp23 e3 = e1 oap12 (e2 obp23 e3), uma regra de permutação à esquerda de nível operacional: (e1 oap12 e2) obp13 e3 = (e1 obp13 e3) oap12 e2, e uma regra de permutação à direita de nível operacional: e1 oap13 (e2 obp23 e3) = e2 obp23 (e1 oap13 e3), a regra de nível de predicado compreende uma regra de combinação de nível de predicado: (ei oapi2 es) obpAp23 e3 = ei oapi2Ap (es obp23 es), uma regra de permutação à esquerda de nível de predicado: (e1 oapi2 es) obpi3Ap es = (ei obpis es) oapi2Ap es, e uma regra de permutação à direita de nível de predicado: ei oapApis (es obp23 es) = e2 obpAp2s (ei oapis es), em que ei é uma expressão de consulta, oa e ob são operações de junção, e pij é um predicado de junção entre ei e ej; e um módulo de consulta (i780), configurado para executar a consulta em uma base de dados de um servidor de acordo com um plano de consulta de custo igual com custos mínimos selecionado a partir do conjunto de planos de consulta de custo igual compreendendo a pluralidade de planos de consulta de custo igual para o plano de consulta original.
7. Aparelho, de acordo com a reivindicação 6, caracterizado pelo fato de que que, o aparelho compreende ainda: um módulo de obtenção (i7s0), configurado para obter um conjunto de planos de consulta candidatos de acordo com o plano de consulta original; em que o módulo de determinação (i750) é especificamente configurado para determinar o conjunto de planos de consulta de custo igual a partir do conjunto de planos de consulta candidatos de acordo com a informação básica do predicado de junção reestruturado no plano de consulta original e a condição de restrição do predicado de junção reestruturado no plano de consulta original.
8. Aparelho, de acordo com qualquer uma das reivindicações 6 a 7, caracterizado pelo fato de que, o módulo de reestruturação (1740) é especificamente configurado para: transformar todos os predicados de junção de uma operação de junção interna no plano de consulta original em uma forma normal conjuntiva, e combinar predicados de junção tendo uma mesma tabela de entrada; e combinar todos os predicados de junção de uma operação de junção não interna no plano de consulta original em um predicado de junção.
9. Aparelho, de acordo com qualquer uma das reivindicações 6 a 8, caracterizado pelo fato de que, a informação básica do predicado de junção compreende uma tabela de entrada do predicado de junção, uma tabela de entrada do predicado de junção que é compreendida em uma sub-árvore esquerda de uma operação de junção na qual o predicado de junção está localizado, uma tabela de entrada do predicado de junção que está compreendida em uma sub- árvore direita da operação de junção em que o predicado de junção está localizado, e um tipo de junção da operação de junção na qual o predicado de junção está localizado.
10. Aparelho, de acordo com qualquer uma das reivindicações 6 a 9, caracterizado pelo fato de que o módulo de determinação (1750) é configurado especificamente para: determinar que um primeiro plano de consulta candidato P’ é um plano de consulta de custo igual para o plano de consulta original P se P’ satisfizer as seguintes condições: um tipo de junção de cada primeira operação de junção de P’ é uma junção interna, a primeira operação de junção é uma operação de junção tendo pelo menos dois predicados de junção reestruturados e um tipo de junção de uma operação de junção que está em P e que é correspondente a cada predicado de junção nos pelo menos dois predicados de junção reestruturados é uma junção interna; para cada predicado de junção p em cada operação de junção ob’ em P’, quando ob’ não satisfaz a regra de troca de nível operacional, T1(p) em P’ e T1(p) em P são iguais e Tr(p) em P’ e Tr(p) em P são iguais, em que T1(p) indica uma tabela de entrada de p compreendida em uma sub-árvore esquerda de uma operação de junção em que p está localizado e Tr(p) indica uma tabela de entrada de p compreendida em uma sub- árvore direita da operação de junção em que p está localizado; ou quando ob’ satisfaz a regra de troca de nível operacional, T1(p) em P’ e T1(p) em P são iguais, e Tr(p) em P’ e Tr(p) em P são iguais; ou T1(p) em P’ e Tr(p) em P são iguais e Tr(p) em P’ e T1(p) em P são iguais; e para cada predicado de junção p em cada operação de junção ob’ em P’, p satisfaz uma condição de restrição para p em P.
11. Aparelho de consulta de dados, caracterizado pelo fato de que que, o aparelho compreende um processador e uma memória, em que a memória é configurada para armazenar uma instrução, o processador é configurado para executar a instrução, e o processador executa o método conforme definido em qualquer uma das reivindicações 1 a 5, quando o processador realiza a instrução.
12. Sistema de banco de dados, caracterizado pelo fato de que compreende o aparelho de consulta de dados (1700) conforme definido em qualquer uma das reivindicações 6 a 10 e um banco de dados (1810).
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2015/095909 WO2017091925A1 (zh) | 2015-11-30 | 2015-11-30 | 数据查询的方法、装置和数据库系统 |
Publications (3)
Publication Number | Publication Date |
---|---|
BR112018010857A2 BR112018010857A2 (pt) | 2018-11-21 |
BR112018010857A8 BR112018010857A8 (pt) | 2022-11-29 |
BR112018010857B1 true BR112018010857B1 (pt) | 2023-02-07 |
Family
ID=58796008
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
BR112018010857-0A BR112018010857B1 (pt) | 2015-11-30 | 2015-11-30 | Método e aparelho de consulta de dados, e sistema de banco de dados |
Country Status (8)
Country | Link |
---|---|
US (1) | US10885034B2 (pt) |
EP (1) | EP3373154A4 (pt) |
JP (1) | JP6628455B2 (pt) |
KR (1) | KR102138627B1 (pt) |
CN (1) | CN107251013B (pt) |
BR (1) | BR112018010857B1 (pt) |
SG (1) | SG11201804544QA (pt) |
WO (1) | WO2017091925A1 (pt) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6707797B2 (ja) * | 2017-03-29 | 2020-06-10 | 株式会社日立製作所 | データベース管理システム及びデータベース管理方法 |
CN108664516A (zh) * | 2017-03-31 | 2018-10-16 | 华为技术有限公司 | 查询优化方法及相关装置 |
US10885035B2 (en) * | 2019-04-26 | 2021-01-05 | Advanced New Technologies Co., Ltd. | Method and system for outer join of database tables |
CN111949686B (zh) * | 2019-05-14 | 2024-05-14 | 阿里巴巴集团控股有限公司 | 一种数据处理方法、装置及设备 |
US20200409948A1 (en) * | 2019-06-26 | 2020-12-31 | International Business Machines Corporation | Adaptive Query Optimization Using Machine Learning |
CN111104426B8 (zh) * | 2019-11-22 | 2024-04-23 | 北京傲速科技有限公司 | 一种数据查询方法及系统 |
CN111151858B (zh) * | 2020-01-13 | 2021-10-15 | 吉利汽车研究院(宁波)有限公司 | 一种点焊焊接参数应用系统及设置方法 |
KR102125010B1 (ko) * | 2020-03-17 | 2020-06-19 | 김명훈 | 데이터베이스 전환 분석 시스템 및 방법 |
CN114168620B (zh) * | 2022-02-11 | 2022-05-17 | 北京奥星贝斯科技有限公司 | 执行计划的处理方法及装置 |
CN115964374B (zh) * | 2023-02-22 | 2023-09-26 | 深圳计算科学研究院 | 一种基于预计算场景的查询处理方法及其装置 |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5819255A (en) | 1996-08-23 | 1998-10-06 | Tandem Computers, Inc. | System and method for database query optimization |
JP4552242B2 (ja) * | 1999-10-06 | 2010-09-29 | 株式会社日立製作所 | 仮想表インタフェースと該インタフェースを用いた問合せ処理システム及び方法 |
JP3515050B2 (ja) * | 2000-07-07 | 2004-04-05 | 三菱電機株式会社 | データベース演算処理装置 |
US6665663B2 (en) | 2001-03-15 | 2003-12-16 | International Business Machines Corporation | Outerjoin and antijoin reordering using extended eligibility lists |
US6598044B1 (en) * | 2002-06-25 | 2003-07-22 | Microsoft Corporation | Method for choosing optimal query execution plan for multiple defined equivalent query expressions |
US7617179B2 (en) * | 2002-06-29 | 2009-11-10 | Ianywhere Solutions, Inc. | System and methodology for cost-based subquery optimization using a left-deep tree join enumeration algorithm |
US8086598B1 (en) * | 2006-08-02 | 2011-12-27 | Hewlett-Packard Development Company, L.P. | Query optimizer with schema conversion |
US7546311B2 (en) * | 2006-11-30 | 2009-06-09 | Ianywhere Solutions, Inc. | Optimization of left and right outer join operations in database management systems |
CN101339551B (zh) * | 2007-07-05 | 2013-01-30 | 日电(中国)有限公司 | 自然语言查询需求扩展设备及其方法 |
US8224806B2 (en) * | 2009-07-31 | 2012-07-17 | Hewlett-Packard Development Company, L.P. | Selectivity-based optimized-query-plan caching |
US8589382B2 (en) * | 2011-12-29 | 2013-11-19 | International Business Machines Corporation | Multi-fact query processing in data processing system |
US20130297586A1 (en) * | 2012-05-07 | 2013-11-07 | International Business Machines Corporation | Optimizing queries using predicate mappers |
CN103714058B (zh) * | 2012-09-28 | 2017-05-17 | Sap欧洲公司 | 用于数据库查询优化的方法以及使用该方法的系统 |
CN104216891B (zh) * | 2013-05-30 | 2018-02-02 | 国际商业机器公司 | 关系型数据库中的查询语句的优化方法和设备 |
CN103678589B (zh) * | 2013-12-12 | 2017-02-01 | 用友网络科技股份有限公司 | 一种基于等价类的数据库内核查询优化方法 |
US9411806B2 (en) * | 2014-05-06 | 2016-08-09 | International Business Machines Corporation | Optimizing relational database queries with multi-table predicate expressions |
US10133778B2 (en) * | 2015-11-20 | 2018-11-20 | Sap Se | Query optimization using join cardinality |
-
2015
- 2015-11-30 EP EP15909443.2A patent/EP3373154A4/en not_active Ceased
- 2015-11-30 JP JP2018527925A patent/JP6628455B2/ja active Active
- 2015-11-30 WO PCT/CN2015/095909 patent/WO2017091925A1/zh active Application Filing
- 2015-11-30 SG SG11201804544QA patent/SG11201804544QA/en unknown
- 2015-11-30 KR KR1020187017354A patent/KR102138627B1/ko active IP Right Grant
- 2015-11-30 CN CN201580005935.1A patent/CN107251013B/zh active Active
- 2015-11-30 BR BR112018010857-0A patent/BR112018010857B1/pt active IP Right Grant
-
2018
- 2018-05-30 US US15/992,925 patent/US10885034B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
KR20180083927A (ko) | 2018-07-23 |
JP2019504390A (ja) | 2019-02-14 |
US20180276277A1 (en) | 2018-09-27 |
WO2017091925A1 (zh) | 2017-06-08 |
CN107251013A (zh) | 2017-10-13 |
EP3373154A1 (en) | 2018-09-12 |
BR112018010857A2 (pt) | 2018-11-21 |
JP6628455B2 (ja) | 2020-01-08 |
KR102138627B1 (ko) | 2020-07-28 |
EP3373154A4 (en) | 2018-09-12 |
US10885034B2 (en) | 2021-01-05 |
BR112018010857A8 (pt) | 2022-11-29 |
CN107251013B (zh) | 2020-02-14 |
SG11201804544QA (en) | 2018-06-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
BR112018010857B1 (pt) | Método e aparelho de consulta de dados, e sistema de banco de dados | |
US8713038B2 (en) | Integrating map-reduce into a distributed relational database | |
Hueske et al. | Opening the black boxes in data flow optimization | |
US8214356B1 (en) | Apparatus for elastic database processing with heterogeneous data | |
US10129256B2 (en) | Distributed storage and distributed processing query statement reconstruction in accordance with a policy | |
US10380186B2 (en) | Virtual topological queries | |
ES2636758T3 (es) | Procedimiento implementado por ordenador para mejorar la ejecución de consulta en bases de datos relacionales normalizadas en el nivel 4 y superior | |
US9411867B2 (en) | Method and apparatus for processing database data in distributed database system | |
US8732143B2 (en) | Reducing locking during database transactions | |
Hertzschuch et al. | Simplicity Done Right for Join Ordering. | |
US20090216809A1 (en) | Method for updating databases | |
Mutharaju et al. | D-SPARQ: distributed, scalable and efficient RDF query engine | |
JPWO2017013701A1 (ja) | 計算機システム及びデータベース管理方法 | |
WO2016191995A1 (zh) | 一种分布式数据库中关联表分区的方法和设备 | |
Farnan et al. | PAQO: Preference-aware query optimization for decentralized database systems | |
JP2018509666A (ja) | Sql実行計画を決定するための方法および装置 | |
US9208234B2 (en) | Database row access control | |
US11042516B2 (en) | Flexible schema table | |
JP2016040714A (ja) | ソフトウェアアプリケーションを構成するための方法および装置 | |
Huang et al. | Density-optimized intersection-free mapping and matrix multiplication for join-project operations | |
US20220318054A1 (en) | Dependency-based scheduling for concurrent online analytics | |
CN105518664B (zh) | 管理数据库节点 | |
US20240012814A1 (en) | Runtime statistics feedback for query plan cost estimation | |
US11163764B2 (en) | Predictive data distribution for parallel databases to optimize storage and query performance | |
JP2017068758A (ja) | 検索制御プログラム、検索制御方法および検索サーバ装置 |
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] | ||
B09A | Decision: intention to grant [chapter 9.1 patent gazette] | ||
B15K | Others concerning applications: alteration of classification |
Free format text: A CLASSIFICACAO ANTERIOR ERA: G06F 17/30 Ipc: G06F 16/2453 (2006.01) |
|
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 30/11/2015, OBSERVADAS AS CONDICOES LEGAIS |