Ingestão e consulta de dados semiestruturados no Amazon Redshift - Amazon Redshift

Ingestão e consulta de dados semiestruturados no Amazon Redshift

Usando suporte a dados semiestruturados no Amazon Redshift, você pode ingerir e armazenar dados semiestruturados em seus data warehouses do Amazon Redshift. Usando o tipo de dados SUPER e a linguagem PartiQL, o Amazon Redshift expande a capacidade de data warehouse para integrar com fontes de dados SQL e NoSQL. Dessa forma, o Amazon Redshift permite análises eficientes em dados armazenados relacionais e semiestruturados, como JSON.

O Amazon Redshift oferece duas formas de suporte a dados semiestruturados: o tipo de dados SUPER e o Amazon Redshift Spectrum.

Use o tipo de dados SUPER se precisar inserir ou atualizar pequenos lotes de dados JSON com baixa latência. Além disso, use SUPER quando sua consulta exigir consistência forte, performance previsível de consulta, suporte a consultas complexas e facilidade de uso com esquemas evolutivos e dados sem esquema.

Em contraste, use o Amazon Redshift Spectrum com um formato de arquivo aberto se sua consulta de dados exigir integração com outros serviços da AWS e com dados armazenados principalmente no Amazon S3 para fins de arquivamento.

Casos de uso do tipo de dados SUPER

O suporte a dados semiestruturados usando o tipo de dados SUPER no Amazon Redshift oferece performance superior, flexibilidade e facilidade de uso. Os casos de uso a seguir ajudam a demonstrar como você pode usar o suporte a dados semiestruturados no SUPER.

Inserção rápida e flexível de dados JSON — O Amazon Redshift oferece suporte a transações rápidas que podem analisar JSON e armazená-lo como um valor SUPER. As transações de inserção podem operar até cinco vezes mais rápido do que executar as mesmas inserções em tabelas que destruíram os atributos de SUPER em colunas convencionais. Por exemplo, suponha que o JSON de entrada seja da forma {“a”:.., “b”:.., “c” “..., ...}. Você pode acelerar a performance da inserção muitas vezes armazenando o JSON de entrada em uma tabela TJ com uma única coluna SUPER S, em vez de armazená-lo em uma tabela convencional TR com colunas ”a', 'b', “c' e assim por diante. Quando há centenas de atributos no JSON, a vantagem de performance do tipo de dados SUPER torna-se substancial.

Além disso, o tipo de dados SUPER não precisa de um esquema regular. Você não precisa introspectar e limpar o JSON de entrada antes de armazená-lo. Por exemplo, suponha que um JSON de entrada tenha um atributo de string “c” e outros que tenham um atributo “c” inteiro, sem o tipo de dados SUPER. Nesse caso, você deve separar as colunas c_string e c_int ou limpar os dados. Em contraste, com o tipo de dados SUPER, todos os dados JSON são armazenados durante a ingestão sem a perda de informações. Posteriormente, você pode usar a extensão PartiQL do SQL para analisar as informações.

Consultas flexíveis para detecção — Depois de armazenar seus dados semiestruturados (como JSON) em um valor de dados SUPER, você pode consultá-los sem impor um esquema. Você pode usar a digitação dinâmica PartiQL e semântica lax para executar suas consultas e descobrir os dados profundamente aninhados que você precisa, sem a necessidade de impor um esquema antes da consulta.

Consultas flexíveis para operações de extração, carregamento e transformação (ETL) em visualizações materializadas convencionais — Depois de armazenar seus dados sem esquema e semiestruturados em SUPER, você pode usar visualizações materializadas do PartiQL para introspectar os dados e destruí-los em visualizações materializadas.

As visualizações materializadas com os dados destruídos são um bom exemplo de vantagens de performance e usabilidade para seus casos clássicos de análise. Quando você executa análises nos dados destruídos, a organização colunar das exibições materializadas do Amazon Redshift oferece melhor performance. Além disso, usuários e ferramentas de business intelligence (BI) que exigem um esquema convencional para dados ingeridos podem usar visualizações (materializadas ou virtuais) como a apresentação convencional do esquema dos dados.

Depois que suas visualizações materializadas do PartiQL extraírem os dados encontrados no JSON ou SUPER em visualizações materializadas colunares convencionais, você pode consultar as visualizações materializadas. Para obter mais informações sobre como o tipo de dados SUPER funciona com visualizações materializadas, consulte Usando o tipo de dados SUPER com visualizações materializadas.

Você pode aplicar políticas de mascaramento de dados dinâmicas aos valores scalar nos caminhos das colunas do tipo SUPER. Para obter mais informações sobre mascaramento de dados dinâmico, consulte Mascaramento dinâmico de dados. Para obter mais informações sobre como usar o mascaramento de dados dinâmico com o tipo de dados SUPER, consulte Uso do mascaramento de dados dinâmico com caminhos do tipo de dados SUPER. (visualização)

Para obter mais informações sobre tipos de dados SUPER, consulte Tipo SUPER.

Para obter exemplos de uso do tipo de dados SUPER, consulte as subseções deste tópico, começando com Conjunto de dados de amostra SUPER.

Conceitos para uso do tipo de dados SUPER

A seguir, você pode encontrar alguns conceitos de tipo de dados SUPER do Amazon Redshift.

