Red de conocimiento informático - Problemas con los teléfonos móviles - Características de la instancia distribuida TDSQL TCA Introducción a las tablas distribuidas y el paso a través de SQL

Características de la instancia distribuida TDSQL TCA Introducción a las tablas distribuidas y el paso a través de SQL

¿Instancia distribuida TDSQL? Se proporciona una conexión compatible con mysql a través de la interfaz proxy. Los usuarios ingresan la conexión a través de la dirección IP, el número de puerto, el nombre de usuario y la contraseña:

(Nota: TDSQL en la nube pública debe proporcionar una dirección de conexión pública. la página de instancia)

Ejemplo de conexión: mysql -h172.21.32.13 (dirección proxy) -P3306 (puerto proxy) -utest (cuenta de base de datos) -p

El método de conexión es Lo mismo que MySQL ordinario.

Igual que el método de conexión normal de MySQL. Compatible con el protocolo y la sintaxis mysql, y admite cifrado SSL y otras funciones. Por supuesto, también puede utilizar navicat, jdbc, odbc, php, Python, etc. para conectarse a una instancia TDSQL distribuida.

1. Introduzca los tipos de tablas admitidas por las instancias TDSQL distribuidas

a. Tabla distribuida: tabla dividida horizontalmente, también llamada "subtabla", desde una perspectiva empresarial, es una. tabla lógica completa, pero el backend se basa en las claves de la tabla dividida, por lo que no es una tabla completa.

b. Tabla ordinaria: también conocida como tabla Noshard, es decir, la tabla no está dividida. Es la misma que la tabla de la base de datos centralizada tradicional. , la tabla real distribuida es la almacenada de forma predeterminada en el primer grupo de nodos físicos (conjunto).

c. Tabla de transmisión: también conocida como tecnología de transmisión de tabla pequeña, es decir, una tabla configurada para transmitir transmite todas las operaciones de la tabla a todos los grupos de nodos físicos (conjuntos), y cada conjunto posee todos los table La cantidad de datos se usa a menudo en tablas pequeñas o tablas de configuración con muchas consultas relacionadas y pocas modificaciones en los sistemas comerciales.

Notas sobre la selección del tipo de tabla:

En una instancia distribuida, si las claves de subtabla de dos tablas son iguales, significa que hay dos tablas con la misma clave de subtabla** Corresponde a ? significa que dos tablas con la misma clave de subtabla corresponden a grupos de nodos almacenados en el mismo objeto. Esta situación generalmente se denomina grupo (groupshard), que puede mejorar en gran medida la eficiencia del procesamiento de consultas comerciales conjuntas y otras declaraciones. Dado que una sola tabla se coloca en el primer grupo de forma predeterminada, si se crea una sola tabla grande en una instancia distribuida, la carga en el primer grupo será excesiva. A menos que sea necesario lo contrario, intente utilizar tablas distribuidas en instancias distribuidas, que también es una de las características de las instancias distribuidas.

2. Creación de una tabla de instancia distribuida TDSQL

A continuación, veamos cómo utilizar los tres tipos de tablas admitidas por la base de datos distribuida TDSQL y a qué se debe prestar atención. .

a.Uso de tablas distribuidas

En resumen: al crear una tabla dividida normal, se debe especificar el valor de la clave de la tabla dividida (shardkey)**, esto es Los nombres de los campos en la tabla se utilizarán para enrutar SQL posterior.

Después de conectarnos a la instancia distribuida de TDSQL, creamos una base de datos llamada: testdb

mysql> crear base de datos testdb

mysql> use testdb

Conectar a continuación; creamos una tabla distribuida y la nombramos con la primera letra de la pronunciación distribuida

**Crear instrucción de tabla 1:

MySQL testdb> crea tabla fbs ( a int, b int, c char(20),clave primaria (a),clave única u_1(a,c) ) shardkey=a;

Consulta confirmada, 0 filas afectadas (0,07 segundos)

* *Crear instrucción de tabla 2:**

MySQL testdb> crear tabla fbs2 ( a int, b int, c char(20), clave primaria (a,b) ) shardkey= a;

Consulta correcta, 0 filas afectadas (0,09 segundos)

b. Crear tabla de difusión

Breve descripción: admite la creación de una tabla pequeña (tabla de difusión), cuando la tabla Este es el aspecto principal de las operaciones de unión entre conjuntos cuando todos los datos están en todos los conjuntos de datos. Esto se utiliza principalmente para operaciones de unión entre conjuntos. Al mismo tiempo, las transacciones distribuidas garantizan la atomicidad de las operaciones de modificación, haciendo que todos los datos centralizados sean completamente consistentes.

**Declaración:**

MySQL testdb> crear tabla gbb(a int,b int key) **shardkey=noshardkey_allset;**

Consulta OK, 0 filas afectadas (0. segundos)

c. Tabla ordinaria tradicional

Breve descripción: Admite la creación de tablas ordinarias, la sintaxis es la igual que mysql tradicional Exactamente lo mismo, en este momento todo el volumen de datos de la tabla existe en el primer nodo de colección, y todas las tablas de este tipo se colocan en la primera colección.

