SlideShare uma empresa Scribd logo
1 de 27
Baixar para ler offline
Substituindo navegação multi-etapa por busca
Elastic MeetUp Porto Alegre
22 de Julho de 2016
Missão: Melhorar a forma de obter a informação substituindo
navegação multi-etapa por busca.
Líder no segmento de busca corporativa na América Latina desde 2008
Nossos profissionais são certificados e dedicados exclusivamente à busca
corporativa
Desenvolvemos e integramos soluções para diversas verticais como Governo,
E-commerce, Industrias e Varejo
Parceiro oficial Elastic no Brasil
Sobre a E-Storage
+ 60.000
Membros na
comunidade
+ 2.000
Clientes globais de
subscrição
+ 50 milhões
Downloads
Sobre a Elastic
● Fundada em 2012 em Amsterdam na Holanda
● Escritórios em mais de 14 paises
● Oferece apoio técnico e treinamentos
Sobre mim
● Trabalho com ferramentas para busca corporativa desde 2008
● Utilizo/Conheço Elasticsearch desde a versão 0.9
● Me interesso por todas as possibilidades oferecidas pelo stack como análise
de dados, busca de conteúdo, concorrência e performance
● Realizo treinamentos, provas de conceito e oriento a equipe de
desenvolvedores da E-Storage
Agenda
● A evolução do Elastic Stack
● Atualizando
● Compatibilidade na versão 2.3
A evolução do Elastic Stack
A evolução do Elastic Stack
CRUD, Mapping, Busca, Query DSL, Highlight, Aliases, Cluster / Nós / Estatísticas de índices, Busca
facetada, Scripting, Index Templates, Dynamic Mapping, Parent/Child, Nested Objects, GET em
tempo real, Versionamento, Roteamento, Percolator, Geo-points, Geo-shapes e sugestões
A evolução do Elastic Stack
Aggregations, API CAT, Percolator distribuído, Doc Values, Snapshot/Restore, Tribe node, Circuit
breakers, Templates de pesquisa, Sugestões para autocompletar, Lucene scripting, Top hits
A evolução do Elastic Stack
Problemas com índices - Index Corruption
Problemas com memória - OOM
Problemas com segurança - Security exploits
Aggregations, API CAT, Percolator distribuído, Doc Values, Snapshot/Restore, Tribe node, Circuit
breakers, Templates de pesquisa, Sugestões para autocompletar, Lucene scripting, Top hits
A evolução do Elastic Stack
Resiliência do Cluster, Checksums em todo o lugar, Lock down scripting, Tornar Doc Values mais
rápido
A evolução do Elastic Stack
Tornar rolling restarts mais fáceis: Synced flush, Delayed allocation, Cancellable allocation
A evolução do Elastic Stack
Consertar todas as coisas!
A evolução do Elastic Stack
Reformulação da estrutura de mapping:
Era: Agora:
Extremamente Flexível Confiável
Permitía erros silenciosos Consistente
Podia gerar erros em índices Possui uma fudação mais sólida
Aqui ocorre uma quebra de compatibilidade com as versões anteriores
A evolução do Elastic Stack
E mais…
● Reformulação nos Transaction Logs: Duráveis, Atomic writes e realiza Fsync a cada
requisição
● Usabilidade: Query e filters juntos, cache automatico para consultas, Merge auto-throttling,
Excessões estruturadas, salvaguardas para administradores
● Uso de memória: Doc Values mais rapido usando o cache do sistema de arquivos, field length
norms e relevância utilizando a mesma estrutura de doc values, Parent/Child v2 (joins mais
rápidos) , Geo-points v2 (50% do tamanho índice)
● Segurança: Checagem JarHell, uso do Java Security Manager, uso de previlégios mínimos,
modularização do código, Java serialization não é mais utilizada
● Testes: Código completamente coberto por testes unitários, todos plugins suportados também
são testados, realização de testes de integração reais
A evolução do Elastic Stack
E ganhamos novas funcionalidades…
● Pipeline aggregations: Análises de dados avançadas, pós-processamento do resultado das
agregações
● Geo-centroid aggregations: Melhorias visuais no Kibana para visualizar pontos geospaciais
● Query Profiler: Agora é possível saber qual parte da query não esta tendo o desempenho
esperado
● Reindex API, Update by Query, Task manager:
Pipeline Aggs - Visualização de anomalias
Mais facilidade para reindexar dados existentes e
acompanhar ações em background ou com tempo de
execução maiores.
A evolução do Elastic Stack
Agenda para novas versões
Versões de correção
● Versão corrente menor
● Ultima versão menor da
última versão maior
● Correções de bugs e
pequenas melhorias
Versões menores
● Frequentes
● Menores
● Sem quebras de
compatibilidade, a não
ser que sejam
necessárias
Versões maiores
● Mais frequentes
● Menores
● Atualize de qualquer
versão maior da versão
maior anterior
Atualizando
https://www.elastic.co/guide/en/elasticsearch/reference/current/setup-upgrade.html
Importante
1. Verifique se existe alguma quebra de compatibilidade
2. Teste a atualização em um outro ambiente antes de iniciar a atualização
em produção
3. Faça backup de seus dados. Você não pode retornar para a versão
anterior a não ser que você tenha o backup dos dados para aquela versão
4. Leve seus plugins em consideração para a atualização
Atualizando
https://www.elastic.co/guide/en/elasticsearch/reference/current/setup-upgrade.html
Existem dois tipos de atualização
Rolling Upgrade
● Sem tempo de parada
● Atualizações entre versões 2.x
Full Cluster Restart
● O cluster como um todo deve ser
reiniciado e uma estratégia para a
parada deve ser criada
● Atualizações entre versões
○ 0.90.x > 2.x
○ 1.x > 2x
Atualizando
Rolling Upgrade...
1. Realize backup dos seus dados (snapshot)
2. Desative a alocação de shards
3. Execute um synced flush
4. Pare a atualize um nó
PUT /_cluster/settings
{
"transient": {
"cluster.routing.allocation.enable": "none"
}
}
POST /_flush/synced
Atualizando
...Rolling Upgrade
5. Inicie o nó atualizado
6. Reative a alocação dos shards
7. Espere o nó se recuperar
8. Repita os passos para cada nó no cluster
PUT /_cluster/settings
{
"transient": {
"cluster.routing.allocation.enable": "all"
}
}
GET _cat/nodes
GET _cat/health
Atualizando
Full cluster restart...
1. Realize backup dos seus dados
a. Maior que 1.x
i. Use snapshot
b. .90.x e anteriores
i. Desative o flush dos índices
ii. Desative a realocação
2. Realize o backup dos dados
PUT /_all/_settings
{
"index": {
"translog.disable_flush": "true"
}
}
PUT /_cluster/settings
{
"transient": {
"cluster.routing.allocation.enable": "none"
}
}
Atualizando
...Full cluster restart...
3. Reative a alocação e o flush
PUT /_all/_settings
{
"index": {
"translog.disable_flush": "false"
}
}
PUT /_cluster/settings
{
"transient": {
"cluster.routing.allocation.enable": "all"
}
}
Atualizando
...Full cluster restart...
3. Desative a alocação dos shards
4. Execute um synced flush
5. Desative e atualize todos os nós
6. Inicie o cluster
7. Aguarde o cluster ficar amarelo
PUT /_cluster/settings
{
"persistent": {
"cluster.routing.allocation.enable": "none"
}
}
PUT /_cluster/settings
{
"persistent": {
"cluster.routing.allocation.
disable_allocation": true,
"cluster.routing.allocation.enable": "none"
}
}
1.x
0.90.x
Atualizando
...Full cluster restart
8. Reative a alocação dos shards
9. Monitore o progresso da realocação
PUT /_cluster/settings
{
"persistent": {
"cluster.routing.allocation.enable": "all"
}
}
PUT /_cluster/settings
{
"persistent": {
"cluster.routing.allocation.
disable_allocation": false,
"cluster.routing.allocation.enable": "all"
}
}
1.x
0.90.x
GET _cat/health
GET _cat/recovery
Breaking Changes
Quebras de compatibilidade existentes na versão 2.3:
● REST API
○ Problemas com o uso cd CORS nas versões 2.3.0 e 2.3.1 resolvido na versão 2.3.2
● Mapping
○ Limite de campos aninhados (nested fields) por padrão passa a ser 50
○ É possivel sua definição através da propriedade index.mapping.nested_fields.limit
● Scripting
○ Atenção as dependências do seu script Groovy
○ Agora para diminuir o volume de dependências para o script o artefato org.codehaus.groovy:
groovy passou a ser utilizado ao inves do org.codehaus.groovy:groovy-all
● Analyze API
○ O parâmetro filters/token_filters/char_filters foi renomeado para
filter/token_filter/char_filter
A evolução continua...
5.x
Obrigado!
Rafael Gomes
rafael.gomes@e-storageonline.com.br
+55-51-9283-9835

