SlideShare uma empresa Scribd logo
1 de 30
Globalcode – Open4education
Trilha – NoSQL
Bruna Ramalho
Graduanda em Engenharia de Computação pelo IME
Globalcode – Open4education
Elasticsearch: o desafio como banco
principal e cuidados em produção
Globalcode – Open4education
Quem Sou Eu?
Globalcode – Open4education
Quem sou eu?
● 6º período em Engenharia de
Computação pelo IME
● Desenvolvedora na Stone em
Data Science
● Apaixonada pelo universo
Elasticsearch 💚
Globalcode – Open4education
“Com grandes poderes, vêm
grandes responsabilidades”
Tio Ben, Homem-Aranha
Globalcode – Open4education
Conceitos básicos
Globalcode – Open4education
Conceitos básicos
● Documento = unidade básica de
informação, em JSON
● Tipo = coleção de documentos com
campos em comum
● Índice = coleção de documentos com
características semelhantes
Um índice pode ter vários tipos
● Nó (servidor) = armazena os dados
● Cluster = coleção de nós
Um cluster pode ter vários índices
Contém todos os dados e possibilita
pesquisa por todos os nós
Globalcode – Open4education
Conceitos básicos
● Shards:
Dividir o volume de dados em um
nó, por limitação de espaço em
disco.
Distribuir e paralelizar operações
entre shards
● Replicas:
Fornecer disponibilidade caso um
shard/nó falhe.
Escalar volume de pesquisas.
Globalcode – Open4education
Mas por que é tão
performático???
Globalcode – Open4education
Schema Flexible ("schema free")
Não requer especificação de um
esquema.
●
● Mas… para desenvolver ótimas
pesquisas e análises, precisamos
ajustar seus esquemas.
● User-defined schemas: cuidado com
criação de mappings indesejados.
Globalcode – Open4education
Document Oriented DB:
desnormalização
● Usa mais espaço
● Dificulta atualização de dados
● Aumenta performance de busca
● Excelente para Write-Once-Read-Many-
Workloads (ex. Logstash)
Globalcode – Open4education
No Transactions
● Não há como reverter um documento
indexado
● Ganho de velocidade
Globalcode – Open4education
You Know, For Search!
● Simple search
Menos esforço do que contar e agregar os
matches
Globalcode – Open4education
You Know, For Search!
● Fuzzy search: onerosas em
performance
Aplicação: erros de ortografia
Globalcode – Open4education
You Know, For Search!
● Aggregating
Aplicação: Kibana, Big Data,...
Globalcode – Open4education
Autocompletion e Instant Search
● Autocompletion: prever uma pesquisa
com base no histórico de pesquisas
● Instant search: fazer uma busca
completamente nova para cada tecla
digitada
● Muito sensíveis a latências.
Mais de 100 ms não é mais "instantâneo"
● Focar em pesquisas baratas e índices
que caibam na memória
Globalcode – Open4education
● Sobrecarga de memória
● Pode gerar muita duplicação
(inverted index)
● Snapshot e backups são processos
seriais, com uma sobrecarga por índice
Muitos índices pequenos ou
poucos índices grandes?
Globalcode – Open4education
Mas, contudo, porém,
todavia...
Globalcode – Open4education
Não devo usar como
banco principal quando...
Globalcode – Open4education
Robustez
● Cancelar queries
● Estar sempre operante (ES é baseado
em sempre ter memória abundante)
Globalcode – Open4education
Distribuído
● Fácil de escalar para lidar com enormes
quantidades de dados
● Mas... problemas com consistência,
tolerância de partição e disponibilidade
● Quantidade de shards pré-estabelecida
(você pode apenas realocar shards nos
nós)
Globalcode – Open4education
Latência, segurança e durabilidade
● Sem autenticação ou autorização
● Todo mundo com super direitos
(cuidado com permissão de scripts...)
● Dados precisos em Real-Time
Near Real-Time (NRT): latência até ser
pesquisável
● Recursos de segurança necessários
● Durabilidade
Afinal, perder seus dados nunca é bom.
Globalcode – Open4education
Cuidados em produção
Globalcode – Open4education
Memória
● Manutenção de cache
Estruturas de index (ex. term
dictionaries) em page cache do sistema
operacional
Field cache: usados para faceting,
sorting e scripting
Filter cache: usos futuros bem mais
rápidos
● ES sempre assume que você proveu
memória suficiente
● Consequências:
Falhar com o request
Corromper cluster state
Reduzir todo o cluster
Globalcode – Open4education
● Não colocar de primeira o cluster de
produção nessas situações de intensa
demanda
● Entender o perfil dos requests e
monitorar o consumo dos recursos, na
medida em que dados são adicionados.
● Quanto de memória eu preciso?
Comece com mais memória que
necessário
Examine as métricas (uso de heap
space, cache stats, tamanho dos fields,
etc)
Memória - boas práticas
Globalcode – Open4education
Segurança - boas práticas
● Exposição de dados privados: limitar as
pesquisas a determinados índices e
aplicar filtros às pesquisas.
● Restringir quem pode atualizar o que.
● Cuidado com scripts dinâmicos (ex.
updates parciais). Esses scripts não
rodam em sandbox; logo, eles têm
acesso a basicamente tudo no ES.
● Prevenir requests que podem
sobrecarregar ou quebrar nós ou todo o
cluster.
Globalcode – Open4education
Sistema distribuído - boas práticas
● ES é mega escalável, mas cuidado com a alocação dos nós
● Split Brains: múltiplos sub-clusters autônomos e mais de um acredita que é o master.
n = número de nós elegíveis a master no cluster.
⌊n/2⌋ + 1 = número mínimo de nós master elegíveis que devem estar presentes para que o cluster
escolha um mestre e aceite requests.
Globalcode – Open4education
Considerações sobre o cliente
● Idempotência (ex. indexar um documento com um ID específico)
● Connection pool
● Bulk endpoint (ex. indexar vários documentos de uma vez)
Globalcode – Open4education
● Não espere maçã com gosto de uva
● “Com grandes poderes, vêm grandes responsabilidades”
Em resumo...
Dúvidas?
Sugestões? Elogios?
Globalcode – Open4education
Bruna Ramalho
ramalho.alves.bruna@gmail.com
+55 (21) 97188-7669
brunaalvesramalho
Happy searching!
Obrigada :)

