Ao sincronizar ou migrar dados para uma instância do Message Queue for RocketMQ, o DTS encaminha cada evento de alteração e instrução DDL para uma partição no tópico de destino. A atribuição da partição determina a ordem em que os consumidores downstream recebem as mensagens. A escolha da estratégia adequada permite equilibrar as garantias de ordenação e o throughput.
O DTS garante apenas consistência eventual. Caso as especificações da instância de destino do Message Queue for RocketMQ mudem (por exemplo, devido a scale up ou scale down), a ordem de entrega das mensagens também pode mudar. A nova ordem se aplica a todas as entregas subsequentes.
Estratégias de ordenação
Em uma instância do Message Queue for RocketMQ, os termos shard, partition e message queue são intercambiáveis e referem-se a uma fila de mensagens. Para mais informações, consulte Conceitos básicos (RocketMQ 5.x) e Conceitos básicos (RocketMQ 4.x).
O DTS oferece três estratégias de ordenação. Escolha com base no rigor necessário para preservar a ordem das operações e no throughput exigido.
|
Estratégia |
Funcionamento |
Compensações |
|
Entregar dados de forma ordenada e com visão unificada |
O DTS entrega todos os dados e instruções DDL na partição 0 do tópico de destino. |
Preserva a ordem de criação e modificação de todos os objetos do banco de dados source. O desempenho é moderado, pois uma única partição processa todo o tráfego. Recomendado quando a ordenação entre tabelas é obrigatória. |
|
Entregar dados com base em valores hash dos nomes do banco de dados e da tabela |
O DTS calcula um hash a partir da combinação dos nomes do banco de dados e da tabela e o utiliza como chave de partição. Dados e instruções DDL da mesma tabela sempre vão para a mesma partição. Instruções DDL não específicas de tabela (como |
Mantém a ordem de criação e modificação por tabela e oferece bom desempenho. A ordenação entre tabelas diferentes não é garantida, já que cada tabela é roteada para uma partição distinta. Mais indicado quando a ordenação por tabela é suficiente. |
|
Entregar dados com base em valores hash de uma coluna especificada |
O DTS calcula um hash a partir do valor de uma coluna e o usa como chave de partição. Por padrão, trata-se da chave primária. Na ausência dela, utiliza-se a chave única. Também é possível defina uma ou mais colunas como chave de partição. As instruções DDL vão para a partição 0 por padrão. Se uma tabela não tiver chave primária nem chave única, todos os seus dados e instruções DDL serão enviados para a partição 0. |
Proporciona o maior desempenho. Garante ordenação apenas para alterações em um único registro. Não assegura a ordem entre tabelas diferentes ou para tabelas sem chave primária. Projetado para cenários em que o throughput máximo é prioridade e a ordenação por registro é suficiente. |
Selecione a estratégia de ordenação
Selecione a opção Rules of the ordered messages delivered to RocketMQ. na etapa Configure Objects ao configurar uma instância de sincronização ou migração de dados do DTS.