Mais conteúdo relacionado

Mais procurados

Otimizando um banco de dados Oracle para Exadata
Otimizando um banco de dados Oracle para ExadataOtimizando um banco de dados Oracle para Exadata
Otimizando um banco de dados Oracle para ExadataRodrigo Almeida
 
UNIFAL - MySQL Logs - 5.0/5.6
UNIFAL - MySQL Logs - 5.0/5.6UNIFAL - MySQL Logs - 5.0/5.6
UNIFAL - MySQL Logs - 5.0/5.6Wagner Bianchi
 
ENPO - RMAN: Vilão ou Heroí?
ENPO - RMAN: Vilão ou Heroí?ENPO - RMAN: Vilão ou Heroí?
ENPO - RMAN: Vilão ou Heroí?Rodrigo Almeida
 
Performance e disponibilidade ‐ Um estudo de caso: website dos Correios
Performance e disponibilidade ‐ Um estudo de caso: website dos CorreiosPerformance e disponibilidade ‐ Um estudo de caso: website dos Correios
Performance e disponibilidade ‐ Um estudo de caso: website dos CorreiosAlex Hübner
 
Oracle Exadata - Consolidação & Migração
Oracle Exadata - Consolidação & MigraçãoOracle Exadata - Consolidação & Migração
Oracle Exadata - Consolidação & MigraçãoRodrigo Almeida
 
