Este artigo apresenta brevemente os fundamentos do SQL, seu significado, definição e aplicação a diferentes tecnologias de banco de dados. Apresentamos vários tipos diferentes de sistemas que usam SQL, desde bancos de dados até o processamento de fluxo de eventos.
O que é SQL?
Definir: SQL [pron. "sequel"] - significa Linguagem de consulta estruturada (SQL)A Linguagem de Definição de Dados (DDL) é um conjunto de funções padronizadas da Linguagem de Definição de Dados (DDL) para criar tabelas, exibições e definir modelos de esquemas relacionais, e a Linguagem de Manipulação de Dados (DML) para consultar, inserir e modificar dados nas tabelas.
*As consultas select somente de leitura são tecnicamente parte de seu grupo DQL (Data Query Language). Ainda assim, em termos operacionais, muitos se referem a ela como DML porque ela pode fazer mais do que consultas somente de leitura.
Super breve história do SQL
Pesquisadores da IBM Donald Chamberlin e Raymond Boyce criados SQL na década de 1970 para dar vida ao conceito de modelos de dados relacionais de Edgar Codd. Essa nova linguagem para bancos de dados relacionais possibilitou o acesso aos dados sem a necessidade de entender como ou onde o sistema os armazenava fisicamente.
Os membros passaram anos desenvolvendo e propondo padrões ISO para encapsular as especificações do SQL. Por exemplo, em 1987, o órgão de padrões internacionais produziu a especificação ISO 9075:1987. Outra implementação popular foi o SQL 92, que se refere ao padrão ISO de 1992. Os acréscimos e as modificações continuaram até recentemente 2016.
Outros spin-offs incluem o Chamberlin's trabalho contínuo com SQL++ para aplicativos e análises de dados modernos adicionais.
Quem usa o SQL?
Todas as principais plataformas de banco de dados adotaram o SQL como uma interface de comando padrão para sistemas de banco de dados relacionais. Mas não são apenas os bancos de dados transacionais que têm interesse no SQL. As plataformas e os aplicativos de streaming também o utilizaram para abstrair diferentes tipos de serviços de back-end para os desenvolvedores.
As plataformas de análise e NoSQL também usaram o SQL para facilitar as consultas dos usuários finais, reduzindo a necessidade de codificação personalizada. Todas as linguagens de programação também têm alguma interface com o SQL para uso dos desenvolvedores.
O que um banco de dados SQL pode fazer?
Um banco de dados SQL armazena tabelas de informações em um conjunto de definições de linhas e colunas conhecidas como esquemas. As tabelas agrupam os valores de linha que compartilham características comuns - por exemplo, uma tabela de lojas, outra de transações de vendas etc.
Com um banco de dados SQL, você pode inserir novos dados nessas tabelas e extraí-los posteriormente usando uma consulta simples. As tabelas podem ser unidas, agrupadas e resumidas, permitindo cálculos imediatos usando seus valores.
Os bancos de dados SQL se concentram no armazenamento e na persistência de dados em um disco para acesso de longo prazo. Por isso, existem várias outras funções para gerenciar tabelas, armazenamento e serviços relacionados.
Esse foco na padronização ajudou os bancos de dados a se tornarem uma parte essencial dos negócios atuais.
O que é uma consulta SQL?
Uma consulta SQL informa ao banco de dados como recuperar ou gerenciar suas tabelas de dados. Existem diferentes consultas para selecionar linhas, criar tabelas e inserir ou excluir linhas.
Por exemplo, as consultas SELECT solicitam colunas especificamente nomeadas de uma tabela e recebem de volta um conjunto de linhas:
1 |
SELECIONAR COLUMNX DE TABELA1; |
Você também pode solicitar linhas em que as colunas correspondam a valores específicos:
1 |
SELECIONAR COLUMNX DE TABELA1 ONDE COLUMNX = 100; |
Unir várias tabelas virtualmente em uma consulta ao combinar valores de uma tabela e mapeá-los para outra:
1 |
SELECIONAR COLUNA, COLUNAB DE TABELA1, TABELA2 ONDE TABELA1.ID = TABELA2.ARMAZENAMENTO; |
As consultas também criam novas tabelas ao definir os tipos de dados de cada coluna. Este exemplo cria três colunas de números inteiros, caracteres de cadeia de comprimento variável e números de ponto flutuante:
1 |
CRIAR TABELA VENDAS (ESTORNO INT, NOME VARCHAR, DAILYSALES FLOAT); |
Em seguida, adicione algumas novas linhas à nova tabela com um comando INSERT:
1 |
INSERIR PARA VENDAS VALORES (1, 'HAPPY MART', 13570.00); |
Os comandos SQL podem ser muito mais avançados e complexos, mas todos eles se baseiam nos exemplos básicos acima.
Diferentes plataformas de banco de dados SQL
Os bancos de dados SQL incluem bancos de dados relacionais empresariais, como Oracle, Microsoft SQL Server*, IBM DB2, MySQL, PostgreSQL e muitos outros. Muitas empresas usam esses bancos de dados como partes essenciais de suas soluções e esperam alta confiabilidade, alto desempenho e segurança pronta para uso, incluindo gerenciamento de funções de usuário e criptografia.
*Observe que o nome do produto da Microsoft muitas vezes confunde as pessoas que pesquisam o termo geral "banco de dados SQL", por isso, às vezes, os termos são usados erroneamente de forma intercambiável. "MSSQL" é usado para fazer referência a ele de forma mais clara.
Muito já foi escrito sobre esses bancos de dados comuns, mas há muitos outros sistemas que usam SQL como linguagem de escolha. Uma variedade desses sistemas é discutida a seguir.
Bancos de dados SQL incorporados e de desktop
Estamos tão acostumados com os bancos de dados corporativos que é fácil esquecer como algumas outras plataformas de banco de dados são (ou foram) cruciais. Os bancos de dados de desktop são baseados em arquivos e não incluem uma camada de rede que se conecta a uma fonte central. Os usuários compactavam um arquivo ou pasta e o compartilhavam com outras pessoas como um projeto ou arquivo de documento.
No início, os desenvolvedores e analistas de desktop recorreram ao Microsoft Access e ao Dbase como os primeiros bancos de dados compatíveis com SQL. Muitos administradores de dados ainda usam o Access para criar ferramentas internas de entrada de dados baseadas em formulários.
Da mesma forma, muitos escolhem o SQLite para cenários incorporados e off-line em que é necessária uma baixa sobrecarga. Ele foi projetado para alimentar aplicativos autônomos que também podem ser portáteis. Até hoje, o SQLite é uma escolha popular para os desenvolvedores que criam aplicativos móveis.
Embora não sejam executadas a partir de um serviço centralizado em tempo real, existem soluções de sincronização para esse tipo de tecnologia. As soluções de sincronização permitem que eles atualizem os armazenamentos de dados corporativos, se necessário, mas outra camada de programação geralmente fornece isso sobre o próprio banco de dados.
Bancos de dados SQL na nuvem
Os fornecedores de plataformas de nuvem pública, como Google Cloud, Amazon Web Services e Microsoft Azure, têm ofertas de banco de dados como serviço (DBaaS) hospedado que usam SQL. O fornecedor se concentrou em fornecer o sistema de back-end, enquanto o usuário se concentrou em codificar aplicativos.
Eles podem ser diferentes das versões locais de ofertas semelhantes, mas têm consoles de gerenciamento integrados, monitoramento, otimizações e ambientes de computação distribuída dimensionáveis.
Os fornecedores de nuvem também podem oferecer controle dimensionável por meio da orquestração de contêineres (por exemplo, Kubernetes), enquanto outros aumentam ou diminuem automaticamente conforme a demanda.
Bancos de dados em nuvem híbrida
Muitas empresas querem a flexibilidade de um DBaaS baseado em SQL, mas com a segurança de ter um backup no local. Os fornecedores de bancos de dados aproveitaram as plataformas de nuvem para oferecer opções flexíveis de implementação. As implementações de banco de dados SQL em nuvem híbrida armazenam algumas partes de um banco de dados distribuído em diferentes plataformas ou no local, distribuindo a carga e a confiabilidade.
Essa área temática continua a se desenvolver à medida que a integração do banco de dados em nuvem amadurece. As empresas sempre buscarão manter diferentes níveis de controle, dependendo da necessidade. Não espere que isso mude tão cedo.
Bancos de dados SQL analíticos
Alguns bancos de dados baseados em SQL são voltados para a realização de análises mais avançadas, de alto volume ou de alto desempenho. Esses bancos de dados analíticos de Big Data incluem ofertas no local e baseadas na nuvem. Os exemplos incluem Snowflake, Amazon Redshift e Teradata.
Bancos de dados NoSQL
O que o NoSQL tem a ver com o SQL? Embora inicialmente voltadas para facilitar o desenvolvimento da Web com armazenamentos de documentos JSON, algumas plataformas NoSQL integraram o SQL como mais uma maneira de indexar e acessar dados.
Os fornecedores de NoSQL, como Couchbase, MongoDB, Cassandra e Redis, têm sua própria abordagem para consultar e interagir com seus sistemas.
Alguns usam drivers ODBC/JDBC de terceiros para fornecer uma camada sobre o sistema de consulta SQL. Outros, como o Couchbase, incorporam o recurso ao sistema, permitindo uma indexação eficiente e otimizações flexíveis de análise de consultas.
SQL para JSON
O uso de SQL em dados JSON requer sintaxe adicional além do SQL padrão. Por exemplo, funções adicionais podem consultar objetos em uma matriz ou procurar subobjetos em um conjunto complexo de mapeamentos.
Por exemplo, a Couchbase desenvolveu o N1QL para estender o SQL e permitir esse tipo de interação. O Couchbase também integra a linguagem SQL++ de Chamberlin em seu serviço de análise.
Outros bancos de dados empresariais têm algumas funções para manipular JSON, mas podem não estar armazenando e interagindo com JSON diretamente no banco de dados, como fazem os bancos de dados NoSQL.
Desenvolvedores de aplicativos
É importante diferenciar entre administradores de banco de dados (DBA) e desenvolvedores - ambos têm requisitos exclusivos para SQL. Um DBA sempre será proficiente em SQL, pois muitas funções de manutenção exigem isso. No entanto, um desenvolvedor talvez precise saber apenas o suficiente para inserir ou remover dados.
Para isso, os desenvolvedores podem usar as bibliotecas ORM (Object-Relational Mapping) ou ODM (Object Data Modeller) para abstrair a programação do banco de dados subjacente e de sua linguagem de consulta SQL. Os métodos de nível superior permitem que o desenvolvedor se concentre em escrever códigos familiares, enquanto as bibliotecas ORM/ODM criam o SQL e gerenciam os dados tabulares. Elas também ajudam a gerenciar e "migrar" o modelo de dados quando são necessárias alterações no código.
Os exemplos incluem o Eloquent ORM do Laravel, o .NET Entity Framework, o SQLx e os pacotes dedicados principalmente a lidar com migrações de tabelas, como o golang-migrate. Otomana é um Object Data Modeler (ODM) para o SDK Node.js do Couchbase que fornece esquema JSON e validação para NoSQL (Introdução ao correio otomano).
Quando um aplicativo se transforma em um sistema de produção, a eficiência da consulta SQL também se torna mais crítica. Um desenvolvedor ou usuário avançado centrado em SQL levará o SQL ao máximo, identificará gargalos no código e encontrará maneiras de otimizar as consultas. Eles também podem ser forçados a lidar manualmente com a geração de código SQL em vez de usar um ORM ou outro sistema automatizado.
O GraphQL é uma alternativa ao ORM, abordando alguns dos desafios inerentes ao mapeamento objeto-relacional. Ele fornece uma linguagem de interação de dados consistente, independentemente do tipo de fonte de dados. Pacotes adicionais, como o Prisma, fornecem uma camada de conectividade de banco de dados.
SQL para Big Data
Além dos bancos de dados analíticos, muitas outras plataformas usam SQL para aplicativos de ciência de dados, relatórios, processamento de fluxo e painéis.
Faísca
O ambiente de análise distribuída do Apache Spark, frequentemente usado por cientistas de dados, usa várias linguagens, inclusive o Spark SQL para acessar conjuntos de dados de arquivos distribuídos como Data Frames. Nesse caso, você usaria o SQL para abstrair um conjunto complexo de agentes que fazem o trabalho em segundo plano.
O ambiente do Spark está disponível por meio de plataformas baseadas na Web, como Jupyter, Zeppelin e Databricks.
Painéis de Business Intelligence
Os analistas de dados e de negócios que usam interfaces gráficas de usuário para bancos de dados estão familiarizados com a conexão com bancos de dados backend. Eles não precisam usar o SQL diretamente. Em vez disso, os analistas de negócios usam assistentes para escolher e analisar valores relevantes.
O resultado é um gráfico, mapa ou resumo de tabela que o usuário pode inserir em um relatório. O próprio aplicativo geralmente lê as tabelas na memória e as transforma para a finalidade do usuário sem expor o SQL subjacente.
Essas plataformas se tornam desafiadoras quando os conjuntos de dados se tornam grandes. Nesse ponto, o sistema pode passar uma consulta SQL para o banco de dados (também conhecida como consulta de passagem) para processar quaisquer agregações ou cálculos antes de enviar os dados para o cliente. Os produtos de BI nessa categoria incluem Tableau, QlikView, SAP e outros.
Fluxo de eventos SQL
O sucesso do Apache Kafka ajudou a tornar possível a movimentação de dados de muitas fontes em um sistema de mensagens distribuído de "changelog". No entanto, não é fácil criar um aplicativo com base no Kafka que faça análises em tempo real à medida que os eventos passam. Os fluxos de eventos têm opções baseadas em SQL para extrair valor dos dados em tempo real.
O ksqlDB resolve isso usando SQL para criar e gerenciar os fluxos subjacentes. Os usuários podem, então, criar consultas padrão nos dados armazenados e nos fluxos em tempo real à medida que são recebidos.
Leitura adicional
Como você pode ver pelos vários usos diferentes acima, as soluções de banco de dados atuais usam o SQL de forma generalizada. Você pode aprender rapidamente seus padrões básicos e aplicá-los a muitos cenários analíticos e operacionais diferentes. Aqui estão alguns links para saber mais sobre como a tecnologia Couchbase aproveita a flexibilidade e a familiaridade do SQL.