SlideShare uma empresa Scribd logo
1 de 27
A linguagem SQL no mundo
NoSQL
Dr. Mauro pichiliani
@pichiliani
mauro@pichiliani.com.br
PATROCINADORES
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
Agenda
 SQL como linguagem
 Dados temporais e TSLQ2
 MDX
 SPARQL
 ORM e SQL
 SQL e NoSQL
 Data Science e SQL
 Conclusões
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!
Adoção e uso da SQL
 Site http://db-engines.com
Preferência pela SQL
 Pesquisa 2016 do Stack Overflow (56k devs) - http://bit.ly/1MpdIlU
Popularidade da SQL
Tecnologias correlacionadas
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
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
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] )
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.
}
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
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
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!
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
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
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
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
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
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
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
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
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
Alinguagem SQL no mundo NOSQL
Alinguagem SQL no mundo NOSQL

Mais conteúdo relacionado

Mais procurados

Paralelismo na prática: Threads de uma vez por todas e sem medo!
Paralelismo na prática: Threads de uma vez por todas e sem medo!Paralelismo na prática: Threads de uma vez por todas e sem medo!
Paralelismo na prática: Threads de uma vez por todas e sem medo!Mario Guedes
 
Introdução a Machine Learning e TensorFlow
Introdução a Machine Learning e TensorFlowIntrodução a Machine Learning e TensorFlow
Introdução a Machine Learning e TensorFlowGuilherme Campos
 
Mini-curso Programação Paralela e Distribuída
Mini-curso Programação Paralela e DistribuídaMini-curso Programação Paralela e Distribuída
Mini-curso Programação Paralela e DistribuídaDeivid Martins
 
Apostila Java Web (Servlets e JSPs)
Apostila Java Web (Servlets e JSPs)Apostila Java Web (Servlets e JSPs)
Apostila Java Web (Servlets e JSPs)Ricardo Terra
 
Desenvolvimento web com python e django
Desenvolvimento web com python e djangoDesenvolvimento web com python e django
Desenvolvimento web com python e djangoIgor Sobreira
 
Uma implementação de suporte a
Uma implementação de suporte a Uma implementação de suporte a
Uma implementação de suporte a Rômulo Jales
 
Elasticsearch: o desafio como banco principal e cuidados em produção
Elasticsearch: o desafio como banco principal e cuidados em produçãoElasticsearch: o desafio como banco principal e cuidados em produção
Elasticsearch: o desafio como banco principal e cuidados em produçãoBruna Alves
 
Minicurso PostgreSQl
Minicurso PostgreSQlMinicurso PostgreSQl
Minicurso PostgreSQlCezar Souza
 
Delphi Parallel Programming Library
Delphi Parallel Programming LibraryDelphi Parallel Programming Library
Delphi Parallel Programming LibraryMario Guedes
 
Melhorias na interface do Management Studio
Melhorias na interface do Management StudioMelhorias na interface do Management Studio
Melhorias na interface do Management Studiopichiliani
 
Grafos - Uma abordagem divertida - Latinoware 2014
Grafos - Uma abordagem divertida - Latinoware 2014Grafos - Uma abordagem divertida - Latinoware 2014
Grafos - Uma abordagem divertida - Latinoware 2014Christiano Anderson
 
Delphi Conference 2012 - Programação Baseado em Regras com RTTI
Delphi Conference 2012 - Programação Baseado em Regras com RTTIDelphi Conference 2012 - Programação Baseado em Regras com RTTI
Delphi Conference 2012 - Programação Baseado em Regras com RTTIMario Guedes
 
A importância do ecossistema Java em aplicações baseadas em Big Data
A importância do ecossistema Java em aplicações baseadas em Big DataA importância do ecossistema Java em aplicações baseadas em Big Data
A importância do ecossistema Java em aplicações baseadas em Big DataVinícius Barros
 
Migrando aplicações para FireDac - Embarcadero Conference 2014
Migrando aplicações para FireDac - Embarcadero Conference 2014Migrando aplicações para FireDac - Embarcadero Conference 2014
Migrando aplicações para FireDac - Embarcadero Conference 2014Diego Rosa
 

