Fazer exclusões e extrações de dados
Objetivos de aprendizagem
Após concluir esta unidade, você estará apto a:
- Usar o mecanismo de exclusão de dados da API em massa do Salesforce para aumentar o desempenho ao trabalhar com grandes volumes de dados.
- Usar o PK Chunking para evitar a lentidão de desempenho na extração de grandes quantidades de dados da sua organização.
- Entender as vantagens de truncar registros em objetos personalizados para agilizar a exclusão.
Exclusão e extração com API em massa
Quando se trata de sua organização do Salesforce, o gerenciamento de dados está sempre no topo da sua lista de prioridades. Parte desse gerenciamento envolve a exclusão e a extração de dados. Assim como no carregamento de grandes volumes de dados, a API em massa é útil quando se trata de excluir ou extrair LDV. No caso de um processo que envolva a exclusão de um milhão ou mais de registros, a opção de exclusão irreversível da API em massa pode resolver o problema.
Exclusão reversível x irreversível
O mecanismo de exclusão de dados do Salesforce pode ter um efeito profundo no desempenho de grandes volumes de dados. O Salesforce usa uma Lixeira para os dados que os usuários excluem. Em vez de remover os dados, ele são sinalizados como excluídos e visíveis na Lixeira. Esse processo é chamado de exclusão reversível. Quando dados são excluídos de forma reversível, eles ainda afetam o desempenho do banco de dados porque permanecem na organização e os registros excluídos precisam ser excluídos de qualquer consulta.
Os dados permanecem na Lixeira por 15 dias ou até que a Lixeira atinja um tamanho específico. Em seguida, os dados são excluídos fisicamente do banco de dados depois que os limites de tempo ou tamanho são atingidos ou quando a Lixeira é esvaziada através da interface de usuário, da API ou do Apex.
A API em massa é compatível com uma exclusão irreversível (exclusão física), permitindo que os registros ignorem a Lixeira e se tornem imediatamente disponíveis para exclusão. O uso da função de exclusão irreversível da API em massa é uma estratégia recomendada para excluir grandes volumes de dados e liberar espaço mais rapidamente, evitando que materiais estranhos afetem o desempenho. Observe que a opção de exclusão irreversível está desativada como padrão e deve ser ativada por um administrador.
Como agrupar dados
Ao extrair dados com a API em massa, as consultas são divididas em blocos de 100.000 registros como padrão. O campo de cabeçalho chunkSize pode ser usado para configurar blocos menores ou maiores, até 250.000. Blocos de maior dimensão usam menos lotes de APIs em massa, mas podem não funcionar tão bem. Pode ser preciso fazer algumas tentativas até determinar o tamanho ideal do bloco.
Em volumes extremamente altos, como de centenas de milhões de registros, definir esses blocos filtrando os valores de campo pode não ser prático. O número de linhas retornadas pode ser maior do que o limite de seletividade do otimizador de consultas do Salesforce. O resultado poderia ser uma varredura completa da tabela, com desempenho lento ou mesmo falha. Assim, é preciso empregar uma estratégia diferente.
Como usar o PK Chunking
Se a filtragem de atributos não ajuda a agrupar dados em blocos pequenos o suficiente, o que pode ser feito? Use o PK Chunking para lidar com extrações excessivamente grandes de conjuntos de dados. PK significa Primary Key (chave primária), a ID do registro do objeto, que é sempre indexada. O PK Chunking divide consultas em massa de tabelas muito grandes em blocos baseados nas IDs dos registros consultados.
Ative o PK Chunking ao consultar tabelas com mais de 10 milhões de registros ou quando uma consulta em massa atingir o tempo limite de forma constante. O PK Chunking é um recurso compatível com a API em massa do Salesforce, fazendo todo o trabalho de dividir as consultas em blocos gerenciáveis. Basta inserir alguns parâmetros na sua tarefa de API em massa para que a plataforma divida automaticamente a consulta em blocos separados, execute uma consulta para cada bloco e retorne os dados.
O PK Chunking pode ser usado com a maioria dos objetos padrão. É compatível com Conta, Campanha, CampaignMember, Caso, Contato, Lead, LoginHistory, Oportunidade, Tarefa e Usuário, além de todos os objetos personalizados. Para ativar o recurso, especifique o cabeçalho Sforce-Enable-PKChunking na solicitação de tarefa da sua consulta da API em massa.
Para escolher um tamanho de bloco, basta especificá-lo no cabeçalho. Por exemplo, esse cabeçalho habilita o PK Chunking com um tamanho de bloco de 50.000 registros: Sforce-Enable-PKChunking: chunkSize=50000. Cada pedaço é processado como um lote separado que conta para seu limite de lote diário e seus resultados devem ser baixados separadamente. Você pode realizar a filtragem ao usar o PK CHUNKING, incluindo uma cláusula WHERE na consulta API em massa. Com esse método, pode haver menos registros retornados para um bloco do que o número especificado em chunkSize.
Quando uma consulta for agrupada com sucesso, o status do lote original é mostrado como NOT_PROCESSED (não processado). Se o agrupamento falhar, o status do lote original aparecerá como FAILED (falha), mas todos os lotes em blocos que tenham sido enfileirados com sucesso durante a tentativa de agrupamento serão processados normalmente. Quando o status do lote original for alterado para NOT_PROCESSED, monitore os lotes subsequentes. É possível recuperar os resultados de cada lote subsequente após sua conclusão. Então o trabalho poderá ser fechado com segurança.
Truncamento
Se quiser excluir registros em objetos personalizados da organização de sandbox imediatamente, é possível tentar truncá-los. Truncar objetos personalizados é uma maneira rápida de remover permanentemente todos os registros de um objeto personalizado, mantendo o objeto e seus metadados intactos para uso futuro.
Truncar um objeto personalizado apaga todos os registros atualmente existentes na Lixeira do objeto personalizado; o histórico do objeto personalizado; e eventos, tarefas, anotações e anexos relacionados de cada registro excluído.
O truncamento é útil, por exemplo, se você criou um objeto personalizado e o preencheu com registros de teste. Ao terminar de usar os dados de teste, você poderá truncar o objeto para limpar os registros de teste, porém mantenha o objeto e coloque-o em produção. Isso é muito mais rápido do que excluir registros em lote e, possivelmente, recriar o objeto.
Aqui está o processo de configuração simples:
- Em Configuração, na caixa Busca rápida, insira Interface de usuário e selecione Interface de usuário (observação: está mesmo no final da lista).
- Na seção Configuração (entre Configurações de nome e Avançada), adicione uma marca a Ativar truncagem de objeto personalizado.
- Clique em Salvar.
Truncar um objeto personalizado remove permanentemente todos os seus registros. Você não pode recuperar os registros da Lixeira. Uma cópia do objeto truncado aparece na lista Objetos excluídos por 15 dias — durante esse período, o objeto e seus registros continuam a contar para os limites da sua organização — e, em seguida, o objeto copiado e seus registros são permanentemente excluídos.
Não é possível truncar objetos padrão ou personalizados que são referenciados por outro objeto através de um campo de pesquisa ou que estejam no lado mestre de um relacionamento entre mestre e detalhes, sejam referenciados em um instantâneo de relatórios, tenham um índice personalizado ou uma ID externa, ou que tenham ativado tabelas mínimas. Além disso, não será possível truncar objetos personalizados quando sua organização atingir o limite de objetos personalizados permitidos.
O uso de estratégias como o truncamento, junto com o PK Chunking e a exclusão irreversível da API em massa, ajuda a impedir que grandes volumes de dados invadam sua organização. Empregar esse recurso regularmente e conforme necessário é uma prática sensata para manter um desempenho robusto.
Recursos
- Desenvolvedor do Salesforce: Extracting Large Data Volumes (LDV) in Force.com
- Desenvolvedor do Salesforce: Use PK Chunking to Extract Large Data Sets from Salesforce
- Desenvolvedor do Salesforce: PK Chunking Header
- Ajuda do Salesforce: Truncate Custom Objects
- Desenvolvedor do Salesforce: Walk Through a Bulk Query Sample Using PK Chunking