Introdução aos conjuntos de dados externos
O Couchbase está muito animado em anunciar seus novos "Conjuntos de dados externos" Serviços de análise na última versão do Lançamento do Couchbase Server 6.6. Os conjuntos de dados externos permitem que os clientes acessem dados armazenados externamente em tempo real a partir do Amazon Web Services (AWS) Simple Storage Service (S3) e combinem dados residentes no S3 com dados existentes do Couchbase para análise.
Caso de uso do cliente
Alguns clientes usam o AWS S3 para reduzir os custos de armazenamento e armazenar dados (por exemplo, vários anos de dados históricos, dados comerciais off-line para aprendizado de máquina, análises de produtos etc.). Eles expressaram o desejo de combinar, consultar e utilizar os dados do S3 em tempo real para disponibilizar esses dados aos usuários corporativos para análise. Você pode ler mais sobre outros casos de uso do Analytics aqui.
Como funcionam os conjuntos de dados externos?
Os conjuntos de dados externos oferecem a capacidade de consultar e analisar dinamicamente os dados que residem no AWS S3, permitindo que os usuários combinem facilmente os dados em tempo real de dentro e de fora dos nós de análise do Couchbase. Isso é feito em três etapas simples:
- Configure um link S3 usando um Chamada à API REST ou o interface de linha de comando (CLI)
- Criar um conjunto de dados externo no link S3
- Consultar o conjunto de dados usando SQL++ (ou sua ferramenta de BI favorita)
Vamos ver um exemplo simples. A iMaz, uma empresa de comércio eletrônico, vende produtos de consumo on-line. Seus dados de pedidos, produtos e usuários são armazenados em um cluster do Couchbase com serviços de dados e de análise (em conjuntos separados de nós no cluster). A iMaz também armazena as avaliações dos produtos no AWS S3 e gostaria de combinar e analisar os três produtos mais bem avaliados usando o Couchbase Analytics Service.
Amostra de dados do produto:
1 2 3 4 5 6 7 8 9 10 11 |
[ { "id": "Product_1", "docType": "Produto", "productId": 1, "price" (preço): 811.76, "salePrice": 70.14, "productName": "Bola de algodão ergonômica", "desc": "Bola de algodão ergonômica metálica fundida com plástico", } ] |
Amostra de dados de revisão:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
{ "id": "Review_0001764a17a844279a2227e137cc4e36", "docType": "Revisão", "reviewId": "0001764a17a844279a2227e137cc4e36", "productId": 1, "userId": 5862, "reviewerName": "M. Schaefer", "reviewerEmail": "...@mmail.com", "classificação": 5, "título": "Funciona bem e atende às expectativas.", "revisão": "O produto funciona muito bem e comprarei mais um para minha família.", "reviewDate": 1597273484 } |
Vamos seguir as três etapas acima com um exemplo de código de configuração e uma consulta SQL++.
Etapa 1: Configurar o link S3
Criaremos um link S3 usando um Chamada à API REST. (Como alternativa, você pode usar o CLI para criar links S3.). Precisamos fornecer:
- Nome do host do Analytics Service
- Credenciais de usuário do Analytics
- Nome do link S3 (neste caso, myS3Link)
- Nome do dataverse (se for diferente do padrão)
- Tipo de link (S3)
- ID da chave de acesso necessária do AWS S3
- Chave de acesso secreta obrigatória do AWS S3
- Região necessária do AWS S3 (por exemplo, us-west-2)
1 2 3 4 5 6 7 8 |
enrolar -u <nome de usuário>:<pwd> -X POST "http:///analytics/link" -d universo de dados=Padrão -d nome=myS3Link -d tipo=S3 -d accessKeyId=... -d secretAccessKey=... -d região=nós-oeste-2 |
Etapa 2: Criar um conjunto de dados externo
Usando o Analytics workbench, criaremos agora um conjunto de dados externo chamado "S3productreviews". Precisaremos especificar:
- Nome do bucket S3
- Nome do dataverse (se for diferente do padrão) e nome do bucket S3 (neste caso, cb-analytics-6.6-demo)
- Local do diretório (opcional) dentro do compartimento onde os arquivos serão lidos e coletados recursivamente (neste caso, as análises de produtos são armazenadas em uma pasta "reviews")
- Formato de arquivo (neste caso, usaremos JSON) com a capacidade de especificar um padrão de pesquisa (neste caso, *.json indica que todos os arquivos JSON serão incluídos na consulta de dados)
1 2 3 4 5 |
CRIAR EXTERNO CONJUNTO DE DADOS S3productreviews ON cb-análises-6.6-demonstração AT myS3Link USO "revisões" COM { "formato": "json", "include": "*.json" } ; |
Atualmente, o recurso de conjuntos de dados externos é compatível com o json, csv (valores separados por vírgula) e tsv (valores separados por tabulação) formatos de arquivo, inclusive arquivos gzip compactados (nomes de arquivos que terminam com .gz ou .gzip). Os formatos csv e tsv exigem que você especifique uma definição de tipo sublinhada (mais sobre isso em breve). Outros formatos de arquivo serão suportados em versões futuras. Você pode ler mais sobre isso aqui.
Etapa 3: Consulta usando o SQL++
Como última etapa, podemos agora executar a consulta SQL++ listada abaixo (que se parece exatamente com o SQL :)). Ela une o conjunto de dados de produtos existentes do Couchbase Analytics Service e os dados de avaliações de produtos do AWS S3 para obter os três produtos mais bem avaliados.
1 2 3 4 5 6 7 8 |
SELECIONAR p.productName, AVG(s.classificação) AS 'Classificação' DE S3productreviews s, produtos p ONDE s.productId = p.productId GRUPO BY. p.productName ORDEM BY AVG(s.classificação) DESC LIMITE 3; |
Aqui estão os resultados da consulta json:
1 2 3 4 5 |
[ { "Classificação": 4.33, "productName": "Atum de borracha licenciado"}, { "Classificação": 4.29, "productName": "Linda salada de plástico"}, { "Classificação": 3.86, "productName": "Bicicleta de algodão inteligente"} ] |
Isso é ótimo - agora podemos combinar e analisar dados externos localizados no AWS S3 a partir do Couchbase Analytics Service. Observe como foram necessárias poucas etapas para que pudéssemos analisar nossos dados; não houve ETL, e os dados ficaram imediatamente disponíveis!
Agora você deve estar se perguntando: Como isso teria funcionado se o formato do arquivo de análises do S3 fosse do tipo csv em vez de JSON? A resposta é simples: você simplesmente teria construído seu conjunto de dados externo de acordo. Abaixo, mostramos como seria a instrução create external dataset (criar conjunto de dados externo) acima para suportar csv:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
CRIAR EXTERNO CONJUNTO DE DADOS S3productreviews ( id STRING NÃO DESCONHECIDO, docType STRING NÃO DESCONHECIDO, reviewId STRING NÃO DESCONHECIDO, productId BIGINT, userId BIGINT, reviewerName STRING NÃO DESCONHECIDO, RevisorEmail STRING NÃO DESCONHECIDO, classificação BIGINT, título STRING NÃO DESCONHECIDO, revisão STRING NÃO DESCONHECIDO, reviewDate BIGINT ) ON `cb-análises-6.6-demonstração` AT myS3link USO "avaliações" COM { "formato": "csv", "include": "*.csv", "cabeçalho": falso }; |
Observe como a instrução create agora inclui informações de tipo sublinhadas. Isso é necessário para informar ao Analytics como interpretar os dados csv (por exemplo, não apenas como cadeias de caracteres).
A consulta SQL++ permanece exatamente a mesma. Isso mesmo, nenhuma mudança! Os conjuntos de dados externos são fáceis de configurar, flexíveis e simples de usar graças ao poder da linguagem SQL++. Os usuários podem desenvolver consultas ad hoc complexas para explorar mais os dados, responder a novas perguntas comerciais e combinar dados externos com dados de Links remotos para trazer outras fontes de dados do Couchbase também.
Benefícios
Aqui estão os principais benefícios decorrentes do uso de conjuntos de dados externos:
- Enriquecimento de dados. Os dados do Couchbase agora podem ser enriquecidos com informações adicionais obtidas de arquivos que residem no lago de dados baseado em S3 de uma empresa.
- Acesso dinâmico aos dados. Os dados mais recentes podem ser recuperados, transmitidos, combinados e analisados dinamicamente de qualquer bucket S3 em qualquer região do AWS durante a execução da consulta do Analytics.
- Processamento de consultas paralelas. Os usuários podem configurar e organizar o acesso aos dados do S3 usando a arquitetura de processamento de consultas de processamento paralelo massivo (MPP) do Analytics para obter uma resposta rápida a consultas que envolvem dados externos.
Resumo
Os conjuntos de dados externos desbloqueiam o valor dos dados externos ao vivo e arquivados que residem em lagos de dados baseados no S3. Os usuários podem combinar e analisar dados em tempo real, provenientes do AWS S3 e do Couchbase Analytics Service. Isso permite uma análise de dados mais rápida e abrangente e uma tomada de decisão ágil.
Recursos
Você pode saber mais sobre as declarações de conjuntos de dados externos aqui. Registro aqui para nosso próximo webinar "O que há de novo na versão 6.6 do Couchbase Server".
Explore os recursos do Couchbase Server 6.6
Agradecemos a Till Westmann pela coautoria e a Michael Carey pelas valiosas contribuições e pela revisão desta postagem.

Coautor
Till Westmann, diretor de engenharia da Couchbase
Till Westmann é diretor de engenharia da Couchbase e trabalha no Analytics Service. Antes de ingressar na Couchbase, Till desenvolveu software de gerenciamento de dados na Oracle, 28msec, SAP, BEA Systems, XQRL e Xyleme. Ele é membro da Apache Software Foundation e vice-presidente do projeto Apache AsterixDB. Till é PhD pela Universidade de Mannheim, na Alemanha.
Esse é um recurso revolucionário! Eu simplesmente adoro!!!