SlideShare uma empresa Scribd logo
1 de 28
BigData: Da teoria à prática
Um case real de uso de banco noSQL com Delphi
Acompanhe em:
https://goo.gl/JbhLQX
Quiiii Máriiiioooo?
17+ anos na lida
Desenvolvedor Delphi, Python, JavaScript e LUA
Gestão de Desenvolvimento na CONTACT STUDIO Software
Ênfase em soluções para a área de Contact Center
Discador, Chat, URA, Integrações e por aí vai
Mantenedor do blog: http://eugostododelphi.blogspot.com.br
Arquitetura sugerida para uma grande
solução
Se você está buscando criar uma grande solução que seja resiliente, escalável e
disponível sugere-se a adoção das seguintes abordagens, mesmo que se comece
pequeno porém pensando grande:
API First (REST/JSON): bom para web, mobile, IoT, e integrações ROA
A camada de apresentação será a mais conveniente para o seu negócio: De
FoxPro à HTML/JavaScript passando pelo mobile
Serviço de Mensageria: desacoplamento entre os artefatos
Adoção de Microsserviços: escala horizontal
Big Data e os 5 V’s
Big Data embute muitos desafios. Armazenamento é um deles e é este o foco
desta apresentação. O que fazer com os dados é outro problema.
Precisamos ter em mente ao menos 3 dos 5 V’s:
★ Volume: Haja disco!
★ Velocidade: “Não interessa como estava o trânsito há dez minutos!”
★ Variedade: Formatos complexos e não estruturados (90% dos dados)
Paradigmas noSQL
noSQL: Not Only SQL
Uma grande solução requer várias abordagens de armazenamento
complementares.
Um banco dito SQL adota o paradigma relacional (e.g. SQL Server)
Já no mundo noSQL temos 4 paradigmas em destaque:
Orientado a Documento: mongoDB, CouchDB
Orientado a Chave e Valor: REDIS, memcached
CONTACT STUDIO
O Contact Studio é uma grande plataforma de comunicação, com abordagem
SaaS, e sua principal motivação foi o de centralizar os sistemas espalhados
pelos Call Centers.
É totalmente “agnóstica” em termos de tecnologia: Delphi, C++, Python,
JavaScript e LUA como linguagens de desenvolvimento assim como SQL
Server, REDIS, mongoDB, Apache Cassandra e Neo4J como storages.
A equipe é composta por 10 desenvolvedores e essa transição começou há
três anos. E não: Não está sendo fácil. Mas está sendo recompensador!
Problemas que enfrentamos lá atrás
Em 2010 fizemos uma primeira tentativa de migração do modelo
Client/Server para o modelo Multi Camada.
Erros que merecem destaques (e quem liga para os acertos né?)
Utilizamos um protocolo de comunicação proprietário (KBM)
Utilizamos o banco de dados relacional para resolver a fome do mundo:
Chegou um momento que era proibido tirar relatório em horário comercial
E a importação do mailing tinha que ser feito às 7 da manhã para dar tempo de acabar
antes da operação começar… às 9.
Em 2014 caiu a ficha:
REDIS + MongoDB + Cassandra + Neo4J
Velocidade: Esses bancos foram concebidos para trabalhar em cluster o que possibilita leitura e
escrita concorrentes
Disponibilidade: Se um nó cai, temos outros para suportar a carga
Diminuição da impedância representacional: Não é necessário transformar um dataset em um
JSON aninhado conveniente para o frontend
Schema-free: Maior fluidez no desenvolvimento e respostas mais rápidas às mudanças de regras
de negócios: 100+ tabelas se resumiu a 15 collections!
Novas oportunidades: Estamos investindo em predição e aprendizado de máquina.
CAMADA DE MICROSSERVIÇOS E TELEFONIA (Delphi & Python & C++ & FreeSWITCH)
Topologia Atual Simplificada
NGNIX
CAMADA REST (Delphi/DataSnap & Python/Tornado)
MENSAGERIA (REDIS)
LEGADO
(SQL Server)
CACHE,
SESSÃO
(REDIS)
CADASTROS
& File System
(mongoDB)
CARDEX
(mongoDB)
FÓSSIL
(mongoDB)
Analytics
(Cassandra)
FRONTEND: Delphi, AngularJS, Mobile, Integrações de Terceiros (e.g. Maquininha da Cielo)
Sorteio dos Livros
Três e-Books da Casa do Código para os três primeiros que enviar o nome e
e-mail para o link acima.
Valendo!
REDIS - O que é?
https://redis.io/
Banco de Dados orientado à Chave e Valor
Baseado em memória
Abordagem bloqueante
Oferece várias tipos de dados e operações
TTL e Suporta script LUA
REDIS - Como usa?
Use o driver do Daniele Teti
https://github.com/danieleteti/delphiredisclient
Em produção dê preferência a um servidor Linux
Para Windows baixe os binários em:
https://github.com/MSOpenTech/redis/releases
Tem uma interface gráfica em:
https://redisdesktop.com/download
mongoDB - O que é?
https://www.mongodb.com/
Banco de Dados orientado a Documento
Oferece várias operações
Armazena JSON, só que no formato BSON
Oferece operações de MAP/REDUCE (em JavaScript) e AGREGAÇÃO
Ideal para:
Como um carro é armazenado em um
banco relacional:
Como um carro é armazenado no mongoDB:
mongoDB - Como usa?
Basta acionar o mongod com os parâmetros adequados
É possível rodar como serviço
As instruções CRUD são feitas com argumentos em JSON
Não olhe para o mongoDB com o mesmo mapa mental que você tem em
relação a um banco relacional:
É um sofrimento desnecessário.
Comece a usar o mongoDB agora!
Aprenda tudo sobre mongoDB com Delphi com o Thulio Bittencourt:
Curso de MongoDB com Delphi
https://www.youtube.com/playlist?list=PLvrBgLo9icwMz1N9vh59OMf-
J4XXZGdsw
Apache Cassandra - O que é?
http://cassandra.apache.org/
Banco de Dados orientado a Coluna
Rígido em sua modelagem mas, em troca, estupidamente rápido
Ideal para:
Dados analíticos
Armazenamento de arquivos em “pedaços” para recuperação via streaming
Apache Cassandra - Como usa?
A modelagem da coleção deve ser orientada às respostas que você quer.
Suporta uma linguagem de consulta denominada CQL, com sintaxe idêntica
ao bom e velho SQL.
É o mais mais complexo de se entender e manter.
Também, o que esperar de algo feito em Java né?
Neo4J - O que é?
https://neo4j.com/
Banco orientado a Grafo
Ainda está sendo estudado pela equipe
Ideal para:
Determinar relacionamentos entre conceitos
Quais agentes estão falando com quais consumidores da cidade de Florianópolis?
Neo4J - Idéia básica
Basicamente temos “nós” com
propriedades e as “arestas”
entre estes nós. A “aresta” em
si também possui
propriedades.
Viu, agora dá para criar aquela
rede social :)
Objetivo
Identificar o melhor operador para
atender um determinado cliente de
acordo com critérios diversos
Mensagem final
Existem outros paradigmas de storage e outros vendors.
Não é o caso de colocar o mongoDB no lugar do seu SQL Server de uma
hora para outra: baby steps!
A ferramenta certa para o problema certo: Analise o problema e crie
repertório para resolvê-lo.
Achou o noSQL bacana? Saiba que existe o newSQL…
Basicamente são bancos multiparadigmas
Cuidados importantes
Verifique a profundidade do lago antes de mergulhar.
Cuide da sua equipe: tenha consciência que toda mudança causa
resistência.
Não magoe o seu DBA: convide-o a participar do processo - Cientista de
Dados é o novo sexy.
Livros bacanas
NoSQL Essencial
https://novatec.com.br/livros/nosql-essencial/
Introdução ao MongoDB
https://novatec.com.br/livros/introducao-ao-mongodb/
Armazenando dados com Redis
https://www.casadocodigo.com.br/products/livro-redis
MongoDB - Construa novas aplicações com novas tecnologias
https://www.casadocodigo.com.br/products/livro-mongodb
NoSQL - Como armazenar os dados de uma aplicação moderna
https://www.casadocodigo.com.br/products/livro-nosql
Links interessantes
Non-Relational Database
http://www.non-relational.com/
Os 5 V's do Big Data
http://www.gta.ufrj.br/grad/15_1/bigdata/vs.html
Visão Geral do Apache Cassandra
https://www.infoq.com/br/interviews/Visao-Geral-do-Apache-Cassandra
Obrigado!
Dá tempo para perguntas?
Nas redes sociais você me localiza como /jmarioguedes
Mas me manda um e-mail vai: jmarioguedes@gmail.com

