Muitos analistas de dados estatísticos e cientistas de dados usam o Linguagem de programação R para analisar seus números fora de um banco de dados. Da mesma forma, os analistas de banco de dados tentam fazer tudo no mesmo banco de dados sempre que possível para manter uma única fonte. O Couchbase oferece uma base comum para preencher a lacuna entre conjuntos de dados JSON, linguagens de consulta avançadas e conjuntos de ferramentas analíticas como o R.
A natureza distribuída e tolerante a falhas e o esquema flexível são apenas alguns dos motivos pelos quais as empresas recorrem ao Couchbase. Para saber mais, consulte Por que as empresas usam NoSQL para fornecer produtos de última geração.
O SDK do Couchbase abrange as linguagens de programação mais populares: Java, .NET, Node.js, Go e outras. Mas não precisa fornecer uma unidade específica para o R, pois pode usar facilmente a API REST.
Nesta publicação, ressuscito um tutorial de programação em R de um blog mais antigo e vejo como o R funciona com a versão mais recente do Couchbase. Os exemplos mostram como executar uma consulta N1QL/SQL tabular nos dados JSON, bem como mapear os locais resultantes de alguns dos dados geoespaciais.
O que é R?
O R preenche a necessidade de um conjunto de ferramentas gráficas e de computação estatística de código aberto semelhante a produtos proprietários como o SAS e o SPSS. Isso abrange a análise estatística e a visualização gráfica voltada especialmente para gráficos prontos para publicação para documentação científica.
O R é melhor do que o Python para análise estatística? Isso pode ser debatido, mas há muitos defensores. De fato, para muitos desenvolvedores, ele pode ser o ambiente analítico mais popular que você já viu. nunca utilizado. Em um projeto global de busca de empregos de programação em REm sua pesquisa, o autor constatou que a programação R está em quinto lugar, atrás de Python, SQL, Java e Amazon ML. Ela ficou moderadamente acima de C/C++, Tableau, Hadoop e até mesmo SAS para conjuntos de ferramentas de análise de dados estatísticos.
O ecossistema que ele gerou oferece dezenas de milhares de pacotes que adicionam análises avançadas, análises de séries temporais, recursos de visualização e muito mais. Existem vários IDEs para a criação de soluções; neste post, usarei Estúdio R (que usei facilmente pela primeira vez ao escrever este artigo).
Configuração do Couchbase
A instalação padrão do servidor Couchbase tem tudo o que é necessário para este tutorial. Sugiro instalá-lo em um único nó, de preferência no PC que você está usando com o R Studio, para que o URL de conexão seja localhost. Estou usando a versão beta do Couchbase 7.x.
Depois de instalado, configure um novo balde com o amostra de viagem conjunto de dados e crie um novo usuário que tenha acesso a esse bucket.
Configuração do R Studio
Próximo, instalar R e depois R Studio Desktop (versão gratuita) com todas as opções padrão. Após a conclusão da instalação, inicie o R Studio e selecione Tools -> Install Packages (Ferramentas -> Instalar pacotes) e instale esses quatro: httr, jsonlite, ggplot2, leaflet.
Como alternativa, você pode executar o seguinte código no console de codificação do R:
1 |
instalar.pacotes(c("httr", "jsonlite", "ggplot2", "folheto")) |
O R Studio irá embora e instalará uma série de dependências subjacentes para você. Enquanto isso, você prossegue para a próxima etapa enquanto isso é executado.
Teste de consulta N1QL no Couchbase
Antes de iniciarmos o código de programação do R, vamos testar a consulta usando a guia Query (Consulta) na janela Console da Web do Couchbase.
1 2 3 4 5 6 7 8 9 |
SELECIONAR a.nome, contagem(*) como total_flights DE `viagem-amostra r JUNTAR `viagem-amostra a ON CHAVES r.airlineid ONDE r.tipo ="route" (rota) E a.tipo="companhia aérea" GRUPO BY a.nome ORDER BY total_flights DESC LIMITE 20 |
Se você já teve que trabalhar com JSON antes, verá como é simples consultar documentos no Couchbase usando uma sintaxe familiar.
O resultado mostra as 20 principais companhias aéreas e o número de voos que cada uma tem no banco de dados de amostra.
Codificação R Consulta N1QL
Configure seu projeto R definindo os requisitos da biblioteca na parte superior do script no console:
1 2 3 4 |
biblioteca(httr) biblioteca(jsonlite) biblioteca(ggplot2) biblioteca(folheto) |
Para criar a consulta e lidar com as respostas de dados, criamos algumas variáveis.
Primeiro, são fornecidas as informações de conexão do Couchbase, incluindo o URL, a porta e o nome de usuário e a senha que você criou anteriormente:
1 |
cbServidor <- "http://localhost:8093/query/service" |
Em seguida, codifique a consulta em sua própria variável também. Observe as aspas duplas com escape que são necessárias (\").
1 |
consulta <- "SELECT a.name, count(*) as total_flights FROM `travel-sample` r JOIN `travel-sample` a ON KEYS r.airlineid WHERE r.type =\"route\" AND a.type=\"airline\" GROUP BY a.name ORDER BY total_flights DESC LIMIT 20" |
O próximo passo é configurar a solicitação HTTP:
1 |
req <- httr::POST(cbServidor, httr::add_headers("Content-Type" = "application/x-www-form-urlencoded;charset=UTF-8"), corpo = colar("statement=", consulta), autenticação("público","público")) |
E, em seguida, receber a resposta real da solicitação e atribuí-la a uma variável para manter os dados:
1 2 |
res <- fromJSON(httr::conteúdo(req, "texto")) companhia aéreaVôos <- res$resultados |
É isso aí!
Visualize os resultados da consulta do Couchbase
Agora podemos ver os resultados da consulta inserindo a variável de dados:
O R-Studio, com a extensão ggplot e algumas configurações, é uma maneira simples de visualizar rapidamente os dados em uma variável:
1 |
ggplot(dados=companhia aéreaVôos, aes(x=nome, y=total_flights)) + tema(eixo.texto.x=texto_do_elemento(ângulo=90,justo=1)) + geom_bar(estatísticas="identidade") |
Agora você pode ajustar o código da consulta ou do ggplot e experimentar outras abordagens.
Mapear dados geoespaciais do Couchbase usando codificação R
O poder de alguns dos outros pacotes é incrível. Para o próximo exemplo, usamos a codificação R que aproveita o pacote Biblioteca de mapeamento da web de folhetos.
Vamos alterar a consulta para listar os hotéis que aceitam animais de estimação. Como os dados do hotel incluem um objeto geográfico de latitude e longitude ("geo"), podemos facilmente criar um objeto mapa dos resultados.
Ajuste sua consulta para incluir nome, latitude e longitude, juntamente com alguns filtros simples:
1 2 3 |
SELECIONAR nome, geo.lat como lat, geo.lon como longo DE `viagem-amostra ONDE tipo="hotel" E cidade="Londres" E pets_ok=verdadeiro |
Teste-o no console da Web do Couchbase e você obterá 37 resultados. Em seguida, coloque a consulta nas variáveis como antes:
1 2 3 |
consulta <- "SELECT name, geo.lat as lat, geo.lon as long FROM `travel-sample` WHERE type=\"hotel\" AND city=\"London\" AND pets_ok=true" req <- httr::POST(cbServidor, httr::add_headers("Content-Type" = "application/x-www-form-urlencoded;charset=UTF-8"), corpo = colar("statement=", consulta), autenticação("público","público")) res <- fromJSON(httr::conteúdo(req, "texto")) petFriendlyHotelsLondres <- res$resultados |
Os resultados serão semelhantes a este:
Para criar o mapa, usamos o pacote de folhetos e fornecemos algumas configurações para identificar os campos a serem usados para localizar os símbolos de marcadores no mapa.
1 |
folheto(dados = petFriendlyHotelsLondres) %>% addTiles() %>% addMarkers(~longo, ~lat, pop-up = ~como.caráter(nome), rótulo = ~como.caráter(nome)) %>% addProviderTiles(provedores$OpenStreetMap) |
O R Studio é um excelente IDE rico em informações que permite a edição de código, console interativo e componentes de visualização integrados, incluindo o mapa, assim como o ggplot fez com o gráfico anterior.
Naturalmente, você pode expandir qualquer um dos painéis da janela de acordo:
Conclusão
A flexibilidade do Couchbase e do R, com seu poderoso conjunto de pacotes de terceiros, é uma ótima combinação. Os desenvolvedores de aplicativos podem deixar os dados no banco de dados central e aproveitar o failover, o processamento distribuído, a pesquisa de texto completo e a análise de SQL.
Enquanto isso, o mesmo banco de dados pode servir aos analistas que precisam de uma API fácil de usar para acessar os dados sem fazer várias cópias off-line.
Essa abordagem abrangente de plataforma de dados continua a atrair empresas de todos os tamanhos que precisam simplificar sua arquitetura e, ao mesmo tempo, torná-la mais estável e dimensionável.
Obrigado por essa introdução útil. Como você envia o sinal de porcentagem, por exemplo, como em:
…
where meta(d).id LIKE '%something%'
…
Todas as consultas que contêm % falham, afirmando que não há declaração. Escapar com \ e duplicar %% também não parece resolver o problema. Isso é uma característica do R e não há como contornar o problema?
Content-Type="application/x-www-form-urlencoded", portanto, o corpo/consulta deve ser codificado por url.