Ingestão de streaming para uma visão materializada
Este tópico descreve como usar visões materializadas para acessar dados de streaming rapidamente.
A ingestão de streaming fornece ingestão de dados de baixa latência e alta velocidade do Amazon Kinesis Data Streams
Como os dados fluem de um serviço de streaming para o Redshift
Isso ajuda a entender como funciona a ingestão de streaming e os objetos de banco de dados utilizados no processo. Os dados fluem diretamente de um provedor de fluxo de dados para um cluster provisionado pelo Amazon Redshift ou um grupo de trabalho do Amazon Redshift sem servidor. Não há uma área de pouso temporária, como o bucket do Amazon S3. O grupo de trabalho ou o cluster provisionado é o consumidor de fluxos. No banco de dados do Redshift, os dados lidos do fluxo chegam a uma visão materializada. Os dados são processados assim que chegam. Por exemplo, os valores JSON podem ser consumidos e associados às colunas de dados de uma visão materializada usando SQL. Quando a visão materializada é atualizada, o Redshift consome dados dos fragmentos de dados alocados do Kinesis ou das partições do Kafka até que a visão seja atualizada com o fluxo.
Casos de uso para a ingestão de streaming do Amazon Redshift envolvem dados que são gerados continuamente e que precisam ser processados em um curto período ou latência desde sua geração. Isso é chamado de analytics quase em tempo real. As fontes podem incluir dispositivos de TI, dispositivos de telemetria de sistemas e dados de fluxo de cliques de um site ou uma aplicação movimentada.
Práticas recomendadas de análise de dados para melhorar a performance
Quando você configura a ingestão de streaming, há opções de como analisar os dados recebidos. As práticas podem incluir a execução da lógica comercial ou a formatação à medida que os dados chegam. Recomendamos as práticas recomendadas a seguir para evitar erros ou perda de dados. Elas são derivadas de testes internos e ajudam os clientes a solucionar problemas de configuração e de análise.
Extração de valores de dados transmitidos: se você usar a função JSON_EXTRACT_PATH_TEXT na definição de visão materializada para fragmentar o JSON de streaming, isso poderá afetar significativamente a performance e a latência. Para explicar, para cada coluna extraída usando JSON_EXTRACT_PATH_TEXT, o JSON de entrada é analisado novamente. Depois disso, ocorrem a conversão do tipo de dados, a filtragem e os cálculos de lógica de negócios. Isso significa, por exemplo, que se você extrair dez colunas dos dados JSON, cada registro JSON será analisado dez vezes, o que inclui lógica adicional. Isso ocasiona maior latência de ingestão. Uma abordagem alternativa que recomendamos é usar a função JSON_PARSE para converter registros JSON no tipo de dados SUPER do Redshift. Depois que os dados transmitidos chegarem à visão materializada, use o PartiQL para extrair strings individuais da representação SUPER dos dados JSON. Para ter mais informações, confira Consultar dados semiestruturados.
Além disso, observe que JSON_EXTRACT_PATH_TEXT tem um tamanho máximo de dados de 64 KB. Portanto, se algum registro JSON for maior que 64 KB, processá-lo com JSON_EXTRACT_PATH_TEXT vai gerar um erro.
Associação de um fluxo do Amazon Kinesis Data Streams ou de um tópico do Amazon MSK a visões materializadas: não recomendamos criar várias visões materializadas para ingestão de dados de um único fluxo ou tópico. Isso ocorre porque cada visão materializada cria um consumidor para cada fragmento no fluxo do Kinesis Data Streams ou no tópico do Kafka. Isso pode ocasionar controle de utilização ou throughput excessivo do fluxo ou do tópico. Também pode gerar custos mais altos, já que você ingere os mesmos dados várias vezes. Ao configurar a ingestão de streaming, recomendamos criar uma visão materializada para cada fluxo ou tópico.
Se o caso de uso exigir que você ingira os dados de um fluxo do KDS ou do tópico do MSK em várias visões materializadas, antes de fazer isso, consulte o AWS Big Data Blog
, especificamente Best practices to implement near-real-time analytics using Amazon Redshift Streaming Ingestion with Amazon MSK .
Comportamento de ingestão de streaming e tipos de dados
A tabela a seguir descreve detalhes do comportamento técnico e limites de tamanho para vários tipos de dados. Recomendamos que você se familiarize com eles antes de configurar uma visão materializada para ingestão de streaming.
Recurso ou comportamento | Descrição |
---|---|
Limite de tamanho de tópicos do Kafka | Não é possível usar um tópico do Kafka com um nome maior que 128 caracteres (sem incluir aspas). Para obter mais informações, consulte Nomes e identificadores. |
Atualizações e JOINs incrementais em uma visão materializada | A exibição materializada deve poder ser mantida de forma incremental. Não é possível realizar recálculo completo para o Kinesis ou Amazon MSK porque eles não preservam o histórico de fluxos ou tópicos após 24 horas ou 7 dias, por padrão. Você pode definir períodos de retenção de dados mais longos no Kinesis ou no Amazon MSK. No entanto, isso pode resultar em mais manutenção e custo. Além disso, atualmente não há suporte para JOINs em visões materializadas criadas em um fluxo do Kinesis ou em um tópico do Amazon MSK. Depois de criar uma visão materializada em seu fluxo ou tópico, você pode criar outra visão materializada para unir a visão materializada de streaming a outras visões materializadas, tabelas ou visões. Para obter mais informações, consulte ATUALIZAR EXIBIÇÃO MATERIALIZADA. |
Análise de registros | A ingestão de streaming do Amazon Redshift não oferece suporte à análise de registros que foram agregados pela Kinesis Producer Library (Conceitos chave da KPL - Agregação). Os registros agregados são ingeridos, mas são armazenados como dados de buffer de protocolo binário. (Consulte Buffers de protocolo |
Descompressão |
|
Tamanho máximo do registro | O tamanho máximo de qualquer registro que o Amazon Redshift consegue ingerir do Kinesis ou do Amazon MSK é de 16.777.216 bytes (16 MiB), o tamanho máximo compatível com o tipo de dados VARBYTE no Amazon Redshift. Por padrão, as visões materializadas de streaming do Amazon Redshift criadas em um fluxo de dados do Kinesis ou em um tópico do Amazon MSK definirão o tamanho da coluna de dados em 1.048.576 bytes (1 MiB) e 16.777.216 bytes (16 MiB), respectivamente. nota1MiB é o tamanho máximo atual de qualquer registro que pode ser colocado em um fluxo de dados do Kinesis. Para ter mais informações sobre os limites de tamanho do Kinesis, acesse Quotas and limits no Guia do desenvolvedor do Amazon Kinesis Data Streams. |
Registros de erros | Em cada caso em que um registro não pode ser ingerido no Redshift porque o tamanho dos dados excede o tamanho máximo, esse registro é ignorado. A atualização da visão materializada ainda é bem-sucedida, nesse caso, e um segmento de cada registro de erro é gravado na tabela do sistema SYS_STREAM_SCAN_ERRORS. Erros resultantes da lógica comercial, como um erro em um cálculo ou um erro resultante de uma conversão de tipo, não são ignorados. Teste a lógica com cuidado antes de adicioná-la à definição de visão materializada. |
Amazon MSK Multi-VPC private connectivity | No momento, a conectividade privada de várias VPCs do Amazon MSK não é compatível com a ingestão de streaming do Redshift. Uma alternativa é usar o emparelhamento de VPC para conectar VPCs ou o AWS Transit Gateway para conectar VPCs e redes on-premises em um hub central. Qualquer um deles permite que o Redshift se comunique com um cluster do Amazon MSK ou com o Amazon MSK Sem Servidor em outra VPC. |
Uso e ativação da atualização automática | As consultas de atualização automática para uma visão materializada são tratadas como qualquer outra workload do usuário. A atualização automática carrega os dados do fluxo assim que eles chegam. A atualização automática pode ser ativada explicitamente para uma visão materializada criada para ingestão de streaming. Para fazer isso, especifique |
Ingestão de streaming e Amazon Redshift sem servidor | As instruções de configuração que se aplicam à ingestão de streaming do Amazon Redshift em um cluster provisionado também se aplicam à ingestão de streaming no Amazon Redshift sem servidor. É importante especificar o nível necessário de RPUs para comportar a ingestão de streaming com atualização automática e outras workloads. Para obter mais informações, consulte Faturamento do Amazon Redshift Serverless. |
Nós do Amazon Redshift em uma zona de disponibilidade diferente do cluster do Amazon MSK | Ao configurar a ingestão de streaming, o Amazon Redshift tenta se conectar a um cluster do Amazon MSK na mesma zona de disponibilidade, caso o reconhecimento de rack esteja habilitado para o Amazon MSK. Se todos os seus nós estiverem em zonas de disponibilidade diferentes do cluster do Amazon Redshift, você poderá ter custos de transferência de dados entre zonas de disponibilidade. Para evitar isso, mantenha pelo menos um nó de cluster de agente do Amazon MSK na mesma AZ do cluster ou grupo de trabalho provisionado do Redshift. |
Atualizar local de início | Depois de criar uma visão materializada, sua atualização inicial começa em |
Formatos de dados | Os formatos de dados aceitos são limitados àqueles que podem ser convertidos de |
Anexar registros a uma tabela | É possível executar |
Executar TRUNCATE ou DELETE | É possível remover registros de uma visão materializada que é usada para a ingestão de streaming usando o seguinte:
|