Oracle 11g – Inteligência em Banco de Dados
Oracle 11g – Inteligência em Banco de DadosOracle 11g – Inteligência em Banco de Dados
Oracle 11g – Inteligência em Banco de DadosDaniela Macedo
 
Infinispan - Distribuição de Dados com Java
Infinispan - Distribuição de Dados com JavaInfinispan - Distribuição de Dados com Java
Infinispan - Distribuição de Dados com JavaWagner Roberto dos Santos
 
Oracle Day - Produtos de banco de dados
Oracle Day - Produtos de banco de dadosOracle Day - Produtos de banco de dados
Oracle Day - Produtos de banco de dadosRodrigo Almeida
 
Alta-disponibilidade e alta performance com o MySQL Cluster 7.3
Alta-disponibilidade e alta performance com o MySQL Cluster 7.3Alta-disponibilidade e alta performance com o MySQL Cluster 7.3
Alta-disponibilidade e alta performance com o MySQL Cluster 7.3MySQL Brasil
 
PostgreSQL Tuning: O elefante mais rápido que um leopardo
PostgreSQL Tuning: O elefante mais rápido que um leopardoPostgreSQL Tuning: O elefante mais rápido que um leopardo
PostgreSQL Tuning: O elefante mais rápido que um leopardoelliando dias
 
DBA became DMA for Oracle Exadata X2-2
DBA became DMA for Oracle Exadata X2-2DBA became DMA for Oracle Exadata X2-2
DBA became DMA for Oracle Exadata X2-2Rodrigo Almeida
 
Oracle Exadata
Oracle ExadataOracle Exadata
Oracle ExadataiMasters
 
WildFly Avançado - TDC Floripa 2015
WildFly Avançado - TDC Floripa 2015WildFly Avançado - TDC Floripa 2015
WildFly Avançado - TDC Floripa 2015Adriano Schmidt
 
Oracle 18c Instalação Grid Infrastructure & Database
Oracle 18c Instalação Grid Infrastructure & DatabaseOracle 18c Instalação Grid Infrastructure & Database
Oracle 18c Instalação Grid Infrastructure & DatabaseDouglas Paiva de Sousa
 
TimesTen In-Memory Database
TimesTen In-Memory DatabaseTimesTen In-Memory Database
TimesTen In-Memory DatabaseAndre Danelon
 

