Este documento apresenta uma palestra sobre SQL e NoSQL. Discute o histórico e popularidade da SQL, além de exemplos de uso em diferentes contextos como MDX, SPARQL, ORM, Cassandra, MongoDB e grafos. Também aborda integrações da SQL com R, Python, Hadoop e Spark para data science.
3. Quem sou eu
Mestre e doutor em computação pelo ITA
Escritor da SQL Magazine, .NET e Java Magazine
Colaborador do iMasters há 15 anos
Autor do livro “Conversando sobre banco de dados” e
“Introdução ao MongoDB”
Co-produtor do DatabaseCast
Consultor independente e autor de cursos on-line e
presencais
4. Agenda
SQL como linguagem
Dados temporais e TSLQ2
MDX
SPARQL
ORM e SQL
SQL e NoSQL
Data Science e SQL
Conclusões
5. SQL como linguagem
SQL é uma linguagem DSL (Domain Specific Language)
Proposta no final dos anos 1970 e padronizada pelo ANSI em 1986
Alto nível: o que você precisa e não como fazer
Suportada por diversos produtos: SQL Server, MySQL, PostgreSQL,
Oracle, etc
Possui “dialetos” com recursos exclusivos. Exemplos: TSQL,
Pl/SQL e CQL
Fato: A SQL é a linguagem mais utilizada no mundo para
manipular dados!
10. SQL: prós e contras
SQL é dividia em grupos: DDL, DML e DCL
Similaridade com língua inglesa
Requer modelo relacional
Baseada em cláusulas, palavras-chaves, expressões e recursos
extras
Diferente do que é utilizado em uma linha de programação
Otimizações geralmente realizadas nos objetos e não nos
comandos
11. Dados temporais e TSQL2
TSQL2 surgiu em 1990 para lidar com dados temporais
Operações para lidar com intervalos e dados históricos
Conceitos usados em bancos temporais específicos e recentemente
aproveitados no Oracle FlashBack e SQL Server 2016
SELECT SUM(N.Cost), SUM(N2.Cost)
VALID VALID(NI)
FROM NBC_FB_Insertion AS NI NI2, NBCShows AS N N2
WHERE NI.GameName = N.ShowName
AND VALID(NI) OVERLAPS VALID(N)
AND NI2.GameName = NS2.ShowName
ANDVALID(NI2) OVERLAPS VALID(N2)
AND TRANSACTION(NI2) OVERLAPS DATE ’now - 14 days’
AND TRANSACTION(N2) OVERLAPS DATE ’now - 14 days’
GROUP BY VALID(NI) USING MONTH
12. MDX – MultiDimensional eXpressions
MDX surgiu em 1980 para consultar dados em cubos OLAP
Somente para leitura e posteriormente transformada em uma ou
mais instruções SQL
Adotada no SSAS e nas ferramentas da Pentaho
SELECT
[Measures].[Store Sales] ON COLUMNS,
[Date].Members ON ROWS
FROM Sales
WHERE ( [Store].[USA].[CA] )
13. SPARQL – Pesquisa semântica
SPARQL foi criada para consultas textuais aproximadas
Consulta dados definidos em um RDF e organizados de acordo com
uma ontologia
Lida com conhecimento semântico de alto nível
Padronizada pelo W3C em 2008 e implementada no DB2 e Apache
Jena
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
SELECT ?name ?email
WHERE {
?person a foaf:Person.
?person foaf:name ?name.
?person foaf:mbox ?email.
}
14. ORM e SQL
ORM lida com objetos na aplicação
Geralmente obtém dados da fonte e possui uma linguagem
específica para manipulação
Exemplo : Hibernate 3 suporta a JPQL (Java Persistence Query
Language)
Modelo é criado em classe Java por anotações como @Entity,
@ManyToMany, @Id, @OneToMany e outras
Exemplo de modelo: arquivo Author.java
Exemplo de consulta com JPQL: arquivo jpsql.java
15. Paradigna Map/Reduce
Novas versões de linguagens estão apostado em Map/Reduce e
recursos de linguagems funcionais (programação reativa)
Streams do Java 8 e LINQ com funções Lambda no C#
Exemplo: Uso de Streams no Java 8
List<String> myList =
Arrays.asList("a1", "a2", "b1", "c2", "c1");
myList
.stream()
.filter(s -> s.startsWith("c"))
.map(String::toUpperCase)
.sorted()
.forEach(System.out::println); // Retorna C1 e depois C2
16. SQL e NoSQL
NoSQL não quer dizer necessariamente “não use a linguagem SQL”
Muitos NoSQL utilizam algo parecido com a SQL
Diferenças importantes na forma como os dados são modelados e
organizados
Modificações “livres” do modelo (schema free design)
NoSQL investe muito em distribuição de dados
Devs possuem certo “preconceito” quanto a joins da SQL!
17. Cassandra e CQL
Cassandra é um NoSQL chave/valor
Possui a CQL (Cassandra Query Language) com suporte a DDL,
DML e DCL muito familiar
Maioria dos desenvolvedores se adaptam bem
Não possui JOINS!
Exemplo: arquivo Cassandra.sql
18. MongoDB
MongoDB é o banco NoSQL mais popular
Baseado em documentos organizados em JSON
Manipulação de dados pela linguagem JavaScript
Devs “sofrem”, pois MongoDB NÃO suporta SQL!
Site http://querymongo.com “traduz” SQL do MySQL para comandos
do MongoDB
Exemplo: arquivo QueryMySQL.sql e ComandosMongoDB.js
19. SQL e Grafos
Principais NoSQL orientados a grafos: Neo4J e Titan
Linguagem Gremlin do framework TinkerPop (http://bit.ly/2dENzbT)
é a mais utilizada
Projeto SQL-Gremlin (http://bit.ly/2cSFQHL) permite uso da SQL
para acessar dados em grafos
É necessário um arquivo que faz o mapeamento entre nós/arestas e
tabelas/colunas
Exemplo de maneamento: arquivo gmap.json
Exemplo de consulta: arquivo sql_grafo.sql
20. Data Science e SQL
Projetos de data science utilizam diversas tecnologias: R, Python,
Azure, AWS, Scala, Java, Hadoop, Spark, etc
Em geral dados são exportados do mundo relacional para formato
texto (CSV, XML, JSON)
Dados são importados em outros ambientes (data lakes da
arquitetura lambda)
A manipulação dos dados envolve:
Tratamento para limpeza, formatação, substituição, geração, etc
Geração de gráficos
Cálculos estatísticos
Exploração de diferentes modelos de classificação e predição
21. R e SQL
Linguagem R possui recursos próprios para lidar com dados na
memória
O objeto DataFrame é o mais empregado
Pacote sqldf do R permite gerar um DataFrame a partir de um
SELECT em um banco relacional
SQL Server 2016 se integra com R: SQL Server R services
Passagem de dados para uma função do R com SELECT e retorno
no formato de tabela
Exemplo: sqlserver_r.sql
22. Python e SQL
Linguagem Python é muito empregada para Data Science
Pacotes NymPi, Pandas, SciKit-learn, NLTK e outros
Python pode acessar bases SQL através de driver nativo (Python
DB-API)
Jeito “Python” de lidar com dados:
SELECT: http://bit.ly/2dEPVYj
JOINS: http://bit.ly/2dKb00G
23. Hadoop e SQL
Hadoop vem sendo utilizado para processar grandes quantidades
de dados
HFS para guardar dados e Map/Reduce para processamento
Hive permite lidar com SQL no Hadoop: linguagem HDD (Hive
Definition Language) com comandos DDL, DML e DCL
O HDD permite SELECT com FROM, GROUP BY, UNION, OVER,
ORDER BY, HAVING e CTE
Trabalho do HIVE é transformar o SELECT em um Map/Reduce
24. Spark e SQL
Atualmente utiliza-se muito o Spark com a SQL
No Spark os dados são acessos por uma objeto de memória
chamado RDD (Resilient Distributed Dataset)
A programação é feita em Scala, Java ou Python
Maioria do processamento é cálculo de agregações ou treinamento
de modelo do Machine Learning (MLib)
Spark permite uso de SELECT. Exemplo: arquivo spark.py
25. Conclusões
Tecnologias para lidar com dados muda muito rápido!
Não tenha medo de aprender algo novo
A SQL é boa e muito utilizada, mas não resolve todos os problemas
É possível aproveitar alguns conhecimentos de SQL no “mundo”
NoSQL
SQL é só o começo. A partir dela pode-se partir para algo mais
específico dependedo da necessidade
Notas do Editor
Falem que o evento é gratuito pra todos, e que os patrocinadores são os responsáveis por garantir o coffee e a infra-estrutura basica pro evento acontecer. Em contra partida, eles querem mostrar seus produtos e serviços, é legal aos participantes conhecerem o que eles tem a oferecer e aceitar receber contatos deles via email.