Explicación detallada de la subbase de datos y la subtabla en un artículo

Explicación detallada del diseño de subbases de datos y subtablas.

fondo

En la arquitectura tradicional de base de datos independiente, todos los datos se almacenan en la misma base de datos. A medida que la escala empresarial continúa expandiéndose, la cantidad de datos y la concurrencia también aumentarán, lo que traerá desafíos para el rendimiento y la disponibilidad de la base de datos. . Además, cuando la capacidad de una base de datos de una sola máquina alcanza un cuello de botella, no puede continuar expandiéndose, lo que también limita la escalabilidad de la aplicación.

Para resolver estos problemas, surgió la tecnología de subbases de datos y subtablas. Al almacenar datos dispersos en múltiples bases de datos o tablas, se puede reducir la carga en una sola base de datos y se puede mejorar el rendimiento de concurrencia del sistema . Además, la subbase de datos y la subtabla también pueden admitir la expansión horizontal, lo que permite que el sistema continúe expandiéndose a medida que crece el negocio.

En resumen, la subbase de datos y la subtabla son una solución de diseño de arquitectura de base de datos de uso común que puede resolver los problemas de cuello de botella que enfrenta la base de datos en términos de volumen de datos, concurrencia, escalabilidad, etc., y es una de las tecnologías indispensables para aplicaciones a gran escala.

¿Por qué subbase de datos y tabla?

  1. Aumento del volumen de datos : cuando el volumen de datos aumenta gradualmente, es posible que una sola base de datos o tabla no pueda transportar todos los datos, lo que provoca una degradación del rendimiento o incluso un bloqueo .

    La fragmentación de bases de datos y tablas puede dispersar datos en múltiples bases de datos o tablas, y cada base de datos o tabla solo es responsable de una parte de los datos, lo que mejora el rendimiento y la confiabilidad del sistema.

  2. Mejorar la concurrencia: cuando varios usuarios acceden a la misma tabla al mismo tiempo, puede causar fácilmente un cuello de botella en el rendimiento de la base de datos, lo que resulta en una respuesta más lenta.

    La fragmentación de bases de datos y tablas puede dispersar datos en múltiples bases de datos o tablas, mejorando así las capacidades de acceso simultáneo y reduciendo los cuellos de botella del sistema.

  3. Aislamiento de datos : en un escenario de múltiples inquilinos, diferentes inquilinos necesitan usar diferentes bases de datos o tablas para garantizar el aislamiento de los datos entre sí . La fragmentación de bases de datos y tablas puede dispersar los datos de diferentes inquilinos en diferentes bases de datos o tablas para garantizar el aislamiento de los datos.

  4. Reducir la presión sobre un solo nodo : cuando el sistema necesita admitir operaciones de lectura y escritura de una gran cantidad de datos, es posible que una sola base de datos o tabla no pueda transportarlos, en este caso los datos se pueden dispersar en múltiples bases de datos o tablas, reduciendo así la presión sobre un solo nodo.

¿Qué es una subbiblioteca y una subtabla?

  1. Dividir base de datos: dividir una base de datos en varias bases de datos

    1. Fragmentación horizontal : se refiere a dividir una base de datos grande en varias bases de datos más pequeñas y similares , cada una de las cuales contiene diferentes partes de los datos.

      Por ejemplo: asigne datos de usuario a la base de datos de usuario DB1 y a la base de datos de usuario DB2 según el rango de sus valores de ID.

      Este enfoque de fragmentación mejora la escalabilidad y el rendimiento del sistema porque la carga se puede distribuir entre múltiples bases de datos.

    Insertar descripción de la imagen aquí

    Características:

     1. 每个库的结构都一样,存储**同一业务类型**的数据	
     2. 每个库的数据都不一样,没有交集
     3. 所有库的并集是全量数据
    
    1. División vertical de bases de datos : se refiere a dividir una base de datos grande en varias bases de datos más pequeñas en función de las relaciones comerciales.

      Por ejemplo, los datos del usuario se almacenan en la biblioteca del usuario y los datos del pedido se almacenan en la biblioteca de pedidos.

      Este método de fragmentación puede mejorar la flexibilidad y la capacidad de mantenimiento del sistema , porque diferentes bases de datos se pueden optimizar y mantener individualmente según sea necesario.

    Insertar descripción de la imagen aquí

    Características:

     1. 每个库的结构都不一样,存储**不同业务类型**的数据
    
     2. 每个库的数据都不一样,没有交集
    
     3. 所有库的并集是全量数据
    

    La fragmentación horizontal y la fragmentación vertical no son conceptos mutuamente excluyentes . Se pueden usar en combinación para lograr una solución de fragmentación de bases de datos más eficiente.

  2. División de tablas: dividir una tabla de datos en varias tablas de datos

    1. Fragmentación de tabla horizontal : se refiere a dispersar los datos de una tabla en varias tablas de acuerdo con una regla determinada, que generalmente se basa en el valor de una determinada columna.

      Por ejemplo, la tabla de usuarios se puede dividir en varias subtablas según la ID del usuario y mediante reglas como rango, hash, resto, etc., y cada subtabla almacena datos del usuario dentro de un rango específico.

      La fragmentación horizontal de tablas puede mejorar la eficiencia de las consultas de datos porque las consultas solo deben ejecutarse en una pequeña subtabla en lugar de en toda la tabla.