Mais procurados (20)

Otimizando um banco de dados Oracle para Exadata
Otimizando um banco de dados Oracle para ExadataOtimizando um banco de dados Oracle para Exadata
Otimizando um banco de dados Oracle para Exadata
 
UNIFAL - MySQL Logs - 5.0/5.6
UNIFAL - MySQL Logs - 5.0/5.6UNIFAL - MySQL Logs - 5.0/5.6
UNIFAL - MySQL Logs - 5.0/5.6
 
ENPO - RMAN: Vilão ou Heroí?
ENPO - RMAN: Vilão ou Heroí?ENPO - RMAN: Vilão ou Heroí?
ENPO - RMAN: Vilão ou Heroí?
 
Performance e disponibilidade ‐ Um estudo de caso: website dos Correios
Performance e disponibilidade ‐ Um estudo de caso: website dos CorreiosPerformance e disponibilidade ‐ Um estudo de caso: website dos Correios
Performance e disponibilidade ‐ Um estudo de caso: website dos Correios
 
Treinamento RMAN Workshop 12c
Treinamento RMAN Workshop 12cTreinamento RMAN Workshop 12c
Treinamento RMAN Workshop 12c
 
Treinamento DBA Essential
Treinamento DBA EssentialTreinamento DBA Essential
Treinamento DBA Essential
 
Oracle Exadata - Consolidação & Migração
Oracle Exadata - Consolidação & MigraçãoOracle Exadata - Consolidação & Migração
Oracle Exadata - Consolidação & Migração
 
Oracle 11g – Inteligência em Banco de Dados
Oracle 11g – Inteligência em Banco de DadosOracle 11g – Inteligência em Banco de Dados
Oracle 11g – Inteligência em Banco de Dados
 
Infinispan - Distribuição de Dados com Java
Infinispan - Distribuição de Dados com JavaInfinispan - Distribuição de Dados com Java
Infinispan - Distribuição de Dados com Java
 
Oracle 11g
Oracle 11gOracle 11g
Oracle 11g
 
Treinamento Oracle GoldenGate 19c
Treinamento Oracle GoldenGate 19cTreinamento Oracle GoldenGate 19c
Treinamento Oracle GoldenGate 19c
 
Oracle Day - Produtos de banco de dados
Oracle Day - Produtos de banco de dadosOracle Day - Produtos de banco de dados
Oracle Day - Produtos de banco de dados
 
Alta-disponibilidade e alta performance com o MySQL Cluster 7.3
Alta-disponibilidade e alta performance com o MySQL Cluster 7.3Alta-disponibilidade e alta performance com o MySQL Cluster 7.3
Alta-disponibilidade e alta performance com o MySQL Cluster 7.3
 
PostgreSQL Tuning: O elefante mais rápido que um leopardo
PostgreSQL Tuning: O elefante mais rápido que um leopardoPostgreSQL Tuning: O elefante mais rápido que um leopardo
PostgreSQL Tuning: O elefante mais rápido que um leopardo
 
DBA became DMA for Oracle Exadata X2-2
DBA became DMA for Oracle Exadata X2-2DBA became DMA for Oracle Exadata X2-2
DBA became DMA for Oracle Exadata X2-2
 
Oracle Data Guard
Oracle Data GuardOracle Data Guard
Oracle Data Guard
 
Oracle Exadata
Oracle ExadataOracle Exadata
Oracle Exadata
 
WildFly Avançado - TDC Floripa 2015
WildFly Avançado - TDC Floripa 2015WildFly Avançado - TDC Floripa 2015
WildFly Avançado - TDC Floripa 2015
 
Oracle 18c Instalação Grid Infrastructure & Database
Oracle 18c Instalação Grid Infrastructure & DatabaseOracle 18c Instalação Grid Infrastructure & Database
Oracle 18c Instalação Grid Infrastructure & Database
 
TimesTen In-Memory Database
TimesTen In-Memory DatabaseTimesTen In-Memory Database
TimesTen In-Memory Database
 

Semelhante a Elastic MeetUp Porto Alegre

Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0
Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0
Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0Marcos William Valentini
 
Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0
Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0
Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0Marcos William Valentini
 
