Consultas em repositórios comprimidos, com paralelismo, através de Foreign Data Wrappers

Consultas em repositórios comprimidos, com paralelismo, através de Foreign Data Wrappers

A compressão em bancos de dados pode trazer benefícios relevantes como redução do uso de STORAGE e melhoria de performance em certas situações em que o I/O é o gargalo. Nessa palestra, vamos compartilhar nossa experiência de integrar uma ferramenta de compressão de dados no PostgreSQL através da extensão FDW (Foreign Data Wraper) de forma eficiente. Na verdade, "de forma eficiente" será a nossa grande contribuição. Vamos detalhar aspectos como:
- Melhores práticas para pesquisar dados comprimidos em repositórios externos (possivelmente remotos)
- Particionamento, sharding e paralelismo: 'Parallel Safe' e 'Parallel Aware'
- Como superar certos desafios no uso do FDW;
---

Aca58a237a4a816004978b42b71586cd?s=128

Sanyo Capobiango

August 02, 2019
Tweet

Transcript

  1. None
  2. Consultas em repositórios comprimidos, com paralelismo, através de Foreign Data

    Wrappers Sanyo Capobiango Soares de Moura www.linkedin.com/in/sanyo-moura sanyo.moura@tatic.net www.tatic.net
  3. Agenda  Por que comprimir dados?  Estendendo o Postgres

    através de FDWs  Composição de um FDW  Melhores práticas para pesquisar em repositórios remotos  Paralelismo: ‘Parallel Safe’ e ‘Parallel Aware’  Particionamento & sharding  Pesquisas híbridas em um ‘Data Lake’ com compressão  Perguntas e respostas
  4.  Reduzir custos de armazenamento  Relevante se seu BD

    está crescendo rapidamente  Desafogar o banco de dados, melhorando o desempenho  Relevante quando I/O representa um gargalo Por que comprimir dados? Características imprescindíveis do sistema de compressão para não impactar performance:  permitir particionamento e sharding  permitir paralelizar as consultas  utilizar índices e metadados 01
  5. https://wiki.postgresql.org/wiki/Foreign_data_wrappers 02

  6. Execução de uma Query 03

  7. 04

  8. Custo / Performance • Calcular custos dos vários paths possíveis,

    a fim de que o “planner” decida corretamente qual o melhor plano para execução estimate_path_cost_size(…) • Evitar trazer informações desnecessárias da tabela estrangeira baserel→baserestrictinfo (where clauses) • Guardar e gerenciar estado, evitando recálculos baserel→fdw_private • Criar partições estrangeiras (quando possível), permitindo realizar buscas em paralelo nas diversas partições envolvidas em uma pesquisa routine→IsForeignScanParallelSafe = myfdwIsForeignScanParallelSafe; add_partial_path(baserel, (Path *) path); Custo / Performance • Calcular custos dos vários paths possíveis, a fim de que o “planner” decida corretamente qual o melhor plano para execução estimate_path_cost_size(…) • Evitar trazer informações desnecessárias da tabela estrangeira baserel→baserestrictinfo (where clauses) • Guardar e gerenciar estado, evitando recálculos baserel→fdw_private • Criar partições estrangeiras (quando possível), permitindo realizar buscas em paralelo nas diversas partições envolvidas em uma pesquisa routine→IsForeignScanParallelSafe = myfdwIsForeignScanParallelSafe; add_partial_path(baserel, (Path *) path); Melhores Práticas 05
  9. Particionamento 06

  10. Particionamento 07

  11. Parallel Safe 08

  12. Parallel Aware 09

  13. Praticando Objetivo: Consultar evolução de preços de 1 produto em

    uma determinada loja durante os meses de janeiro e fevereiro de 2017 Cluster PostgreSQL – 2 instâncias • instancia1 – processa dias ímpares • instancia2 – processa dias pares ➔ 2017-02 – armazenado no PostgreSQL ➔ 2017-01 – armazenado no XDR (comprimido) FDWs: postgres_fdw / xdr_fdw 10
  14. Modelo 11

  15. 1. Apresentar dados de fevereiro de cada instância, 14 dias

    2. Apresentar dados de fevereiro em ambas instâncias, 28 dias (postgres_fdw) 3. Apresentar dados de fevereiro e janeiro do XDR, 43/44 dias (inst.1→ímpares, inst.2→pares) (xdr_fdw) 4. Apresentar dados de janeiro e fevereiro em ambas instâncias, todos os 59 dias (postgres_fdw + xdr_fdw) 2017 / 01 / Todos 2017 / 02 / Ímpares Roteiro 2017 / 02 / Pares 12
  16. Sharing Nothing Architecture 13

  17. Perguntas & Respostas Obrigado pela presença! Sanyo Capobiango Soares de

    Moura www.linkedin.com/in/sanyo-moura sanyo.moura@tatic.net www.tatic.net