Mais conteúdo relacionado

Mais procurados

Mais procurados (6)

PostgreSql - Um banco de dados Open Source que figura entre os grandes
PostgreSql - Um banco de dados Open Source que figura entre os grandesPostgreSql - Um banco de dados Open Source que figura entre os grandes
PostgreSql - Um banco de dados Open Source que figura entre os grandes
 
Uma implementação de suporte a
Uma implementação de suporte a Uma implementação de suporte a
Uma implementação de suporte a
 
Hadoop
HadoopHadoop
Hadoop
 
#3 Instalação MongoDB
#3   Instalação MongoDB  #3   Instalação MongoDB
#3 Instalação MongoDB
 
Certificado_BigData_David William Rigamonte
Certificado_BigData_David William RigamonteCertificado_BigData_David William Rigamonte
Certificado_BigData_David William Rigamonte
 
Mongo
MongoMongo
Mongo
 

Semelhante a Elasticsearch: o desafio como banco principal e cuidados em produção

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
 
Introdução ao Armazenamento de Dados de Experimentos em Neurociência - Parte 01
Introdução ao Armazenamento de Dados de Experimentos em Neurociência - Parte 01Introdução ao Armazenamento de Dados de Experimentos em Neurociência - Parte 01
Introdução ao Armazenamento de Dados de Experimentos em Neurociência - Parte 01NeuroMat
 
Tdc2015 bigdata-mpias-final-pdf
Tdc2015 bigdata-mpias-final-pdfTdc2015 bigdata-mpias-final-pdf
Tdc2015 bigdata-mpias-final-pdfMinistry of Data
 
TDC2016SP - Trilha Banco de Dados
TDC2016SP - Trilha Banco de DadosTDC2016SP - Trilha Banco de Dados
TDC2016SP - Trilha Banco de Dadostdc-globalcode
 
InfluxDb: como monitorar milhares de dados por segundo em real time
InfluxDb: como monitorar milhares de dados por segundo em real time InfluxDb: como monitorar milhares de dados por segundo em real time
InfluxDb: como monitorar milhares de dados por segundo em real time Umbler
 