Novidades do Universo MySQL Maio 2014
Novidades do Universo MySQL Maio 2014Novidades do Universo MySQL Maio 2014
Novidades do Universo MySQL Maio 2014MySQL Brasil
 
Docker SP - Orquestrando docker via Marathon e Mesos na Konker
Docker SP - Orquestrando docker via Marathon e Mesos na KonkerDocker SP - Orquestrando docker via Marathon e Mesos na Konker
Docker SP - Orquestrando docker via Marathon e Mesos na KonkerAndré Rocha
 
Funcionalidades das versões 9.x do PostgreSQL
Funcionalidades das versões 9.x do PostgreSQLFuncionalidades das versões 9.x do PostgreSQL
Funcionalidades das versões 9.x do PostgreSQLMatheus Espanhol
 
Design Patterns para Tuning Pentaho com Ctools
Design Patterns para Tuning Pentaho com CtoolsDesign Patterns para Tuning Pentaho com Ctools
Design Patterns para Tuning Pentaho com Ctoolse-Setorial
 
Detectando e Respondendo Incidentes de Segurança em Frontends Nginx utilizand...
Detectando e Respondendo Incidentes de Segurança em Frontends Nginx utilizand...Detectando e Respondendo Incidentes de Segurança em Frontends Nginx utilizand...
Detectando e Respondendo Incidentes de Segurança em Frontends Nginx utilizand...Jeronimo Zucco
 
QConSP16 - Apache Cassandra Evoluindo Sistemas Distribuídos
QConSP16 - Apache Cassandra Evoluindo Sistemas DistribuídosQConSP16 - Apache Cassandra Evoluindo Sistemas Distribuídos
QConSP16 - Apache Cassandra Evoluindo Sistemas DistribuídosEiti Kimura
 
Tchelinux live 2020 - Detectando e Respondendo Incidentes de Segurança em Fro...
Tchelinux live 2020 - Detectando e Respondendo Incidentes de Segurança em Fro...Tchelinux live 2020 - Detectando e Respondendo Incidentes de Segurança em Fro...
Tchelinux live 2020 - Detectando e Respondendo Incidentes de Segurança em Fro...Jeronimo Zucco
 
Novidades do Universo MySQL Agosto 2014
Novidades do Universo MySQL Agosto 2014Novidades do Universo MySQL Agosto 2014
Novidades do Universo MySQL Agosto 2014MySQL Brasil
 
Treinamento de Performance and tuning
Treinamento de Performance and tuningTreinamento de Performance and tuning
Treinamento de Performance and tuningDell Technologies
 
Serviços Escaláveis e de Alta Performance com MySQL e Java
Serviços Escaláveis e de Alta Performance com MySQL e JavaServiços Escaláveis e de Alta Performance com MySQL e Java
Serviços Escaláveis e de Alta Performance com MySQL e JavaMySQL Brasil
 
Como criar infraestrutura de sites para receber milhões de usuários?
Como criar infraestrutura de sites para receber milhões de usuários?Como criar infraestrutura de sites para receber milhões de usuários?
Como criar infraestrutura de sites para receber milhões de usuários?Marcelo Dieder
 
AWS Redshift Primer
AWS Redshift PrimerAWS Redshift Primer
AWS Redshift PrimerMateus Aubin
 
MySQL 5.6, o que há de novidade?
MySQL 5.6, o que há de novidade?MySQL 5.6, o que há de novidade?
MySQL 5.6, o que há de novidade?MySQL Brasil
 
AWS Redshift Primer
AWS Redshift PrimerAWS Redshift Primer
AWS Redshift PrimerMateus Aubin
 
Novidades do .NET Core 2.1 e do ASP.NET Core 2.1
Novidades do .NET Core 2.1 e do ASP.NET Core 2.1Novidades do .NET Core 2.1 e do ASP.NET Core 2.1
Novidades do .NET Core 2.1 e do ASP.NET Core 2.1Giovanni Bassi
 

Semelhante a Elastic MeetUp Porto Alegre (20)

Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0
Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0
Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0
 
Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0
Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0
Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0
 
Novidades do Universo MySQL Maio 2014
Novidades do Universo MySQL Maio 2014Novidades do Universo MySQL Maio 2014
Novidades do Universo MySQL Maio 2014
 