Entenda qual é o tipo de dados SUPER no Amazon Redshift — OSUPER é um tipo de dados do Amazon Redshift que permite o armazenamento de arrays sem esquema e estruturas que contêm escalares do Amazon Redshift e possivelmente arrays e estruturas aninhadas. O tipo de dados SUPER pode armazenar nativamente diferentes formatos de dados semiestruturados, como JSON ou dados provenientes de fontes orientadas a documentos. Você pode adicionar uma nova coluna SUPER para armazenar dados semiestruturados e escrever consultas que acessam a coluna SUPER, juntamente com as colunas escalares usuais. Para obter mais informações sobre o tipo de dados SUPER, consulte Tipo SUPER.

Ingerir JSON sem esquema em SUPER — Com o tipo de dados SUPER semiestruturado flexível, o Amazon Redshift pode receber e ingerir JSON sem esquema em um valor SUPER. Por exemplo, o Amazon Redshift pode ingerir o valor JSON [10.5, “primeiro"] em um valor SUPER [10.5, 'primeiro'], que é um array contendo o valor decimal 10,5 do Amazon Redshift e o varchar 'primeiro'. O Amazon Redshift pode ingerir o JSON em um valor SUPER usando o comando COPY ou a função de análise JSON, como json_parse ('[10.5, “primeiro"]'). COPY e json_parse ingerem JSON usando semântica de análise estrita por padrão. Você também pode construir valores SUPER, incluindo arrays e estruturas, usando os próprios dados do banco de dados.

A coluna SUPER não requer modificações de esquema ao ingerir as estruturas irregulares de JSON sem esquema. Por exemplo, ao analisar um fluxo de cliques, você inicialmente armazena na coluna SUPER estruturas “clique” com atributos “IP” e “time”. Você pode adicionar um atributo “id do cliente” sem alterar seu esquema para ingerir tais alterações.

O formato nativo usado para o tipo de dados SUPER é um formato binário que requer menor espaço do que o valor JSON em sua forma textual. Isso permite uma ingestão mais rápida e processamento de tempo de execução de valores SUPER na consulta.

Consultar dados SUPER com PartiQL — PartiQL é uma extensão compatível com versões anteriores do SQL-92 que muitos serviços da AWS atualmente usam. Com o uso do PartiQL, construções SQL familiares combinam perfeitamente o acesso aos dados SQL clássicos e tabulares e aos dados semiestruturados do SUPER. Você pode executar a navegação de objetos e arrays e desaninhar arrays. O PartiQL estende a linguagem SQL padrão para expressar declarativamente e processar dados aninhados e multivalorizados.

PartiQL é uma extensão do SQL onde os dados aninhados e sem esquema de colunas SUPER são cidadãos de primeira classe. O PartiQL não requer que todas as expressões de consulta sejam verificadas durante o tempo de compilação da consulta. Essa abordagem permite que expressões de consulta que contêm o tipo de dados SUPER sejam digitadas dinamicamente durante a execução da consulta quando os tipos reais de dados dentro das colunas SUPER são acessados. Além disso, o PartiQL opera em um modo lax onde as inconsistências de tipo não causam falhas, mas retornam null. A combinação de processamento de consultas sem esquema e lax torna o PartiQL ideal para aplicativos de extração, carregamento, transferência (ELT) em que sua consulta SQL avalia os dados JSON que são ingeridos nas colunas SUPER.

Integrar ao Redshift Spectrum — O Amazon Redshift oferece suporte a vários aspectos do PartiQL ao executar consultas do Redshift Spectrum em JSON, Parquet e outros formatos que têm dados aninhados. O Redshift Spectrum suporta apenas dados aninhados que possuem esquemas. Por exemplo, com o Redshift Spectrum você pode declarar que seus dados JSON têm um atributo nested_schemaful_example em um esquema ARRAY<STRUCT<a:INTEGER, b:DECIMAL(5,2)>>. O esquema deste atributo determina que os dados sempre contém uma matriz, que contém uma estrutura com inteiro a e decimal b. Se os dados forem alterados para incluir mais atributos, o tipo também será alterado. Em contraste, o tipo de dados SUPER não requer esquema. Você pode armazenar arrays com elementos de estrutura que têm diferentes atributos ou tipos. Além disso, alguns valores podem ser armazenados fora de arrays.

Para obter informações sobre funções que oferecem suporte ao tipo de dados SUPER, consulte o seguinte:

Considerações sobre dados SUPER

Ao trabalhar com dados SUPER, considere o seguinte:

  • Use o driver JDBC versão 1.2.50, o driver ODBC versão 1.4.17 ou posterior e o driver do Amazon Redshift Python versão 2.0.872 ou posterior.

    Para obter informações sobre drivers JDBC, consulte Configurar uma conexão JDBC.

    Para obter informações sobre drivers ODBC, consulte Configurar uma conexão ODBC.

  • Encontre os exemplos de esquema usados nos tópicos a seguir em Conjunto de dados de amostra SUPER.

  • Todos os exemplos de código SQL usados nos tópicos a seguir são incluídos com o mesmo prefixo S3 para download. Estes incluem a linguagem de definição de dados (DDL) e instruções COPY, e também determinadas consultas TPC-H modificadas que funcionam com SUPER.

    Para visualizar ou baixar os arquivos SQL, execute um destes procedimentos:

    • Baixe o arquivo SQL tutorial SUPER e arquivo TPC-H.

    • Usando a CLI do Amazon S3, execute o comando a seguir. Você pode usar seu próprio caminho de destino.

      aws s3 cp s3://redshift-downloads/semistructured/tutorialscripts/semistructured-tutorial.sql /target/path aws s3 cp s3://redshift-downloads/semistructured/tutorialscripts/super_tpch_queries.sql /target/path

Para obter mais informações sobre as configurações SUPER, consulte Configurações SUPER.