Tdc2016 trilha-banco-influx.ppt
Tdc2016 trilha-banco-influx.pptTdc2016 trilha-banco-influx.ppt
Tdc2016 trilha-banco-influx.pptMarcos Artigas
 
Persistência Poliglota, Big Data e NoSQL FISL 15
Persistência Poliglota, Big Data e NoSQL FISL 15Persistência Poliglota, Big Data e NoSQL FISL 15
Persistência Poliglota, Big Data e NoSQL FISL 15Christiano Anderson
 
Como arquiteturas de dados quebram
Como arquiteturas de dados quebramComo arquiteturas de dados quebram
Como arquiteturas de dados quebramGleicon Moraes
 
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
 
TDC2016SP - Trilha Quebrando um monolítico J2EE, uma história de trás das tri...
TDC2016SP - Trilha Quebrando um monolítico J2EE, uma história de trás das tri...TDC2016SP - Trilha Quebrando um monolítico J2EE, uma história de trás das tri...
TDC2016SP - Trilha Quebrando um monolítico J2EE, uma história de trás das tri...tdc-globalcode
 
Como lidar com cargas de trabalho mistas - PostgreSQL
Como lidar com cargas de trabalho mistas - PostgreSQLComo lidar com cargas de trabalho mistas - PostgreSQL
Como lidar com cargas de trabalho mistas - PostgreSQLDiego Santos
 
Modelos NoSQL e a Persistência Poliglota
Modelos NoSQL e a Persistência PoliglotaModelos NoSQL e a Persistência Poliglota
Modelos NoSQL e a Persistência PoliglotaGlaucio Scheibel
 
Como o elasticsearch salvou minhas buscas
Como o elasticsearch salvou minhas buscasComo o elasticsearch salvou minhas buscas
Como o elasticsearch salvou minhas buscasWaldemar Neto
 
Elastic MeetUp Porto Alegre
Elastic MeetUp Porto AlegreElastic MeetUp Porto Alegre
Elastic MeetUp Porto AlegreRafael Gomes
 
A Revolução já começou
A Revolução já começouA Revolução já começou
A Revolução já começouJose Wilker
 
Xen e CoreOS: solução para data mining com NodeJS e ElasticSearch
Xen e CoreOS: solução para data mining com NodeJS e ElasticSearchXen e CoreOS: solução para data mining com NodeJS e ElasticSearch
Xen e CoreOS: solução para data mining com NodeJS e ElasticSearchBernardo Donadio
 

Semelhante a Elasticsearch: o desafio como banco principal e cuidados em produção (20)

Primeiros Passos Com Elasticsearch
Primeiros Passos Com ElasticsearchPrimeiros Passos Com Elasticsearch
Primeiros Passos Com Elasticsearch
 
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...
 
Introdução ao Armazenamento de Dados de Experimentos em Neurociência - Parte 01
Introdução ao Armazenamento de Dados de Experimentos em Neurociência - Parte 01Introdução ao Armazenamento de Dados de Experimentos em Neurociência - Parte 01
Introdução ao Armazenamento de Dados de Experimentos em Neurociência - Parte 01
 
Tdc2015 bigdata-mpias-final-pdf
Tdc2015 bigdata-mpias-final-pdfTdc2015 bigdata-mpias-final-pdf
Tdc2015 bigdata-mpias-final-pdf
 
TDC2016SP - Trilha Banco de Dados
TDC2016SP - Trilha Banco de DadosTDC2016SP - Trilha Banco de Dados
TDC2016SP - Trilha Banco de Dados
 
InfluxDb: como monitorar milhares de dados por segundo em real time
InfluxDb: como monitorar milhares de dados por segundo em real time InfluxDb: como monitorar milhares de dados por segundo em real time
InfluxDb: como monitorar milhares de dados por segundo em real time
 
Tdc2016 trilha-banco-influx.ppt
Tdc2016 trilha-banco-influx.pptTdc2016 trilha-banco-influx.ppt
Tdc2016 trilha-banco-influx.ppt
 
Persistência Poliglota, Big Data e NoSQL FISL 15
Persistência Poliglota, Big Data e NoSQL FISL 15Persistência Poliglota, Big Data e NoSQL FISL 15
Persistência Poliglota, Big Data e NoSQL FISL 15
 