Docker SP - Orquestrando docker via Marathon e Mesos na Konker
Docker SP - Orquestrando docker via Marathon e Mesos na KonkerDocker SP - Orquestrando docker via Marathon e Mesos na Konker
Docker SP - Orquestrando docker via Marathon e Mesos na Konker
 
Funcionalidades das versões 9.x do PostgreSQL
Funcionalidades das versões 9.x do PostgreSQLFuncionalidades das versões 9.x do PostgreSQL
Funcionalidades das versões 9.x do PostgreSQL
 
Design Patterns para Tuning Pentaho com Ctools
Design Patterns para Tuning Pentaho com CtoolsDesign Patterns para Tuning Pentaho com Ctools
Design Patterns para Tuning Pentaho com Ctools
 
Detectando e Respondendo Incidentes de Segurança em Frontends Nginx utilizand...
Detectando e Respondendo Incidentes de Segurança em Frontends Nginx utilizand...Detectando e Respondendo Incidentes de Segurança em Frontends Nginx utilizand...
Detectando e Respondendo Incidentes de Segurança em Frontends Nginx utilizand...
 
QConSP16 - Apache Cassandra Evoluindo Sistemas Distribuídos
QConSP16 - Apache Cassandra Evoluindo Sistemas DistribuídosQConSP16 - Apache Cassandra Evoluindo Sistemas Distribuídos
QConSP16 - Apache Cassandra Evoluindo Sistemas Distribuídos
 
Treinamento Elasticsearch - Parte 1
Treinamento Elasticsearch - Parte 1Treinamento Elasticsearch - Parte 1
Treinamento Elasticsearch - Parte 1
 
Tchelinux live 2020 - Detectando e Respondendo Incidentes de Segurança em Fro...
Tchelinux live 2020 - Detectando e Respondendo Incidentes de Segurança em Fro...Tchelinux live 2020 - Detectando e Respondendo Incidentes de Segurança em Fro...
Tchelinux live 2020 - Detectando e Respondendo Incidentes de Segurança em Fro...
 
Novidades do Universo MySQL Agosto 2014
Novidades do Universo MySQL Agosto 2014Novidades do Universo MySQL Agosto 2014
Novidades do Universo MySQL Agosto 2014
 
Treinamento de Performance and tuning
Treinamento de Performance and tuningTreinamento de Performance and tuning
Treinamento de Performance and tuning
 
Primeiros Passos Com Elasticsearch
Primeiros Passos Com ElasticsearchPrimeiros Passos Com Elasticsearch
Primeiros Passos Com Elasticsearch
 
JBoss Clustering
JBoss ClusteringJBoss Clustering
JBoss Clustering
 
Serviços Escaláveis e de Alta Performance com MySQL e Java
Serviços Escaláveis e de Alta Performance com MySQL e JavaServiços Escaláveis e de Alta Performance com MySQL e Java
Serviços Escaláveis e de Alta Performance com MySQL e Java
 
Como criar infraestrutura de sites para receber milhões de usuários?
Como criar infraestrutura de sites para receber milhões de usuários?Como criar infraestrutura de sites para receber milhões de usuários?
Como criar infraestrutura de sites para receber milhões de usuários?
 
AWS Redshift Primer
AWS Redshift PrimerAWS Redshift Primer
AWS Redshift Primer
 
MySQL 5.6, o que há de novidade?
MySQL 5.6, o que há de novidade?MySQL 5.6, o que há de novidade?
MySQL 5.6, o que há de novidade?
 
AWS Redshift Primer
AWS Redshift PrimerAWS Redshift Primer
AWS Redshift Primer
 
Novidades do .NET Core 2.1 e do ASP.NET Core 2.1
Novidades do .NET Core 2.1 e do ASP.NET Core 2.1Novidades do .NET Core 2.1 e do ASP.NET Core 2.1
Novidades do .NET Core 2.1 e do ASP.NET Core 2.1
 

