Compartir tecnología

Gestión de bases de datos en la era del big data: la importancia de la fragmentación de bases de datos y la separación de lectura y escritura

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Prefacio

Los términos "fragmentación" y "división de bases de datos" se mencionan a menudo en el campo de las bases de datos y generalmente se refieren a conceptos similares, pero difieren en detalles. La fragmentación de bases de datos generalmente se refiere a la distribución de datos de una base de datos grande a varias bases de datos más pequeñas para mejorar el rendimiento y la capacidad de administración. La división de bases de datos, por otro lado, se refiere más ampliamente a descomponer un sistema de base de datos en partes más pequeñas, que pueden incluir fragmentación de bases de datos u otros tipos de división, como fragmentación de tablas.

Estas son las diferencias entre fragmentación y división de bases de datos:

característicaFragmentación de bases de datosDivisión de bases de datos
definiciónDistribuya datos entre múltiples instancias de bases de datos físicas.Divida el sistema de base de datos en entidades más pequeñas.
ObjetivoMejore el rendimiento, la escalabilidad y la tolerancia a fallos.Mejore el rendimiento, la gestión y la escalabilidad.
tipoIncluye principalmente división horizontal y división vertical.Incluyendo subbase de datos, subtabla, división horizontal, división vertical, etc.
dividir horizontalmenteEs una forma de fragmentación que divide los datos por filas.Probablemente parte de una división de base de datos.
dividir verticalmenteEs una forma de fragmentación que divide los datos en columnas.Probablemente parte de una división de base de datos.
complejidad de implementaciónSe requiere una lógica de enrutamiento adicional y superior.Depende del método de división específico.
InfluenciaEs posible que sea necesario modificar el código de la capa de aplicación para adaptarlo a la subbiblioteca.Es posible que sea necesario modificar el código de la capa de aplicación para adaptarse a los cambios.
ejemploAlmacene los datos de diferentes usuarios en diferentes bases de datos, por ejemplo, asígnelos a diferentes bases de datos de acuerdo con el valor hash de la ID de usuario. Divida una tabla grande en varias tablas más pequeñas o divida los datos verticalmente en diferentes tablas o bibliotecas. División vertical: almacene la información del usuario y la información del pedido en diferentes bases de datos. División horizontal: almacene la tabla de pedidos en diferentes bases de datos según el rango de ID del pedido.

Ejemplo de biblioteca sucursal

  1. -- 分库示例:将订单信息按照用户ID的哈希值存储到不同的数据库
  2. -- 数据库1
  3. CREATE DATABASE orders_db_1;
  4. USE orders_db_1;
  5. CREATE TABLE orders (
  6. order_id INT PRIMARY KEY,
  7. user_id INT,
  8. total_amount DECIMAL(10, 2),
  9. order_date DATE
  10. );
  11. -- 数据库2
  12. CREATE DATABASE orders_db_2;
  13. USE orders_db_2;
  14. CREATE TABLE orders (
  15. order_id INT PRIMARY KEY,
  16. user_id INT,
  17. total_amount DECIMAL(10, 2),
  18. order_date DATE
  19. );

Ejemplo de división de base de datos

  1. -- 垂直拆分示例:将用户信息表和订单信息表分离到不同的数据库
  2. -- 主数据库
  3. CREATE DATABASE main_database;
  4. USE main_database;
  5. -- 用户信息表
  6. CREATE TABLE users (
  7. user_id INT PRIMARY KEY,
  8. username VARCHAR(50),
  9. email VARCHAR(100)
  10. );
  11. -- 订单信息表
  12. CREATE DATABASE orders_database;
  13. USE orders_database;
  14. CREATE TABLE orders (
  15. order_id INT PRIMARY KEY,
  16. user_id INT,
  17. total_amount DECIMAL(10, 2),
  18. order_date DATE
  19. );

La fragmentación de bases de datos y la división de bases de datos se utilizan en diferentes escenarios para satisfacer necesidades comerciales y desafíos técnicos específicos:

EscenasFragmentación de bases de datosDivisión de bases de datos
El volumen de datos es demasiado grandeCuando la cantidad de datos en una sola base de datos excede las capacidades de almacenamiento o procesamiento de un solo servidor.Cuando el tamaño de una tabla de base de datos afecta el rendimiento de la consulta.
Cuello de botella en el rendimientoCuando se encuentran operaciones de lectura y escritura muy simultáneas, una sola base de datos no puede proporcionar un rendimiento suficiente.Las operaciones de lectura y escritura en una sola tabla comienzan a disminuir, lo que afecta el tiempo de respuesta de la aplicación.
Requisitos de escalabilidadLa base de datos debe expandirse horizontalmente para mejorar el rendimiento agregando más nodos de base de datos.Los datos deben dividirse verticalmente para reducir la carga en una única base de datos y simplificar la administración.
Recuperación y recuperación ante desastres.En un entorno distribuido, la capacidad de recuperación ante desastres y la recuperación rápida del sistema se pueden mejorar mediante la fragmentación.Al dividir la base de datos, puede realizar copias de seguridad y restaurar partes de sus datos más fácilmente.
Relacionado con la lógica empresarialNo es adecuado para escenarios con consultas complejas entre tablas, porque la latencia y la complejidad de la red pueden aumentar después de la fragmentación de la base de datos.Los datos se pueden dividir según la lógica empresarial para que los datos relacionados se almacenen juntos y se reduzcan las consultas entre bases de datos.
Ajuste de la arquitectura del sistema.Cuando la arquitectura del sistema necesita admitir computación distribuida y procesamiento de datos a gran escala.Cuando es necesario reorganizar las estructuras de datos para optimizar una consulta u operación específica.
Control de costosSe pueden utilizar recursos de hardware económicos mediante fragmentación para reducir el costo total de propiedad.Al optimizar el almacenamiento de datos y los patrones de acceso, se pueden ahorrar recursos informáticos y de almacenamiento.
Aislamiento y seguridad de datosEl aislamiento físico de los datos se puede lograr mediante la fragmentación geográfica para cumplir con los requisitos reglamentarios.Los datos se pueden dividir por sensibilidad o frecuencia de acceso para un control de seguridad más granular.

      Aunque tanto la fragmentación como la división de bases de datos se pueden utilizar para resolver los problemas anteriores, sus enfoques son diferentes. Las subbases de datos están más inclinadas a resolver el almacenamiento y procesamiento de datos a gran escala, así como a mejorar la escalabilidad y las capacidades de recuperación ante desastres del sistema. La división de bases de datos se centra más en optimizar la organización de datos y los patrones de acceso, y en simplificar la gestión de bases de datos.