Gene SQL em NoSQL: Apresentando o N1QL
O NoSQL foi uma reação ao movimento relacional que exigia um esquema rígido. O banco de dados relacional incluía a linguagem de consulta SQL para pesquisar e remodelar os resultados de forma poderosa para compensar. Com a versão 4.0, o Couchbase Server contém tanto o gene SQL quanto o gene NoSQL em seu pool genético! O Couchbase Server com SQL tem o modelo de dados flexível com documentos JSON E tem uma linguagem SQL poderosa - N1QL, que é de longe a linguagem mais expressiva para dados JSON. A combinação de JSON e SQL produz um emparelhamento poderoso que permite a programação simplificada e novos aplicativos empresariais poderosos que capacitam a nova economia digital.
Por que adicionar um Gene SQL ao Couchbase Server?
Essa é uma pergunta fácil de responder:
-
O SQL é a maneira mais avançada de consultar dados. O SQL existe há mais de quatro décadas. Embora a maioria das outras linguagens de sua faixa etária não seja mais procurada, o SQL continua sendo a linguagem preferida em muitas plataformas modernas de processamento de dados.
-
O SQL é o padrão de fato para a consulta de dados entre várias ferramentas e plataformas de dados. O SQL está no centro de uma ampla gama de ferramentas, desde ferramentas de visualização de dados, ambientes de relatórios empresariais, aplicativos de análise até plataformas ETL.
-
Isso também ajuda, com sua longa vida útil, O SQL já é uma ferramenta presente na caixa de ferramentas de muitos desenvolvedores. Pode ser a única coisa que você e seu pai cientista da computação têm em comum.
Download do Couchbase Server 4.0 Release Candidate |
---|
Primeira olhada em N1QL
Com o novo gene SQL no Couchbase Server, você obtém uma linguagem de consulta expressiva e um mecanismo de consulta - N1QL, combinados com um novo e poderoso mecanismo de indexação - os novos índices secundários globais.
Isso deve parecer familiar para muitos de vocês. Este é o N1QL:
1 2 3 |
<forte><em>SELECT * DE balde ONDE balde.quantidade>100 OU balde.preço < 9.95</em></forte> |
Não sabe dizer a diferença entre o SQL relacional que você conhece e o N1QL do Couchbase? Não se preocupe... Eles são primos muito próximos. No entanto, há muitas coisas que são exclusivas do N1QL.
-
N1QL é SQL+JSON: O Couchbase Server é um banco de dados de documentos com esquema flexível criado com base em JSON. Com o N1QL + JSON, o desenvolvimento é simplificado. O N1QL trabalha com JSON, mas não compromete a integridade da linguagem SQL, oferecendo suporte a operações entre documentos, como JOINs, ou com cláusulas que podem dinamizar dados JSON, como NEST e UNNEST.
-
O N1QL oferece a você desempenho com um novo e poderoso indexador - o GSI: Os índices secundários globais permitem baixa latência e escalabilidade inigualáveis. Os índices secundários globais são criados para oferecer a melhor latência e rendimento de varredura para aplicativos modernos e exigentes de big data.
-
O N1QL é dimensionado com o novo modelo de dimensionamento multidimensional: O ambiente de consulta N1QL e os novos índices secundários globais são arquitetados para serem dimensionados independentemente das operações de dados principais, eliminando as compensações comuns de outros bancos de dados relacionais e NoSQL de escolher um modelo de escala unificado para todas as cargas de trabalho, desde as operações de dados principais até a indexação e as consultas.
Vamos dar uma olhada mais detalhada nessas três propriedades exclusivas do N1QL.
N1QL: SQL+JSON
O SQL relacional opera sobre tabelas e colunas e precisa de um esquema rígido. Com o N1QL, todas as consultas são executadas sobre dados JSON no Couchbase Server. Você não precisa lidar com uma estrutura rígida de tabelas e colunas OU se preocupar em alterar o esquema à medida que seu modelo de dados evolui.
O N1QL se adaptará ao esquema que os documentos JSON apresentam à medida que forem criados e atualizados em seu bucket do Couchbase Server. Diferentemente do SQL em bancos de dados relacionais, atributos como quantidade ou preço, mencionados acima, podem estar ausentes. Você pode expressar sua consulta para desqualificar documentos que não contenham o atributo OU pode consultar o atributo somente quando ele existir.
1 2 3 |
<forte><em>SELECT * DE balde b1 ONDE b1.quantidade>100 OU (b1.preço IS NÃO FALTANDO E b1.preço < 9.95)</em></forte> |
Outra diferença importante é que o N1QL fornece conjuntos de resultados JSON e permite que você modele o JSON com operadores avançados, como JOINs, NEST e UNNEST.
1 2 3 4 5 6 7 8 9 10 11 |
<em><forte>"resultados": [ { "nome_da_cerveja": "Benchwarmer Porter", "brewery_name" (nome da cervejaria): "Cooperstown Brewing Company", "país": "Estados Unidos" }, { "nome_da_cerveja": "Old Jubilation Ale" (cerveja de jubilação antiga), "brewery_name" (nome da cervejaria): "Avery Brewing Company", "país": "Estados Unidos" }, ...</forte></em> |
Para aqueles que usam ferramentas clássicas de geração de relatórios, visualização de dados ou ETL (extrair-transformar-carregar): a boa notícia é que você pode obter drivers ODBC e JDBC de alta fidelidade que proporcionam uma integração perfeita com um conjunto de resultados no estilo "linhas e colunas" do N1QL. Graças a Drivers Simba ODBC e JDBCCom o ODBC/JDBC, você pode usar suas ferramentas favoritas, como Tableau, Excel ou PowerBI, com os drivers ODBC/JDBC para integrar toda a história do ciclo de vida dos dados.
Consultas de alto desempenho com a nova indexação secundária global (GSI)
O GSI traz um novo e poderoso indexador, além dos indexadores View e Spatial com redução incremental de mapas no Couchbase Server 4.0. O recurso GSI foi criado especificamente para o N1QL e para aplicativos de big data com alta taxa de consultas. Os GSIs alcançam um grande aumento de desempenho com uma arquitetura exclusiva que minimiza os efeitos de amplas dispersões para o processamento de consultas.
Os GSIs vêm com particionamento independente e escalabilidade com o Multi-dimensional Scaling (mais sobre o MDS posteriormente). O GSI também foi desenvolvido com base em um mecanismo robusto de armazenamento e cache chamado ForestDB.
Na figura abaixo, os lados esquerdo e direito mostram as etapas aproximadas de execução de uma consulta comum.
-
Consulta sem GSI: O caso à esquerda mostra como muitos produtos existentes funcionam para executar consultas em um ambiente distribuído. Na ausência de GSI, os índices são distribuídos de acordo com o esquema de particionamento de dados em N nós. O plano de execução de uma consulta típica envolve uma ampla espalhar-se para N nós, um coleta de N nós para capturar os resultados de cada nó, e uma execução final que compila os resultados finais da consulta.
-
Consulta com o GSI: As etapas de execução com o GSI não precisam se dispersar. A consulta pode atingir o índice que existe em um único nó e retornar os resultados.
A maneira de gerenciar o GSI deve ser muito familiar se você já trabalhou com índices relacionais antes.
1 2 3 4 |
<forte><em>CRIAR ÍNDICE índice_de_amigos ON user_profiles(amigos.id) ONDE tipo="usuário perfil" USO GSI;</em></forte> |
Novo modelo de escalabilidade: Escalonamento multidimensional
Para explicar o dimensionamento multidimensional, vamos começar pela arquitetura de alto nível do servidor: Com o Couchbase Server 4.0, cada nó contém um gerenciador de cluster, dados, índice e componentes de serviço de consulta, bem como o mecanismo de armazenamento e o cache gerenciado.
Veja a seguir os detalhes de cada componente:
-
O Cluster Manager é responsável por controlar as operações do cluster. Os nós que entram e saem do cluster ou operações como rebalanceamento são realizados pelo gerenciador de cluster.
-
O Data Service é responsável pelas principais operações de dados por meio da API get/set, que permite que você interaja com uma determinada chave. O Data Service também contém o mecanismo View: o mecanismo Map-Reduce incremental que existia nas versões anteriores.
-
O serviço de índice gerencia os novos índices criados especificamente para consultas N1QL. Os novos índices secundários globais são mantidos e podem ser consultados por meio do serviço de índices.
-
O Query Service gerencia as interações de consulta N1QL. Ele recebe e executa a consulta para gerar o resultado final para os aplicativos.
-
Todos os serviços vêm com serviços principais que gerenciam suas necessidades de armazenamento e cache.
-
Todos os clientes inteligentes e os drivers ODBC e JDBC vêm com um "mapa de cluster" que descreve quais nós devem ser acessados para as chamadas de API fornecidas para uma execução mais eficiente.
Mesmo que cada nó contenha o mesmo conjunto de componentes, com o novo modelo de escalabilidade, você pode ativar/desativar com elasticidade os serviços em azul em cada nó e criar "zonas" que dimensionam independentemente os serviços, como dados, índice e operações de consulta, e escolher o melhor design de HW por zona com base em sua carga de trabalho.
Você ainda pode implantar o cluster da mesma forma que faz hoje com o Couchbase Server 3.0 - escolha uma única configuração de HW para todos os nós, ative todos os serviços em todos os nós e distribua a carga por todos os nós. Esse é o bom e velho escalonamento horizontal uniforme. No entanto, o trabalho que precisa ser feito nos nós para realizar operações de dados essenciais, como GET/SETs rápidos, manter índices GSI e processar consultas N1QL, tem requisitos concorrentes. Compartilhar o mesmo nó nem sempre faz sentido se você for sensível às latências de suas operações.
O modelo adicional de escalabilidade multidimensional permite que você divida o cluster em "zonas" que executam serviços individuais (dados, consulta e índice) e, por sua vez, permite a escolha independente do HW para cada zona. Você pode escolher o melhor HW que combina com o tipo de indexação e consulta que deseja fazer e ainda manter a baixa latência em suas operações principais de GET/SET.
Na figura abaixo, o cluster tem três zonas que separam os serviços de dados, índice e consulta. As caixas cinzas representam serviços que estão desativados em um determinado nó.
Há mais... muito mais...
Fizemos uma análise superficial do N1QL e, para ter uma visão mais aprofundada, você pode fazer o download e jogar com a versão Release Candidate do Couchbase Server 4.0.
Para fazer o download do Couchbase Server 4.0, visite: página de downloads E para começar a usar o N1QL, basta acessar Guia de introdução ao N1QL.
Obrigado pela coisa mais sensata que li hoje. É legal ler um artigo tão bem pensado! Tenho certeza de que pelo menos uma vez na vida você teve que preencher um formulário. Eu uso um serviço simples
http://goo.gl/qeKtu2
para o preenchimento de formulários. Isso definitivamente facilita minha vida![...] gerenciamento são importantes nesses aplicativos, então o Couchbase 4.6 está adicionando funções para eles no N1QL, o SQL do Couchbase [...]
[...] você pode experimentar o N1QL e nós garantimos que você vai adorar! Para saber mais sobre o N1QL, visite a postagem que apresenta o N1QL. Para começar a usar o N1QL, visite nosso tutorial de introdução [...]