Insertar descripción de la imagen aquí

  特点:

  1. 每个表的结构都一样,存储**同一实体、相同类型**的数据
  2. 每个表存的数据都不一样,没有交集
  3. 所有表的并集是全量数据
  1. Partición vertical de tablas : se refiere a dividir una tabla según columnas, almacenar algunas columnas en una tabla y almacenar otras columnas en otra tabla. Esta segmentación generalmente se basa en la correlación de columnas, generalmente como la tabla principal y la tabla extendida.

    Por ejemplo, una tabla que contiene información primaria del usuario e información auxiliar del usuario se puede dividir en dos tablas, una que contiene información primaria del usuario y la otra que contiene información auxiliar del usuario.

    Esto mejora la eficiencia del almacenamiento de datos porque cada tabla contiene solo las columnas necesarias, en lugar de todas las columnas de la tabla completa.

Insertar descripción de la imagen aquí

  特点:

  1. 每个表的结构都不一样,存储**同一实体、不同类型**的数据
  2. 每个表存的数据都不一样,字段至少有一列交集,一般是主键,用于关联数据
  3. 所有表的并集是全量数据

estrategia dividida

  1. Dividir por rango : divide la tabla en varias subtablas según un determinado rango de datos. Por ejemplo, podría dividir una tabla de pedidos en subtablas para cada mes según el rango de tiempo.

    ventaja:

    ​Expansión horizontal : dividir bases de datos y tablas según el rango puede lograr una expansión horizontal. Cuando aumenta la cantidad de datos, se pueden agregar fácilmente más bases de datos o tablas; por ejemplo, divida según el estándar de 20 millones, y las que excedan los 20 millones se transferidos a nuevas tablas. No es necesario migrar los registros anteriores dentro de los 20 millones.

    defecto:

    ​Problema candente : si se accede a algunos datos con mucha frecuencia, pero se dividen por rango y luego se dividen en la misma sección, entonces una gran cantidad de solicitudes se concentrarán en esta sección y no habrá un buen efecto de equilibrio de carga.

  2. Dividir según el valor hash : divida la tabla en varias subtablas según el valor hash de los datos. Por ejemplo, una tabla de usuarios se puede dividir en varias subtablas utilizando el hash del ID de usuario.

    Estrategia de módulo HASH: la clave de enrutamiento especificada (generalmente el ID de la clave principal) modula el número total de subtablas y distribuye los datos a cada tabla.

    ventaja:

    ​ Equilibrio de carga, sin problemas obvios de inclinación del punto caliente

    defecto:

    La expansión no es flexible . Si se divide en 4 tablas según el módulo HASH al principio, en algún momento en el futuro, el volumen de datos de la tabla volverá a alcanzar el cuello de botella y será necesario expandirlo. Esto será más es difícil y es necesario migrar los datos nuevamente.

  3. Dividir por ubicación geográfica : si los datos están relacionados con la ubicación geográfica, la tabla se puede dividir en varias subtablas según la ubicación geográfica. Por ejemplo, puede dividir una tabla de negocios en varias subtablas por ciudad.

  4. Dividir según el tipo de negocio : si los datos tienen diferentes tipos de negocio, la tabla se puede dividir en varias subtablas según el tipo de negocio. Por ejemplo, puede dividir una tabla de productos en varias subtablas según el tipo de producto.

  5. Dividido por frecuencia de acceso : si se accede a algunos datos con frecuencia, puede colocarlos en una tabla separada para un acceso más rápido. Por ejemplo, puede colocar los datos de los pedidos del año pasado en una tabla separada para agilizar la consulta de pedidos recientes.

