big data da teoria à prática

28
BigData: Da teoria à prática Um case real de uso de banco noSQL com Delphi

Upload: mario-guedes

Post on 21-Mar-2017

26 views

Category:

Software


0 download

TRANSCRIPT

Page 1: Big data  da teoria à prática

BigData: Da teoria à práticaUm case real de uso de banco noSQL com Delphi

Page 2: Big data  da teoria à prática

Acompanhe em:

https://goo.gl/JbhLQX

Page 3: Big data  da teoria à prática

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 CenterDiscador, Chat, URA, Integrações e por aí vai

Mantenedor do blog: http://eugostododelphi.blogspot.com.br

Embarcadero MVP

[email protected] | [email protected]

Page 4: Big data  da teoria à prática

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

Persistência noSQL “poliglota”: a ferramenta certa para o problema certo

Page 5: Big data  da teoria à prática

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)

★Veracidade: Posso realmente confiar na fonte?

★Valor: Esses dados são realmente relevantes?

Page 6: Big data  da teoria à prática

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

Orientado a Coluna: Apache Cassandra

Orientado a Grafo: Neo4J

O pulo do gato é como os dados são armazenados em disco.

Page 7: Big data  da teoria à prática

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!

Page 8: Big data  da teoria à prática

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.

Um aspecto importante era a flexibilidade de campos do mailing

Fácil fácil era necessário 5 tabelas para armazenamento do mailing

Não suportava mais de 150 operadores logados: vexame!

Page 9: Big data  da teoria à prática

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.

Ainda em fase de MVP, hoje estamos na casa dos 1.000 usuários, com 4 empresas, e o sistema flui sem problemas.

Page 10: Big data  da teoria à prática

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)

Page 11: Big data  da teoria à prática

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!

Page 12: Big data  da teoria à prática

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

Utilizamos para:Armazenamento de sessão de usuário

Cacheamento server side: o processamento mais rápido é aquele que não é feito

Mensageria via PUB/SUB e enfileiramento

Page 13: Big data  da teoria à prática

REDIS - Como usa?

Use o driver do Daniele Tetihttps://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

Pense no REDIS como um grande “arquivo INI” ou como uma espécie de memória compartilhada

Page 14: Big data  da teoria à prática

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:Dados de configuração

Fossilização de dados

Armazenamento de dados complexos

Armazenamento de arquivos

Page 15: Big data  da teoria à prática

Como um carro é armazenado em um banco relacional:

Page 16: Big data  da teoria à prática

Como um carro é armazenado no mongoDB:

Page 17: Big data  da teoria à prática

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.

Page 18: Big data  da teoria à prática

Comece a usar o mongoDB agora!

Aprenda tudo sobre mongoDB com Delphi com o Thulio Bittencourt:

Curso de MongoDB com Delphihttps://www.youtube.com/playlist?list=PLvrBgLo9icwMz1N9vh59OMf-J4XXZGdsw

Page 19: Big data  da teoria à prática

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

Netflix faz isso

Base para o Hadoop: processamento em cluster

Page 20: Big data  da teoria à prática

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é?

Page 21: Big data  da teoria à prática

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?

Page 22: Big data  da teoria à prática

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 :)

Page 23: Big data  da teoria à prática

ObjetivoIdentificar o melhor operador para atender um determinado cliente de acordo com critérios diversos

Page 24: Big data  da teoria à prática

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

Então não seja resistente nem arrojado demais: seja ninja!

Page 25: Big data  da teoria à prática

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.

Não se prenda aos seus conceitos atuais: “desapega! desapega!”

Page 26: Big data  da teoria à prática

Livros bacanasNoSQL Essencial

https://novatec.com.br/livros/nosql-essencial/

Introdução ao MongoDBhttps://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 tecnologiashttps://www.casadocodigo.com.br/products/livro-mongodb

NoSQL - Como armazenar os dados de uma aplicação modernahttps://www.casadocodigo.com.br/products/livro-nosql

Desvendando o mongoDB - Do Mongo Shell ao Java Driverhttp://www.cienciamoderna.com.br/desvendando-o-mongodb-do-mongo-shell-and-java-driver/p

Page 27: Big data  da teoria à prática

Links interessantesNon-Relational Database

http://www.non-relational.com/

Os 5 V's do Big Datahttp://www.gta.ufrj.br/grad/15_1/bigdata/vs.html

Visão Geral do Apache Cassandrahttps://www.infoq.com/br/interviews/Visao-Geral-do-Apache-Cassandra

Page 28: Big data  da teoria à prática

Obrigado!

Dá tempo para perguntas?

Nas redes sociais você me localiza como /jmarioguedes

Mas me manda um e-mail vai: [email protected]