Mais conteúdo relacionado

Mais procurados

Intensive Delphi 2017 - E este tal de Redis hein?
Intensive Delphi 2017 - E este tal de Redis hein?Intensive Delphi 2017 - E este tal de Redis hein?
Intensive Delphi 2017 - E este tal de Redis hein?Mario Guedes
 
Phpreact flisol-fb-2014
Phpreact flisol-fb-2014Phpreact flisol-fb-2014
Phpreact flisol-fb-2014Adler Medrado
 
Arquitetura escalável e resiliente com NGINX, DataSnap, REDIS e MongoDB
Arquitetura escalável e resiliente com NGINX, DataSnap, REDIS e MongoDBArquitetura escalável e resiliente com NGINX, DataSnap, REDIS e MongoDB
Arquitetura escalável e resiliente com NGINX, DataSnap, REDIS e MongoDBMario Guedes
 
Entendendo Conceitos Caching com PHP
Entendendo Conceitos Caching com PHPEntendendo Conceitos Caching com PHP
Entendendo Conceitos Caching com PHPAdler Medrado
 
BOT: Conversando com o seu sistema
BOT: Conversando com o seu sistemaBOT: Conversando com o seu sistema
BOT: Conversando com o seu sistemaMario Guedes
 
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
 
Microsserviço, Escalabilidade e Resiliência - #comofas?
Microsserviço, Escalabilidade e Resiliência - #comofas?Microsserviço, Escalabilidade e Resiliência - #comofas?
Microsserviço, Escalabilidade e Resiliência - #comofas?Mario Guedes
 
Hangout Tempo Real Eventos - Nodejs - Os Primeiros Passos
Hangout  Tempo Real Eventos - Nodejs - Os Primeiros PassosHangout  Tempo Real Eventos - Nodejs - Os Primeiros Passos
Hangout Tempo Real Eventos - Nodejs - Os Primeiros PassosJackson F. de A. Mafra
 
FireDAC - Embarcadero Conference 2015
FireDAC - Embarcadero Conference 2015FireDAC - Embarcadero Conference 2015
FireDAC - Embarcadero Conference 2015Guinther Pauli
 
Introdução FireDAC Acesso multi-banco para Delphi e C++ Builder
Introdução FireDACAcesso multi-banco para Delphi e C++ BuilderIntrodução FireDACAcesso multi-banco para Delphi e C++ Builder
Introdução FireDAC Acesso multi-banco para Delphi e C++ BuilderDiego Rosa
 
Datasnap avançado - Respostas para um sistema robusto - Embarcadero Conferenc...
Datasnap avançado - Respostas para um sistema robusto - Embarcadero Conferenc...Datasnap avançado - Respostas para um sistema robusto - Embarcadero Conferenc...
Datasnap avançado - Respostas para um sistema robusto - Embarcadero Conferenc...Kelver Merlotti
 