Mais procurados (18)

Paralelismo na prática: Threads de uma vez por todas e sem medo!
Paralelismo na prática: Threads de uma vez por todas e sem medo!Paralelismo na prática: Threads de uma vez por todas e sem medo!
Paralelismo na prática: Threads de uma vez por todas e sem medo!
 
Devfest cerrado2017
Devfest cerrado2017Devfest cerrado2017
Devfest cerrado2017
 
Introdução a Machine Learning e TensorFlow
Introdução a Machine Learning e TensorFlowIntrodução a Machine Learning e TensorFlow
Introdução a Machine Learning e TensorFlow
 
Postgresql +python
Postgresql +pythonPostgresql +python
Postgresql +python
 
Mini-curso Programação Paralela e Distribuída
Mini-curso Programação Paralela e DistribuídaMini-curso Programação Paralela e Distribuída
Mini-curso Programação Paralela e Distribuída
 
Apostila Java Web (Servlets e JSPs)
Apostila Java Web (Servlets e JSPs)Apostila Java Web (Servlets e JSPs)
Apostila Java Web (Servlets e JSPs)
 
Desenvolvimento web com python e django
Desenvolvimento web com python e djangoDesenvolvimento web com python e django
Desenvolvimento web com python e django
 
Palestra nosql
Palestra nosqlPalestra nosql
Palestra nosql
 
Uma implementação de suporte a
Uma implementação de suporte a Uma implementação de suporte a
Uma implementação de suporte a
 
Elasticsearch: o desafio como banco principal e cuidados em produção
Elasticsearch: o desafio como banco principal e cuidados em produçãoElasticsearch: o desafio como banco principal e cuidados em produção
Elasticsearch: o desafio como banco principal e cuidados em produção
 
Minicurso PostgreSQl
Minicurso PostgreSQlMinicurso PostgreSQl
Minicurso PostgreSQl
 
Delphi Parallel Programming Library
Delphi Parallel Programming LibraryDelphi Parallel Programming Library
Delphi Parallel Programming Library
 
Melhorias na interface do Management Studio
Melhorias na interface do Management StudioMelhorias na interface do Management Studio
Melhorias na interface do Management Studio
 
Grafos - Uma abordagem divertida - Latinoware 2014
Grafos - Uma abordagem divertida - Latinoware 2014Grafos - Uma abordagem divertida - Latinoware 2014
Grafos - Uma abordagem divertida - Latinoware 2014
 
Conhecendo o Django
Conhecendo o DjangoConhecendo o Django
Conhecendo o Django
 
Delphi Conference 2012 - Programação Baseado em Regras com RTTI
Delphi Conference 2012 - Programação Baseado em Regras com RTTIDelphi Conference 2012 - Programação Baseado em Regras com RTTI
Delphi Conference 2012 - Programação Baseado em Regras com RTTI
 
A importância do ecossistema Java em aplicações baseadas em Big Data
A importância do ecossistema Java em aplicações baseadas em Big DataA importância do ecossistema Java em aplicações baseadas em Big Data
A importância do ecossistema Java em aplicações baseadas em Big Data
 
Migrando aplicações para FireDac - Embarcadero Conference 2014
Migrando aplicações para FireDac - Embarcadero Conference 2014Migrando aplicações para FireDac - Embarcadero Conference 2014
Migrando aplicações para FireDac - Embarcadero Conference 2014
 

Semelhante a Alinguagem SQL no mundo NOSQL

SQL Server Heterogêneo: SQL Server + BigData
SQL Server Heterogêneo: SQL Server + BigDataSQL Server Heterogêneo: SQL Server + BigData
SQL Server Heterogêneo: SQL Server + BigDataRodrigo Dornel
 
Aula8.pptx
Aula8.pptxAula8.pptx
Aula8.pptxacsme
 
SQL Saturday 570 - São Paulo - 2016
SQL Saturday 570 - São Paulo - 2016SQL Saturday 570 - São Paulo - 2016
SQL Saturday 570 - São Paulo - 2016Rodrigo Dornel
 
DocumentDB - Azure Fridays São Paulo
DocumentDB - Azure Fridays São PauloDocumentDB - Azure Fridays São Paulo
DocumentDB - Azure Fridays São PauloRenato Groff
 
