Una breve discusión sobre la subbase de datos y la subtabla de la base de datos.

Este artículo presenta principalmente los conocimientos básicos relacionados con la fragmentación y la fragmentación de bases de datos, incluido qué es la fragmentación, por qué es necesaria y qué soluciones están disponibles.

1. ¿Qué son las subbases de datos y las subtablas?

La base de datos se divide en bases de datos y tablas, lo cual se expresa en inglés "database sharding" or "database partitioning".

La fragmentación de bases de datos y la fragmentación de tablas se refieren a dividir una base de datos grande en varias bases de datos pequeñas de acuerdo con ciertas reglas, y cada base de datos pequeña se divide en varias tablas pequeñas de acuerdo con ciertas reglas. De esta manera, los datos se pueden almacenar dispersamente en múltiples servidores físicos para lograr almacenamiento distribuido y equilibrio de carga, mejorando así el rendimiento y la escalabilidad de la base de datos.

Las estrategias comunes de fragmentación de tablas y bases de datos incluyen:

  • División vertical de tablas: divida una tabla grande en varias tablas pequeñas de acuerdo con la lógica empresarial, y cada tabla pequeña solo contiene algunas columnas. Este método es adecuado para escenarios con grandes cantidades de datos pero con una lógica empresarial simple.
  • División horizontal de tablas: divida una tabla grande en varias tablas pequeñas según el rango de valores de un determinado campo (como el ID de usuario), y cada tabla pequeña solo contiene parte de las filas. Este método es adecuado para escenarios con grandes cantidades de datos y lógica empresarial compleja.
  • Dividir base de datos: divida una base de datos grande en varias bases de datos pequeñas según el rango de valores de un determinado campo (como la ID de usuario). Cada base de datos pequeña solo contiene algunas tablas. Este método es adecuado para escenarios con cantidades muy grandes de datos.
  • Fragmentación: divida una base de datos grande en varias bases de datos pequeñas según el rango de valores de un determinado campo (como la ID de usuario). Cada base de datos pequeña solo contiene algunas tablas y algunas filas. Este método es adecuado para escenarios donde la cantidad de datos es muy grande.

La implementación de fragmentación de bases de datos y tablas se puede lograr escribiendo código manualmente, o puede utilizar algún middleware de código abierto, como ShardingSphere, MyCAT, etc. Estos middlewares simplifican la vida de los desarrolladores al enrutar automáticamente las declaraciones SQL a las bases de datos y tablas correctas.

En aplicaciones prácticas, al fragmentar bases de datos y tablas, se deben considerar cuestiones como la coherencia de los datos, el procesamiento de transacciones y las consultas entre bases de datos. Es necesario considerar de manera integral los requisitos comerciales y el rendimiento del sistema para seleccionar las estrategias adecuadas de fragmentación de bases de datos y tablas.

2. ¿Por qué dividir la base de datos y la tabla?

Las principales razones para fragmentar bases de datos y tablas son las siguientes:

  • Volumen de datos excesivo: cuando el volumen de datos en una sola base de datos es demasiado grande, el rendimiento de consultas y escritura se degradará e incluso provocará que la base de datos falle. Al fragmentar bases de datos y tablas, los datos se pueden dispersar en múltiples bases de datos y tablas, mejorando así el rendimiento y la escalabilidad de la base de datos.
  • Alto acceso concurrente: cuando varios usuarios acceden a la misma base de datos o tabla al mismo tiempo, pueden ocurrir problemas como bloqueos en espera y puntos muertos, lo que resulta en una degradación del rendimiento. Al fragmentar bases de datos y tablas, los datos se pueden distribuir y almacenar en múltiples servidores físicos, lo que reduce la aparición de esperas de bloqueo y puntos muertos.
  • Alta complejidad empresarial: cuando la lógica empresarial es compleja, es posible que una única base de datos necesite almacenar datos de varios módulos empresariales. Esto reducirá la eficiencia de las consultas y la escritura y también aumentará la complejidad del código. Al dividir las bases de datos y tablas, los datos de diferentes módulos comerciales se pueden dispersar en diferentes bases de datos y tablas, simplificando así la lógica del código y mejorando la capacidad de mantenimiento y escalabilidad del sistema.
  • Aislamiento de datos: cuando diferentes módulos comerciales necesitan acceder a datos diferentes, se requiere aislamiento de datos. Mediante la fragmentación de bases de datos y tablas, los datos de diferentes módulos comerciales se pueden dispersar en diferentes bases de datos y tablas para lograr el aislamiento de los datos.
  • Escalabilidad: cuando es necesario ampliar la capacidad o el rendimiento de la base de datos, se puede lograr aumentando la cantidad de bases de datos y tablas. Mediante la fragmentación de bases de datos y tablas, los datos se pueden dispersar en múltiples bases de datos y tablas para lograr escalabilidad.
  • Ahorro de costos: al fragmentar bases de datos y tablas, los datos se pueden almacenar en múltiples servidores físicos, lo que reduce la carga en un solo servidor y reduce los costos de hardware y mantenimiento.

En resumen, fragmentar bases de datos y tablas es un medio eficaz para mejorar el rendimiento y la escalabilidad de MySQL y puede ayudar a los desarrolladores a lidiar con problemas como grandes cantidades de datos, negocios complejos y aislamiento de datos.

3. ¿Qué soluciones existen?