Como arquiteturas de dados quebram
Como arquiteturas de dados quebramComo arquiteturas de dados quebram
Como arquiteturas de dados quebram
 
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...
 
TDC2016SP - Trilha Quebrando um monolítico J2EE, uma história de trás das tri...
TDC2016SP - Trilha Quebrando um monolítico J2EE, uma história de trás das tri...TDC2016SP - Trilha Quebrando um monolítico J2EE, uma história de trás das tri...
TDC2016SP - Trilha Quebrando um monolítico J2EE, uma história de trás das tri...
 
Novas Fronteiras
Novas FronteirasNovas Fronteiras
Novas Fronteiras
 
Como lidar com cargas de trabalho mistas - PostgreSQL
Como lidar com cargas de trabalho mistas - PostgreSQLComo lidar com cargas de trabalho mistas - PostgreSQL
Como lidar com cargas de trabalho mistas - PostgreSQL
 
Modelos NoSQL e a Persistência Poliglota
Modelos NoSQL e a Persistência PoliglotaModelos NoSQL e a Persistência Poliglota
Modelos NoSQL e a Persistência Poliglota
 
Como o elasticsearch salvou minhas buscas
Como o elasticsearch salvou minhas buscasComo o elasticsearch salvou minhas buscas
Como o elasticsearch salvou minhas buscas
 
Mongopesl
MongopeslMongopesl
Mongopesl
 
Material Seminário NoSQL
Material Seminário NoSQLMaterial Seminário NoSQL
Material Seminário NoSQL
 
Elastic MeetUp Porto Alegre
Elastic MeetUp Porto AlegreElastic MeetUp Porto Alegre
Elastic MeetUp Porto Alegre
 
A Revolução já começou
A Revolução já começouA Revolução já começou
A Revolução já começou
 
Xen e CoreOS: solução para data mining com NodeJS e ElasticSearch
Xen e CoreOS: solução para data mining com NodeJS e ElasticSearchXen e CoreOS: solução para data mining com NodeJS e ElasticSearch
Xen e CoreOS: solução para data mining com NodeJS e ElasticSearch
 