FireDAC para BigDATA: Teradata e MongoDB
FireDAC para BigDATA: Teradata e MongoDBFireDAC para BigDATA: Teradata e MongoDB
FireDAC para BigDATA: Teradata e MongoDBAlan Glei
 
No sql Orientado a documento
No sql Orientado a documentoNo sql Orientado a documento
No sql Orientado a documentoAlex Martins
 
Utilizando NoSQL no desenvolvimento de soluções inteligentes
Utilizando NoSQL no desenvolvimento de soluções inteligentesUtilizando NoSQL no desenvolvimento de soluções inteligentes
Utilizando NoSQL no desenvolvimento de soluções inteligentesChristiano Anderson
 
NoSQL - Soluções alternativas para bancos de dados
NoSQL - Soluções alternativas para bancos de dadosNoSQL - Soluções alternativas para bancos de dados
NoSQL - Soluções alternativas para bancos de dadosNicolas Ibanheiz
 
NoSQL na nuvem: utilizando o DocumentDB
NoSQL na nuvem: utilizando o DocumentDBNoSQL na nuvem: utilizando o DocumentDB
NoSQL na nuvem: utilizando o DocumentDBRenato Groff
 
TDC2016POA | Trilha BigData - Orquestrando Hadoop, Cassandra e MongoDB com o ...
TDC2016POA | Trilha BigData - Orquestrando Hadoop, Cassandra e MongoDB com o ...TDC2016POA | Trilha BigData - Orquestrando Hadoop, Cassandra e MongoDB com o ...
TDC2016POA | Trilha BigData - Orquestrando Hadoop, Cassandra e MongoDB com o ...tdc-globalcode
 
NoSQL x SQL: Bancos de Dados em Nuvens Computacionais
NoSQL x SQL: Bancos de Dados em Nuvens ComputacionaisNoSQL x SQL: Bancos de Dados em Nuvens Computacionais
NoSQL x SQL: Bancos de Dados em Nuvens ComputacionaisCarlo Pires
 
PostgreSQL-Prático.pdf
PostgreSQL-Prático.pdfPostgreSQL-Prático.pdf
PostgreSQL-Prático.pdfArleiEvaristo
 
Cobo, Cristiane Brandão. Especialização Banco de Dados
Cobo, Cristiane Brandão. Especialização Banco de DadosCobo, Cristiane Brandão. Especialização Banco de Dados
Cobo, Cristiane Brandão. Especialização Banco de Dadoscris.finholdt
 
Apresentação Modelo de Gestão de dados para sistemas Colaborativos
Apresentação Modelo de Gestão de dados para sistemas ColaborativosApresentação Modelo de Gestão de dados para sistemas Colaborativos
Apresentação Modelo de Gestão de dados para sistemas ColaborativosMozart Dornelles Claret
 

Semelhante a Alinguagem SQL no mundo NOSQL (20)

NoSql e NewSql
NoSql e NewSqlNoSql e NewSql
NoSql e NewSql
 
#1 Introdução ao MongoDB
#1   Introdução ao MongoDB#1   Introdução ao MongoDB
#1 Introdução ao MongoDB
 
SQL Server Heterogêneo: SQL Server + BigData
SQL Server Heterogêneo: SQL Server + BigDataSQL Server Heterogêneo: SQL Server + BigData
SQL Server Heterogêneo: SQL Server + BigData
 
Aula8.pptx
Aula8.pptxAula8.pptx
Aula8.pptx
 
Manual SQL
Manual SQLManual SQL
Manual SQL
 
SQL Saturday 570 - São Paulo - 2016
SQL Saturday 570 - São Paulo - 2016SQL Saturday 570 - São Paulo - 2016
SQL Saturday 570 - São Paulo - 2016
 
DocumentDB - Azure Fridays São Paulo
DocumentDB - Azure Fridays São PauloDocumentDB - Azure Fridays São Paulo
DocumentDB - Azure Fridays São Paulo
 
FireDAC para BigDATA: Teradata e MongoDB
FireDAC para BigDATA: Teradata e MongoDBFireDAC para BigDATA: Teradata e MongoDB
FireDAC para BigDATA: Teradata e MongoDB
 