Herramienta de subbase de datos y subtabla

  1. ShardingSphere: ShardingSphere es una solución de middleware de base de datos distribuida de código abierto que admite funciones como fragmentación de bases de datos y tablas, separación de lectura y escritura y cifrado de datos.

    Sitio web oficial: https://shardingsphere.apache.org/index_zh.html

  2. Mycat: Mycat es un middleware de base de datos distribuida de código abierto basado en el protocolo MySQL, que admite funciones como fragmentación de bases de datos y tablas, separación de lectura y escritura y fragmentación de datos.

    Sitio web oficial: http://www.mycat.org.cn/

  3. TDDL: TDDL es un middleware de base de datos distribuida de código abierto de Alibaba, que admite MySQL, Oracle y otras bases de datos, y proporciona funciones como bases de datos y subbases de datos de tablas, separación de lectura y escritura y fragmentación de datos.

  4. Cobar: Cobar es un middleware de base de datos distribuida de código abierto de Alibaba, que admite MySQL, PostgreSQL y otras bases de datos, y proporciona funciones como partición de bases de datos y tablas, separación de lectura y escritura y fragmentación de datos.

Problema de subbase de datos y subtabla

  1. Problema de unicidad de la clave principal (ID de incremento automático) : al diseñar tablas, las ID de incremento automático a menudo se utilizan como clave principal, lo que conduce a migraciones posteriores de bases de datos y tablas, o suboperaciones de tablas y bases de datos, debido a cambios en la clave principal. clave o inconsistencia de la clave primaria. El único problema que surge es que las soluciones principales son

    1. Adopte un mecanismo de generación de ID unificado global distribuido: como UUID, algoritmo de copo de nieve, segmento de número de base de datos, etc.
  2. Transacciones distribuidas : dado que los datos están dispersos en múltiples bases de datos o tablas, el procesamiento de transacciones se vuelve más complejo. Por ejemplo, si una transacción involucra múltiples bases de datos o tablas, entonces cómo garantizar la atomicidad de estas operaciones requiere un diseño más cuidadoso.

  3. Consulta de unión/paginación : en el caso de subbases de datos y tablas, las consultas entre múltiples bases de datos o tablas se vuelven más complejas. Por ejemplo, si necesita realizar una búsqueda de texto completo en un conjunto de datos, deberá ejecutar la consulta en varias bases de datos o tablas, lo que puede afectar el rendimiento de la consulta.

    1. Separe las consultas y luego reúna los datos.

    2. Campos redundantes: si cada operación de combinación es solo para obtener una pequeña cantidad de campos, puede considerar los campos redundantes directamente en la tabla.

    3. Sincronización de datos:

      Sincronice datos entre fuentes de datos en un almacén de datos separado y luego realice operaciones de unión en este almacén de datos. Este método puede resolver el problema de unión entre bases de datos y tablas, pero requiere costos adicionales de almacenamiento y sincronización, y puede tener retrasos en la sincronización de datos y problemas de coherencia.

  4. Migración de datos : en el caso de fragmentar bases de datos y tablas, si necesita migrar datos a una nueva base de datos o tabla, debe considerar cómo migrar los datos y cómo garantizar la coherencia de los datos durante el proceso de migración.

  5. Complejidad del sistema : dado que la fragmentación de bases de datos y tablas requiere la administración de múltiples bases de datos o tablas, la complejidad del sistema también aumentará. Por ejemplo, debe considerar cómo monitorear el estado de cada base de datos o tabla, cómo manejar fallas en la base de datos o tabla, etc.

  6. Migración de datos : en el caso de fragmentar bases de datos y tablas, si necesita migrar datos a una nueva base de datos o tabla, debe considerar cómo migrar los datos y cómo garantizar la coherencia de los datos durante el proceso de migración.

  7. Complejidad del sistema : dado que la fragmentación de bases de datos y tablas requiere la administración de múltiples bases de datos o tablas, la complejidad del sistema también aumentará. Por ejemplo, debe considerar cómo monitorear el estado de cada base de datos o tabla, cómo manejar fallas en la base de datos o tabla, etc.

Supongo que te gusta

Origin blog.csdn.net/weixin_40709965/article/details/129636116
Recomendado
Clasificación