Este tópico descreve como consultar uma tabela lógica.
Contexto
Após implementar o sharding de banco de dados e tabelas, você precisa de um método simples para consultar dados distribuídos em várias tabelas físicas. Uma tabela lógica oferece uma visualização unificada que permite consultar os dados fragmentados como se estivessem em uma única tabela. Isso elimina a complexidade de localizar manualmente o banco de dados e a tabela corretos para cada consulta.
O Data Management (DMS) viabiliza essas consultas transparentes ao agregar dados de
logical databaseselogical tables.
Procedimento
-
Selecione o
logical databasepara consultar e exportar dados. Antes de configurar um algoritmo de roteamento, apenas as instruçõesSELECT,UPDATEeDELETEsão permitidas. A instruçãoINSERTnão é compatível neste estágio.Se você executar uma instrução
INSERTnesta etapa, o sistema retornará o seguinte erro:[Error] dsql.DSQLException: No shard route found, execution failed. Make sure a routing algorithm is configured for the logical table. -
Configure um algoritmo de roteamento. Este exemplo utiliza módulo simples. Para mais informações sobre como configurar algoritmos complexos, consulte Configurar um algoritmo de roteamento.
Na caixa de diálogo New algorithm, defina Algorithm type como Single-column modulo, Modulo type como Simple modulo e Routing field como user_id (bigint). Defina Modulo como
128e clique em Save. -
Execute uma instrução
INSERT.Por exemplo, execute
INSERT INTO scend_test(gmt_create,gmt_modified,user_id) VALUES (now(),now(),2);para inserir um registro na tabela scend_test. Uma marca de verificação verde aparece na área de resultados após a execução bem-sucedida. -
Faça uma consulta rápida.
Com o algoritmo de roteamento configurado, consulte uma tabela shard física específica usando o campo de roteamento na condição de busca. Isso evita o cálculo manual e a alternância entre bancos de dados e tabelas físicas. No Console SQL do DMS, execute a instrução SQL SELECT * FROM
scend_testWHEREuser_id= 4, que utiliza o campo de roteamentouser_idcomo condição. O log de execução mostra que o DMS roteou a tabela lógicascend_testpara a tabela shard físicapoc_dev.scend_test_000.O resultado da consulta inclui uma coluna adicional que indica o banco de dados e a tabela de origem. Clique no valor dessa coluna para navegar diretamente para a tabela shard física correspondente, com a instrução SQL e as condições de consulta já preenchidas. Por exemplo, ao executar SELECT * FROM
scend_testWHEREuser_id= 1, a coluna de localização de dados no resultado exibepoc_dev.scend_test_000. Isso confirma que o DMS roteou os dados para a tabela shard física adequada e retornou um registro correspondente.-
Também é possível executar consultas sem incluir o campo de roteamento como condição. Essa abordagem faz uma varredura completa em todas as tabelas shard físicas, sendo útil para operações como estatísticas resumidas.
NotaSintaxes como
GROUP BYtambém são compatíveis. A maioria das sintaxes SQL é consistente com o banco de dados source, mas subconsultas não têm suporte atualmente.Por exemplo, se você executar SELECT COUNT(*) FROM
scend_test; no Console SQL, o resultado será 1, indicando que a tabela contém um registro.