Este tema describe cómo consultar una tabla lógica.
Contexto
Tras implementar la fragmentación de bases de datos y tablas, se requiere un método sencillo para consultar los datos distribuidos en varias tablas físicas. Una tabla lógica proporciona una vista unificada que permite consultar los datos fragmentados como si estuvieran en una sola tabla, lo cual abstrae la complejidad de localizar manualmente la base de datos y la tabla correctas para cada consulta.
Data Management (DMS) habilita estas consultas transparentes mediante la agregación de datos de
logical databasesylogical tables.
Procedimiento
-
Seleccione la
logical databaseque desea consultar y exportar datos. Antes de configurar un algoritmo de enrutamiento, solo puede ejecutar instruccionesSELECT,UPDATEyDELETE. La instrucciónINSERTno es compatible.Si ejecuta una instrucción
INSERTen esta etapa, el sistema devuelve el siguiente error:[Error] dsql.DSQLException: No shard route found, execution failed. Make sure a routing algorithm is configured for the logical table. -
Configure un algoritmo de enrutamiento. Este ejemplo utiliza módulo simple. Para obtener más información sobre la configuración de algoritmos complejos, consulte Configure a routing algorithm.
En el cuadro de diálogo New algorithm, establezca Algorithm type en Single-column modulo, Modulo type en Simple modulo y Routing field en user_id (bigint). Establezca Modulo en
128y luego haga clic en Save. -
Ejecute una instrucción
INSERT.Por ejemplo, ejecute
INSERT INTO scend_test(gmt_create,gmt_modified,user_id) VALUES (now(),now(),2);para insertar un registro en la tabla scend_test. Al completarse la ejecución correctamente, aparece una marca de verificación verde en el área de resultados. -
Realice una consulta rápida.
Una vez configurado el algoritmo de enrutamiento, puede consultar una tabla física fragmentada específica mediante el campo de enrutamiento en la condición de consulta. Esto elimina la necesidad de calcular y cambiar manualmente entre bases de datos y tablas físicas. En la DMS SQL Console, ejecute la instrucción SQL SELECT * FROM
scend_testWHEREuser_id= 4, que utiliza el campo de enrutamientouser_idcomo condición de consulta. El registro de ejecución muestra que DMS enruta la tabla lógicascend_testa la tabla física fragmentadapoc_dev.scend_test_000.El resultado de la consulta incluye una columna adicional que indica la base de datos y la tabla de origen. Haga clic en el valor de esta columna para ir a la tabla física fragmentada correspondiente con la instrucción SQL y las condiciones de consulta prellenadas. Por ejemplo, al ejecutar SELECT * FROM
scend_testWHEREuser_id= 1, la columna de ubicación de datos en el resultado muestrapoc_dev.scend_test_000. Esto indica que DMS enrutó los datos a la tabla física fragmentada correspondiente y devolvió un registro coincidente.-
También puede ejecutar consultas sin incluir el campo de enrutamiento como condición. Esta acción realiza un escaneo completo de todas las tablas físicas fragmentadas, lo cual resulta útil para operaciones como estadísticas resumidas.
NotaLa sintaxis como
GROUP BYtambién es compatible. La mayor parte de la sintaxis SQL coincide con la de la base de datos de origen, pero actualmente no se admiten subconsultas.Por ejemplo, si ejecuta SELECT COUNT(*) FROM
scend_test; en la SQL Console, el resultado es 1, lo que indica que la tabla contiene un registro.