Javascript por debaixo dos panos
Javascript por debaixo dos panosJavascript por debaixo dos panos
Javascript por debaixo dos panosLaís Lima
 
gRPC: Por que você ainda usa REST?
gRPC: Por que você ainda usa REST?gRPC: Por que você ainda usa REST?
gRPC: Por que você ainda usa REST?Yago Tomé
 
Delphi Conference 2012 - Qualidade no Código
Delphi Conference 2012 - Qualidade no CódigoDelphi Conference 2012 - Qualidade no Código
Delphi Conference 2012 - Qualidade no CódigoJosé Araújo
 
Ferramentas Livres Para Desenvolvimento com PHP
Ferramentas Livres Para Desenvolvimento com PHPFerramentas Livres Para Desenvolvimento com PHP
Ferramentas Livres Para Desenvolvimento com PHPAdler Medrado
 
Desenvolvimento web - conceitos, tecnologia e tendências.
Desenvolvimento web - conceitos, tecnologia e tendências.Desenvolvimento web - conceitos, tecnologia e tendências.
Desenvolvimento web - conceitos, tecnologia e tendências.Valmir Justo
 
FireDAC: do básico ao avançado - Embarcadero Conference 2014
FireDAC: do básico ao avançado - Embarcadero Conference 2014FireDAC: do básico ao avançado - Embarcadero Conference 2014
FireDAC: do básico ao avançado - Embarcadero Conference 2014Alan Glei
 

Mais procurados (20)

Intensive Delphi 2017 - E este tal de Redis hein?
Intensive Delphi 2017 - E este tal de Redis hein?Intensive Delphi 2017 - E este tal de Redis hein?
Intensive Delphi 2017 - E este tal de Redis hein?
 
Phpreact flisol-fb-2014
Phpreact flisol-fb-2014Phpreact flisol-fb-2014
Phpreact flisol-fb-2014
 
Arquitetura escalável e resiliente com NGINX, DataSnap, REDIS e MongoDB
Arquitetura escalável e resiliente com NGINX, DataSnap, REDIS e MongoDBArquitetura escalável e resiliente com NGINX, DataSnap, REDIS e MongoDB
Arquitetura escalável e resiliente com NGINX, DataSnap, REDIS e MongoDB
 
Entendendo Conceitos Caching com PHP
Entendendo Conceitos Caching com PHPEntendendo Conceitos Caching com PHP
Entendendo Conceitos Caching com PHP
 
BOT: Conversando com o seu sistema
BOT: Conversando com o seu sistemaBOT: Conversando com o seu sistema
BOT: Conversando com o seu sistema
 
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
 
Microsserviço, Escalabilidade e Resiliência - #comofas?
Microsserviço, Escalabilidade e Resiliência - #comofas?Microsserviço, Escalabilidade e Resiliência - #comofas?
Microsserviço, Escalabilidade e Resiliência - #comofas?
 
EVOLUÇÃO DA LINGUAGEM DELPHI - ARTIGO
EVOLUÇÃO DA LINGUAGEM DELPHI - ARTIGOEVOLUÇÃO DA LINGUAGEM DELPHI - ARTIGO
EVOLUÇÃO DA LINGUAGEM DELPHI - ARTIGO
 
Hangout Tempo Real Eventos - Nodejs - Os Primeiros Passos
Hangout  Tempo Real Eventos - Nodejs - Os Primeiros PassosHangout  Tempo Real Eventos - Nodejs - Os Primeiros Passos
Hangout Tempo Real Eventos - Nodejs - Os Primeiros Passos
 
FireDAC - Embarcadero Conference 2015
FireDAC - Embarcadero Conference 2015FireDAC - Embarcadero Conference 2015
FireDAC - Embarcadero Conference 2015
 
Introdução FireDAC Acesso multi-banco para Delphi e C++ Builder
Introdução FireDACAcesso multi-banco para Delphi e C++ BuilderIntrodução FireDACAcesso multi-banco para Delphi e C++ Builder
Introdução FireDAC Acesso multi-banco para Delphi e C++ Builder
 
Datasnap avançado - Respostas para um sistema robusto - Embarcadero Conferenc...
Datasnap avançado - Respostas para um sistema robusto - Embarcadero Conferenc...Datasnap avançado - Respostas para um sistema robusto - Embarcadero Conferenc...
Datasnap avançado - Respostas para um sistema robusto - Embarcadero Conferenc...
 
Javascript por debaixo dos panos
Javascript por debaixo dos panosJavascript por debaixo dos panos
Javascript por debaixo dos panos
 
gRPC: Por que você ainda usa REST?
gRPC: Por que você ainda usa REST?gRPC: Por que você ainda usa REST?
gRPC: Por que você ainda usa REST?
 
Delphi Conference 2012 - Qualidade no Código
Delphi Conference 2012 - Qualidade no CódigoDelphi Conference 2012 - Qualidade no Código
Delphi Conference 2012 - Qualidade no Código
 
Principais Tecnologias WEB
Principais Tecnologias WEBPrincipais Tecnologias WEB
Principais Tecnologias WEB
 
Ferramentas Livres Para Desenvolvimento com PHP
Ferramentas Livres Para Desenvolvimento com PHPFerramentas Livres Para Desenvolvimento com PHP
Ferramentas Livres Para Desenvolvimento com PHP
 
Node JS - Parte 1
Node JS - Parte 1Node JS - Parte 1
Node JS - Parte 1
 
Desenvolvimento web - conceitos, tecnologia e tendências.
Desenvolvimento web - conceitos, tecnologia e tendências.Desenvolvimento web - conceitos, tecnologia e tendências.
Desenvolvimento web - conceitos, tecnologia e tendências.
 