Elasticsearch: o desafio como banco principal e cuidados em produção

  • 1. Globalcode – Open4education Trilha – NoSQL Bruna Ramalho Graduanda em Engenharia de Computação pelo IME
  • 2. Globalcode – Open4education Elasticsearch: o desafio como banco principal e cuidados em produção
  • 4. Globalcode – Open4education Quem sou eu? ● 6º período em Engenharia de Computação pelo IME ● Desenvolvedora na Stone em Data Science ● Apaixonada pelo universo Elasticsearch 💚
  • 5. Globalcode – Open4education “Com grandes poderes, vêm grandes responsabilidades” Tio Ben, Homem-Aranha
  • 7. Globalcode – Open4education Conceitos básicos ● Documento = unidade básica de informação, em JSON ● Tipo = coleção de documentos com campos em comum ● Índice = coleção de documentos com características semelhantes Um índice pode ter vários tipos ● Nó (servidor) = armazena os dados ● Cluster = coleção de nós Um cluster pode ter vários índices Contém todos os dados e possibilita pesquisa por todos os nós
  • 8. Globalcode – Open4education Conceitos básicos ● Shards: Dividir o volume de dados em um nó, por limitação de espaço em disco. Distribuir e paralelizar operações entre shards ● Replicas: Fornecer disponibilidade caso um shard/nó falhe. Escalar volume de pesquisas.
  • 9. Globalcode – Open4education Mas por que é tão performático???
  • 10. Globalcode – Open4education Schema Flexible ("schema free") Não requer especificação de um esquema. ● ● Mas… para desenvolver ótimas pesquisas e análises, precisamos ajustar seus esquemas. ● User-defined schemas: cuidado com criação de mappings indesejados.
  • 11. Globalcode – Open4education Document Oriented DB: desnormalização ● Usa mais espaço ● Dificulta atualização de dados ● Aumenta performance de busca ● Excelente para Write-Once-Read-Many- Workloads (ex. Logstash)
  • 12. Globalcode – Open4education No Transactions ● Não há como reverter um documento indexado ● Ganho de velocidade
  • 13. Globalcode – Open4education You Know, For Search! ● Simple search Menos esforço do que contar e agregar os matches
  • 14. Globalcode – Open4education You Know, For Search! ● Fuzzy search: onerosas em performance Aplicação: erros de ortografia
  • 15. Globalcode – Open4education You Know, For Search! ● Aggregating Aplicação: Kibana, Big Data,...
  • 16. Globalcode – Open4education Autocompletion e Instant Search ● Autocompletion: prever uma pesquisa com base no histórico de pesquisas ● Instant search: fazer uma busca completamente nova para cada tecla digitada ● Muito sensíveis a latências. Mais de 100 ms não é mais "instantâneo" ● Focar em pesquisas baratas e índices que caibam na memória
  • 17. Globalcode – Open4education ● Sobrecarga de memória ● Pode gerar muita duplicação (inverted index) ● Snapshot e backups são processos seriais, com uma sobrecarga por índice Muitos índices pequenos ou poucos índices grandes?
  • 18. Globalcode – Open4education Mas, contudo, porém, todavia...
  • 19. Globalcode – Open4education Não devo usar como banco principal quando...
  • 20. Globalcode – Open4education Robustez ● Cancelar queries ● Estar sempre operante (ES é baseado em sempre ter memória abundante)
  • 21. Globalcode – Open4education Distribuído ● Fácil de escalar para lidar com enormes quantidades de dados ● Mas... problemas com consistência, tolerância de partição e disponibilidade ● Quantidade de shards pré-estabelecida (você pode apenas realocar shards nos nós)
  • 22. Globalcode – Open4education Latência, segurança e durabilidade ● Sem autenticação ou autorização ● Todo mundo com super direitos (cuidado com permissão de scripts...) ● Dados precisos em Real-Time Near Real-Time (NRT): latência até ser pesquisável ● Recursos de segurança necessários ● Durabilidade Afinal, perder seus dados nunca é bom.
  • 24. Globalcode – Open4education Memória ● Manutenção de cache Estruturas de index (ex. term dictionaries) em page cache do sistema operacional Field cache: usados para faceting, sorting e scripting Filter cache: usos futuros bem mais rápidos ● ES sempre assume que você proveu memória suficiente ● Consequências: Falhar com o request Corromper cluster state Reduzir todo o cluster
  • 25. Globalcode – Open4education ● Não colocar de primeira o cluster de produção nessas situações de intensa demanda ● Entender o perfil dos requests e monitorar o consumo dos recursos, na medida em que dados são adicionados. ● Quanto de memória eu preciso? Comece com mais memória que necessário Examine as métricas (uso de heap space, cache stats, tamanho dos fields, etc) Memória - boas práticas
  • 26. Globalcode – Open4education Segurança - boas práticas ● Exposição de dados privados: limitar as pesquisas a determinados índices e aplicar filtros às pesquisas. ● Restringir quem pode atualizar o que. ● Cuidado com scripts dinâmicos (ex. updates parciais). Esses scripts não rodam em sandbox; logo, eles têm acesso a basicamente tudo no ES. ● Prevenir requests que podem sobrecarregar ou quebrar nós ou todo o cluster.
  • 27. Globalcode – Open4education Sistema distribuído - boas práticas ● ES é mega escalável, mas cuidado com a alocação dos nós ● Split Brains: múltiplos sub-clusters autônomos e mais de um acredita que é o master. n = número de nós elegíveis a master no cluster. ⌊n/2⌋ + 1 = número mínimo de nós master elegíveis que devem estar presentes para que o cluster escolha um mestre e aceite requests.
  • 28. Globalcode – Open4education Considerações sobre o cliente ● Idempotência (ex. indexar um documento com um ID específico) ● Connection pool ● Bulk endpoint (ex. indexar vários documentos de uma vez)
  • 29. Globalcode – Open4education ● Não espere maçã com gosto de uva ● “Com grandes poderes, vêm grandes responsabilidades” Em resumo... Dúvidas? Sugestões? Elogios?
  • 30. Globalcode – Open4education Bruna Ramalho ramalho.alves.bruna@gmail.com +55 (21) 97188-7669 brunaalvesramalho Happy searching! Obrigada :)