Servidor Couchbase

N1QL vs TSQL - Agregações com o Couchbase Server vs SQL Server

O SQL existe há muuuuito tempo. É uma maneira muito intuitiva e eficiente de processar dados estruturados e tem sido a escolha para bancos de dados há muitos anos. No entanto, com o mundo dos BIG DATA, os dados velocidade, variedade e volume. O SQL pode enfrentar os 2 "v" está bem com as otimizações: "velocidade" e "volume". Na verdade, muitos dos novos dialetos do SQL (N1QL, Spark, U-SQL, Impala, Drill e outros) estão fazendo exatamente isso. No entanto, "variedade" é um jogo diferente! O Big Data é complexo no novo mundo; ele tem um esquema imprevisível, em constante evolução e irregular, valores esparsos e estruturas profundamente aninhadas. Para isso, o SQL precisa ser ampliado!

Bem, estou muito animado em informar que criamos o N1QL no Couchbase Server 4 para resolver exatamente esses problemas! O N1QL pode percorrer facilmente as estruturas complexas do JSON (o padrão de serialização de fato para dados complexos). Usando o N1QL, você pode trabalhar não apenas com NULLs, mas também com atributos que são FALTANDO em vários formatos de JSON que você processa. OU você pode usar operadores como QUALQUER/TODO para consultar matrizes incorporadas no documento JSON. OU você pode usar comandos como UNNEST E NEST que pode achatar ou desaninhar matrizes aninhadas. Há muitas dessas extensões poderosas para serem contadas aqui, portanto, não farei isso. Em vez disso, vou mostrar uma joia oculta que foi publicada originalmente aqui por Gerald. Essa gema é muito útil com agregados se você estiver usando o N1QL em comparação com um banco de dados relacional como o SQL Server.

Uma das grandes vantagens do N1QL é sua capacidade de entender os tipos de matriz. Funções de agregação como MAX() não são revolucionárias, mas com as adições de aninhamento e matrizes, algo tão simples como MAX() pode ser superpoderoso. Uma observação antes de me aprofundar: vou escolher o TSQL e o SQL Server porque contribuí para o TSQL em minha vida anterior na Microsoft. No entanto, isso também se aplica ao Oracle, Postgres, Mysql, Informix ou DB2 e muito mais... Ok, então: Imagine tentar encontrar os atributos do produto que tem o preço MÁXIMO. No SQL Server, essa é uma consulta bastante simples de escrever usando TSQL;

Isso é bom. Aqui está o resultado - o produto com o preço mais alto é o produto chamado "c" com ID 3.

Esta é a aparência do plano de execução. Basicamente, o plano de execução procura o valor do preço MAX. Uma vez que você tenha o valor, é uma junção de loop aninhado para pesquisar os outros atributos do produto na tabela, como productID e name.

No entanto, o N1QL tem uma grande vantagem aqui. Como ele pode processar MAX() com matrizes, você pode retornar todos os atributos do documento sem uma verificação adicional.

OU você pode simplesmente retornar o documento completo usando a seguinte consulta;

Vamos dar uma olhada no plano de execução da consulta N1QL. Aqui vem o spoiler: você vê uma única operação FETCH que pode executar o MAX e a projeção é feita sem um segundo FETCH.

Embora esse seja um truque muito legal e um grande ganho de desempenho, apenas arranhamos a superfície do que o N1QL é capaz de fazer. Há muito mais a ser descoberto com o N1QL. Você pode começar a usar o Couchbase Server e o N1QL aqui com o Guia de introdução.

———————————————————

A propósito, se você quiser experimentar isso com o SQL Server 2016 e o Couchbase 4, aqui estão os scripts para ver isso em ação;

Script do servidor SQL

Observação: execute isso em um banco de dados chamado "teste"

Aqui está o script do servidor Couchbase

Observação: crie um bucket chamado "teste"

insert into test(key,value) values("1",{productID:1, price:10, name:'a'});

Compartilhe este artigo
Receba atualizações do blog do Couchbase em sua caixa de entrada
Esse campo é obrigatório.

Autor

Postado por Cihan Biyikoglu, diretor de gerenciamento de produtos, Couchbase

Cihan Biyikoglu é diretor de gerenciamento de produtos da Couchbase, responsável pelo produto Couchbase Server. Cihan é um entusiasta de big data que traz mais de vinte anos de experiência para a equipe de produtos da Redis Labs. Cihan começou sua carreira como desenvolvedor C/C++.

Deixe um comentário

Pronto para começar a usar o Couchbase Capella?

Iniciar a construção

Confira nosso portal do desenvolvedor para explorar o NoSQL, procurar recursos e começar a usar os tutoriais.

Use o Capella gratuitamente

Comece a trabalhar com o Couchbase em apenas alguns cliques. O Capella DBaaS é a maneira mais fácil e rápida de começar.

Entre em contato

Deseja saber mais sobre as ofertas do Couchbase? Deixe-nos ajudar.