FireDAC: do básico ao avançado - Embarcadero Conference 2014
FireDAC: do básico ao avançado - Embarcadero Conference 2014FireDAC: do básico ao avançado - Embarcadero Conference 2014
FireDAC: do básico ao avançado - Embarcadero Conference 2014
 

Destaque

Integrando aplicações com redis
Integrando aplicações com redisIntegrando aplicações com redis
Integrando aplicações com redisFelipe Monteiro
 
Escalando aplicação Python usando Getup OpenShift
Escalando aplicação Python usando Getup OpenShiftEscalando aplicação Python usando Getup OpenShift
Escalando aplicação Python usando Getup OpenShiftGetup Cloud
 
Bancos de dados open source
Bancos de dados open sourceBancos de dados open source
Bancos de dados open sourceRodrigo Aurélio
 
Bancos orientados a colunas (Cassandra)
Bancos orientados a colunas (Cassandra) Bancos orientados a colunas (Cassandra)
Bancos orientados a colunas (Cassandra) Otávio Santana
 
Redis – What, Why, When, How?
Redis – What, Why, When, How?Redis – What, Why, When, How?
Redis – What, Why, When, How?Kinn Julião
 
Algumas das principais características do NoSQL
Algumas das principais características do NoSQLAlgumas das principais características do NoSQL
Algumas das principais características do NoSQLEric Silva
 
Escalando Aplicações com Redis
Escalando Aplicações com RedisEscalando Aplicações com Redis
Escalando Aplicações com RedisWaldyr Felix
 
Bancos de dados NoSQL - Redis e MongoDB
Bancos de dados NoSQL - Redis e MongoDBBancos de dados NoSQL - Redis e MongoDB
Bancos de dados NoSQL - Redis e MongoDBPaulo Bischof
 
Deploy completo de uma aplicação Django
Deploy completo de uma aplicação DjangoDeploy completo de uma aplicação Django
Deploy completo de uma aplicação DjangoAllisson Azevedo
 
Redis um banco chave valor
Redis um banco chave valorRedis um banco chave valor
Redis um banco chave valorKinn Julião
 
Paradigmas de Linguagens de Programacao - Aula #1
Paradigmas de Linguagens de Programacao - Aula #1Paradigmas de Linguagens de Programacao - Aula #1
Paradigmas de Linguagens de Programacao - Aula #1Ismar Silveira
 

Destaque (15)

La recreacion 1
La recreacion 1La recreacion 1
La recreacion 1
 
Integrando aplicações com redis
Integrando aplicações com redisIntegrando aplicações com redis
Integrando aplicações com redis
 
Escalando aplicação Python usando Getup OpenShift
Escalando aplicação Python usando Getup OpenShiftEscalando aplicação Python usando Getup OpenShift
Escalando aplicação Python usando Getup OpenShift
 
Bancos de dados open source
Bancos de dados open sourceBancos de dados open source
Bancos de dados open source
 
01 aula1 habib
01 aula1 habib01 aula1 habib
01 aula1 habib
 
Bancos orientados a colunas (Cassandra)
Bancos orientados a colunas (Cassandra) Bancos orientados a colunas (Cassandra)
Bancos orientados a colunas (Cassandra)
 
Redis – What, Why, When, How?
Redis – What, Why, When, How?Redis – What, Why, When, How?
Redis – What, Why, When, How?
 
Algumas das principais características do NoSQL
Algumas das principais características do NoSQLAlgumas das principais características do NoSQL
Algumas das principais características do NoSQL
 
Escalando Aplicações com Redis
Escalando Aplicações com RedisEscalando Aplicações com Redis
Escalando Aplicações com Redis
 
Bancos de dados NoSQL - Redis e MongoDB
Bancos de dados NoSQL - Redis e MongoDBBancos de dados NoSQL - Redis e MongoDB
Bancos de dados NoSQL - Redis e MongoDB
 
549891
549891549891
549891
 
Deploy completo de uma aplicação Django
Deploy completo de uma aplicação DjangoDeploy completo de uma aplicação Django
Deploy completo de uma aplicação Django
 
Docker + Django
Docker + DjangoDocker + Django
Docker + Django
 
Redis um banco chave valor
Redis um banco chave valorRedis um banco chave valor
Redis um banco chave valor
 
Paradigmas de Linguagens de Programacao - Aula #1
Paradigmas de Linguagens de Programacao - Aula #1Paradigmas de Linguagens de Programacao - Aula #1
Paradigmas de Linguagens de Programacao - Aula #1
 

Semelhante a Big data da teoria à prática

Uma perspectiva histórica e o cenário atual das ferramentas de desenvolviment...
Uma perspectiva histórica e o cenário atual das ferramentas de desenvolviment...Uma perspectiva histórica e o cenário atual das ferramentas de desenvolviment...
Uma perspectiva histórica e o cenário atual das ferramentas de desenvolviment...Mario Guedes
 
NoSQL, MongoDB e MEAN
NoSQL, MongoDB e MEANNoSQL, MongoDB e MEAN
NoSQL, MongoDB e MEANOsmar Petry
 
NoSQL: Uma análise crítica
NoSQL: Uma análise críticaNoSQL: Uma análise crítica
NoSQL: Uma análise críticapichiliani
 
De zero a cem em cloud computing transformando idéias em aplicações em pouco...
De zero a cem em cloud computing  transformando idéias em aplicações em pouco...De zero a cem em cloud computing  transformando idéias em aplicações em pouco...
De zero a cem em cloud computing transformando idéias em aplicações em pouco...Ricardo Martinelli de Oliveira
 
