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

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

Sponsored · Ship Features Fearlessly Turn features on and off without deploys. Used by thousands of Ruby developers.
Avatar for guedes 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.

Avatar for guedes

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/