No mundo do Big Data, onde temos gogolbytes de informações disponíveis sobre todos os aspectos dos nossos aplicativos e dos usuários que interagem com eles, é fundamental poder analisar todos esses dados e fornecer inteligência perspicaz. Na Couchbase, estamos trabalhando para criar plataformas de gerenciamento de dados que permitam aproveitar esses dados. Isso poderá ser acessado por uma variedade de plataformas de análise padrão do setor, como Tableau, QlikView e Microstrategy, bem como por plataformas de análise NoSQL de última geração, como Nuvem9 e SlamDataNo entanto, também é importante que os desenvolvedores tenham APIs para acessar os sistemas que armazenam e analisam esses dados. Com esse nível de acesso direto, esses desenvolvedores têm a flexibilidade de criar tudo, desde painéis simples até relatórios personalizados completos para seus usuários.
A partir da versão 2.2.4 do nosso SDK do Node.js, agora temos suporte experimental para realizar consultas do Couchbase Analytics em um cluster. A API é muito semelhante às APIs existentes disponíveis para realizar consultas N1QL no SDK do Node.js.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
// Conecte-se ao cluster local e habilite o suporte experimental ao Couchbase Analytics. var agrupamento = novo couchbase.Aglomerado('couchbase://localhost'); agrupamento.enableCbas(['localhost:8095']); // Realizar uma consulta simples, selecionando todos os usuários com um e-mail específico. var qs = 'SELECT * FROM users WHERE email="tom@example.com"'; var q = couchbase.CbasQuery.fromString(qs); agrupamento.consulta(q, função(erro, res) { se (erro) { lançar erro; } console.registro(res); }); |
Como você pode notar, a diferença entre nossas APIs N1QL e as APIs do Couchbase Analytics é que, com o Couchbase Analytics, você deve executar suas consultas no nível do cluster e usar o CbasQuery para instanciar seu objeto de consulta.
Usando essas novas APIs, também criamos um novo aplicativo de demonstração de painel que reúne algumas bibliotecas conhecidas no mundo do Node.js para mostrar como você pode transformar essas novas APIs em uma interface útil que pode exibir métricas específicas de negócios que são úteis para você e seus colegas.
Como funciona o painel
O painel que montamos consiste em dois componentes separados. Primeiro, um componente do lado do servidor que está executando o SDK do Node.js e fornece uma interface restful. Segundo, um componente do lado do cliente que é uma página HTML5 simples. O componente do lado do servidor atenderá ao componente do lado do cliente a partir da raiz de seu serviço da Web para facilitar as coisas.
O lado do cliente do aplicativo é uma página HTML e Javascript simples que contém um pequeno formulário que permite especificar alguns parâmetros, uma grande seção de texto que exibe todas as consultas que foram executadas no cluster do Couchbase Analytics, bem como três gráficos que são usados para apresentar os dados das suas consultas. Quando a página é carregada ou quando você clica no botão de atualização, enviamos solicitações para o aplicativo no lado do servidor solicitando várias informações sobre nossos dados de amostra de viagem. Quando uma resposta é recebida do servidor, passamos essas informações para o Chart.js, que gera nossos gráficos.
O código para isso é bastante simples.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
$.obter('/pricestats?' + FormData) .feito(função(dados) { addNarration(dados.narração); var informações = dados.dados; config1.dados.rótulos = []; config1.dados.conjuntos de dados[0].dados = []; para (var i = 0; i < informações.comprimento; ++i) { config1.dados.rótulos.empurrar(informações[i].atualizar); config1.dados.conjuntos de dados[0].dados.empurrar(informações[i].métrica); } myChart1.atualização(); }).falhar(função(erro) { addNarrationText(erro.toString()); }); |
Ele simplesmente usa o Express para iniciar um servidor Web que responde a qualquer solicitação de raiz com a página do lado do cliente para esse aplicativo. Além disso, ele registra alguns pontos de extremidade REST que o aplicativo usa para atualizar seus gráficos. Cada um desses pontos de extremidade REST faz o front-end de uma consulta SQL++ no cluster do Couchbase Analytics e, em seguida, retorna os resultados dessa consulta para o lado do cliente do aplicativo a ser representado graficamente.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
var qs = 'SELECT ' + ' parse_date(SUBSTR(e.date, 0, 10), "Y-M-D") AS grpdate, ' + 'SUM(e.price) AS metric ' + 'FROM users u ' + ' UNNEST u.flights e ' + 'WHERE parse_date(SUBSTR(e.date, 0, 10), "Y-M-D") >= parse_date("2016-10-01", "Y-M-D") ' + ' AND parse_date(SUBSTR(e.date, 0, 10), "Y-M-D") < parse_date("2016-11-01", "Y-M-D") ' + 'GROUP BY grpdate ' + 'ORDER BY grpdate;'; var q = couchbase.CbasQuery.fromString(qs); agrupamento.consulta(q, função(erro, qres) { se (erro) { res.status(400).enviar(erro); retorno; } res.enviar({ dados: qres, narração: [ ['sql', qs] ] }); }); |
Além do serviço RESTful fornecido pelo aplicativo no lado do servidor, também incluímos a criação automática dos buckets de sombra do Couchbase Analytics necessários para a amostra de viagem e a inserção de 1.000 entradas de dados de compra de voos gerados aleatoriamente para nos dar algo interessante para analisar.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
var qs = 'CREATE BUCKET tsBucket WITH {"name": "travel-sample", "nodes": "127.0.0.1"};' + 'CREATE SHADOW DATASET airlines ON tsBucket WHERE `type` = "airline";' + 'CREATE SHADOW DATASET airports ON tsBucket WHERE `type` = "airport";' + 'CREATE SHADOW DATASET hotels ON tsBucket WHERE `type` = "hotel";' + 'CREATE SHADOW DATASET landmarks ON tsBucket WHERE `type` = "landmark";' + 'CREATE SHADOW DATASET routes ON tsBucket WHERE `type` = "route";' + 'CREATE SHADOW DATASET users ON tsBucket WHERE `type` = "user";' + 'CONNECT BUCKET tsBucket WITH {"password":""};'; var q = couchbase.CbasQuery.fromString(qs); agrupamento.consulta(q, função(erro, res) { // Ignoramos os erros aqui, pois eles geralmente são apenas // 'o conjunto de dados já existe'. retorno de chamada(nulo); }); |
Obtendo o painel de exemplo
Para começar a usar nossa nova demonstração, basta acessar o repositório do GitHub, que está localizado em: https://github.com/couchbaselabs/node-cbasdashdemo e seguindo o guia de introdução disponível no LEIAME incluído.
Obtendo a versão do Node.js
Como em todos os nossos lançamentos do Node.js, publicamos essa versão no NPM e ela pode ser instalada com uma simples invocação do npm:
1 |
npm instalar Couchbase@2.2.4 |
Também enviamos binários pré-construídos como parte do nosso processo de lançamento do npm, o que permite que você comece a usar o SDK do Node.js sem maiores problemas (observe que o Node.js v7.0.0 não tem binários pré-construídos do módulo Couchbase disponíveis no momento e requer um compilador funcional para ser instalado).