SlideShare una empresa de Scribd logo
1 de 57
Elasticsearch
Confidencial – Copyright © 2015 - MundiPagg
O que é?
• Distribuido, alta disponibilidade, armazenamento e recuperação de dados
• Motor de busca, motor de agregação, analytics
• Sugestões, highlighting, geo
• Armazenamento de documentos
• Distribuído horizontalmente
• Open source
• Apache License
• Vários plugins
Confidencial – Copyright © 2015 - MundiPagg
Pra que serve?
• Recuperação rápida de documentos
• Análise de logs
• Busca full text
• Analytics e agregações
• Visualização de dados em dashboard com Kibana
• Alerta e classificação com o Percolator
• Motor de sugestões
Confidencial – Copyright © 2015 - MundiPagg
Quem usa?
Conceitos
Confidencial – Copyright © 2015 - MundiPagg
Scale
• Vertical
• “Scale up”
• Mais RAM
• Disco mais rápido
• Mais banda
• Limitada
• Horizontal
• “Scale out”
• Mais máquinas
• Aumenta os recursos de acordo com a demanda
Confidencial – Copyright © 2015 - MundiPagg
Documents
• Documentos são objetos JSON
• Tipos de dados:
• String
• Númerico
• Geopoint, Geoshape: "41.12,-71.34"
• Bool
• Date: “2016-05-11 23:59:59.999”
• IPv4 address: “192.168.0.1”
• Array
• Objeto
Confidencial – Copyright © 2015 - MundiPagg
Nodes
• Um nó é uma instância do Elasticsearch
• VM, container ou máquina física
• Pode rodar múltiplos nós em uma mesma máquina
• Um nó contém somente os dados que são atribuídos a ele
• Qualquer nó é completamente capaz de servir qualquer request
• Todo nó conhece a localização de qualquer documento no cluster assim ele pode
direcionar a requisição diretamente para o nó que contém o dado
Confidencial – Copyright © 2015 - MundiPagg
Index
• Um índice é um container de dados
• Cada nó pode hospedar vários índices
Confidencial – Copyright © 2015 - MundiPagg
Shard
• Um shard é um pedaço único de um índice do Elasticsearch
• Índices são particionados em Shards, assim eles podem ser distribuídos em vários nós
• Cada shard é um indice do Lucene
• Cada índice pode ser “shardiado”
• Quando criado você pode especificar a quantidade
• Um shard ou é primário ou uma réplica
• Primários aceitam escrita
• Replicas replicam a escrita
Confidencial – Copyright © 2015 - MundiPagg
Cluster
• Um cluster é um conjunto de nós trabalhando junto
• Todos os nós se comunicam
• Os nós recebem as buscas e enviam para todos os nós do cluster para responder o
request
• Os nós recebem as requisições de index e direcionam para o nó que contém o shard
onde o dado deve ser indexado
Confidencial – Copyright © 2015 - MundiPagg
Apache Lucene
• Biblioteca de motor de busca full-text de alta performance
• “Indiscutivelmente a mais avançada”
• Open source
• Cross-plataform
• Altamente complexa
Chega de historinha
Confidencial – Copyright © 2015 - MundiPagg
Instalação
• Amazon Web Services
• Ubuntu
• Java
• Elasticsearch
• Marvel
• Configurações
Confidencial – Copyright © 2015 - MundiPagg
Java
• sudo add-apt-repository ppa:webupd8team/java
• sudo apt-get update
• sudo apt-get install oracle-java7-installer
Confidencial – Copyright © 2015 - MundiPagg
Elasticsearch
• wget https://download.elastic.co/elasticsearch/elasticsearch/elasticsearch-1.7.1.deb
• sudo dpkg -i elasticsearch-1.7.1.deb
• cd /usr/share/elasticsearch
• sudo bin/plugin -i elasticsearch/marvel/latest
Confidencial – Copyright © 2015 - MundiPagg
Configurações
• node.name: “sharon”
• node.name: “node1“
• bootstrap.mlockall: true (previne o swap lockando o espaço de memória)
• discovery.zen.ping.multicast.enabled: false
• discovery.zen.ping.unicast.hosts: [“192.168.0.1“, “192.168.0.2”]
• ES_HEAP_SIZE
Mapping and Analysis
Confidencial – Copyright © 2015 - MundiPagg
Valores exatos x Full text
• Valores exatos são exatamente o que soam. Exemplos: userId, email, username. É
trivial fazer busca por valores exatos.
• Fazer busca Full text é muito mais sutil, não é binária.
• Quão relevante é este documento para esta busca?
• Uma busca por “BR” deve também retornar documentos que mencionem “Brasil”
• Uma busca por “pulo” deve bater com “pulou”, “pulos”, “pular” e até talvez “salto”
• “johnny walker” deve encontrar “Johnnie Walker” e “johnnie depp” deve encontrar
“Johnny Depp”
Confidencial – Copyright © 2015 - MundiPagg
Índice invertido
• Projetado para permitir uma busca full-text extremamente rápida
• Consiste em uma lista única com todas as palavras que aparecem nos documentos e
para cada palavra uma lista de documentos que ela aparece
Confidencial – Copyright © 2015 - MundiPagg
Índice invertido
• Exemplo:
• The quick brown fox jumped over the lazy dog
• Quick brown foxes leap over lazy dogs in summer
Confidencial – Copyright © 2015 - MundiPagg
Índice invertido
Busca por “quick brown”
Confidencial – Copyright © 2015 - MundiPagg
Índice invertido
• Porem tem alguns problemas com esse indice invertido:
• “Quick” e “quick” aparecem com duas entradas diferentes
• “fox” e “foxes” também
• “jumped” e “leap” são sinonimos
• Resolve como? Normalizando tanto no indice quanto na query
• “Quick” -> “quick”
• “foxes” -> “fox”
• “jumped”, “leap” -> “jump”
Confidencial – Copyright © 2015 - MundiPagg
Índice invertido
Confidencial – Copyright © 2015 - MundiPagg
Análise e Analisadores
• Análise é um processo com os seguintes passos:
1. Tokenizar a string em termos únicos para usar no indice invertido
2. Normalizar os termos numa forma padrão para melhorar a “pesquisabilidade”
• A análise é feita pelo analisador que nada mais é que a combinação de 3 funções:
1. Filtro de caracteres: remove html ou converte caracteres especiais em palavras
2. Tokenizador: faz o split da string por espaço ou pontuação
3. Filtro de token: altera, remove ou adiciona termos
Confidencial – Copyright © 2015 - MundiPagg
Análise e Analisadores
• Existem alguns analisadores nativos, você pode escolher qual usar ou se preferir pode
criar o seu
• Quando são utilizados?
• Quando um documento é indexado os campos full-text são analisados
• Quando é feita uma query full-text a string é analisada
• Quando é feita uma query de valor exato a string NÃO é analisada
• Como testar?
Confidencial – Copyright © 2016 - MundiPagg
Mapeamento
Processo que define a estrutura de um documento e seus campos, a forma como são
armazenados e indexados.
• Campos de texto tratados como full-text
• Campos de números
• Campos de datas e seus formatos
• Campos de geolocalização
• Regras para campos adicionados automaticamente
Confidencial – Copyright © 2015 - MundiPagg
Mapeamento
• Por default ao indexar um documento o Elasticsearch detecta e define o tipo
automaticamente
• Para consultar basta enviar um GET para /index_name/_mapping
• Quando o tipo é uma string existem dois campos importantes no mapeamento:
• “Index”
• “analyzed”: O campo é analisado e indexado
• “not_analyzed”: O campo não é analisado mas é indexado
• “no”: O campo não é analisado nem indexado
• “analyzer”: Define o analisador utilizado
• É possível alterar o mapeamento para um campo novo
• Infelizmente NÃO é possível alterar o mapeamento de um campo que já existe
Índices e documentos
Criação, buscas e agregações
Confidencial – Copyright © 2016 - MundiPagg
Analisadores
Os analisadores modificam a forma como os índices são criados. Basicamente, pode-se
informar para analisar (default), não analisar ou não indexar.
Valor: “Thiago da Silva Barradas”
Índice não analisável:
“Thiago da Silva Barradas”
Índice analisável:
“thiago”
“da”
“silva”
“barradas”
Confidencial – Copyright © 2016 - MundiPagg
Mapping
POST /meu-indice/meu-tipo/_mapping
{
"properties": {
"meu-campo": {
"type": "string",
"index": "not_analyzed"
}
}
}
Confidencial – Copyright © 2016 - MundiPagg
Filter X Query
Filter Query
Deve ser usado para os tipos string (not
analyzed), integer, long, date, etc
Deve ser utilizado para os tipos string
(analyzed)
Usa valor recebido como índice Divide valor recebido em vários índices de
acordo com o analisador
Não gera relevância (score) Gera relevância (score)
Confidencial – Copyright © 2016 - MundiPagg
Filters
• And Filter
• Bool Filter
• Exists Filter
• Geo Bounding Box Filter
• Geo Distance Filter
• Geo Distance Range Filter
• Geo Polygon Filter
• GeoShape Filter
• Geohash Cell Filter
• Has Child Filter
• Has Parent Filter
• Ids Filter
• Indices Filter
• Limit Filter
• Match All Filter
• Missing Filter
• Nested Filter
• Not Filter
• Or Filter
• Prefix Filter
• Query Filter
• Range Filter
• Regexp Filter
• Script Filter
• Term Filter
• Terms Filter
• Type Filter
Confidencial – Copyright © 2016 - MundiPagg
Filters
GET /meu-indice/meu-tipo/_search
{
"filter": {
"term": {
"meu-campo": "valor"
}
}
}
Confidencial – Copyright © 2016 - MundiPagg
Querys
• Match Query
• Multi Match Query
• Bool Query
• Boosting Query
• Common Terms Query
• Constant Score Query
• Dis Max Query
• Filtered Query
• Fuzzy Like This Query
• Fuzzy Like This Field Query
• Function Score Query
• Fuzzy Query
• GeoShape Query
• Has Child Query
• Has Parent Query
• Ids Query
• Indices Query
• Match All Query
• More Like This Query
• Nested Query
• Prefix Query
• Query String Query
• Simple Query String Query
• Range Query
• Regexp Query
• Span First Query
• Span Multi Term Query
• Span Near Query
• Span Not Query
• Span Or Query
• Span Term Query
• Term Query
• Terms Query
• Top Children Query
• Wildcard Query
• Minimum Should Match
• Multi Term Query Rewrite
• Template Query
Confidencial – Copyright © 2016 - MundiPagg
Querys
GET /meu-indice/meu-tipo/_search
{
"query": {
"match": {
"meu-campo": "valor"
}
}
}
Confidencial – Copyright © 2016 - MundiPagg
Filters e Querys
GET /meu-indice/meu-tipo/_search
{
"query": {
"filtered": {
"query": { … },
"filter": { … }
}
}
}
GET /meu-indice/meu-tipo/_search
{
"query": { ... },
"filter": { ... }
}
Confidencial – Copyright © 2016 - MundiPagg
Ordenação
GET /meu-indice/meu-tipo/_search
{
"sort": [
{ "meu-campo" : { "order" : "asc" } },
{ "meu-campo2" : { "order" : "desc" } }
]
}
Confidencial – Copyright © 2016 - MundiPagg
Paginação
GET /meu-indice/meu-tipo/_search
{
"from": 0,
"size": 10
}
Confidencial – Copyright © 2016 - MundiPagg
Scroll
Para paginação profunda com muitos ou todos documentos
• Similar a um cursor num banco relacional
• Não usado para consulta em tempo real
• Usado para grandes processamentos de dados (resincronização, grandes relatórios
• Seus documentos refletem o estado do indice no momento que o scroll foi gerado.
Modificações posteriores não serão aplicadas nos documentos do resultado do scroll
• Ao solicitar um “lote” do scroll, ele “anda” automaticamente para os próximos registros
• Para filtrar registros, se aplicam filters e querys normalmente
Confidencial – Copyright © 2016 - MundiPagg
Scroll
Criando um Scroll
GET /meu-indice/meu-tipo/_search?scroll=1m
{
“query” : { … }
}
Navegando pelo Scroll
GET /_search/scroll?scroll=1m&scroll_id={{scroll_id}}
Confidencial – Copyright © 2016 - MundiPagg
Unidades
y Ano
M Mês
w Semana
d Dia
h Hora
m Minuto
s Segundo
ms Milissegundo
b Byte
kb Kilobyte
mb Megabyte
gb Gigabyte
tb Terabyte
mi Milhas
yd Jardas
ft Pés
in Polegadas
km Quilômetros
m Metros
cm Centímetros
mm Milímetros
nmi Milhas naúticas
Tempo Armazenamento Distância
Confidencial – Copyright © 2016 - MundiPagg
Autocomplete
Autocomplete, sugestion, completion, são termos que define a técnica de atribuir possíveis
tokens de sugestão em um documento para localiza-lo mais facilmente em buscas.
Mapeando campo que armazenará sugestões para documento
PUT /meu-indice/movies/_mapping
{
“properties” : {
“suggest” : {
“type” : “completion”,
“payload” : true
}
}
}
Confidencial – Copyright © 2016 - MundiPagg
Autocomplete
Inserindo documento com sugestões
POST /meu-indice/movies/123
{
"name" : "Star Wars V: The Empire Strikes Back",
"details" : "The best movie of world",
"suggest" : {
"input": [ "Dart","Vader","Star","Wars","Luke","Skywalker","Empires","Strikes","Back"],
"output": "Star Wars - The Empire Strikes Back",
"payload" : { "someId" : 123 },
"weight" : 3
}
}
Confidencial – Copyright © 2016 - MundiPagg
Autocomplete
Buscando sugestões
GET /meu-indice/_suggest
{
"movies-suggest" : {
"text" : "Empi",
"completion" : {
"field" : "suggest"
}
}
}
Confidencial – Copyright © 2016 - MundiPagg
Highlighting
Highlighting basicamente é uma técnica usada para marcar as palavras encontradas.
GET /meu-indice/meu-tipo/_search
{
"query": { … },
"highlight" : {
"fields" : {
"meu-campo" : {
"pre_tags" : ["<b>"],
"post_tags" : ["</b>"]
}
}
}
}
Confidencial – Copyright © 2016 - MundiPagg
Agregações
GET /meu-indice/meu-tipo/_search
{
"size" : 0,
"query": { … },
"aggs" : {
"perStatus": {
"terms": { "field": "status" },
"aggs": {
"total" : {
"sum" : { "field" : "amount" }
}
}
}
}
}
Confidencial – Copyright © 2015 - MundiPagg
Execução da query
• É feita em duas fases:
1. Query
2. Fetch
Backups
Confidencial – Copyright © 2015 - MundiPagg
Backups
• Cria repositório: PUT /_snapshot/meu_repositorio
• Cria snapshot: POST /_snapshot/meu_repositorio/meu_snapshot
• List snapshots: GET /_snapshot/meu_repositorio/_all
• Restaura snapshot: POST /_snapshot/meu_repositorio/meu_snapshot/_restore
Logstash
Kibana
Watcher
Confidencial – Copyright © 2015 - MundiPagg
Logstash
• Collect, Enrich, and Transport
Confidencial – Copyright © 2015 - MundiPagg
Kibana
• Explore, Visualize, and Share
Confidencial – Copyright © 2015 - MundiPagg
Watcher
• Alerts
É nóis!
www.mundipagg.com
Av. Brigadeiro Faria Lima, 1811, 12º andar
Itaim Bibi – São Paulo, CEP: 01452-000
+55 11 3078-4228
Rua da Quitanda, 199, 10 andar
Centro – Rio de Janeiro, CEP: 20091-005
+55 21 3733-9914
Email: contato@mundipagg.com
Esta apresentação é para uso exclusivo do cliente. Nenhuma das partes desta apresentação pode ser veiculada, transcrita ou reproduzida sob qualquer forma ou por
quaisquer meios para distribuição fora da organização do cliente sem prévio consentimento por escrito da MundiPagg.
.

Más contenido relacionado

Similar a DevCommerce Conference 2016 - Workshop: Desenvolvimento Integrado, Desacoplado e Automatizado

MVP Conf 2018 - Pesquisa e Indexação de Documento com Azure Search
MVP Conf 2018 - Pesquisa e Indexação de Documento com Azure SearchMVP Conf 2018 - Pesquisa e Indexação de Documento com Azure Search
MVP Conf 2018 - Pesquisa e Indexação de Documento com Azure SearchRafael Cruz, MCT, MBA
 
Sistemas de recomendações e neo4J na cloud computing
Sistemas de recomendações e neo4J na cloud computingSistemas de recomendações e neo4J na cloud computing
Sistemas de recomendações e neo4J na cloud computingPriscila Mayumi
 
Pesquisa do Sapo
Pesquisa do SapoPesquisa do Sapo
Pesquisa do Sapocodebits
 
Workshop ExtJS4
Workshop ExtJS4Workshop ExtJS4
Workshop ExtJS4javamanrj
 
PHP Conference 2014: Uma string em dez milhões de documentos em menos de um s...
PHP Conference 2014: Uma string em dez milhões de documentos em menos de um s...PHP Conference 2014: Uma string em dez milhões de documentos em menos de um s...
PHP Conference 2014: Uma string em dez milhões de documentos em menos de um s...Aryel Tupinambá
 
Palestra "Teste de Invasão com o Nmap Scripting Engine"" FISL 13
Palestra "Teste de Invasão com o Nmap Scripting Engine"" FISL 13 Palestra "Teste de Invasão com o Nmap Scripting Engine"" FISL 13
Palestra "Teste de Invasão com o Nmap Scripting Engine"" FISL 13 Clavis Segurança da Informação
 
Palestra Tony Rodrigues - OctaneLabs WarpSpeed Project – Computação Forense e...
Palestra Tony Rodrigues - OctaneLabs WarpSpeed Project – Computação Forense e...Palestra Tony Rodrigues - OctaneLabs WarpSpeed Project – Computação Forense e...
Palestra Tony Rodrigues - OctaneLabs WarpSpeed Project – Computação Forense e...BHack Conference
 
Path to the Future #1 - Tendências de Big Data
Path to the Future #1 - Tendências de Big DataPath to the Future #1 - Tendências de Big Data
Path to the Future #1 - Tendências de Big DataAmazon Web Services LATAM
 
Como modelar, integrar e desenvolver aplicações com múltiplos bancos de dados...
Como modelar, integrar e desenvolver aplicações com múltiplos bancos de dados...Como modelar, integrar e desenvolver aplicações com múltiplos bancos de dados...
Como modelar, integrar e desenvolver aplicações com múltiplos bancos de dados...Luiz Henrique Zambom Santana
 
“Web Spiders” – Automação para Web Hacking
“Web Spiders” – Automação para Web Hacking“Web Spiders” – Automação para Web Hacking
“Web Spiders” – Automação para Web HackingConviso Application Security
 
Elasticsearch de dentro para fora
Elasticsearch de dentro para foraElasticsearch de dentro para fora
Elasticsearch de dentro para foraWaldemar Neto
 

Similar a DevCommerce Conference 2016 - Workshop: Desenvolvimento Integrado, Desacoplado e Automatizado (20)

MVP Conf 2018 - Pesquisa e Indexação de Documento com Azure Search
MVP Conf 2018 - Pesquisa e Indexação de Documento com Azure SearchMVP Conf 2018 - Pesquisa e Indexação de Documento com Azure Search
MVP Conf 2018 - Pesquisa e Indexação de Documento com Azure Search
 
Sistemas de recomendações e neo4J na cloud computing
Sistemas de recomendações e neo4J na cloud computingSistemas de recomendações e neo4J na cloud computing
Sistemas de recomendações e neo4J na cloud computing
 
Primeiros Passos Com Elasticsearch
Primeiros Passos Com ElasticsearchPrimeiros Passos Com Elasticsearch
Primeiros Passos Com Elasticsearch
 
Pesquisa do Sapo
Pesquisa do SapoPesquisa do Sapo
Pesquisa do Sapo
 
Automatizando Nmap com NSE
Automatizando Nmap com NSEAutomatizando Nmap com NSE
Automatizando Nmap com NSE
 
Tendências de Big Data
Tendências de Big DataTendências de Big Data
Tendências de Big Data
 
Workshop ExtJS4
Workshop ExtJS4Workshop ExtJS4
Workshop ExtJS4
 
Azure Search
Azure SearchAzure Search
Azure Search
 
Treinamento Elasticsearch - Parte 1
Treinamento Elasticsearch - Parte 1Treinamento Elasticsearch - Parte 1
Treinamento Elasticsearch - Parte 1
 
PHP Conference 2014: Uma string em dez milhões de documentos em menos de um s...
PHP Conference 2014: Uma string em dez milhões de documentos em menos de um s...PHP Conference 2014: Uma string em dez milhões de documentos em menos de um s...
PHP Conference 2014: Uma string em dez milhões de documentos em menos de um s...
 
Tendências de Big Data
Tendências de Big DataTendências de Big Data
Tendências de Big Data
 
Tendências de Big Data
Tendências de Big DataTendências de Big Data
Tendências de Big Data
 
Palestra "Teste de Invasão com o Nmap Scripting Engine"" FISL 13
Palestra "Teste de Invasão com o Nmap Scripting Engine"" FISL 13 Palestra "Teste de Invasão com o Nmap Scripting Engine"" FISL 13
Palestra "Teste de Invasão com o Nmap Scripting Engine"" FISL 13
 
Palestra Tony Rodrigues - OctaneLabs WarpSpeed Project – Computação Forense e...
Palestra Tony Rodrigues - OctaneLabs WarpSpeed Project – Computação Forense e...Palestra Tony Rodrigues - OctaneLabs WarpSpeed Project – Computação Forense e...
Palestra Tony Rodrigues - OctaneLabs WarpSpeed Project – Computação Forense e...
 
Path to the Future #1 - Tendências de Big Data
Path to the Future #1 - Tendências de Big DataPath to the Future #1 - Tendências de Big Data
Path to the Future #1 - Tendências de Big Data
 
Como modelar, integrar e desenvolver aplicações com múltiplos bancos de dados...
Como modelar, integrar e desenvolver aplicações com múltiplos bancos de dados...Como modelar, integrar e desenvolver aplicações com múltiplos bancos de dados...
Como modelar, integrar e desenvolver aplicações com múltiplos bancos de dados...
 
Api todo list
Api todo listApi todo list
Api todo list
 
Sistemas abertos aplicados à gestão da informação científica: o desenvolvimen...
Sistemas abertos aplicados à gestão da informação científica: o desenvolvimen...Sistemas abertos aplicados à gestão da informação científica: o desenvolvimen...
Sistemas abertos aplicados à gestão da informação científica: o desenvolvimen...
 
“Web Spiders” – Automação para Web Hacking
“Web Spiders” – Automação para Web Hacking“Web Spiders” – Automação para Web Hacking
“Web Spiders” – Automação para Web Hacking
 
Elasticsearch de dentro para fora
Elasticsearch de dentro para foraElasticsearch de dentro para fora
Elasticsearch de dentro para fora
 

Más de iMasters

O que você precisa saber para modelar bancos de dados NoSQL - Dani Monteiro
O que você precisa saber para modelar bancos de dados NoSQL - Dani MonteiroO que você precisa saber para modelar bancos de dados NoSQL - Dani Monteiro
O que você precisa saber para modelar bancos de dados NoSQL - Dani MonteiroiMasters
 
Postgres: wanted, beloved or dreaded? - Fabio Telles
Postgres: wanted, beloved or dreaded? - Fabio TellesPostgres: wanted, beloved or dreaded? - Fabio Telles
Postgres: wanted, beloved or dreaded? - Fabio TellesiMasters
 
Por que minha query esta lenta? - Suellen Moraes
Por que minha query esta lenta? - Suellen MoraesPor que minha query esta lenta? - Suellen Moraes
Por que minha query esta lenta? - Suellen MoraesiMasters
 
Relato das trincheiras: o dia a dia de uma consultoria de banco de dados - Ig...
Relato das trincheiras: o dia a dia de uma consultoria de banco de dados - Ig...Relato das trincheiras: o dia a dia de uma consultoria de banco de dados - Ig...
Relato das trincheiras: o dia a dia de uma consultoria de banco de dados - Ig...iMasters
 
ORMs heróis ou vilões dentro da arquitetura de dados? - Otávio gonçalves
ORMs heróis ou vilões dentro da arquitetura de dados? - Otávio gonçalvesORMs heróis ou vilões dentro da arquitetura de dados? - Otávio gonçalves
ORMs heróis ou vilões dentro da arquitetura de dados? - Otávio gonçalvesiMasters
 
SQL e NoSQL trabalhando juntos: uma comparação para obter o melhor de ambos -...
SQL e NoSQL trabalhando juntos: uma comparação para obter o melhor de ambos -...SQL e NoSQL trabalhando juntos: uma comparação para obter o melhor de ambos -...
SQL e NoSQL trabalhando juntos: uma comparação para obter o melhor de ambos -...iMasters
 
Arquitetando seus dados na prática para a LGPD - Alessandra Martins
Arquitetando seus dados na prática para a LGPD - Alessandra MartinsArquitetando seus dados na prática para a LGPD - Alessandra Martins
Arquitetando seus dados na prática para a LGPD - Alessandra MartinsiMasters
 
O papel do DBA no mundo de ciência de dados e machine learning - Mauro Pichil...
O papel do DBA no mundo de ciência de dados e machine learning - Mauro Pichil...O papel do DBA no mundo de ciência de dados e machine learning - Mauro Pichil...
O papel do DBA no mundo de ciência de dados e machine learning - Mauro Pichil...iMasters
 
Desenvolvimento Mobile Híbrido, Nativo ou Web: Quando usá-los - Juliana Chahoud
Desenvolvimento Mobile Híbrido, Nativo ou Web: Quando usá-los - Juliana ChahoudDesenvolvimento Mobile Híbrido, Nativo ou Web: Quando usá-los - Juliana Chahoud
Desenvolvimento Mobile Híbrido, Nativo ou Web: Quando usá-los - Juliana ChahoudiMasters
 
Use MDD e faça as máquinas trabalharem para você - Andreza Leite
 Use MDD e faça as máquinas trabalharem para você - Andreza Leite Use MDD e faça as máquinas trabalharem para você - Andreza Leite
Use MDD e faça as máquinas trabalharem para você - Andreza LeiteiMasters
 
Entendendo os porquês do seu servidor - Talita Bernardes
Entendendo os porquês do seu servidor - Talita BernardesEntendendo os porquês do seu servidor - Talita Bernardes
Entendendo os porquês do seu servidor - Talita BernardesiMasters
 
Backend performático além do "coloca mais máquina lá" - Diana Arnos
Backend performático além do "coloca mais máquina lá" - Diana ArnosBackend performático além do "coloca mais máquina lá" - Diana Arnos
Backend performático além do "coloca mais máquina lá" - Diana ArnosiMasters
 
Dicas para uma maior performance em APIs REST - Renato Groffe
Dicas para uma maior performance em APIs REST - Renato GroffeDicas para uma maior performance em APIs REST - Renato Groffe
Dicas para uma maior performance em APIs REST - Renato GroffeiMasters
 
7 dicas de desempenho que equivalem por 21 - Danielle Monteiro
7 dicas de desempenho que equivalem por 21 - Danielle Monteiro7 dicas de desempenho que equivalem por 21 - Danielle Monteiro
7 dicas de desempenho que equivalem por 21 - Danielle MonteiroiMasters
 
Quem se importa com acessibilidade Web? - Mauricio Maujor
Quem se importa com acessibilidade Web? - Mauricio MaujorQuem se importa com acessibilidade Web? - Mauricio Maujor
Quem se importa com acessibilidade Web? - Mauricio MaujoriMasters
 
Service Mesh com Istio e Kubernetes - Wellington Figueira da Silva
Service Mesh com Istio e Kubernetes - Wellington Figueira da SilvaService Mesh com Istio e Kubernetes - Wellington Figueira da Silva
Service Mesh com Istio e Kubernetes - Wellington Figueira da SilvaiMasters
 
Erros: Como eles vivem, se alimentam e se reproduzem? - Augusto Pascutti
Erros: Como eles vivem, se alimentam e se reproduzem? - Augusto PascuttiErros: Como eles vivem, se alimentam e se reproduzem? - Augusto Pascutti
Erros: Como eles vivem, se alimentam e se reproduzem? - Augusto PascuttiiMasters
 
Elasticidade e engenharia de banco de dados para alta performance - Rubens G...
Elasticidade e engenharia de banco de dados para alta performance  - Rubens G...Elasticidade e engenharia de banco de dados para alta performance  - Rubens G...
Elasticidade e engenharia de banco de dados para alta performance - Rubens G...iMasters
 
Construindo aplicações mais confiantes - Carolina Karklis
Construindo aplicações mais confiantes - Carolina KarklisConstruindo aplicações mais confiantes - Carolina Karklis
Construindo aplicações mais confiantes - Carolina KarklisiMasters
 
Monitoramento de Aplicações - Felipe Regalgo
Monitoramento de Aplicações - Felipe RegalgoMonitoramento de Aplicações - Felipe Regalgo
Monitoramento de Aplicações - Felipe RegalgoiMasters
 

Más de iMasters (20)

O que você precisa saber para modelar bancos de dados NoSQL - Dani Monteiro
O que você precisa saber para modelar bancos de dados NoSQL - Dani MonteiroO que você precisa saber para modelar bancos de dados NoSQL - Dani Monteiro
O que você precisa saber para modelar bancos de dados NoSQL - Dani Monteiro
 
Postgres: wanted, beloved or dreaded? - Fabio Telles
Postgres: wanted, beloved or dreaded? - Fabio TellesPostgres: wanted, beloved or dreaded? - Fabio Telles
Postgres: wanted, beloved or dreaded? - Fabio Telles
 
Por que minha query esta lenta? - Suellen Moraes
Por que minha query esta lenta? - Suellen MoraesPor que minha query esta lenta? - Suellen Moraes
Por que minha query esta lenta? - Suellen Moraes
 
Relato das trincheiras: o dia a dia de uma consultoria de banco de dados - Ig...
Relato das trincheiras: o dia a dia de uma consultoria de banco de dados - Ig...Relato das trincheiras: o dia a dia de uma consultoria de banco de dados - Ig...
Relato das trincheiras: o dia a dia de uma consultoria de banco de dados - Ig...
 
ORMs heróis ou vilões dentro da arquitetura de dados? - Otávio gonçalves
ORMs heróis ou vilões dentro da arquitetura de dados? - Otávio gonçalvesORMs heróis ou vilões dentro da arquitetura de dados? - Otávio gonçalves
ORMs heróis ou vilões dentro da arquitetura de dados? - Otávio gonçalves
 
SQL e NoSQL trabalhando juntos: uma comparação para obter o melhor de ambos -...
SQL e NoSQL trabalhando juntos: uma comparação para obter o melhor de ambos -...SQL e NoSQL trabalhando juntos: uma comparação para obter o melhor de ambos -...
SQL e NoSQL trabalhando juntos: uma comparação para obter o melhor de ambos -...
 
Arquitetando seus dados na prática para a LGPD - Alessandra Martins
Arquitetando seus dados na prática para a LGPD - Alessandra MartinsArquitetando seus dados na prática para a LGPD - Alessandra Martins
Arquitetando seus dados na prática para a LGPD - Alessandra Martins
 
O papel do DBA no mundo de ciência de dados e machine learning - Mauro Pichil...
O papel do DBA no mundo de ciência de dados e machine learning - Mauro Pichil...O papel do DBA no mundo de ciência de dados e machine learning - Mauro Pichil...
O papel do DBA no mundo de ciência de dados e machine learning - Mauro Pichil...
 
Desenvolvimento Mobile Híbrido, Nativo ou Web: Quando usá-los - Juliana Chahoud
Desenvolvimento Mobile Híbrido, Nativo ou Web: Quando usá-los - Juliana ChahoudDesenvolvimento Mobile Híbrido, Nativo ou Web: Quando usá-los - Juliana Chahoud
Desenvolvimento Mobile Híbrido, Nativo ou Web: Quando usá-los - Juliana Chahoud
 
Use MDD e faça as máquinas trabalharem para você - Andreza Leite
 Use MDD e faça as máquinas trabalharem para você - Andreza Leite Use MDD e faça as máquinas trabalharem para você - Andreza Leite
Use MDD e faça as máquinas trabalharem para você - Andreza Leite
 
Entendendo os porquês do seu servidor - Talita Bernardes
Entendendo os porquês do seu servidor - Talita BernardesEntendendo os porquês do seu servidor - Talita Bernardes
Entendendo os porquês do seu servidor - Talita Bernardes
 
Backend performático além do "coloca mais máquina lá" - Diana Arnos
Backend performático além do "coloca mais máquina lá" - Diana ArnosBackend performático além do "coloca mais máquina lá" - Diana Arnos
Backend performático além do "coloca mais máquina lá" - Diana Arnos
 
Dicas para uma maior performance em APIs REST - Renato Groffe
Dicas para uma maior performance em APIs REST - Renato GroffeDicas para uma maior performance em APIs REST - Renato Groffe
Dicas para uma maior performance em APIs REST - Renato Groffe
 
7 dicas de desempenho que equivalem por 21 - Danielle Monteiro
7 dicas de desempenho que equivalem por 21 - Danielle Monteiro7 dicas de desempenho que equivalem por 21 - Danielle Monteiro
7 dicas de desempenho que equivalem por 21 - Danielle Monteiro
 
Quem se importa com acessibilidade Web? - Mauricio Maujor
Quem se importa com acessibilidade Web? - Mauricio MaujorQuem se importa com acessibilidade Web? - Mauricio Maujor
Quem se importa com acessibilidade Web? - Mauricio Maujor
 
Service Mesh com Istio e Kubernetes - Wellington Figueira da Silva
Service Mesh com Istio e Kubernetes - Wellington Figueira da SilvaService Mesh com Istio e Kubernetes - Wellington Figueira da Silva
Service Mesh com Istio e Kubernetes - Wellington Figueira da Silva
 
Erros: Como eles vivem, se alimentam e se reproduzem? - Augusto Pascutti
Erros: Como eles vivem, se alimentam e se reproduzem? - Augusto PascuttiErros: Como eles vivem, se alimentam e se reproduzem? - Augusto Pascutti
Erros: Como eles vivem, se alimentam e se reproduzem? - Augusto Pascutti
 
Elasticidade e engenharia de banco de dados para alta performance - Rubens G...
Elasticidade e engenharia de banco de dados para alta performance  - Rubens G...Elasticidade e engenharia de banco de dados para alta performance  - Rubens G...
Elasticidade e engenharia de banco de dados para alta performance - Rubens G...
 
Construindo aplicações mais confiantes - Carolina Karklis
Construindo aplicações mais confiantes - Carolina KarklisConstruindo aplicações mais confiantes - Carolina Karklis
Construindo aplicações mais confiantes - Carolina Karklis
 
Monitoramento de Aplicações - Felipe Regalgo
Monitoramento de Aplicações - Felipe RegalgoMonitoramento de Aplicações - Felipe Regalgo
Monitoramento de Aplicações - Felipe Regalgo
 

Último

PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...azulassessoria9
 
Urso Castanho, Urso Castanho, o que vês aqui?
Urso Castanho, Urso Castanho, o que vês aqui?Urso Castanho, Urso Castanho, o que vês aqui?
Urso Castanho, Urso Castanho, o que vês aqui?AnabelaGuerreiro7
 
Dicionário de Genealogia, autor Gilber Rubim Rangel
Dicionário de Genealogia, autor Gilber Rubim RangelDicionário de Genealogia, autor Gilber Rubim Rangel
Dicionário de Genealogia, autor Gilber Rubim RangelGilber Rubim Rangel
 
Araribá slides 9ano.pdf para os alunos do medio
Araribá slides 9ano.pdf para os alunos do medioAraribá slides 9ano.pdf para os alunos do medio
Araribá slides 9ano.pdf para os alunos do medioDomingasMariaRomao
 
PRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdf
PRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdfPRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdf
PRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdfprofesfrancleite
 
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdfENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdfLeloIurk1
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...azulassessoria9
 
apostila projeto de vida 2 ano ensino médio
apostila projeto de vida 2 ano ensino médioapostila projeto de vida 2 ano ensino médio
apostila projeto de vida 2 ano ensino médiorosenilrucks
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...azulassessoria9
 
Revolução russa e mexicana. Slides explicativos e atividades
Revolução russa e mexicana. Slides explicativos e atividadesRevolução russa e mexicana. Slides explicativos e atividades
Revolução russa e mexicana. Slides explicativos e atividadesFabianeMartins35
 
Construção (C)erta - Nós Propomos! Sertã
Construção (C)erta - Nós Propomos! SertãConstrução (C)erta - Nós Propomos! Sertã
Construção (C)erta - Nós Propomos! SertãIlda Bicacro
 
About Vila Galé- Cadeia Empresarial de Hotéis
About Vila Galé- Cadeia Empresarial de HotéisAbout Vila Galé- Cadeia Empresarial de Hotéis
About Vila Galé- Cadeia Empresarial de Hotéisines09cachapa
 
AULA DE CARIOLOGIA TSB introdução tudo sobre
AULA DE CARIOLOGIA TSB introdução tudo sobreAULA DE CARIOLOGIA TSB introdução tudo sobre
AULA DE CARIOLOGIA TSB introdução tudo sobremaryalouhannedelimao
 
Nós Propomos! " Pinhais limpos, mundo saudável"
Nós Propomos! " Pinhais limpos, mundo saudável"Nós Propomos! " Pinhais limpos, mundo saudável"
Nós Propomos! " Pinhais limpos, mundo saudável"Ilda Bicacro
 
COMPETÊNCIA 4 NO ENEM: O TEXTO E SUAS AMARRACÕES
COMPETÊNCIA 4 NO ENEM: O TEXTO E SUAS AMARRACÕESCOMPETÊNCIA 4 NO ENEM: O TEXTO E SUAS AMARRACÕES
COMPETÊNCIA 4 NO ENEM: O TEXTO E SUAS AMARRACÕESEduardaReis50
 
3-Livro-Festa-no-céu-Angela-Lago.pdf-·-versão-1.pdf
3-Livro-Festa-no-céu-Angela-Lago.pdf-·-versão-1.pdf3-Livro-Festa-no-céu-Angela-Lago.pdf-·-versão-1.pdf
3-Livro-Festa-no-céu-Angela-Lago.pdf-·-versão-1.pdfBlendaLima1
 
2° ANO - ENSINO FUNDAMENTAL ENSINO RELIGIOSO
2° ANO - ENSINO FUNDAMENTAL ENSINO RELIGIOSO2° ANO - ENSINO FUNDAMENTAL ENSINO RELIGIOSO
2° ANO - ENSINO FUNDAMENTAL ENSINO RELIGIOSOLeloIurk1
 
Introdução a Caminhada do Interior......
Introdução a Caminhada do Interior......Introdução a Caminhada do Interior......
Introdução a Caminhada do Interior......suporte24hcamin
 
ATIVIDADE - CHARGE.pptxDFGHJKLÇ~ÇLJHUFTDRSEDFGJHKLÇ
ATIVIDADE - CHARGE.pptxDFGHJKLÇ~ÇLJHUFTDRSEDFGJHKLÇATIVIDADE - CHARGE.pptxDFGHJKLÇ~ÇLJHUFTDRSEDFGJHKLÇ
ATIVIDADE - CHARGE.pptxDFGHJKLÇ~ÇLJHUFTDRSEDFGJHKLÇJaineCarolaineLima
 
"É melhor praticar para a nota" - Como avaliar comportamentos em contextos de...
"É melhor praticar para a nota" - Como avaliar comportamentos em contextos de..."É melhor praticar para a nota" - Como avaliar comportamentos em contextos de...
"É melhor praticar para a nota" - Como avaliar comportamentos em contextos de...Rosalina Simão Nunes
 

Último (20)

PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
 
Urso Castanho, Urso Castanho, o que vês aqui?
Urso Castanho, Urso Castanho, o que vês aqui?Urso Castanho, Urso Castanho, o que vês aqui?
Urso Castanho, Urso Castanho, o que vês aqui?
 
Dicionário de Genealogia, autor Gilber Rubim Rangel
Dicionário de Genealogia, autor Gilber Rubim RangelDicionário de Genealogia, autor Gilber Rubim Rangel
Dicionário de Genealogia, autor Gilber Rubim Rangel
 
Araribá slides 9ano.pdf para os alunos do medio
Araribá slides 9ano.pdf para os alunos do medioAraribá slides 9ano.pdf para os alunos do medio
Araribá slides 9ano.pdf para os alunos do medio
 
PRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdf
PRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdfPRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdf
PRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdf
 
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdfENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
 
apostila projeto de vida 2 ano ensino médio
apostila projeto de vida 2 ano ensino médioapostila projeto de vida 2 ano ensino médio
apostila projeto de vida 2 ano ensino médio
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
 
Revolução russa e mexicana. Slides explicativos e atividades
Revolução russa e mexicana. Slides explicativos e atividadesRevolução russa e mexicana. Slides explicativos e atividades
Revolução russa e mexicana. Slides explicativos e atividades
 
Construção (C)erta - Nós Propomos! Sertã
Construção (C)erta - Nós Propomos! SertãConstrução (C)erta - Nós Propomos! Sertã
Construção (C)erta - Nós Propomos! Sertã
 
About Vila Galé- Cadeia Empresarial de Hotéis
About Vila Galé- Cadeia Empresarial de HotéisAbout Vila Galé- Cadeia Empresarial de Hotéis
About Vila Galé- Cadeia Empresarial de Hotéis
 
AULA DE CARIOLOGIA TSB introdução tudo sobre
AULA DE CARIOLOGIA TSB introdução tudo sobreAULA DE CARIOLOGIA TSB introdução tudo sobre
AULA DE CARIOLOGIA TSB introdução tudo sobre
 
Nós Propomos! " Pinhais limpos, mundo saudável"
Nós Propomos! " Pinhais limpos, mundo saudável"Nós Propomos! " Pinhais limpos, mundo saudável"
Nós Propomos! " Pinhais limpos, mundo saudável"
 
COMPETÊNCIA 4 NO ENEM: O TEXTO E SUAS AMARRACÕES
COMPETÊNCIA 4 NO ENEM: O TEXTO E SUAS AMARRACÕESCOMPETÊNCIA 4 NO ENEM: O TEXTO E SUAS AMARRACÕES
COMPETÊNCIA 4 NO ENEM: O TEXTO E SUAS AMARRACÕES
 
3-Livro-Festa-no-céu-Angela-Lago.pdf-·-versão-1.pdf
3-Livro-Festa-no-céu-Angela-Lago.pdf-·-versão-1.pdf3-Livro-Festa-no-céu-Angela-Lago.pdf-·-versão-1.pdf
3-Livro-Festa-no-céu-Angela-Lago.pdf-·-versão-1.pdf
 
2° ANO - ENSINO FUNDAMENTAL ENSINO RELIGIOSO
2° ANO - ENSINO FUNDAMENTAL ENSINO RELIGIOSO2° ANO - ENSINO FUNDAMENTAL ENSINO RELIGIOSO
2° ANO - ENSINO FUNDAMENTAL ENSINO RELIGIOSO
 
Introdução a Caminhada do Interior......
Introdução a Caminhada do Interior......Introdução a Caminhada do Interior......
Introdução a Caminhada do Interior......
 
ATIVIDADE - CHARGE.pptxDFGHJKLÇ~ÇLJHUFTDRSEDFGJHKLÇ
ATIVIDADE - CHARGE.pptxDFGHJKLÇ~ÇLJHUFTDRSEDFGJHKLÇATIVIDADE - CHARGE.pptxDFGHJKLÇ~ÇLJHUFTDRSEDFGJHKLÇ
ATIVIDADE - CHARGE.pptxDFGHJKLÇ~ÇLJHUFTDRSEDFGJHKLÇ
 
"É melhor praticar para a nota" - Como avaliar comportamentos em contextos de...
"É melhor praticar para a nota" - Como avaliar comportamentos em contextos de..."É melhor praticar para a nota" - Como avaliar comportamentos em contextos de...
"É melhor praticar para a nota" - Como avaliar comportamentos em contextos de...
 

DevCommerce Conference 2016 - Workshop: Desenvolvimento Integrado, Desacoplado e Automatizado

  • 1.
  • 3. Confidencial – Copyright © 2015 - MundiPagg O que é? • Distribuido, alta disponibilidade, armazenamento e recuperação de dados • Motor de busca, motor de agregação, analytics • Sugestões, highlighting, geo • Armazenamento de documentos • Distribuído horizontalmente • Open source • Apache License • Vários plugins
  • 4. Confidencial – Copyright © 2015 - MundiPagg Pra que serve? • Recuperação rápida de documentos • Análise de logs • Busca full text • Analytics e agregações • Visualização de dados em dashboard com Kibana • Alerta e classificação com o Percolator • Motor de sugestões
  • 5. Confidencial – Copyright © 2015 - MundiPagg Quem usa?
  • 7. Confidencial – Copyright © 2015 - MundiPagg Scale • Vertical • “Scale up” • Mais RAM • Disco mais rápido • Mais banda • Limitada • Horizontal • “Scale out” • Mais máquinas • Aumenta os recursos de acordo com a demanda
  • 8. Confidencial – Copyright © 2015 - MundiPagg Documents • Documentos são objetos JSON • Tipos de dados: • String • Númerico • Geopoint, Geoshape: "41.12,-71.34" • Bool • Date: “2016-05-11 23:59:59.999” • IPv4 address: “192.168.0.1” • Array • Objeto
  • 9. Confidencial – Copyright © 2015 - MundiPagg Nodes • Um nó é uma instância do Elasticsearch • VM, container ou máquina física • Pode rodar múltiplos nós em uma mesma máquina • Um nó contém somente os dados que são atribuídos a ele • Qualquer nó é completamente capaz de servir qualquer request • Todo nó conhece a localização de qualquer documento no cluster assim ele pode direcionar a requisição diretamente para o nó que contém o dado
  • 10. Confidencial – Copyright © 2015 - MundiPagg Index • Um índice é um container de dados • Cada nó pode hospedar vários índices
  • 11. Confidencial – Copyright © 2015 - MundiPagg Shard • Um shard é um pedaço único de um índice do Elasticsearch • Índices são particionados em Shards, assim eles podem ser distribuídos em vários nós • Cada shard é um indice do Lucene • Cada índice pode ser “shardiado” • Quando criado você pode especificar a quantidade • Um shard ou é primário ou uma réplica • Primários aceitam escrita • Replicas replicam a escrita
  • 12. Confidencial – Copyright © 2015 - MundiPagg Cluster • Um cluster é um conjunto de nós trabalhando junto • Todos os nós se comunicam • Os nós recebem as buscas e enviam para todos os nós do cluster para responder o request • Os nós recebem as requisições de index e direcionam para o nó que contém o shard onde o dado deve ser indexado
  • 13. Confidencial – Copyright © 2015 - MundiPagg Apache Lucene • Biblioteca de motor de busca full-text de alta performance • “Indiscutivelmente a mais avançada” • Open source • Cross-plataform • Altamente complexa
  • 15. Confidencial – Copyright © 2015 - MundiPagg Instalação • Amazon Web Services • Ubuntu • Java • Elasticsearch • Marvel • Configurações
  • 16. Confidencial – Copyright © 2015 - MundiPagg Java • sudo add-apt-repository ppa:webupd8team/java • sudo apt-get update • sudo apt-get install oracle-java7-installer
  • 17. Confidencial – Copyright © 2015 - MundiPagg Elasticsearch • wget https://download.elastic.co/elasticsearch/elasticsearch/elasticsearch-1.7.1.deb • sudo dpkg -i elasticsearch-1.7.1.deb • cd /usr/share/elasticsearch • sudo bin/plugin -i elasticsearch/marvel/latest
  • 18. Confidencial – Copyright © 2015 - MundiPagg Configurações • node.name: “sharon” • node.name: “node1“ • bootstrap.mlockall: true (previne o swap lockando o espaço de memória) • discovery.zen.ping.multicast.enabled: false • discovery.zen.ping.unicast.hosts: [“192.168.0.1“, “192.168.0.2”] • ES_HEAP_SIZE
  • 20. Confidencial – Copyright © 2015 - MundiPagg Valores exatos x Full text • Valores exatos são exatamente o que soam. Exemplos: userId, email, username. É trivial fazer busca por valores exatos. • Fazer busca Full text é muito mais sutil, não é binária. • Quão relevante é este documento para esta busca? • Uma busca por “BR” deve também retornar documentos que mencionem “Brasil” • Uma busca por “pulo” deve bater com “pulou”, “pulos”, “pular” e até talvez “salto” • “johnny walker” deve encontrar “Johnnie Walker” e “johnnie depp” deve encontrar “Johnny Depp”
  • 21. Confidencial – Copyright © 2015 - MundiPagg Índice invertido • Projetado para permitir uma busca full-text extremamente rápida • Consiste em uma lista única com todas as palavras que aparecem nos documentos e para cada palavra uma lista de documentos que ela aparece
  • 22. Confidencial – Copyright © 2015 - MundiPagg Índice invertido • Exemplo: • The quick brown fox jumped over the lazy dog • Quick brown foxes leap over lazy dogs in summer
  • 23. Confidencial – Copyright © 2015 - MundiPagg Índice invertido Busca por “quick brown”
  • 24. Confidencial – Copyright © 2015 - MundiPagg Índice invertido • Porem tem alguns problemas com esse indice invertido: • “Quick” e “quick” aparecem com duas entradas diferentes • “fox” e “foxes” também • “jumped” e “leap” são sinonimos • Resolve como? Normalizando tanto no indice quanto na query • “Quick” -> “quick” • “foxes” -> “fox” • “jumped”, “leap” -> “jump”
  • 25. Confidencial – Copyright © 2015 - MundiPagg Índice invertido
  • 26. Confidencial – Copyright © 2015 - MundiPagg Análise e Analisadores • Análise é um processo com os seguintes passos: 1. Tokenizar a string em termos únicos para usar no indice invertido 2. Normalizar os termos numa forma padrão para melhorar a “pesquisabilidade” • A análise é feita pelo analisador que nada mais é que a combinação de 3 funções: 1. Filtro de caracteres: remove html ou converte caracteres especiais em palavras 2. Tokenizador: faz o split da string por espaço ou pontuação 3. Filtro de token: altera, remove ou adiciona termos
  • 27. Confidencial – Copyright © 2015 - MundiPagg Análise e Analisadores • Existem alguns analisadores nativos, você pode escolher qual usar ou se preferir pode criar o seu • Quando são utilizados? • Quando um documento é indexado os campos full-text são analisados • Quando é feita uma query full-text a string é analisada • Quando é feita uma query de valor exato a string NÃO é analisada • Como testar?
  • 28. Confidencial – Copyright © 2016 - MundiPagg Mapeamento Processo que define a estrutura de um documento e seus campos, a forma como são armazenados e indexados. • Campos de texto tratados como full-text • Campos de números • Campos de datas e seus formatos • Campos de geolocalização • Regras para campos adicionados automaticamente
  • 29. Confidencial – Copyright © 2015 - MundiPagg Mapeamento • Por default ao indexar um documento o Elasticsearch detecta e define o tipo automaticamente • Para consultar basta enviar um GET para /index_name/_mapping • Quando o tipo é uma string existem dois campos importantes no mapeamento: • “Index” • “analyzed”: O campo é analisado e indexado • “not_analyzed”: O campo não é analisado mas é indexado • “no”: O campo não é analisado nem indexado • “analyzer”: Define o analisador utilizado • É possível alterar o mapeamento para um campo novo • Infelizmente NÃO é possível alterar o mapeamento de um campo que já existe
  • 30. Índices e documentos Criação, buscas e agregações
  • 31. Confidencial – Copyright © 2016 - MundiPagg Analisadores Os analisadores modificam a forma como os índices são criados. Basicamente, pode-se informar para analisar (default), não analisar ou não indexar. Valor: “Thiago da Silva Barradas” Índice não analisável: “Thiago da Silva Barradas” Índice analisável: “thiago” “da” “silva” “barradas”
  • 32. Confidencial – Copyright © 2016 - MundiPagg Mapping POST /meu-indice/meu-tipo/_mapping { "properties": { "meu-campo": { "type": "string", "index": "not_analyzed" } } }
  • 33. Confidencial – Copyright © 2016 - MundiPagg Filter X Query Filter Query Deve ser usado para os tipos string (not analyzed), integer, long, date, etc Deve ser utilizado para os tipos string (analyzed) Usa valor recebido como índice Divide valor recebido em vários índices de acordo com o analisador Não gera relevância (score) Gera relevância (score)
  • 34. Confidencial – Copyright © 2016 - MundiPagg Filters • And Filter • Bool Filter • Exists Filter • Geo Bounding Box Filter • Geo Distance Filter • Geo Distance Range Filter • Geo Polygon Filter • GeoShape Filter • Geohash Cell Filter • Has Child Filter • Has Parent Filter • Ids Filter • Indices Filter • Limit Filter • Match All Filter • Missing Filter • Nested Filter • Not Filter • Or Filter • Prefix Filter • Query Filter • Range Filter • Regexp Filter • Script Filter • Term Filter • Terms Filter • Type Filter
  • 35. Confidencial – Copyright © 2016 - MundiPagg Filters GET /meu-indice/meu-tipo/_search { "filter": { "term": { "meu-campo": "valor" } } }
  • 36. Confidencial – Copyright © 2016 - MundiPagg Querys • Match Query • Multi Match Query • Bool Query • Boosting Query • Common Terms Query • Constant Score Query • Dis Max Query • Filtered Query • Fuzzy Like This Query • Fuzzy Like This Field Query • Function Score Query • Fuzzy Query • GeoShape Query • Has Child Query • Has Parent Query • Ids Query • Indices Query • Match All Query • More Like This Query • Nested Query • Prefix Query • Query String Query • Simple Query String Query • Range Query • Regexp Query • Span First Query • Span Multi Term Query • Span Near Query • Span Not Query • Span Or Query • Span Term Query • Term Query • Terms Query • Top Children Query • Wildcard Query • Minimum Should Match • Multi Term Query Rewrite • Template Query
  • 37. Confidencial – Copyright © 2016 - MundiPagg Querys GET /meu-indice/meu-tipo/_search { "query": { "match": { "meu-campo": "valor" } } }
  • 38. Confidencial – Copyright © 2016 - MundiPagg Filters e Querys GET /meu-indice/meu-tipo/_search { "query": { "filtered": { "query": { … }, "filter": { … } } } } GET /meu-indice/meu-tipo/_search { "query": { ... }, "filter": { ... } }
  • 39. Confidencial – Copyright © 2016 - MundiPagg Ordenação GET /meu-indice/meu-tipo/_search { "sort": [ { "meu-campo" : { "order" : "asc" } }, { "meu-campo2" : { "order" : "desc" } } ] }
  • 40. Confidencial – Copyright © 2016 - MundiPagg Paginação GET /meu-indice/meu-tipo/_search { "from": 0, "size": 10 }
  • 41. Confidencial – Copyright © 2016 - MundiPagg Scroll Para paginação profunda com muitos ou todos documentos • Similar a um cursor num banco relacional • Não usado para consulta em tempo real • Usado para grandes processamentos de dados (resincronização, grandes relatórios • Seus documentos refletem o estado do indice no momento que o scroll foi gerado. Modificações posteriores não serão aplicadas nos documentos do resultado do scroll • Ao solicitar um “lote” do scroll, ele “anda” automaticamente para os próximos registros • Para filtrar registros, se aplicam filters e querys normalmente
  • 42. Confidencial – Copyright © 2016 - MundiPagg Scroll Criando um Scroll GET /meu-indice/meu-tipo/_search?scroll=1m { “query” : { … } } Navegando pelo Scroll GET /_search/scroll?scroll=1m&scroll_id={{scroll_id}}
  • 43. Confidencial – Copyright © 2016 - MundiPagg Unidades y Ano M Mês w Semana d Dia h Hora m Minuto s Segundo ms Milissegundo b Byte kb Kilobyte mb Megabyte gb Gigabyte tb Terabyte mi Milhas yd Jardas ft Pés in Polegadas km Quilômetros m Metros cm Centímetros mm Milímetros nmi Milhas naúticas Tempo Armazenamento Distância
  • 44. Confidencial – Copyright © 2016 - MundiPagg Autocomplete Autocomplete, sugestion, completion, são termos que define a técnica de atribuir possíveis tokens de sugestão em um documento para localiza-lo mais facilmente em buscas. Mapeando campo que armazenará sugestões para documento PUT /meu-indice/movies/_mapping { “properties” : { “suggest” : { “type” : “completion”, “payload” : true } } }
  • 45. Confidencial – Copyright © 2016 - MundiPagg Autocomplete Inserindo documento com sugestões POST /meu-indice/movies/123 { "name" : "Star Wars V: The Empire Strikes Back", "details" : "The best movie of world", "suggest" : { "input": [ "Dart","Vader","Star","Wars","Luke","Skywalker","Empires","Strikes","Back"], "output": "Star Wars - The Empire Strikes Back", "payload" : { "someId" : 123 }, "weight" : 3 } }
  • 46. Confidencial – Copyright © 2016 - MundiPagg Autocomplete Buscando sugestões GET /meu-indice/_suggest { "movies-suggest" : { "text" : "Empi", "completion" : { "field" : "suggest" } } }
  • 47. Confidencial – Copyright © 2016 - MundiPagg Highlighting Highlighting basicamente é uma técnica usada para marcar as palavras encontradas. GET /meu-indice/meu-tipo/_search { "query": { … }, "highlight" : { "fields" : { "meu-campo" : { "pre_tags" : ["<b>"], "post_tags" : ["</b>"] } } } }
  • 48. Confidencial – Copyright © 2016 - MundiPagg Agregações GET /meu-indice/meu-tipo/_search { "size" : 0, "query": { … }, "aggs" : { "perStatus": { "terms": { "field": "status" }, "aggs": { "total" : { "sum" : { "field" : "amount" } } } } } }
  • 49. Confidencial – Copyright © 2015 - MundiPagg Execução da query • É feita em duas fases: 1. Query 2. Fetch
  • 51. Confidencial – Copyright © 2015 - MundiPagg Backups • Cria repositório: PUT /_snapshot/meu_repositorio • Cria snapshot: POST /_snapshot/meu_repositorio/meu_snapshot • List snapshots: GET /_snapshot/meu_repositorio/_all • Restaura snapshot: POST /_snapshot/meu_repositorio/meu_snapshot/_restore
  • 53. Confidencial – Copyright © 2015 - MundiPagg Logstash • Collect, Enrich, and Transport
  • 54. Confidencial – Copyright © 2015 - MundiPagg Kibana • Explore, Visualize, and Share
  • 55. Confidencial – Copyright © 2015 - MundiPagg Watcher • Alerts
  • 57. www.mundipagg.com Av. Brigadeiro Faria Lima, 1811, 12º andar Itaim Bibi – São Paulo, CEP: 01452-000 +55 11 3078-4228 Rua da Quitanda, 199, 10 andar Centro – Rio de Janeiro, CEP: 20091-005 +55 21 3733-9914 Email: contato@mundipagg.com Esta apresentação é para uso exclusivo do cliente. Nenhuma das partes desta apresentação pode ser veiculada, transcrita ou reproduzida sob qualquer forma ou por quaisquer meios para distribuição fora da organização do cliente sem prévio consentimento por escrito da MundiPagg. .

Notas del editor

  1. 28
  2. 31
  3. 32
  4. 33
  5. 34
  6. 35
  7. 36
  8. 37
  9. 38
  10. 39
  11. 40
  12. 41
  13. 42
  14. 43
  15. 44
  16. 45
  17. 46
  18. 47
  19. 48
  20. Lista vazia from + size