MySQL testdb> crear tabla ptb(a int,b varchar(10));

Consulta confirmada, 0 filas afectadas (0,03 segundos)

Nota importante :

1

2. El valor del campo shardkey de la tabla distribuida no puede contener caracteres chinos; de lo contrario, el agente convertirá el conjunto de caracteres y puede producirse un error. Además, la sintaxis SQL (por ejemplo: shardkey=a) generalmente se escribe al final de la declaración SQL.

3. Operaciones de datos en tablas de instancias distribuidas TDSQL

Para utilizar mejor las ventajas de la arquitectura distribuida, todavía existen algunas diferencias entre las operaciones SQL y las bases de datos tradicionales. A continuación, veremos qué esperar de las inserciones, actualizaciones y eliminaciones de bases de datos.

======INSERT insertar========

**Insertar declaración 1:**

MySQL testdb> insertar en fbs (a,b) value(10,1000);

Consulta confirmada, 1 fila afectada (0,00 seg)

**Insertar declaración 2:**

MySQL testdb> insertar en valores fbs (1,10,1000);

o

MySQL testdb> insertar en test1 (b,c,b);

MySQL testdb>. insertar en test1 (b,c) valores (100, "record3");

ERROR 810 (HY000): la inserción de la tabla debe tener una especificación de campo

Nota : La declaración 2 informa un error porque el campo insertado debe contener la clave de fragmento; de lo contrario, SQL se negará a ejecutarse porque el intermediario no sabe a qué nodo de fragmentación de backend se envía el SQL.

=====ACTUALIZAR, ELIMINAR, actualizar y eliminar operaciones=====

Declaración de actualización 1:

MySQL testdb> actualizar fbs set b= 2000 donde a=10;

Consulta confirmada, 1 fila afectada (0,00 segundos)

Declaración de actualización 2:

MySQL testdb> actualizar fbs set b= 2000 ;

ERROR 658 (HY000): Error del agente: la consulta de actualización no tiene cláusula donde

Operación de eliminación:

MySQL testdb> eliminar de fbs p>

ERROR 913 (HY000): Error del agente: error interno de unión. La consulta de eliminación no tiene cláusula donde

Nota:

1. Por seguridad de los datos y para minimizar el uso humano. errores Para causar pérdida de datos, TDSQL prohíbe las actualizaciones sin una cláusula donde.

2. La misma operación de eliminación sin condiciones donde está prohibida. Si confirma que desea eliminar datos de la tabla o tablas, se recomienda utilizar las operaciones en modo Truncar o Eliminar para la copia de seguridad.

3. Intente evitar actualizar el campo shardkey en la misma operación de actualización, porque esto afectará la actualización de enrutamiento en el proxy, lo que provocará errores.

1. Introducción a la función de transferencia TDSQL

Para instancias distribuidas, el análisis de sintaxis SQL tiene ciertas limitaciones. Si un usuario desea obtener datos de un único nodo en una colección o ejecutar SQL en un nodo específico, puede usar la función SQL de paso a través de TDSQL.

Para utilizar la función de transferencia, debemos especificar la opción **-c** al volver a conectarnos para iniciar sesión en la instancia distribuida TDSQL. El método de inicio de sesión normal no admite la función de paso para ejecutar SQL en el nodo especificado.

El método de inicio de sesión es el siguiente:

mysql -h172.21.32.13 (dirección proxy) -utest -P3306 -p -c (se debe especificar -c para el paso a través)

2. Demostración de la operación de paso a través de TDSQL

Primero, iniciamos sesión nuevamente en la instancia distribuida de TDSQL: mysql -h172.21.32.13 -utest -P3306 -p -c

Todavía cambiando a la base de datos testdb.

a. Ver los nodos del conjunto de instancias distribuidas

Utilice /*proxy*/show status para ver la información del nodo de la instancia distribuida TDSQL actual ***Hay dos conjuntos, a saber. set_1605181898_1, set_1605181972_3 y set_1605181972_3 1605181972_3

MySQL testdb> /*proxy*/mostrar estado

+---------------- - --+-------------------------------------- ------- ------------------------------+

| nombre_estado |

+--------------------------------+--------- --------- ----------------------------------------- ----------+

| grupo | grupo_1605181791_302290

| **set_1605181898_1:ip | @1@IDC_GZ_YDSS0301_79263@0 |

| set_1605181898_1:hash_range | 0---31 | s1@10.53.178 .227 :4323@1@IDC_GZ_YDSS0301_79263@0 |

| set_1605181972_3:hash_range

| ------------ ------------------+------------------- ------------- ----------------------------------+

6 líneas en total (0,00 segundos)

b.

Inserción de datos de demostración

Realizamos la inserción de datos en la tabla distribuida de fbs creada previamente

MySQL testdb> ),(20,2,'bbb'),(30,3,'ccc'),(40,4,'dddd'),(50,5,'eee'),(60,6,'fff ' ),(70,7,'ggg'),(80,8,'hhhh');