No sql Orientado a documento
No sql Orientado a documentoNo sql Orientado a documento
No sql Orientado a documento
 
NoSQL
NoSQLNoSQL
NoSQL
 
NoSQL & SQL
NoSQL & SQLNoSQL & SQL
NoSQL & SQL
 
Manual SQL
Manual SQLManual SQL
Manual SQL
 
Utilizando NoSQL no desenvolvimento de soluções inteligentes
Utilizando NoSQL no desenvolvimento de soluções inteligentesUtilizando NoSQL no desenvolvimento de soluções inteligentes
Utilizando NoSQL no desenvolvimento de soluções inteligentes
 
NoSQL - Soluções alternativas para bancos de dados
NoSQL - Soluções alternativas para bancos de dadosNoSQL - Soluções alternativas para bancos de dados
NoSQL - Soluções alternativas para bancos de dados
 
NoSQL na nuvem: utilizando o DocumentDB
NoSQL na nuvem: utilizando o DocumentDBNoSQL na nuvem: utilizando o DocumentDB
NoSQL na nuvem: utilizando o DocumentDB
 
TDC2016POA | Trilha BigData - Orquestrando Hadoop, Cassandra e MongoDB com o ...
TDC2016POA | Trilha BigData - Orquestrando Hadoop, Cassandra e MongoDB com o ...TDC2016POA | Trilha BigData - Orquestrando Hadoop, Cassandra e MongoDB com o ...
TDC2016POA | Trilha BigData - Orquestrando Hadoop, Cassandra e MongoDB com o ...
 
NoSQL x SQL: Bancos de Dados em Nuvens Computacionais
NoSQL x SQL: Bancos de Dados em Nuvens ComputacionaisNoSQL x SQL: Bancos de Dados em Nuvens Computacionais
NoSQL x SQL: Bancos de Dados em Nuvens Computacionais
 
PostgreSQL-Prático.pdf
PostgreSQL-Prático.pdfPostgreSQL-Prático.pdf
PostgreSQL-Prático.pdf
 
Cobo, Cristiane Brandão. Especialização Banco de Dados
Cobo, Cristiane Brandão. Especialização Banco de DadosCobo, Cristiane Brandão. Especialização Banco de Dados
Cobo, Cristiane Brandão. Especialização Banco de Dados
 
Apresentação Modelo de Gestão de dados para sistemas Colaborativos
Apresentação Modelo de Gestão de dados para sistemas ColaborativosApresentação Modelo de Gestão de dados para sistemas Colaborativos
Apresentação Modelo de Gestão de dados para sistemas Colaborativos
 

Mais de pichiliani

Rastreamento de Objetos em Realidade Virtual e Realidade Aumentada
Rastreamento de Objetos em Realidade Virtual e Realidade AumentadaRastreamento de Objetos em Realidade Virtual e Realidade Aumentada
Rastreamento de Objetos em Realidade Virtual e Realidade Aumentadapichiliani
 
Interfaces hands free para o mundo atual e pós-Corona vírus
Interfaces hands free para o mundo atual  e pós-Corona vírusInterfaces hands free para o mundo atual  e pós-Corona vírus
Interfaces hands free para o mundo atual e pós-Corona víruspichiliani
 
The Effect of Audiences On the User Experience of Conversational Interfaces i...
The Effect of Audiences On the User Experience of Conversational Interfaces i...The Effect of Audiences On the User Experience of Conversational Interfaces i...
The Effect of Audiences On the User Experience of Conversational Interfaces i...pichiliani
 
Machine Learning & Machine Teaching
Machine Learning & Machine TeachingMachine Learning & Machine Teaching
Machine Learning & Machine Teachingpichiliani
 
TJBot: Incorporando um chatbot em um robô
TJBot:  Incorporando um chatbot em um robôTJBot:  Incorporando um chatbot em um robô
TJBot: Incorporando um chatbot em um robôpichiliani
 
Carreira de cientista
Carreira de cientistaCarreira de cientista
Carreira de cientistapichiliani
 
