Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Técnicas de virtualização de dados com PostgreSQL

guedes
July 21, 2019

Técnicas de virtualização de dados com PostgreSQL

Onde é apresentado o conceito de virtualização de dados aplicado na prática utilizando o PostgreSQL como a plataforma para gerenciá-la, técnicas, conceitos, limitações, utilidades e o valor desta arquitetura alinhado à governança como um todo.

guedes

July 21, 2019
Tweet

More Decks by guedes

Other Decks in Programming

Transcript

  1. Globalcode – Open4education Virtualização de dados • reduzir ou eliminar

    totalmente a movimentação dos dados • junção de fontes de dados diferentes • dados federados • visões expondo interfaces bem definidas • não resolve todos os problemas, mas pode contribuir fortemente para o sucesso de um projeto de bigdata
  2. Globalcode – Open4education Algumas previsões... • By 2022, organizations utilizing

    active metadata to dynamically connect, optimize and automate data integration processes will reduce time to data delivery by 30%. • By 2021, enterprises using a cohesive strategy incorporating data hubs, lakes and warehouses will support 30% more use cases than competitors. • Through 2022, only 20% of analytic insights will deliver business outcomes. • By 2023, data literacy will become an explicit and necessary driver of business value... Fonte: Gartner, 2019
  3. Globalcode – Open4education • Cluster 1: ip01.db.host:5432 ◦ bd_universidade_matriz ▪

    academico • tb_cursos • tb_matriculas • tb_alunos ▪ financeiro • tb_pagamentos • tb_boletos ◦ bd_universidade_filial_01 ▪ academico • tb_cursos • . ▪ financeiro • tb_pagamentos • ... Estrutura de um banco PostgreSQL • Cluster 2: ip02.db.host:5435 ◦ bd_sistema_pos ▪ public • tb_cursos • tb_matriculas • tb_alunos • tb_pagamentos • tb_boletos
  4. Globalcode – Open4education • Cluster 1: ip01.db.host:5432 ◦ bd_universidade_matriz ▪

    academico • tb_cursos • tb_matriculas • tb_alunos ▪ financeiro • tb_pagamentos • tb_boletos ▪ indicadores • pagamentos_por_dia • boletos_mais_caros ◦ bd_universidade_filial_01 ▪ … • ... Tabelas e visões separadas • Cluster 2: ip02.db.host:5435 ◦ bd_sistema_pos ▪ public • tb_cursos • tb_matriculas • tb_alunos • tb_pagamentos • tb_boletos ▪ indicadores • pagamentos_por_dia • boletos_mais_caros CREATE VIEW ....
  5. Globalcode – Open4education • a visão gera uma abstração sobre

    a estrutura de dados • isolamento no acesso às tabelas • é possível proteger o acesso à colunas e linhas nas tabelas originais • a visão é uma consulta, que é sempre executada consumindo processamento no mesmo servidor Tabelas e visões separadas
  6. Globalcode – Open4education • Cluster 1: ip01.db.host:5432 ◦ bd_universidade_matriz ▪

    academico • tb_cursos • tb_matriculas • tb_alunos ▪ financeiro • tb_pagamentos • tb_boletos ▪ indicadores • pagamentos_por_dia • boletos_mais_caros ◦ bd_universidade_filial_01 ▪ … • ... Visões materializadas • Cluster 2: ip02.db.host:5435 ◦ bd_sistema_pos ▪ public • tb_cursos • tb_matriculas • tb_alunos • tb_pagamentos • tb_boletos ▪ indicadores • pagamentos_por_dia • boletos_mais_caros CREATE MATERIALIZED VIEW .... REFRESH CONCURRENTLY MATERIALIZED VIEW ...
  7. Globalcode – Open4education • a visão gera uma abstração sobre

    a estrutura de dados • isolamento no acesso às tabelas • é possível proteger o acesso à colunas e linhas nas tabelas originais • os dados da visão são persistidos • índices podem ser criados para otimização • os dados podem ser atualizados sem bloqueio • usa recursos de armazenamento do cluster • espaço em disco pode ser um problema • pode-se utilizar tablespaces em discos separados Visões materializadas
  8. Globalcode – Open4education Visão + replicação física + leitura no

    secundário • Cluster Primário: ip01.db.host:5432 ◦ bd_universidade_matriz ▪ academico • tb_cursos • tb_matriculas • tb_alunos ▪ financeiro • tb_pagamentos • tb_boletos ▪ indicadores • pagamentos_por_dia • boletos_mais_caros ◦ bd_universidade_filial_01 ▪ … • ... • Cluster Secundário: ip22.db.host:5432 ◦ bd_universidade_matriz ▪ academico • tb_cursos • tb_matriculas • tb_alunos ▪ financeiro • tb_pagamentos • tb_boletos ▪ indicadores • pagamentos_por_dia • boletos_mais_caros ◦ bd_universidade_filial_01 ▪ … • ...
  9. Globalcode – Open4education • a visão gera uma abstração sobre

    a estrutura de dados • isolamento no acesso às tabelas • é possível proteger o acesso à colunas e linhas nas tabelas originais • a visão é uma consulta, que é sempre executada consumindo processamento no servidor secundário • a escrita e leitura no primário é poupada desta concorrência no secundário • em todos os casos o usuário consegue ver a estrutura da tabela original Visão + replicação física + leitura no secundário
  10. Globalcode – Open4education Visão + dblink para “localhost” • Cluster

    1: ip01.db.host:5432 ◦ bd_universidade_matriz ▪ ... ▪ indicadores • pagamentos_por_dia • boletos_mais_caros ◦ bd_universidade_filial_01 ▪ … • … ◦ bd_indicadores ▪ financeiro • pagamentos_por_dia • boletos_mais_caros
  11. Globalcode – Open4education • a visão gera uma abstração sobre

    a estrutura de dados • isolamento no acesso às tabelas • é possível proteger o acesso à colunas e linhas nas tabelas originais • a visão é uma consulta, que é sempre executada consumindo processamento no mesmo servidor • o usuário não consegue ver a estrutura da tabela original Visão + dblink para “localhost”
  12. Globalcode – Open4education Visões com dblink materializadas • Cluster 1:

    ip01.db.host:5432 ◦ bd_universidade_matriz ▪ ... ▪ indicadores • pagamentos_por_dia • boletos_mais_caros ◦ bd_universidade_filial_01 ▪ … • … ◦ bd_indicadores ▪ financeiro • pagamentos_por_dia • boletos_mais_caros CREATE MATERIALIZED VIEW .... REFRESH CONCURRENTLY MATERIALIZED VIEW ...
  13. Globalcode – Open4education • a visão gera uma abstração sobre

    a estrutura de dados • isolamento no acesso às tabelas • é possível proteger o acesso à colunas e linhas nas tabelas originais • os dados da visão são persistidos • índices podem ser criados para otimização • os dados podem ser atualizados sem bloqueio • usa recursos de armazenamento do cluster • espaço em disco pode ser um problema • pode-se utilizar tablespaces em discos separados Visões com dblink materializadas
  14. Globalcode – Open4education Usar dblink numa visão para um servidor

    remoto • Cluster Primário: ip01.db.host:5432 ◦ bd_universidade_matriz ▪ ... ▪ indicadores • pagamentos_por_dia • boletos_mais_caros ◦ bd_universidade_filial_01 ▪ … • … ◦ bd_indicadores ▪ financeiro • pagamentos_por_dia • boletos_mais_caros • Cluster: ip22.db.host:5432 ◦ bd_indicadores ▪ financeiro • pagamentos_por_dia • boletos_mais_caros
  15. Globalcode – Open4education • a visão é uma consulta, que

    é sempre executada consumindo processamento no mesmo servidor • o usuário não consegue ver a estrutura da tabela original • pode ser uma boa otimização se a visão remota for materializada • pode ser uma boa otimização se a visão local também for materializada • dblink só para uma outra base Postgres Usar dblink numa visão para um servidor remoto
  16. Globalcode – Open4education Usar Foreign Tables numa visão para um

    servidor remoto • Cluster: ip22.db.host:5432 ◦ bd_indicadores ▪ financeiro • pagamentos_por_dia • boletos_mais_caros • pagamentos_por_dia_200x MySQL MongoDB PAGS_200x.CSV
  17. Globalcode – Open4education • conexão com várias fontes de dados

    distintas • blending de fontes de dados • join-push-down • uma foreign-table pode ser uma partição de uma tabela particionada • pode se conectar a fontes de dados não-relacionais Usar Foreign Tables numa visão para um servidor remoto
  18. Globalcode – Open4education • Cluster: ip22.db.host:5432 ◦ bd_indicadores ▪ financeiro

    • pagamentos_por_dia • boletos_mais_caros • pagamentos_por_dia_200x ▪ cache • pagamentos_201901 • pagamentos_201902 • pagamentos_201903 • ... Visões materializadas usando foreign-tables MySQL MongoDB PAGS_200x.CSV
  19. Globalcode – Open4education Visão + replicação lógica + leitura no

    secundário • Cluster Primário: ip01.db.host:5432 ◦ bd_universidade_matriz ▪ academico • tb_cursos • tb_matriculas • tb_alunos ▪ financeiro • tb_pagamentos • tb_boletos ▪ indicadores • pagamentos_por_dia • boletos_mais_caros ◦ bd_universidade_filial_01 ▪ … • ... • Cluster Secundário: ip22.db.host:5432 ◦ bd_universidade_matriz_secundario ▪ financeiro • tb_pagamentos • tb_boletos ▪ indicadores • pagamentos_por_dia • boletos_mais_caros Você também consegue implementar mensageria com replicação lógica
  20. Globalcode – Open4education • não é a solução para todos

    os problemas • em se tratando de cloud, algumas extensões podem não estar disponíveis • pode reduzir o tempo para disponibilizar dados para plataformas de BI e Analytics • cresça gradativamente • latência e número de conexões pode ser um problema • row-level-security também pode ser usado na combinação simulando multi-tenancy • Considerações finais
  21. Globalcode – Open4education Referências • https://blogs.gartner.com/andrew_white/2019/01/03/our-top-data-and-analytics-predicts-for-201 9/ • https://www.datamation.com/big-data/what-is-data-virtualization.html •

    http://www.datavirtualizationblog.com/simplifying-big-data-projects-data-virtualization/ • https://designingforanalytics.com/resources/failure-rates-for-analytics-bi-iot-and-big-data-projects -85-yikes/