Este tópico apresenta uma análise detalhada das consultas baseadas na chave primária de tabelas de dados, das consultas baseadas em índices secundários e das consultas baseadas em índices de pesquisa. Também fornece sugestões sobre como selecionar entre um índice secundário e um índice de pesquisa.
Informações gerais
Para consultar dados em uma tabela de dados do Tablestore, é necessário especificar uma chave primária ou um intervalo de valores de chave primária. A operação GetRow consulta uma linha com base na chave primária especificada, e a operação GetRange consulta as linhas cujos valores de chave primária estão dentro do intervalo especificado. O recurso de filtro consulta dados em colunas de atributo. Quando as colunas de atributo contêm um grande volume de dados, a eficiência de consulta do recurso de filtro é baixa, podendo exigir até uma varredura completa da tabela. Para mais informações, consulte Leitura de dados.
Além da eficiência de consulta insatisfatória do recurso de filtro para grandes volumes de dados, as consultas baseadas na chave primária das tabelas de dados podem não atender às suas necessidades de negócio em cenários reais. Para facilitar a consulta de dados, o Tablestore oferece índices secundários e índices de pesquisa.
Visão geral
O Tablestore oferece índices secundários e índices de pesquisa para acelerar as consultas de dados.
Consultas baseadas em índices secundários
Ao criar um índice secundário para uma tabela de dados, o Tablestore cria uma tabela de índice correspondente. O modelo da tabela de índice é idêntico ao modelo da tabela de dados. A tabela de índice oferece um esquema personalizado para melhorar a eficiência de consulta com base no seu cenário de negócio. Para mais informações, consulte Visão geral.
Uma tabela de índice permite consultar dados com base na chave primária especificada, no intervalo de valores de chave primária ou no intervalo de prefixo das colunas de chave primária. O Tablestore adiciona automaticamente as colunas de chave primária de uma tabela de dados que não são especificadas como colunas de chave de índice à tabela de índice como colunas de chave primária. Isso garante que o valor de chave primária de cada linha na tabela de índice seja único.
No Tablestore, os índices secundários são classificados em índices secundários globais e índices secundários locais. Ao usar o recurso de índice secundário global, o Tablestore sincroniza automaticamente os dados das colunas indexadas e das colunas de chave primária de uma tabela de dados para a tabela de índice correspondente em modo assíncrono. A latência de sincronização é de apenas alguns milissegundos.
Para atender aos requisitos de consistência forte nas consultas de dados, o Tablestore oferece o recurso de índice secundário local. Ao usar o recurso de índice secundário local, o Tablestore sincroniza automaticamente os dados das colunas indexadas e das colunas de chave primária de uma tabela de dados para a tabela de índice correspondente em modo síncrono. Após a gravação dos dados na tabela de dados, é possível consultá-los imediatamente na tabela de índice.
A tabela a seguir descreve as diferenças entre os índices secundários globais e locais em termos do modo de sincronização, dos requisitos para a primeira coluna de chave primária, da latência de sincronização e da consistência de leitura.
|
Item |
Índice secundário global |
Índice secundário local |
|
Modo de sincronização |
Modo assíncrono |
Modo síncrono |
|
Requisitos para a primeira coluna de chave primária |
A primeira coluna de chave primária de um índice secundário global pode ser qualquer coluna de chave primária ou coluna predefinida da tabela de dados para a qual o índice secundário é criado. |
A primeira coluna de chave primária de um índice secundário local deve ser igual à primeira coluna de chave primária da tabela de dados para a qual o índice secundário é criado. |
|
Latência de sincronização |
Poucos milissegundos |
Tempo real |
|
Consistência de leitura |
Consistência eventual |
Consistência forte |
Consultas baseadas em índices de pesquisa
Os índices de pesquisa oferecem suporte a vários esquemas de índice, como índices invertidos e índices espaço-temporais. Diferentemente das consultas baseadas na chave primária de tabelas de dados e das consultas baseadas em índices secundários, as consultas baseadas em índices de pesquisa suportam vários métodos de consulta, como consulta booleana, consulta difusa, consulta geográfica e pesquisa de texto completo. Para mais informações, consulte Visão geral.
Os índices de pesquisa oferecem mais recursos do que os índices secundários. Com um índice de pesquisa, é possível especificar diversas condições para consultar dados de múltiplas dimensões.
Selecionar um índice
Verifique se é necessário usar índices com base nas condições de consulta.
Na maioria dos casos, não é necessário usar índices nos seguintes cenários de consulta:
Quando as consultas baseadas na chave primária especificada ou no intervalo de valores de chave primária atendem às suas necessidades de negócio, não é necessário criar um índice. Para mais informações, consulte Leitura de dados.
Para filtrar dados em um intervalo com pequeno volume de dados, ou quando consultas frequentes não são necessárias, use o recurso de filtro. Não é necessário criar um índice. Para mais informações, consulte Configurar um filtro.
Quando consultas complexas frequentes não são necessárias e a latência não é uma preocupação, execute instruções SQL para consultar dados no Tablestore. Para mais informações, consulte Consultar dados.
Se for necessário usar um índice, selecione um índice secundário ou de pesquisa com base nas suas necessidades de negócio.
Um índice secundário é uma tabela de índice semelhante a uma tabela de dados. Os índices secundários fornecem um modo de distribuição de dados que utiliza um método específico para organizar as colunas de chave primária das tabelas de índice. Cada índice suporta uma condição de consulta. Os índices secundários organizam dados com base na condição de consulta especificada para melhorar o desempenho. Uma tabela de índice suporta o mesmo volume de dados que uma tabela de dados. Considere o hashing ao especificar a chave primária dos índices secundários.
Um índice de pesquisa contém uma combinação de esquemas. Cada coluna oferece suporte a esquemas como índices invertidos. É possível ordenar os resultados de consulta por coluna. Um único índice de pesquisa suporta múltiplas condições de consulta, eliminando a necessidade de criar vários índices de pesquisa para diferentes condições.
Em comparação com os índices secundários, os índices de pesquisa suportam vários métodos de consulta, como consulta booleana, consulta difusa, pesquisa de texto completo e consulta geográfica. Os índices de pesquisa também suportam múltiplos esquemas para acelerar a filtragem de dados, porém são menos eficientes que os índices secundários na leitura de dados em ordem fixa. O desempenho de consulta dos índices de pesquisa varia de acordo com o tamanho da tabela de dados. Para tabelas de dados com dezenas de bilhões de linhas, recomenda-se usar a chave de roteamento para fragmentar os dados. A chave de roteamento também permite reduzir o volume de dados em uma consulta.