Existen varias soluciones para fragmentar bases de datos y tablas:

  • Fragmentación manual de bases de datos y tablas : según las necesidades comerciales y el volumen de datos, los desarrolladores pueden escribir código manualmente para implementar la lógica de fragmentación de bases de datos y tablas. Es necesario considerar cuestiones como el enrutamiento de datos, la sincronización de datos y la coherencia de las transacciones. Este método requiere que los desarrolladores tengan un alto nivel técnico, mayores costos de desarrollo y mayores costos de mantenimiento, pero puede satisfacer de manera flexible las necesidades de escenarios comerciales específicos.

  • Middleware : utilizando algún middleware de base de datos de código abierto, como ShardingSphere, MyCAT, etc., puede realizar automáticamente la función de subbase de datos y tabla. Este middleware puede enrutar declaraciones SQL a la base de datos y tablas correctas, simplificando el trabajo de los desarrolladores y reduciendo los costos de mantenimiento. El middleware incluye principalmente:

    • ShardingSphere : una solución de base de datos distribuida de código abierto que proporciona funciones como fragmentación de bases de datos y tablas, separación de lectura y escritura y transacciones distribuidas. Admite una variedad de bases de datos, incluidas MySQL, PostgreSQL, etc. Proporciona análisis y enrutamiento de SQL transparente y puede lograr la fragmentación de bases de datos y tablas sin modificar el código comercial. Las empresas que utilizan ShardingSphere incluyen: Alibaba, Ant Financial, JD.com, Didi Chuxing, etc.
    • MyCAT : un servidor proxy MySQL de código abierto que proporciona funciones como fragmentación de bases de datos y tablas, separación de lectura y escritura, equilibrio de carga y alta disponibilidad. Principalmente para la base de datos MySQL. Las empresas que utilizan MyCAT incluyen: Meituan, Xiaomi, NetEase, Sohu, etc.
    • Vitess : una solución de clúster de bases de datos de código abierto que proporciona funciones como fragmentación de bases de datos y tablas, separación de lectura y escritura y alta disponibilidad. Principalmente para la base de datos MySQL, desarrollada por YouTube. Las empresas que utilizan Vitess incluyen: YouTube, Slack, GitHub, JD.com, etc. Las empresas que utilizan Vitess incluyen: YouTube, Slack, GitHub, JD.com, etc.
    • ProxySQL : un servidor proxy MySQL de código abierto que proporciona funciones como fragmentación de bases de datos y tablas, separación de lectura y escritura y alta disponibilidad. Principalmente para la base de datos MySQL. Las empresas que utilizan ProxySQL incluyen: Booking.com, Shopify, Dropbox, etc.
  • Servidor proxy : utilizando algunos servidores proxy de bases de datos, como MySQL Proxy, MaxScale, etc., puede realizar la función de subbase de datos y subtabla. Estos servidores proxy pueden interceptar y enrutar aplicaciones y bases de datos para lograr la fragmentación de bases de datos y tablas.

    • Proxy MySQL : MySQL Proxy es un servidor proxy MySQL liviano que admite análisis y enrutamiento de SQL. Al escribir scripts Lua, se pueden realizar funciones como bases de datos y subbases de datos de tablas y separación de lectura y escritura.
    • MaxScale : MaxScale es un servidor proxy de base de datos de código abierto que admite funciones como fragmentación de bases de datos y tablas, separación de lectura y escritura y equilibrio de carga. Puede enrutar declaraciones SQL a la base de datos y tablas correctas, simplificando el trabajo de los desarrolladores y reduciendo los costos de mantenimiento.
  • Utilice clústeres de bases de datos : al crear clústeres MySQL, como MySQL NDB Cluster, Galera Cluster, etc., puede lograr subbases de datos y tablas. Estas soluciones de clúster pueden distribuir datos entre múltiples nodos, mejorar el rendimiento y la escalabilidad de la base de datos y proporcionar redundancia de datos y alta disponibilidad.

  • Utilice bases de datos distribuidas : utilice bases de datos distribuidas, como TiDB, CockroachDB, etc., para lograr la fragmentación automática de bases de datos, fragmentación de tablas y fragmentación de datos. Estas bases de datos suelen tener buena escalabilidad horizontal y tolerancia a fallos, y son adecuadas para escenarios de almacenamiento y procesamiento de datos a gran escala.

  • Utilice servicios de bases de datos en la nube : Al utilizar servicios de bases de datos en la nube, como DRDS (servicio de base de datos relacional distribuida) de Alibaba Cloud, TDSQL de Tencent Cloud, etc., puede lograr subbases de datos y tablas. Estos servicios de bases de datos en la nube proporcionan funciones completas de subbases de datos y subtablas, y también son de alto rendimiento, alta disponibilidad y fáciles de administrar.

Cada una de las soluciones anteriores tiene sus propias ventajas y desventajas. Puede elegir la solución adecuada según las necesidades comerciales reales y los escenarios para fragmentar bases de datos y tablas.

4. Resumen

La solución de fragmentación de bases de datos debe evaluarse en función de las necesidades reales del negocio y del conjunto de tecnologías, y la idoneidad es lo más importante.

Al implementar la fragmentación de bases de datos y tablas, también se deben considerar cuestiones como la migración de datos, la coherencia de los datos y el procesamiento de transacciones.

Supongo que te gusta

Origin blog.csdn.net/lanyang123456/article/details/132000912
Recomendado
Clasificación