Novidades desenvolvimento
Novidades desenvolvimentoNovidades desenvolvimento
Novidades desenvolvimentopichiliani
 
O papel do DBA no mundo de ciência de dados e machine learning
O papel do DBA no mundo de ciência de dados e machine learningO papel do DBA no mundo de ciência de dados e machine learning
O papel do DBA no mundo de ciência de dados e machine learningpichiliani
 
Introdução ao Deep Learning com o TensorFlow
Introdução ao Deep Learning com o TensorFlowIntrodução ao Deep Learning com o TensorFlow
Introdução ao Deep Learning com o TensorFlowpichiliani
 
Projeto AMedCA - Concurso Casa conectada 2015
Projeto AMedCA - Concurso Casa conectada 2015Projeto AMedCA - Concurso Casa conectada 2015
Projeto AMedCA - Concurso Casa conectada 2015pichiliani
 
A User Interface Usability Evaluation of the Electronic Ballot Box used in th...
A User Interface Usability Evaluation of the Electronic Ballot Box used in th...A User Interface Usability Evaluation of the Electronic Ballot Box used in th...
A User Interface Usability Evaluation of the Electronic Ballot Box used in th...pichiliani
 
Evaluation of the Android Accessibility API Recognition Rate towards a Better...
Evaluation of the Android Accessibility API Recognition Rate towards a Better...Evaluation of the Android Accessibility API Recognition Rate towards a Better...
Evaluation of the Android Accessibility API Recognition Rate towards a Better...pichiliani
 
Como lidar com dados temporais e intervalos com a linguagem SQL
Como lidar com dados temporais e intervalos com a linguagem SQLComo lidar com dados temporais e intervalos com a linguagem SQL
Como lidar com dados temporais e intervalos com a linguagem SQLpichiliani
 
Novidades desenvolvimento
Novidades desenvolvimentoNovidades desenvolvimento
Novidades desenvolvimentopichiliani
 
Projeto HTMA - Trand Tremor Measurement Application
Projeto HTMA - Trand Tremor Measurement ApplicationProjeto HTMA - Trand Tremor Measurement Application
Projeto HTMA - Trand Tremor Measurement Applicationpichiliani
 
HTMA: Hand Tremor Measurement Application
HTMA: Hand Tremor Measurement ApplicationHTMA: Hand Tremor Measurement Application
HTMA: Hand Tremor Measurement Applicationpichiliani
 
Projeto Car Data Applets
Projeto Car Data AppletsProjeto Car Data Applets
Projeto Car Data Appletspichiliani
 
Protótipos de hardware
Protótipos de hardwareProtótipos de hardware
Protótipos de hardwarepichiliani
 
Como lidar com 1, 10, 100 e 1024 GB no seu banco de dados
Como lidar com 1, 10, 100 e 1024 GB no seu banco de dadosComo lidar com 1, 10, 100 e 1024 GB no seu banco de dados
Como lidar com 1, 10, 100 e 1024 GB no seu banco de dadospichiliani
 
NoSQL: Uma análise crítica no TDC 2014
NoSQL: Uma análise crítica no TDC 2014NoSQL: Uma análise crítica no TDC 2014
NoSQL: Uma análise crítica no TDC 2014pichiliani
 

Mais de pichiliani (20)

Rastreamento de Objetos em Realidade Virtual e Realidade Aumentada
Rastreamento de Objetos em Realidade Virtual e Realidade AumentadaRastreamento de Objetos em Realidade Virtual e Realidade Aumentada
Rastreamento de Objetos em Realidade Virtual e Realidade Aumentada
 
Interfaces hands free para o mundo atual e pós-Corona vírus
Interfaces hands free para o mundo atual  e pós-Corona vírusInterfaces hands free para o mundo atual  e pós-Corona vírus
Interfaces hands free para o mundo atual e pós-Corona vírus
 
The Effect of Audiences On the User Experience of Conversational Interfaces i...
The Effect of Audiences On the User Experience of Conversational Interfaces i...The Effect of Audiences On the User Experience of Conversational Interfaces i...
The Effect of Audiences On the User Experience of Conversational Interfaces i...
 
