Introdução
plataforma Salesforce, como o armazenamento de enormes dados históricos. Os objetos Big capturam dados para uso no Force.com e são acessíveis por meio de um conjunto padrão de APIs para clientes e sistemas externos. os grandes objetos são que eles foram construídos para fornecer desempenho consistente, quer haja 1 milhão de registros, 100 milhões ou mesmo 1 bilhão de registros . Essa escala é o que dá aos objetos grandes seu poder e o que define os recursos que são fornecidos.
Dois tipos de objetos grandes
Objetos grandes padrão – objetos definidos pelo Salesforce e incluídos nos produtos Salesforce. FieldHistoryArchive é um grande objeto padrão que armazena dados como parte do produto Field Audit Trail.
Objetos grandes personalizados – Novos objetos que você cria para armazenar informações exclusivas para sua organização.
Big Objects 🏠 é a solução de big data do Salesforce que pode atender às suas necessidades de armazenamento de grandes volumes de dados (bilhões de registros) na nuvem do Salesforce ☁️
Os grandes objetos estão incluídos nas edições Enterprise , Performance , Unlimited e Developer , mas para armazenar grandes volumes e usar o Aync SOQL, você precisará de uma licença adicional:
- 🆓 Armazenamento de até 1 milhão de registros
- 🆓 consultas SOQL
- 💰 Armazenamento de até 1 bilhão de registros
- 💰 Consultas assíncronas de SOQL
💰: Requer uma licença de objeto grande
O uso de armazenamento de objetos grandes é diferente dos objetos Salesforce, você pode ver a taxa de uso em ⚙️ Configuração → Uso de armazenamento
Comparação 🆚
Vamos comparar objetos Salesforce com objetos grandes
Objetos Salesforce:
- Armazenado em um banco de dados relacional
- Sufixo “__c” para objetos personalizados
- até ~ 20 milhões
- Suporta gatilhos, processos, fluxos
- Permissões de nível de objeto e campo e regras de compartilhamento
- SOQL
- Id gerado
- Pode ser modificado (metadados)
Salesforce Big Objects:
- Armazenado em um banco de dados não relacional
- Sufixo “__b” para objetos personalizados
- até 1 bilhão
- Sem suporte para gatilhos, processos, fluxos
- Suporta apenas permissões de nível de objeto e campos
- SOQL limitado + SOQL assíncrono
- Sem id, a chave é baseada em vários campos
- Leia somente após a criação (metadados)
Nota: Também existem objetos grandes padrão, por exemplo, o objeto “ FieldHistoryArchive ” é usado na Trilha de auditoria de campo que pode armazenar dados de auditoria de campo por até 10 anos (objetos grandes padrão não podem ser modificados).
Criação 🆕
Objetos grandes podem ser criados em ⚙️ Configuração → Objetos grandes → Novo
Depois de criado, o objeto grande não contém nenhum campo padrão, cabe a você criar campos personalizados e marcar aqueles que deseja usar no índice (tecla 🔑) conforme necessário.
Exemplo: criamos o objeto “QuoteFieldHistory__b” que permite acompanhar as alterações dos valores dos campos no objeto Quote (Quote)
Depois de criar seus campos personalizados obrigatórios, você pode criar seu índice, mas certifique-se de escolher a ordem certa para os campos de índice ⚠️ (pois isso afeta as consultas SOQL que podem ser executadas no objeto grande)
Por padrão, o grande objeto será criado com o status “Em desenvolvimento 🔧”, uma vez definido como “Implementado ✔️”, você não poderá modificá-lo 🚫 (ou seja, impossível adicionar campos ou modificar o índice). se você quiser modificá-lo, terá que recriá-lo.
Limitações
- Podemos criar até 100 objetos grandes em uma organização
- A soma dos tamanhos dos campos usados no índice não deve exceder 100 caracteres.
Uso 🖱️
Nesta seção, iremos detalhar como vamos usar o grande objeto “QuoteFieldHistory__b” que criamos.
Inserção de dados 💾
Podemos inserir dados em objetos grandes por meio de:
API
Objetos grandes suportam a API SOAP e a API Bulk V1 , então você pode usar o Data Loader para carregar dados em seus objetos grandes.
Ápice
Também podemos inserir dados via Apex usando o método insertImmediate da classe Database.
Nota: você também pode usar os métodos updateImmediate e deleteImmediate para atualizar e excluir registros de um grande objeto
Consulta de dados 🔍
O uso de SOQL com grandes objetos é limitado (devido ao armazenamento de dados em um banco de dados não relacional), aqui vamos nos concentrar na limitação de usar a cláusula WHERE que só suporta a filtragem usando campos de índice na ordem certa.
Exemplo de uma consulta SOQL válida ✔️ no grande objeto QuoteFieldHistory__b
SELECIONE Quote__c, Field__c, NewValue__c, OldValue__c FROM QuoteFieldHistory__b WHERE Quote__c = ‘0Q03N000000EnQaSAK’ e Field__c = ‘Status’
Esta consulta filtra os dados usando os campos de índice na ordem certa, o resultado é retornado instantaneamente (mesmo se o objeto grande contiver milhões de registros).
Exemplo de uma consulta SOQL inválida ❌ no grande objeto QuoteFieldHistory__b
SELECT Quote__c, Field__c, NewValue__c, OldValue__c FROM QuoteFieldHistory__b WHERE Field__c = ‘Status’
Esta consulta filtra por um campo do índice mas a ordem não é respeitada, pois antes do campo Field__c está o campo Quote__c que não aparece na cláusula WHERE, neste caso uma mensagem de erro é retornada durante a execução da consulta.
Exibir na interface do usuário 👁️
Objetos grandes não têm uma interface de usuário padrão; para exibir seus dados, você deve usar uma página do Lightning Component ⚡ ou do Visualforce 📄.
Exemplo aqui criamos um componente Lightning que consulta o grande objeto QuoteFieldHistory__b a fim de exibir os registros associados ao Quote
O componente Lightning deve usar uma consulta SOQL válida ✔️ que filtra com os campos de índice na ordem certa
Relatórios 📈
Para as necessidades de relatório, você precisará executar consultas mais complexas no objeto grande; para isso, você precisará usar o Async SOQL, que permite executar uma consulta em segundo plano e retornar o resultado em um objeto Salesforce personalizado.
O Aync SOQL é executado no objeto grande e retorna o resultado em um objeto Salesforce personalizado criado para essa finalidade.
Nota: você tem permissão para executar apenas uma consulta Async SOQL por vez.
Consultas SOQL assíncronas podem ser criadas usando a API REST no ponto de extremidade “ / services / data / v {APIVersion} / async-queries ”, mas a maneira mais fácil de criar uma consulta SOQL assíncrona é usar o utilitário Salesforce Workbench .
Selecione o objeto grande no campo “Objeto de origem”.
Crie sua consulta com o editor ou cole-a
na próxima etapa, escolha o objeto personalizado no qual o resultado será salvo e clique em “Enviar” para iniciar a consulta Async SOQL.
Um ID de trabalho será gerado, você pode acompanhar o status de sua solicitação via API no endpoint “ / services / data / v {APIVersion} / async-queries / {jobID} ”.
Fonte: https://medium.com