IntroduçãO Ao Desenvolvimento Web 2
IntroduçãO Ao Desenvolvimento Web   2IntroduçãO Ao Desenvolvimento Web   2
IntroduçãO Ao Desenvolvimento Web 2Maurício Linhares
 
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
 
Introdução ao desenvolvimento web - 2 - iDez 2010
Introdução ao desenvolvimento web - 2 - iDez 2010Introdução ao desenvolvimento web - 2 - iDez 2010
Introdução ao desenvolvimento web - 2 - iDez 2010Maurício Linhares
 
Extreme Experience 2018 | Estudo de Caso: Aplicação DataSnap para 10.000 usuá...
Extreme Experience 2018 | Estudo de Caso: Aplicação DataSnap para 10.000 usuá...Extreme Experience 2018 | Estudo de Caso: Aplicação DataSnap para 10.000 usuá...
Extreme Experience 2018 | Estudo de Caso: Aplicação DataSnap para 10.000 usuá...Mario Guedes
 
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
 
Case RDStation: Construindo DataLakes com Apache Hadoop em cloud agnóstica
Case RDStation: Construindo DataLakes com Apache Hadoop em cloud agnósticaCase RDStation: Construindo DataLakes com Apache Hadoop em cloud agnóstica
Case RDStation: Construindo DataLakes com Apache Hadoop em cloud agnósticaAlessandro Binhara
 
De zero a cem em cloud computing transformando idéias em aplicações em pouco...
De zero a cem em cloud computing  transformando idéias em aplicações em pouco...De zero a cem em cloud computing  transformando idéias em aplicações em pouco...
De zero a cem em cloud computing transformando idéias em aplicações em pouco...Ricardo Martinelli de Oliveira
 
Transformando a ti com cloud computing e virtualização
Transformando a ti com cloud computing e virtualizaçãoTransformando a ti com cloud computing e virtualização
Transformando a ti com cloud computing e virtualizaçãoDarlan Segalin
 
Apresentação Final de Banco de Dados
Apresentação Final de Banco de DadosApresentação Final de Banco de Dados
Apresentação Final de Banco de Dadossamlobo
 
Os pecados mortais de escalabilidade em Drupal e seus efeitos nos negócios - ...
Os pecados mortais de escalabilidade em Drupal e seus efeitos nos negócios - ...Os pecados mortais de escalabilidade em Drupal e seus efeitos nos negócios - ...
Os pecados mortais de escalabilidade em Drupal e seus efeitos nos negócios - ...Taller Negócio Digitais
 
Drupal 4 Dev: aprendendo Drupal do ponto de vista de desenvolvedores
Drupal 4 Dev: aprendendo Drupal do ponto de vista de desenvolvedoresDrupal 4 Dev: aprendendo Drupal do ponto de vista de desenvolvedores
Drupal 4 Dev: aprendendo Drupal do ponto de vista de desenvolvedoresPedro Rocha
 

Semelhante a Big data da teoria à prática (20)

Uma perspectiva histórica e o cenário atual das ferramentas de desenvolviment...
Uma perspectiva histórica e o cenário atual das ferramentas de desenvolviment...Uma perspectiva histórica e o cenário atual das ferramentas de desenvolviment...
Uma perspectiva histórica e o cenário atual das ferramentas de desenvolviment...
 
NoSQL, MongoDB e MEAN
NoSQL, MongoDB e MEANNoSQL, MongoDB e MEAN
NoSQL, MongoDB e MEAN
 
NoSQL: Uma análise crítica
NoSQL: Uma análise críticaNoSQL: Uma análise crítica
NoSQL: Uma análise crítica
 
De zero a cem em cloud computing transformando idéias em aplicações em pouco...
De zero a cem em cloud computing  transformando idéias em aplicações em pouco...De zero a cem em cloud computing  transformando idéias em aplicações em pouco...
De zero a cem em cloud computing transformando idéias em aplicações em pouco...
 
IntroduçãO Ao Desenvolvimento Web 2
IntroduçãO Ao Desenvolvimento Web   2IntroduçãO Ao Desenvolvimento Web   2
IntroduçãO Ao Desenvolvimento Web 2
 
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
 
Introdução ao desenvolvimento web - 2 - iDez 2010
Introdução ao desenvolvimento web - 2 - iDez 2010Introdução ao desenvolvimento web - 2 - iDez 2010
Introdução ao desenvolvimento web - 2 - iDez 2010
 
Extreme Experience 2018 | Estudo de Caso: Aplicação DataSnap para 10.000 usuá...
Extreme Experience 2018 | Estudo de Caso: Aplicação DataSnap para 10.000 usuá...Extreme Experience 2018 | Estudo de Caso: Aplicação DataSnap para 10.000 usuá...
Extreme Experience 2018 | Estudo de Caso: Aplicação DataSnap para 10.000 usuá...
 
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
 
Case RDStation: Construindo DataLakes com Apache Hadoop em cloud agnóstica
Case RDStation: Construindo DataLakes com Apache Hadoop em cloud agnósticaCase RDStation: Construindo DataLakes com Apache Hadoop em cloud agnóstica
Case RDStation: Construindo DataLakes com Apache Hadoop em cloud agnóstica
 
Apresentação
ApresentaçãoApresentação
Apresentação
 
De zero a cem em cloud computing transformando idéias em aplicações em pouco...
De zero a cem em cloud computing  transformando idéias em aplicações em pouco...De zero a cem em cloud computing  transformando idéias em aplicações em pouco...
De zero a cem em cloud computing transformando idéias em aplicações em pouco...
 
Transformando a ti com cloud computing e virtualização
Transformando a ti com cloud computing e virtualizaçãoTransformando a ti com cloud computing e virtualização
Transformando a ti com cloud computing e virtualização
 