Elastic MeetUp Porto Alegre

  • 1. Substituindo navegação multi-etapa por busca Elastic MeetUp Porto Alegre 22 de Julho de 2016
  • 2. Missão: Melhorar a forma de obter a informação substituindo navegação multi-etapa por busca. Líder no segmento de busca corporativa na América Latina desde 2008 Nossos profissionais são certificados e dedicados exclusivamente à busca corporativa Desenvolvemos e integramos soluções para diversas verticais como Governo, E-commerce, Industrias e Varejo Parceiro oficial Elastic no Brasil Sobre a E-Storage
  • 3. + 60.000 Membros na comunidade + 2.000 Clientes globais de subscrição + 50 milhões Downloads Sobre a Elastic ● Fundada em 2012 em Amsterdam na Holanda ● Escritórios em mais de 14 paises ● Oferece apoio técnico e treinamentos
  • 4. Sobre mim ● Trabalho com ferramentas para busca corporativa desde 2008 ● Utilizo/Conheço Elasticsearch desde a versão 0.9 ● Me interesso por todas as possibilidades oferecidas pelo stack como análise de dados, busca de conteúdo, concorrência e performance ● Realizo treinamentos, provas de conceito e oriento a equipe de desenvolvedores da E-Storage
  • 5. Agenda ● A evolução do Elastic Stack ● Atualizando ● Compatibilidade na versão 2.3
  • 6. A evolução do Elastic Stack
  • 7. A evolução do Elastic Stack CRUD, Mapping, Busca, Query DSL, Highlight, Aliases, Cluster / Nós / Estatísticas de índices, Busca facetada, Scripting, Index Templates, Dynamic Mapping, Parent/Child, Nested Objects, GET em tempo real, Versionamento, Roteamento, Percolator, Geo-points, Geo-shapes e sugestões
  • 8. A evolução do Elastic Stack Aggregations, API CAT, Percolator distribuído, Doc Values, Snapshot/Restore, Tribe node, Circuit breakers, Templates de pesquisa, Sugestões para autocompletar, Lucene scripting, Top hits
  • 9. A evolução do Elastic Stack Problemas com índices - Index Corruption Problemas com memória - OOM Problemas com segurança - Security exploits Aggregations, API CAT, Percolator distribuído, Doc Values, Snapshot/Restore, Tribe node, Circuit breakers, Templates de pesquisa, Sugestões para autocompletar, Lucene scripting, Top hits
  • 10. A evolução do Elastic Stack Resiliência do Cluster, Checksums em todo o lugar, Lock down scripting, Tornar Doc Values mais rápido
  • 11. A evolução do Elastic Stack Tornar rolling restarts mais fáceis: Synced flush, Delayed allocation, Cancellable allocation
  • 12. A evolução do Elastic Stack Consertar todas as coisas!
  • 13. A evolução do Elastic Stack Reformulação da estrutura de mapping: Era: Agora: Extremamente Flexível Confiável Permitía erros silenciosos Consistente Podia gerar erros em índices Possui uma fudação mais sólida Aqui ocorre uma quebra de compatibilidade com as versões anteriores
  • 14. A evolução do Elastic Stack E mais… ● Reformulação nos Transaction Logs: Duráveis, Atomic writes e realiza Fsync a cada requisição ● Usabilidade: Query e filters juntos, cache automatico para consultas, Merge auto-throttling, Excessões estruturadas, salvaguardas para administradores ● Uso de memória: Doc Values mais rapido usando o cache do sistema de arquivos, field length norms e relevância utilizando a mesma estrutura de doc values, Parent/Child v2 (joins mais rápidos) , Geo-points v2 (50% do tamanho índice) ● Segurança: Checagem JarHell, uso do Java Security Manager, uso de previlégios mínimos, modularização do código, Java serialization não é mais utilizada ● Testes: Código completamente coberto por testes unitários, todos plugins suportados também são testados, realização de testes de integração reais
  • 15. A evolução do Elastic Stack E ganhamos novas funcionalidades… ● Pipeline aggregations: Análises de dados avançadas, pós-processamento do resultado das agregações ● Geo-centroid aggregations: Melhorias visuais no Kibana para visualizar pontos geospaciais ● Query Profiler: Agora é possível saber qual parte da query não esta tendo o desempenho esperado ● Reindex API, Update by Query, Task manager: Pipeline Aggs - Visualização de anomalias Mais facilidade para reindexar dados existentes e acompanhar ações em background ou com tempo de execução maiores.
  • 16. A evolução do Elastic Stack Agenda para novas versões Versões de correção ● Versão corrente menor ● Ultima versão menor da última versão maior ● Correções de bugs e pequenas melhorias Versões menores ● Frequentes ● Menores ● Sem quebras de compatibilidade, a não ser que sejam necessárias Versões maiores ● Mais frequentes ● Menores ● Atualize de qualquer versão maior da versão maior anterior
  • 17. Atualizando https://www.elastic.co/guide/en/elasticsearch/reference/current/setup-upgrade.html Importante 1. Verifique se existe alguma quebra de compatibilidade 2. Teste a atualização em um outro ambiente antes de iniciar a atualização em produção 3. Faça backup de seus dados. Você não pode retornar para a versão anterior a não ser que você tenha o backup dos dados para aquela versão 4. Leve seus plugins em consideração para a atualização
  • 18. Atualizando https://www.elastic.co/guide/en/elasticsearch/reference/current/setup-upgrade.html Existem dois tipos de atualização Rolling Upgrade ● Sem tempo de parada ● Atualizações entre versões 2.x Full Cluster Restart ● O cluster como um todo deve ser reiniciado e uma estratégia para a parada deve ser criada ● Atualizações entre versões ○ 0.90.x > 2.x ○ 1.x > 2x
  • 19. Atualizando Rolling Upgrade... 1. Realize backup dos seus dados (snapshot) 2. Desative a alocação de shards 3. Execute um synced flush 4. Pare a atualize um nó PUT /_cluster/settings { "transient": { "cluster.routing.allocation.enable": "none" } } POST /_flush/synced
  • 20. Atualizando ...Rolling Upgrade 5. Inicie o nó atualizado 6. Reative a alocação dos shards 7. Espere o nó se recuperar 8. Repita os passos para cada nó no cluster PUT /_cluster/settings { "transient": { "cluster.routing.allocation.enable": "all" } } GET _cat/nodes GET _cat/health
  • 21. Atualizando Full cluster restart... 1. Realize backup dos seus dados a. Maior que 1.x i. Use snapshot b. .90.x e anteriores i. Desative o flush dos índices ii. Desative a realocação 2. Realize o backup dos dados PUT /_all/_settings { "index": { "translog.disable_flush": "true" } } PUT /_cluster/settings { "transient": { "cluster.routing.allocation.enable": "none" } }
  • 22. Atualizando ...Full cluster restart... 3. Reative a alocação e o flush PUT /_all/_settings { "index": { "translog.disable_flush": "false" } } PUT /_cluster/settings { "transient": { "cluster.routing.allocation.enable": "all" } }
  • 23. Atualizando ...Full cluster restart... 3. Desative a alocação dos shards 4. Execute um synced flush 5. Desative e atualize todos os nós 6. Inicie o cluster 7. Aguarde o cluster ficar amarelo PUT /_cluster/settings { "persistent": { "cluster.routing.allocation.enable": "none" } } PUT /_cluster/settings { "persistent": { "cluster.routing.allocation. disable_allocation": true, "cluster.routing.allocation.enable": "none" } } 1.x 0.90.x
  • 24. Atualizando ...Full cluster restart 8. Reative a alocação dos shards 9. Monitore o progresso da realocação PUT /_cluster/settings { "persistent": { "cluster.routing.allocation.enable": "all" } } PUT /_cluster/settings { "persistent": { "cluster.routing.allocation. disable_allocation": false, "cluster.routing.allocation.enable": "all" } } 1.x 0.90.x GET _cat/health GET _cat/recovery
  • 25. Breaking Changes Quebras de compatibilidade existentes na versão 2.3: ● REST API ○ Problemas com o uso cd CORS nas versões 2.3.0 e 2.3.1 resolvido na versão 2.3.2 ● Mapping ○ Limite de campos aninhados (nested fields) por padrão passa a ser 50 ○ É possivel sua definição através da propriedade index.mapping.nested_fields.limit ● Scripting ○ Atenção as dependências do seu script Groovy ○ Agora para diminuir o volume de dependências para o script o artefato org.codehaus.groovy: groovy passou a ser utilizado ao inves do org.codehaus.groovy:groovy-all ● Analyze API ○ O parâmetro filters/token_filters/char_filters foi renomeado para filter/token_filter/char_filter