Compartilhamento de tecnologia

Gerenciamento de banco de dados na era do big data: a importância da fragmentação do banco de dados e da separação entre leitura e escrita

2024-07-12

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

Prefácio

Os termos "fragmentação" e "divisão de banco de dados" são frequentemente mencionados no campo de banco de dados, geralmente referindo-se a conceitos semelhantes, mas diferindo em detalhes. A fragmentação de banco de dados geralmente se refere à distribuição de dados em um banco de dados grande para vários bancos de dados menores para melhorar o desempenho e a capacidade de gerenciamento. A divisão de banco de dados, por outro lado, refere-se mais amplamente à decomposição de um sistema de banco de dados em partes menores, que podem incluir fragmentação de banco de dados ou outros tipos de divisão, como fragmentação de tabela.

Aqui estão as diferenças entre fragmentação e divisão de banco de dados:

recursoFragmentação de banco de dadosDivisão de banco de dados
definiçãoDistribua dados entre várias instâncias físicas de banco de dados.Divida o sistema de banco de dados em entidades menores.
PropósitoMelhore o desempenho, a escalabilidade e a tolerância a falhas.Melhore o desempenho, o gerenciamento e a escalabilidade.
tipoInclui principalmente divisão horizontal e divisão vertical.Incluindo subbanco de dados, subtabela, divisão horizontal, divisão vertical, etc.
dividir horizontalmenteÉ uma forma de fragmentação que divide os dados por linhas.Provavelmente parte de uma divisão do banco de dados.
dividir verticalmenteÉ uma forma de fragmentação que divide os dados por colunas.Provavelmente parte de uma divisão do banco de dados.
complexidade de implementaçãoÉ necessária uma lógica de roteamento superior e adicional.Depende do método de divisão específico.
InfluênciaO código da camada de aplicação pode precisar ser modificado para se adaptar à subbiblioteca.O código da camada de aplicação pode precisar ser modificado para acomodar as alterações.
exemploArmazene os dados de diferentes usuários em diferentes bancos de dados, por exemplo, atribua-os a diferentes bancos de dados de acordo com o valor hash do ID do usuário. Divida uma tabela grande em várias tabelas menores ou divida os dados verticalmente em diferentes tabelas ou bibliotecas. Divisão vertical: armazena informações do usuário e informações do pedido em diferentes bancos de dados. Divisão horizontal: armazena a tabela de pedidos em diferentes bancos de dados de acordo com o intervalo de ID do pedido;

Exemplo de biblioteca filial

  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. );

Exemplo de divisão de banco de dados

  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. );

A fragmentação e a divisão de banco de dados são usadas em diferentes cenários para atender às necessidades específicas de negócios e aos desafios técnicos:

CenasFragmentação de banco de dadosDivisão de banco de dados
O volume de dados é muito grandeQuando a quantidade de dados em um único banco de dados excede os recursos de armazenamento ou processamento de um único servidor.Quando o tamanho de uma tabela de banco de dados afeta o desempenho da consulta.
Gargalo de desempenhoAo encontrar altas operações simultâneas de leitura e gravação, um único banco de dados não pode fornecer rendimento suficiente.As operações de leitura e gravação em uma única tabela começam a ficar mais lentas, afetando o tempo de resposta do aplicativo.
Requisitos de escalabilidadeO banco de dados precisa ser expandido horizontalmente para melhorar o desempenho adicionando mais nós de banco de dados.Os dados precisam ser divididos verticalmente para reduzir a carga em um único banco de dados e simplificar o gerenciamento.
Recuperação e recuperação de desastresNum ambiente distribuído, a capacidade de recuperação de desastres e a recuperação rápida do sistema podem ser melhoradas através da fragmentação.Ao dividir o banco de dados, você pode fazer backup e restaurar partes de seus dados com mais facilidade.
Lógica de negócios relacionadaNão é adequado para cenários com consultas complexas entre tabelas, porque a latência e a complexidade da rede podem aumentar após a fragmentação do banco de dados.Os dados podem ser divididos de acordo com a lógica de negócios para que os dados relacionados sejam armazenados juntos e as consultas entre bancos de dados sejam reduzidas.
Ajuste da arquitetura do sistemaQuando a arquitetura do sistema precisa suportar computação distribuída e processamento de dados em larga escala.Quando as estruturas de dados precisam ser reorganizadas para otimizar uma consulta ou operação específica.
Controle de custoRecursos de hardware baratos podem ser utilizados por meio de fragmentação para reduzir o custo total de propriedade.Ao otimizar o armazenamento de dados e os padrões de acesso, os recursos de armazenamento e computação podem ser economizados.
Isolamento e segurança de dadosO isolamento físico dos dados pode ser alcançado através da fragmentação geográfica para cumprir os requisitos regulamentares.Os dados podem ser divididos por sensibilidade ou frequência de acesso para um controle de segurança mais granular.

      Embora tanto a fragmentação quanto a divisão de banco de dados possam ser usadas para resolver os problemas acima, seus focos são diferentes. Os sub-bancos de dados estão mais inclinados a resolver o armazenamento e processamento de dados em grande escala, bem como a melhorar a escalabilidade e as capacidades de recuperação de desastres do sistema. A divisão de banco de dados se concentra mais na otimização da organização de dados e nos padrões de acesso e na simplificação do gerenciamento de banco de dados.