#1 Introdução ao MongoDB
#1   Introdução ao MongoDB#1   Introdução ao MongoDB
#1 Introdução ao MongoDB
 
Apresentação Final de Banco de Dados
Apresentação Final de Banco de DadosApresentação Final de Banco de Dados
Apresentação Final de Banco de Dados
 
Os pecados mortais de escalabilidade em Drupal e seus efeitos nos negócios - ...
Os pecados mortais de escalabilidade em Drupal e seus efeitos nos negócios - ...Os pecados mortais de escalabilidade em Drupal e seus efeitos nos negócios - ...
Os pecados mortais de escalabilidade em Drupal e seus efeitos nos negócios - ...
 
Drupal 4 Dev: aprendendo Drupal do ponto de vista de desenvolvedores
Drupal 4 Dev: aprendendo Drupal do ponto de vista de desenvolvedoresDrupal 4 Dev: aprendendo Drupal do ponto de vista de desenvolvedores
Drupal 4 Dev: aprendendo Drupal do ponto de vista de desenvolvedores
 
Modelos de Banco de dados e SGBDS
Modelos de Banco de dados e SGBDSModelos de Banco de dados e SGBDS
Modelos de Banco de dados e SGBDS
 
Big data
Big dataBig data
Big data
 
Slide db4 o
Slide db4 oSlide db4 o
Slide db4 o
 

Mais de Mario Guedes

O que é e como devo usar o REDIS? - 1o Mobile REST Summit
O que é e como devo usar o REDIS? - 1o Mobile REST SummitO que é e como devo usar o REDIS? - 1o Mobile REST Summit
O que é e como devo usar o REDIS? - 1o Mobile REST SummitMario Guedes
 
Fazendo barba, cabelo e bigode com REDIS
Fazendo barba, cabelo e bigode com REDISFazendo barba, cabelo e bigode com REDIS
Fazendo barba, cabelo e bigode com REDISMario Guedes
 
Integrando-se à Blockchain da Ethereum
Integrando-se à Blockchain da EthereumIntegrando-se à Blockchain da Ethereum
Integrando-se à Blockchain da EthereumMario Guedes
 
Entendendo HTTP para entender o REST
Entendendo HTTP para entender o RESTEntendendo HTTP para entender o REST
Entendendo HTTP para entender o RESTMario Guedes
 
Expressão Regular - Cookbook
Expressão Regular - CookbookExpressão Regular - Cookbook
Expressão Regular - CookbookMario Guedes
 
Geolocalização com Redis e Google Maps
Geolocalização com Redis e Google MapsGeolocalização com Redis e Google Maps
Geolocalização com Redis e Google MapsMario Guedes
 
Foco no app, viva o serverless!
Foco no app, viva o serverless!Foco no app, viva o serverless!
Foco no app, viva o serverless!Mario Guedes
 
Geolocalização com Redis e Google Maps
Geolocalização com Redis e Google MapsGeolocalização com Redis e Google Maps
Geolocalização com Redis e Google MapsMario Guedes
 
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
 
Escalabilidade com Redis
Escalabilidade com Redis Escalabilidade com Redis
Escalabilidade com Redis Mario Guedes
 
Escalando o backend com NGINX e Redis
Escalando o backend com NGINX e RedisEscalando o backend com NGINX e Redis
Escalando o backend com NGINX e RedisMario Guedes
 
Turbinando o seu sistema com Redis!
Turbinando o seu sistema com Redis!Turbinando o seu sistema com Redis!
Turbinando o seu sistema com Redis!Mario Guedes
 
TDCSP - 2018 - Possibilidades com o REDIS no Delphi
TDCSP - 2018 - Possibilidades com o REDIS no DelphiTDCSP - 2018 - Possibilidades com o REDIS no Delphi
TDCSP - 2018 - Possibilidades com o REDIS no DelphiMario Guedes
 
Extreme Experience 2018 | Python para quem sabe Delphi
Extreme Experience 2018 | Python para quem sabe DelphiExtreme Experience 2018 | Python para quem sabe Delphi
Extreme Experience 2018 | Python para quem sabe DelphiMario Guedes
 
Extreme 360º 2017 | Arquitetura Extrema: Rumo aos 10.000 usuários
Extreme 360º 2017 | Arquitetura Extrema: Rumo aos 10.000 usuáriosExtreme 360º 2017 | Arquitetura Extrema: Rumo aos 10.000 usuários
Extreme 360º 2017 | Arquitetura Extrema: Rumo aos 10.000 usuáriosMario Guedes
 
Abertura - GruPy-SP | G4 Solutions - Agosto 2015
Abertura - GruPy-SP | G4 Solutions - Agosto 2015Abertura - GruPy-SP | G4 Solutions - Agosto 2015
Abertura - GruPy-SP | G4 Solutions - Agosto 2015Mario Guedes
 
O que é ser programador?
O que é ser programador?O que é ser programador?
O que é ser programador?Mario Guedes
 

Mais de Mario Guedes (17)

O que é e como devo usar o REDIS? - 1o Mobile REST Summit
O que é e como devo usar o REDIS? - 1o Mobile REST SummitO que é e como devo usar o REDIS? - 1o Mobile REST Summit
O que é e como devo usar o REDIS? - 1o Mobile REST Summit
 
Fazendo barba, cabelo e bigode com REDIS
Fazendo barba, cabelo e bigode com REDISFazendo barba, cabelo e bigode com REDIS
Fazendo barba, cabelo e bigode com REDIS
 
Integrando-se à Blockchain da Ethereum
Integrando-se à Blockchain da EthereumIntegrando-se à Blockchain da Ethereum
Integrando-se à Blockchain da Ethereum
 