Machine Learning & Machine Teaching
Machine Learning & Machine TeachingMachine Learning & Machine Teaching
Machine Learning & Machine Teaching
 
TJBot: Incorporando um chatbot em um robô
TJBot:  Incorporando um chatbot em um robôTJBot:  Incorporando um chatbot em um robô
TJBot: Incorporando um chatbot em um robô
 
Carreira de cientista
Carreira de cientistaCarreira de cientista
Carreira de cientista
 
Novidades desenvolvimento
Novidades desenvolvimentoNovidades desenvolvimento
Novidades desenvolvimento
 
O papel do DBA no mundo de ciência de dados e machine learning
O papel do DBA no mundo de ciência de dados e machine learningO papel do DBA no mundo de ciência de dados e machine learning
O papel do DBA no mundo de ciência de dados e machine learning
 
Introdução ao Deep Learning com o TensorFlow
Introdução ao Deep Learning com o TensorFlowIntrodução ao Deep Learning com o TensorFlow
Introdução ao Deep Learning com o TensorFlow
 
Projeto AMedCA - Concurso Casa conectada 2015
Projeto AMedCA - Concurso Casa conectada 2015Projeto AMedCA - Concurso Casa conectada 2015
Projeto AMedCA - Concurso Casa conectada 2015
 
A User Interface Usability Evaluation of the Electronic Ballot Box used in th...
A User Interface Usability Evaluation of the Electronic Ballot Box used in th...A User Interface Usability Evaluation of the Electronic Ballot Box used in th...
A User Interface Usability Evaluation of the Electronic Ballot Box used in th...
 
Evaluation of the Android Accessibility API Recognition Rate towards a Better...
Evaluation of the Android Accessibility API Recognition Rate towards a Better...Evaluation of the Android Accessibility API Recognition Rate towards a Better...
Evaluation of the Android Accessibility API Recognition Rate towards a Better...
 
Como lidar com dados temporais e intervalos com a linguagem SQL
Como lidar com dados temporais e intervalos com a linguagem SQLComo lidar com dados temporais e intervalos com a linguagem SQL
Como lidar com dados temporais e intervalos com a linguagem SQL
 
Novidades desenvolvimento
Novidades desenvolvimentoNovidades desenvolvimento
Novidades desenvolvimento
 
Projeto HTMA - Trand Tremor Measurement Application
Projeto HTMA - Trand Tremor Measurement ApplicationProjeto HTMA - Trand Tremor Measurement Application
Projeto HTMA - Trand Tremor Measurement Application
 
HTMA: Hand Tremor Measurement Application
HTMA: Hand Tremor Measurement ApplicationHTMA: Hand Tremor Measurement Application
HTMA: Hand Tremor Measurement Application
 
Projeto Car Data Applets
Projeto Car Data AppletsProjeto Car Data Applets
Projeto Car Data Applets
 
Protótipos de hardware
Protótipos de hardwareProtótipos de hardware
Protótipos de hardware
 
Como lidar com 1, 10, 100 e 1024 GB no seu banco de dados
Como lidar com 1, 10, 100 e 1024 GB no seu banco de dadosComo lidar com 1, 10, 100 e 1024 GB no seu banco de dados
Como lidar com 1, 10, 100 e 1024 GB no seu banco de dados
 
NoSQL: Uma análise crítica no TDC 2014
NoSQL: Uma análise crítica no TDC 2014NoSQL: Uma análise crítica no TDC 2014
NoSQL: Uma análise crítica no TDC 2014
 

Último

ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx2m Assessoria
 
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx2m Assessoria
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsDanilo Pinotti
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx2m Assessoria
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploDanilo Pinotti
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx2m Assessoria
 

Último (6)

ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
 
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object Calisthenics
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemplo
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
 

Alinguagem SQL no mundo NOSQL

  • 1. A linguagem SQL no mundo NoSQL Dr. Mauro pichiliani @pichiliani mauro@pichiliani.com.br
  • 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!
  • 6. Adoção e uso da SQL  Site http://db-engines.com
  • 7. Preferência pela SQL  Pesquisa 2016 do Stack Overflow (56k devs) - http://bit.ly/1MpdIlU
  • 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

  1. 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.