MySQL testdb> insertar en fbs(a,b,c) valores() seleccionar * del orden de fbs por 1;

+----+------+------+

| > +----+------+------

1 | AAA | p>

| 30 | cc |

| 6 | fff |

+----+---- - -+------+

8 filas en total (0,00 segundos)

Ver directamente la distribución de datos entre los nodos

MySQL testdb. > /*proxy*/mostrar estado;

+---------------- -------------+-- - -------------------------------------------------- --------------+

| nombre_estado | valor

+------------- -------------+---------------------------------- -- -----------------+

| grupo | grupo_1605181791_302290

| **set_1605181898_1:ip | 10.53.179.14:4322;s1@10.53.178.227:4322@1@IDC_GZ_YDSS0301_79263@0

| 3 1 | p>

| set_1605181972_3:IP | 10.53.179.14:4323;s1@10.53.178.227:4323@1@IDC_GZ_YDSS0301_79263@0 | -6 3 rango | 32---63 |

| conjunto | conjunto_1605181898_1,conjunto_1605181972_3 | - -------+-------------------------------- --------- ---------------------+

Hay 6 filas en el conjunto (0.00 seg)

Ver la distribución de datos en el nodo set_1605181898_1

MySQL testdb> /*sets: set_1605181898_1*/ seleccione * de fbs ordenar por 1

+----+------+------+--------------- ---+

| a | b | c |

+----+------+------+--- ---- -----------+

| 10 | p>

| 40 | dddd | conjunto_1605181898_1

50 | |

+ ----+------+------+------------------+

5 líneas en total (0,00 segundos)

Ver la distribución de datos en el nodo set_1605181972_3

MySQL testdb> /*sets: set_1605181972_3*/select * from fbs order by 1; >

+- ---+------+------+------------------+

| a | b | c | información |

+----+------+------+-------------- ----+

| 20 | bb | set_1605181972_3

| | set_1605181972_3 |

+----+------+------+---- --------------+

3 registros en la colección (0,00 segundos)

d. Ver datos por número de fragmento de clave de fragmento

MySQL testdb> /*shardkey: 2*/select * from fbs ordenar por 1

+----+------+------+

|

+ ----+------+------+

2 | |

| 70 | 7 | ggg

+----+------+------+

hay 3 líneas en la colección (0,00 segundos)

Admite tipo y formato de transferencia:

1. El nombre del conjunto se puede consultar a través de /*proxy*/show status

2./*set_1 nombre */ Pasar el nodo especificado de forma transparente

3./*shardke

y:10 */ Transfiera de forma transparente la colección correspondiente al fragmento de clave fragmentada

5. Admite la transmisión de SQL a una o más colecciones correspondientes

Para limitaciones distribuidas en declaraciones en el sección DDL de la tabla:

CREATE TABLE ... actualmente no es compatible. LIKE

CREAR TABLA ... actualmente no es compatible. SELECT no es compatible

CREATE TEMPORARY TABLE no es compatible

CREATE/DROP/ALTER SERVER/LOGFILE GROUP no es compatible

ALTER renombrar Shardkey no es compatible, pero se puede modificar. Tipo<

Restricciones en declaraciones en la parte DML de tablas distribuidas:

La exportación SELECT INTO OUTFILE/INTO DUMPFILE/INTO LOAD DATA no se admite actualmente

p>

Actualmente no es compatible con INSERT....aún no es compatible. SELECCIONAR

ACTUALIZAR los valores de las columnas shardkey distribuidas no son compatibles actualmente

Esta operación es principalmente para desarrolladores de bases de datos tradicionales o usuarios de DBA, para que inicialmente pueda comenzar a comprender las características de las claves distribuidas. bases de datos. Además, la base de datos distribuida proporciona un modelo flexible de separación de lectura y escritura en la arquitectura, admite operaciones globales de ordenamiento, agrupación y limitación de SQL, admite funciones agregadas, conexiones de nodos de conjuntos cruzados, subconsultas y admite transacciones distribuidas tradicionales. bases de datos La mayoría de las operaciones admitidas se heredan en bases de datos distribuidas. Las bases de datos distribuidas se desarrollan sobre la base de bases de datos tradicionales y tienen buena compatibilidad con las bases de datos centralizadas tradicionales. La sintaxis SQL utilizada es compatible con la mayoría de los estándares SQL1999 y SQL2003 y admite las funciones ACID de SQL. La base de datos distribuida es lógicamente una base de datos independiente y completa, pero adopta fragmentación de múltiples nodos en su arquitectura y física, y luego distribuye algoritmos internos a diferentes nodos para almacenar datos. El negocio front-end protege la compleja arquitectura del back-end. y tiene las últimas funciones de base de datos, como coherencia en el acceso a los datos, disponibilidad y recuperación ante desastres de particiones. Espero que esta operación pueda brindarle algunos conocimientos y ganancias sobre la base de datos distribuida TDSQL.

* La reimpresión está prohibida, pero se permite el reenvío (indique la fuente al reenviar artículos)

Base de datos relacional distribuida de nivel empresarial TDPub