Entendendo HTTP para entender o REST
Entendendo HTTP para entender o RESTEntendendo HTTP para entender o REST
Entendendo HTTP para entender o REST
 
Expressão Regular - Cookbook
Expressão Regular - CookbookExpressão Regular - Cookbook
Expressão Regular - Cookbook
 
Geolocalização com Redis e Google Maps
Geolocalização com Redis e Google MapsGeolocalização com Redis e Google Maps
Geolocalização com Redis e Google Maps
 
Foco no app, viva o serverless!
Foco no app, viva o serverless!Foco no app, viva o serverless!
Foco no app, viva o serverless!
 
Geolocalização com Redis e Google Maps
Geolocalização com Redis e Google MapsGeolocalização com Redis e Google Maps
Geolocalização com Redis e Google Maps
 
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!
 
Escalabilidade com Redis
Escalabilidade com Redis Escalabilidade com Redis
Escalabilidade com Redis
 
Escalando o backend com NGINX e Redis
Escalando o backend com NGINX e RedisEscalando o backend com NGINX e Redis
Escalando o backend com NGINX e Redis
 
Turbinando o seu sistema com Redis!
Turbinando o seu sistema com Redis!Turbinando o seu sistema com Redis!
Turbinando o seu sistema com Redis!
 
TDCSP - 2018 - Possibilidades com o REDIS no Delphi
TDCSP - 2018 - Possibilidades com o REDIS no DelphiTDCSP - 2018 - Possibilidades com o REDIS no Delphi
TDCSP - 2018 - Possibilidades com o REDIS no Delphi
 
Extreme Experience 2018 | Python para quem sabe Delphi
Extreme Experience 2018 | Python para quem sabe DelphiExtreme Experience 2018 | Python para quem sabe Delphi
Extreme Experience 2018 | Python para quem sabe Delphi
 
Extreme 360º 2017 | Arquitetura Extrema: Rumo aos 10.000 usuários
Extreme 360º 2017 | Arquitetura Extrema: Rumo aos 10.000 usuáriosExtreme 360º 2017 | Arquitetura Extrema: Rumo aos 10.000 usuários
Extreme 360º 2017 | Arquitetura Extrema: Rumo aos 10.000 usuários
 
Abertura - GruPy-SP | G4 Solutions - Agosto 2015
Abertura - GruPy-SP | G4 Solutions - Agosto 2015Abertura - GruPy-SP | G4 Solutions - Agosto 2015
Abertura - GruPy-SP | G4 Solutions - Agosto 2015
 
O que é ser programador?
O que é ser programador?O que é ser programador?
O que é ser programador?
 

Big data da teoria à prática

  • 1. BigData: Da teoria à prática Um case real de uso de banco noSQL com Delphi
  • 3. Quiiii Máriiiioooo? 17+ anos na lida Desenvolvedor Delphi, Python, JavaScript e LUA Gestão de Desenvolvimento na CONTACT STUDIO Software Ênfase em soluções para a área de Contact Center Discador, Chat, URA, Integrações e por aí vai Mantenedor do blog: http://eugostododelphi.blogspot.com.br
  • 4. Arquitetura sugerida para uma grande solução Se você está buscando criar uma grande solução que seja resiliente, escalável e disponível sugere-se a adoção das seguintes abordagens, mesmo que se comece pequeno porém pensando grande: API First (REST/JSON): bom para web, mobile, IoT, e integrações ROA A camada de apresentação será a mais conveniente para o seu negócio: De FoxPro à HTML/JavaScript passando pelo mobile Serviço de Mensageria: desacoplamento entre os artefatos Adoção de Microsserviços: escala horizontal
  • 5. Big Data e os 5 V’s Big Data embute muitos desafios. Armazenamento é um deles e é este o foco desta apresentação. O que fazer com os dados é outro problema. Precisamos ter em mente ao menos 3 dos 5 V’s: ★ Volume: Haja disco! ★ Velocidade: “Não interessa como estava o trânsito há dez minutos!” ★ Variedade: Formatos complexos e não estruturados (90% dos dados)
  • 6. Paradigmas noSQL noSQL: Not Only SQL Uma grande solução requer várias abordagens de armazenamento complementares. Um banco dito SQL adota o paradigma relacional (e.g. SQL Server) Já no mundo noSQL temos 4 paradigmas em destaque: Orientado a Documento: mongoDB, CouchDB Orientado a Chave e Valor: REDIS, memcached
  • 7. CONTACT STUDIO O Contact Studio é uma grande plataforma de comunicação, com abordagem SaaS, e sua principal motivação foi o de centralizar os sistemas espalhados pelos Call Centers. É totalmente “agnóstica” em termos de tecnologia: Delphi, C++, Python, JavaScript e LUA como linguagens de desenvolvimento assim como SQL Server, REDIS, mongoDB, Apache Cassandra e Neo4J como storages. A equipe é composta por 10 desenvolvedores e essa transição começou há três anos. E não: Não está sendo fácil. Mas está sendo recompensador!
  • 8. Problemas que enfrentamos lá atrás Em 2010 fizemos uma primeira tentativa de migração do modelo Client/Server para o modelo Multi Camada. Erros que merecem destaques (e quem liga para os acertos né?) Utilizamos um protocolo de comunicação proprietário (KBM) Utilizamos o banco de dados relacional para resolver a fome do mundo: Chegou um momento que era proibido tirar relatório em horário comercial E a importação do mailing tinha que ser feito às 7 da manhã para dar tempo de acabar antes da operação começar… às 9.
  • 9. Em 2014 caiu a ficha: REDIS + MongoDB + Cassandra + Neo4J Velocidade: Esses bancos foram concebidos para trabalhar em cluster o que possibilita leitura e escrita concorrentes Disponibilidade: Se um nó cai, temos outros para suportar a carga Diminuição da impedância representacional: Não é necessário transformar um dataset em um JSON aninhado conveniente para o frontend Schema-free: Maior fluidez no desenvolvimento e respostas mais rápidas às mudanças de regras de negócios: 100+ tabelas se resumiu a 15 collections! Novas oportunidades: Estamos investindo em predição e aprendizado de máquina.
  • 10. CAMADA DE MICROSSERVIÇOS E TELEFONIA (Delphi & Python & C++ & FreeSWITCH) Topologia Atual Simplificada NGNIX CAMADA REST (Delphi/DataSnap & Python/Tornado) MENSAGERIA (REDIS) LEGADO (SQL Server) CACHE, SESSÃO (REDIS) CADASTROS & File System (mongoDB) CARDEX (mongoDB) FÓSSIL (mongoDB) Analytics (Cassandra) FRONTEND: Delphi, AngularJS, Mobile, Integrações de Terceiros (e.g. Maquininha da Cielo)
  • 11. Sorteio dos Livros Três e-Books da Casa do Código para os três primeiros que enviar o nome e e-mail para o link acima. Valendo!
  • 12. REDIS - O que é? https://redis.io/ Banco de Dados orientado à Chave e Valor Baseado em memória Abordagem bloqueante Oferece várias tipos de dados e operações TTL e Suporta script LUA
  • 13. REDIS - Como usa? Use o driver do Daniele Teti https://github.com/danieleteti/delphiredisclient Em produção dê preferência a um servidor Linux Para Windows baixe os binários em: https://github.com/MSOpenTech/redis/releases Tem uma interface gráfica em: https://redisdesktop.com/download
  • 14. mongoDB - O que é? https://www.mongodb.com/ Banco de Dados orientado a Documento Oferece várias operações Armazena JSON, só que no formato BSON Oferece operações de MAP/REDUCE (em JavaScript) e AGREGAÇÃO Ideal para:
  • 15. Como um carro é armazenado em um banco relacional:
  • 16. Como um carro é armazenado no mongoDB:
  • 17. mongoDB - Como usa? Basta acionar o mongod com os parâmetros adequados É possível rodar como serviço As instruções CRUD são feitas com argumentos em JSON Não olhe para o mongoDB com o mesmo mapa mental que você tem em relação a um banco relacional: É um sofrimento desnecessário.
  • 18. Comece a usar o mongoDB agora! Aprenda tudo sobre mongoDB com Delphi com o Thulio Bittencourt: Curso de MongoDB com Delphi https://www.youtube.com/playlist?list=PLvrBgLo9icwMz1N9vh59OMf- J4XXZGdsw
  • 19. Apache Cassandra - O que é? http://cassandra.apache.org/ Banco de Dados orientado a Coluna Rígido em sua modelagem mas, em troca, estupidamente rápido Ideal para: Dados analíticos Armazenamento de arquivos em “pedaços” para recuperação via streaming
  • 20. Apache Cassandra - Como usa? A modelagem da coleção deve ser orientada às respostas que você quer. Suporta uma linguagem de consulta denominada CQL, com sintaxe idêntica ao bom e velho SQL. É o mais mais complexo de se entender e manter. Também, o que esperar de algo feito em Java né?
  • 21. Neo4J - O que é? https://neo4j.com/ Banco orientado a Grafo Ainda está sendo estudado pela equipe Ideal para: Determinar relacionamentos entre conceitos Quais agentes estão falando com quais consumidores da cidade de Florianópolis?
  • 22. Neo4J - Idéia básica Basicamente temos “nós” com propriedades e as “arestas” entre estes nós. A “aresta” em si também possui propriedades. Viu, agora dá para criar aquela rede social :)
  • 23. Objetivo Identificar o melhor operador para atender um determinado cliente de acordo com critérios diversos
  • 24. Mensagem final Existem outros paradigmas de storage e outros vendors. Não é o caso de colocar o mongoDB no lugar do seu SQL Server de uma hora para outra: baby steps! A ferramenta certa para o problema certo: Analise o problema e crie repertório para resolvê-lo. Achou o noSQL bacana? Saiba que existe o newSQL… Basicamente são bancos multiparadigmas
  • 25. Cuidados importantes Verifique a profundidade do lago antes de mergulhar. Cuide da sua equipe: tenha consciência que toda mudança causa resistência. Não magoe o seu DBA: convide-o a participar do processo - Cientista de Dados é o novo sexy.
  • 26. Livros bacanas NoSQL Essencial https://novatec.com.br/livros/nosql-essencial/ Introdução ao MongoDB https://novatec.com.br/livros/introducao-ao-mongodb/ Armazenando dados com Redis https://www.casadocodigo.com.br/products/livro-redis MongoDB - Construa novas aplicações com novas tecnologias https://www.casadocodigo.com.br/products/livro-mongodb NoSQL - Como armazenar os dados de uma aplicação moderna https://www.casadocodigo.com.br/products/livro-nosql
  • 27. Links interessantes Non-Relational Database http://www.non-relational.com/ Os 5 V's do Big Data http://www.gta.ufrj.br/grad/15_1/bigdata/vs.html Visão Geral do Apache Cassandra https://www.infoq.com/br/interviews/Visao-Geral-do-Apache-Cassandra
  • 28. Obrigado! Dá tempo para perguntas? Nas redes sociais você me localiza como /jmarioguedes Mas me manda um e-mail vai: jmarioguedes@gmail.com

Notas do Editor

  1. Agradecer à Softplan pela oportunidade e ao Muka, Ana Paula - Salva de palmas!
  2. Vai e Volta Voando Vai e Volta Voando Viu Viado
  3. MVP - Produto Mínimo Viável