Skip to main content
Category

Institucional

Roadmap de Migração: Passos estratégicos para migrar de outros SGBDs para PostgreSQL

By Institucional No Comments

PostgreSQL é um banco de dados relacional open-source que tem se destacado cada vez mais, graças à sua conformidade abrangente com o SQL, escalabilidade, desempenho e eficiência de custos. Essas características o tornam uma escolha cada vez mais popular entre desenvolvedores e administradores de banco de dados.

No entanto, migrar de um sistema de banco de dados para outro pode ser um processo desafiador, especialmente para aqueles que não estão familiarizados com Postgres.

Neste guia, dividiremos o processo de migração em etapas essenciais para garantir uma transição segura e eficiente.

Avaliação Inicial

A avaliação inicial do ambiente e das necessidades do seu negócio é uma etapa importante para definir os objetivos e, dessa forma, obter um apoio personalizado para que o processo da migração ocorra de maneira efetiva. Nessa fase, é importante analisar como o PostgreSQL pode ser mais vantajoso em relação ao seu SGBD atual.

Alguns aspectos importantes a serem considerados e comparados incluem desempenho, escalabilidade e custos.

Desempenho

Esse é um aspecto fundamental para qualquer banco de dados, e o PostgreSQL se destaca nesse quesito. Ao avaliar o desempenho considere os seguintes pontos:

Velocidade de Consultas: o Postgres oferece otimizações tanto a nível de parâmetros, que adequam o melhor desempenho baseado nos seus recursos físicos, quanto a utilização de índices avançados que aceleram as consultas. É essencial comparar a rapidez com que o PostgreSQL realiza consultas complexas em relação ao seu SGBD atual.

Transações: um dos pontos fortes do Postgres é a sua capacidade de realizar transações simultâneas sem comprometer a integridade dos dados. Ele utiliza o sistema ACID (Atomicidade, Consistência, Isolamento e Durabilidade), que minimiza a contenção e melhora a capacidade de processamento das transações. Isso significa que você pode gerenciar muitas operações ao mesmo tempo sem comprometer a performance ou a precisão dos dados.

Performance sob Carga: para analisar esse aspecto, é importante considerar como seu sistema atual reage a picos de usuários ou operações. Ao realizar testes de carga, você poderá observar que o Postgres mantém um desempenho consistente mesmo sob alta pressão. Isso inclui avaliar como o banco de dados lida com múltiplas leituras e gravações simultâneas, garantindo rapidez e confiabilidade mesmo nos momentos mais críticos.

Escalabilidade

Quando seu negócio cresce, seu banco de dados precisa acompanhar o ritmo. É nesse momento que a escalabilidade entra em cena, oferecendo a flexibilidade necessária para expandir e adaptar seu sistema conforme as necessidades do seu negócio evoluem. Funciona da seguinte maneira:

Escalabilidade Vertical: o PostgreSQL permite que você aumente a capacidade do servidor, adicionando mais CPU, RAM, e outros recursos. Isso possibilita lidar com maiores volumes de dados e mais usuários simultâneos sem perder desempenho.

Escalabilidade Horizontal: além de turbinar um único servidor, o Postgres também suporta técnicas como fragmentação e replicação. Isso significa que você pode distribuir a carga de trabalho em vários servidores, garantindo alta disponibilidade e desempenho, mesmo para aplicativos mais exigentes.

Ambientes Multi-Cloud e On-Premises: flexibilidade é a palavra chave do elefante. Com ele, você tem a possibilidade de rodar em nuvem ou localmente. Isso permite escolher a abordagem que melhor funcionará para o seu modelo de negócio, possibilitando escalar de maneira eficiente e adaptada às suas necessidades específicas.

Custos

Migrar para para um banco open-source pode resultar em economias significativas a médio e longo prazo. O alto custo de licenciamento de outros SGBDs é um dos principais motivadores por trás da crescente onda de migrações. Portanto, migrar para Postgres não é apenas uma escolha inteligente do ponto de vista técnico, mas também do financeiro. Os principais fatores que tornam essa transição tão vantajosa são:

Licenciamento: este é o primeiro e mais evidente benefício, pois o Postgres é open-source, o que significa que você não paga nada por licenças de uso. Ao migrar de um SGBD proprietário, onde licenças podem custar dezenas ou até centenas de milhares de dólares anualmente, para um open-source, você já garante uma significativa redução de custos, o que representa um grande incentivo por si só.

Infraestrutura: embora possa haver custos iniciais com infraestrutura, o Postgres funciona muito bem em equipamentos comuns. Isso significa que, a longo prazo, você poderá reduzir consideravelmente os custos com hardware. Além disso, a eficiência deste banco pode resultar em menores requisitos de hardware para uma mesma carga de trabalho, o que se traduz em ainda mais economia.

Manutenção e Suporte: um dos grandes trunfos do PostgreSQL é a sua enorme comunidade de usuários e desenvolvedores sempre engajados em aperfeiçoar o software. Isso significa que você tem acesso a uma variedade extensa de recursos e suporte gratuitamente. Para extrair todo o potencial do seu SGBD Postgres, você pode optar por contratar serviços de suporte e consultoria profissional. Geralmente, estes custos são bem menores do que os contratos de suporte de SGBDs proprietários.

Desempenho, escalabilidade e custos são cruciais para uma avaliação inicial bem-sucedida e ajudarão a formar uma base sólida para a migração de seu banco de dados para o PostgreSQL.

Planejamento da Migração

Definir metas claras, estabelecer um cronograma realista, alocar recursos e orçar o projeto são etapas fundamentais para obter um bom planejamento. Além disso, alinhar e envolver toda a equipe técnica da sua empresa desde o início garantirá que todos estejam na mesma sintonia e comprometidos com o sucesso do projeto.

Definir metas claras

O primeiro passo é saber exatamente o que você quer alcançar com a migração. Defina expectativas e benefícios esperados, como melhor desempenho, maior escalabilidade ou redução de custos. Pergunte-se:

  • “Quais são os principais benefícios esperados com a migração? Definir expectativas claras e métricas de desempenho ajuda a medir o sucesso do projeto e a comunicar esses resultados para as partes interessadas.”
  • “Como o PostgreSQL atenderá melhor às necessidades do meu negócio em comparação com o SGBD atual?” Avaliar como seus recursos, como escalabilidade e eficiência, podem otimizar suas operações e apoiar o crescimento da empresa é essencial.

Estabelecer um cronograma realista

Um bom cronograma deve levar em conta todas as etapas do processo de migração e garantir tempo suficiente para cada uma delas.

  1. Avaliação inicial e planejamento detalhado.
  2. Testes de desempenho e carga.
  3. Conversão de dados e adaptação de aplicações.
  4. Implementação final e monitoramento pós-migração.

Alocar recursos e orçamento

Certifique-se de que você terá os recursos necessários para realizar a migração sem contratempos. Isso inclui:

Recursos humanos: equipe técnica com conhecimento necessário. Avalie a possibilidade de treinamentos internos para aumentar o conhecimento da equipe, e garantir que, após a migração, seu time tenha conhecimento suficiente para lidar com o novo ambiente.

Recursos financeiros: orçamento adequado para infraestrutura, ferramentas e consultoria, se necessário.

Recursos de tempo: prazos realistas que não comprometam a operação do negócio.

Envolver a equipe técnica

Realize reuniões regulares de alinhamento, estabeleça canais de comunicação claros e delegue responsabilidades específicas para garantir que todas as áreas críticas sejam cobertas. Lembre-se, uma equipe bem alinhada é a chave para uma migração bem-sucedida e sem estresse.

Além disso, avalie se sua equipe tem o conhecimento necessário para realizar essa migração de forma segura ou para trabalhar no novo ambiente. Se a resposta for não, considere contratar uma empresa especializada ou consultoria externa para garantir uma migração segura e eficiente.

Preparação do ambiente

A preparação e o reconhecimento do ambiente é um processo que envolve várias atividades críticas que ajudam a identificar, planejar e configurar todos os aspectos necessários para a nova infraestrutura de banco de dados. Aqui estão alguns pontos a serem considerados:

Avaliação do Ambiente Pré-Migração

É essencial entender a condição atual do seu ambiente, identificando os bancos de dados existentes, analisando as aplicações que interagem com estes bancos e realizando o mapeamento de todas as dependências;

Levantamento de Requisitos

Também é preciso definir as especificações que o novo ambiente PostgreSQL deve atender. Isso inclui verificação da capacidade de armazenamento, requisitos de alta disponibilidade e recuperação de desastres, por exemplo. De modo que as especificações do novo ambiente Postgres estejam bem definidas.

Configuração do Ambiente

Um dos principais pontos é preparar o ambiente físico ou virtual que hospedará o PostgreSQL. Isso envolve configurar os servidores, instalar e configurar o sistema operacional recomendado e, dessa forma, garantir que a infraestrutura de rede esteja otimizada para a comunicação entre o banco de dados e as aplicações.

Planejamento de Backup e Recuperação de Dados

Nesta etapa cabe estabelecer uma estratégia de backup e recuperação de dados. Isso inclui definir políticas claras de backup regular e realizar testes de recuperação para validar a integridade dos backups e a eficácia dos procedimentos de recuperação;

Seleção de Ferramentas de Migração

É necessário escolher ferramentas que facilitem a migração de dados e esquemas, como pg_dump, pg_restore, entre outras. Essas ferramentas são essenciais para garantir que a migração ocorra de maneira suave e sem perda de dados.

Preparar o ambiente de maneira adequada garante uma cobertura de todos os aspectos críticos, minimizando os riscos e preparando o caminho para uma migração segura e eficaz do seu ambiente.

Testes

A etapa de testes é essencial no processo de migração, garantindo que tudo ocorra conforme o esperado e evitando surpresas desagradáveis. Diversos tipos de testes podem ser realizados utilizando as ferramentas que o PostgreSQL oferece, como por exemplo pgTAP, pgbadger e pgbench.

Testes de validação de dados: nesta etapa, os dados do banco de origem são comparados com os dados do banco destino para garantir que foram migrados corretamente e sem perdas. Também são verificadas as relações entre as tabelas e a estrutura dos índices, chaves, etc.

Testes de carga: no teste de carga, o desempenho do banco de dados é avaliado sob diferentes níveis de carga para identificar potenciais gargalos e áreas de melhoria. Nesta etapa também podem ser feitos testes de stress e de escalabilidade para verificar como o banco lida em situações extremas de alta demanda, quando o volume de dados e a carga aumentam.

Testes de segurança: os testes de segurança garantem que as permissões e os controles de acesso foram configurados corretamente no novo banco de dados. Eles ajudam a identificar e corrigir possíveis vulnerabilidades de segurança no novo ambiente.

Testes de recuperação: o objetivo desta etapa é garantir que os processos de backup e restauração funcionem corretamente no PostgreSQL. Aqui também é possível realizar testes de recuperação de desastres para validar a capacidade de se recuperar de falhas de maneira eficaz.

Migração de Dados

Após completar todas as fases de planejamento, preparação do ambiente e testes, a migração para PostgreSQL está pronta para ser implementada na sua fase final, onde os dados são efetivamente migrados.

Backup: Como medida de precaução, é essencial fazer um backup completo dos dados, antes de iniciar, utilizando ferramentas confiáveis como pg_dump, pg_restore, entre outras.

Validação e Migração: Durante a migração, é recomendado validar os dados e migrá-los em etapas, monitorando o processo continuamente para garantir uma transição suave e segura.

Documentação e Treinamento: A documentação do processo e um treinamento à equipe são a cereja do bolo para garantir uma transição eficaz para o novo ambiente PostgreSQL.

Adaptação de Aplicações

Por fim, após a migração e com o ambiente Postgres devidamente sustentável, é necessário adaptar todas as aplicações que utilizarão o PostgreSQL. Essa adaptação envolve atualizar as conexões de banco de dados, ajustar as consultas SQL específicas para a sintaxe e otimização do Postgres e realizar testes de desempenho e funcionalidade para assegurar que todas as aplicações estejam operando corretamente com o novo banco de dados.

Conclusão

Migrar para PostgreSQL vai muito além da migração em si e pode ser um verdadeiro divisor de águas para sua organização. Além de oferecer benefícios imediatos, como um desempenho aprimorado e custo-benefício, o Postgres proporciona uma base sólida para inovações futuras. Com um planejamento cuidadoso e uma execução detalhada, a migração pode ser um processo tranquilo e bem-sucedido.

Conte conosco!

Se após essas explicações você continuar se sentindo desconfortável e pensando que o processo de migração é um grande desafio, nós podemos te ajudar! Somos especialistas em consultoria Postgres e podemos oferecer todo o suporte necessário para garantir que sua migração seja tranquila e eficaz. Desde a avaliação inicial até o treinamento pós-migração, estamos prontos para apoiar você em cada passo do caminho.

[Quero falar com a Timbira!]

[Quero receber conteúdos de Postgres no meu e-mail]

PostgreSQL: Guia de Flexibilidade e Desempenho

By Institucional No Comments

Quando dizemos que “Postgres é o caminho”, não estamos apenas afirmando que ele serve para tudo – estamos destacando que o PostgreSQL é capaz de se adaptar a diversas necessidades, oferecendo uma gama de possibilidades que vão além do básico. Para os DBAs, essa flexibilidade significa que o Postgres pode ser moldado de acordo com as demandas específicas de cada projeto, transformando desafios em oportunidades.

Construir um ambiente de banco de dados que atenda exatamente às necessidades do seu negócio exige mais do que conhecimento técnico; é preciso uma compreensão das ferramentas e extensões disponíveis no ecossistema Postgres. Este guia de flexibilidade e desempenho foi criado para ajudar você a navegar por essas possibilidades e resolver os problemas que surgem no seu dia a dia apenas utilizando o Postgres.

1. Desempenho Degradado ao Lidar com Grandes Volumes de Dados

Utilize a extensão pg_partman para particionamento de tabelas.

  • Quando usar: Quando você percebe que a performance do banco de dados está diminuindo devido ao crescimento contínuo de uma tabela específica, especialmente aquelas que armazenam dados históricos ou de longo prazo.
  • Como funciona: O pg_partman permite particionar tabelas de forma automática, dividindo os dados em segmentos menores e mais gerenciáveis. Isso facilita a manutenção e melhora o desempenho das consultas, especialmente as que envolvem grandes volumes de dados frios.

2. Processamento Ineficiente de Dados Geoespaciais

Implemente a extensão PostGIS.

  • Quando usar: Quando o seu projeto envolve a manipulação e análise de dados geoespaciais, como coordenadas, mapas ou informações geográficas, e as consultas relacionadas estão se tornando complexas e lentas.
  • Como funciona: O PostGIS expande o Postgres com suporte completo para tipos de dados e funções geoespaciais. Ele transforma o Postgres em um sistema de gerenciamento de informações geográficas (SIG), permitindo a manipulação e análise avançada de dados espaciais, como consultas espaciais, operações geométricas e análise de proximidade, o que resulta em consultas mais eficientes e precisas para dados geoespaciais.

3. Identificação e Otimização de Queries Lentas

Use a extensão pg_stat_statements para monitoramento de desempenho.

  • Quando usar: Quando o banco de dados começa a apresentar lentidão em operações críticas e você precisa identificar quais consultas estão causando o problema.
  • Como funciona: O pg_stat_statements coleta estatísticas detalhadas sobre todas as consultas executadas no PostgreSQL. Ele armazena informações agregadas sobre as consultas, como a frequência de execução, o tempo total gasto e o número de leituras e gravações realizadas. Isso permite identificar quais consultas são mais frequentes e têm maior impacto na performance do banco de dados. Com essas informações, você pode focar esforços de otimização nas queries que realmente fazem a diferença.

4. Necessidade de Implementar Auditoria de Acessos e Modificações

Configure a extensão pgAudit para auditoria detalhada.

  • Quando usar: Quando há necessidade de cumprir exigências de conformidade, como as impostas por regulamentações de proteção de dados, que exigem registros detalhados de acessos e modificações no banco de dados.
  • Como funciona: O pgAudit fornece um mecanismo robusto para auditoria, registrando atividades específicas no banco de dados, como leituras, escritas, ou modificações em dados sensíveis. Isso é crucial para garantir a conformidade e monitorar a segurança do banco de dados.

5. Complexidade na Implementação de Alta Disponibilidade

Utilize a ferramenta Patroni para gerenciar clusters de PostgreSQL.

  • Quando usar: Quando você precisa garantir alta disponibilidade e resiliência do banco de dados, especialmente em ambientes críticos onde o downtime não é uma opção.
  • Como funciona: O Patroni simplifica a configuração e o gerenciamento de clusters de PostgreSQL, permitindo a criação de ambientes altamente disponíveis com failover automático. Ele gerencia a replicação e o estado dos nós, garantindo que o banco de dados esteja sempre disponível.

6. Necessidade de Gerenciar Replicação em Larga Escala

Implemente o pglogical para replicação lógica.

  • Quando usar: Quando você precisa replicar dados entre diferentes servidores ou ambientes, como para migrações, upgrades ou sincronização entre sistemas distribuídos, e a replicação nativa não atende aos requisitos de flexibilidade.
  • Como funciona: O pglogical oferece replicação lógica, permitindo replicar dados entre instâncias de PostgreSQL de maneira seletiva e flexível. Isso é ideal para migrações entre diferentes versões do Postgres ou quando você precisa replicar apenas parte dos dados para outro ambiente.

Explore o Potencial Infinito do PostgreSQL

O Postgres não só permite, mas encoraja, a personalização e a inovação. Com as ferramentas e estratégias corretas, você pode transformar qualquer desafio em uma oportunidade, adaptando o PostgreSQL às necessidades específicas de seu projeto e garantindo que ele cresça de maneira sustentável. Este guia é apenas o ponto de partida; continue explorando e adaptando o Postgres para criar soluções que realmente façam a diferença.

Saiba mais!

Como está o seu banco de dados? A Timbira pode te ajudar com uma consultoria especializada em PostgreSQL. Conte com o nosso time para ajudar o seu banco a performar e ser responsivo. Inscreva-se na nossa newsletter mensal e no nosso canal do Youtube, por lá compartilhamos diversos conteúdos sobre Postgres, dicas, posts exclusivos e você pode participar de eventos ao vivo sobre PostgreSQL no #CaféComPostgres.

[Quero falar com a Timbira!]

[Quero receber conteúdos de Postgres no meu e-mail]

Autovacuum: O Lado Bom e os Cuidados Necessários no PostgreSQL

By Institucional No Comments

O PostgreSQL é um dos bancos de dados relacionais mais robustos e populares atualmente, amplamente utilizado por empresas de diversos setores. Um dos recursos fundamentais para a manutenção do desempenho do PostgreSQL é o Autovacuum. Contudo, como qualquer ferramenta poderosa, o autovacuum deve ser configurado e gerenciado adequadamente para evitar problemas.
Neste artigo, exploraremos o lado bom do autovacuum e os cuidados necessários para garantir que ele funcione da melhor maneira possível. Também falaremos sobre a importância de configurá-lo corretamente, no PostgreSQL, para evitar problemas de desempenho e assegurar a manutenção adequada do banco de dados.

1. O que é o Autovacuum?

O autovacuum é um recurso essencial no Postgres, responsável por limpar e atualizar tabelas automaticamente, ajudando a manter o desempenho do banco de dados. Ele evita a degradação do desempenho e garante que as tabelas não cresçam desnecessariamente, o que poderia levar a problemas de lentidão e falhas no banco de dados.

2. A Importância do AutoVacuumFreezeMaxAge

Um dos pontos críticos ao falar sobre autovacuum, é o parâmetro AutoVacuumFreezeMaxAge. Este parâmetro determina a idade máxima das transações antes que o “vacuum to prevent wraparound” seja acionado para realizar uma limpeza, podendo causar uma indisponibilidade do banco de dados. Isso reforça a importância de um bom ajuste do parâmetro de autovacuum, pois com rotinas de limpezas bem ajustadas, não teremos a execução de um “vacuum to prevent wraparound” e garantimos a não indisponibilidade do PostgreSQL.

3. Ajustes Específicos para Objetos do Banco de Dados

O autovacuum deve ser ajustado para objetos específicos dentro do banco de dados. Isso evita que ele limpe tabelas que não necessitam de limpeza frequente, poupando recursos e melhorando a eficiência. Em casos de tabelas grandes, é crucial monitorar o tempo que o autovacuum leva para completar suas tarefas, pois, em alguns casos, pode ser mais rápido executar um vacuum na tabela de forma manual ou configurar em um agendador.

4. Monitoramento dos Logs do Autovacuum

A monitoração constante dos logs é outra recomendação importante. Através deles, é possível identificar e resolver problemas antes que eles afetem significativamente o banco de dados. Monitorar os logs pode ajudar a evitar tempos de inatividade inesperados ou até mesmo a perda de dados.

5. Manutenção Adequada para Evitar Problemas

Manter o autovacuum funcionando de maneira eficiente envolve não apenas a configuração inicial adequada, mas também a manutenção contínua e ajustes conforme o comportamento das tabelas do banco de dados. É importante realizar verificações periódicas das estatísticas das tabelas e dos logs do autovacuum para identificar possíveis melhorias ou problemas emergentes. Ajustes podem incluir a modificação dos gatilhos para o início das operações dos processos do autovacuum nas tabelas, bem como parâmetros de custos e intervalo de inicialização para que as operações de vacuum (limpeza) não impactem negativamente o desempenho durante períodos de alta carga. Além disso, considerar a utilização de estratégias de vacuum manual para tabelas menos transacionais, liberando IDs de transação e garantindo uma boa otimização da tabela, pode ser uma boa prática.

Saiba mais!

Como está o seu banco de dados? A Timbira pode te ajudar com uma consultoria especializada no PostgreSQL. Conte com o nosso time para ajudar o seu banco a performar e ser responsivo. Inscreva-se na nossa newsletter mensal e no nosso canal do Youtube, por lá compartilhamos diversos conteúdos sobre Postgres, dicas, posts exclusivos e você pode participar de eventos ao vivo sobre PostgreSQL no #CaféComPostgres.

[Quero falar com a Timbira!]

[Quero receber conteúdos de Postgres no meu e-mail]

Repatriação de dados: Uma Estratégia Essencial no Panorama Tecnológico Atual

By Institucional No Comments

À medida que as preocupações com segurança cibernética, privacidade de dados e soberania tecnológica aumentam, mais empresas e governos estão reconhecendo a importância de ter controle direto sobre seus dados. Esse controle é alcançado por meio da repatriação de dados, que envolve trazer informações sensíveis de volta para servidores e data centers nacionais.

O que é Repatriação de Dados?

Resumidamente, a repatriação de dados é o processo de transferir dados de servidores ou data centers estrangeiros de volta para o país de origem. Isso é feito, principalmente, para garantir maior controle, segurança e conformidade com regulamentações locais. Ao repatriar os dados, as empresas podem armazenar e gerenciar suas informações sensíveis em conformidade com as leis e regulamentos do país onde estão sediadas, reduzindo assim o risco de violações de segurança e conformidade.

Vantagens da Adoção de Repatriação de Dados

A repatriação de dados oferece várias vantagens estratégicas que podem beneficiar tanto empresas quanto governos, especialmente no contexto tecnológico atual. Vamos explorar essas vantagens em detalhe:

Maior Controle e Segurança de Dados

Uma das vantagens mais evidentes da repatriação de dados é o aumento do controle sobre as informações críticas das organizações. Ao trazer os dados de volta para casa, as empresas podem exercer maior supervisão sobre como eles são gerenciados, armazenados e protegidos. Com controle total, as organizações podem garantir que apenas as pessoas autorizadas tenham acesso às informações sensíveis, diminuindo os riscos de uso indevido e exposição de dados. Manter os dados dentro das fronteiras nacionais pode reduzir os riscos de exposição a violações de segurança, espionagem e acesso não autorizado.

Conformidade com Regulamentações

A repatriação contribui significativamente para uma maior conformidade com regulamentações e leis locais e internacionais. Muitos países têm leis específicas que regem como os dados dos cidadãos devem ser tratados e protegidos. Ao armazenar os dados dentro das fronteiras nacionais, as empresas podem garantir que estão em conformidade com as regulamentações do seu país, evitando potenciais conflitos com outras legislações. A conformidade regulatória não apenas reduz o risco de penalidades legais e financeiras, mas também aumenta a confiança dos clientes e parceiros.

Soberania Tecnológica e Independência Nacional

Repatriar dados envolve a capacidade de um país ou organização proteger seus sistemas de informação, dados e infraestrutura digital contra influências externas indesejadas, garantindo assim sua integridade, segurança e confiabilidade. Isso fortalece a soberania tecnológica, permitindo que as empresas e governos mantenham o controle total sobre suas informações críticas e infraestrutura digital.

Resiliência Operacional

A repatriação de dados garante que as organizações possam enfrentar e superar desafios e interrupções de forma eficaz e eficiente. Ao adotar uma abordagem proativa, é possível minimizar riscos e garantir a continuidade das operações. Isso inclui a capacidade de recuperar rapidamente os dados e continuar as operações mesmo diante de crises ou falhas de infraestrutura.

Redução de Custos a Longo Prazo

Embora a repatriação de dados envolva custos iniciais de migração, por exemplo, o potencial de economias a longo prazo é um dos principais fatores que impulsionam as empresas a optar por essa estratégia. Ao repatriar, as empresas podem reduzir significativamente os custos contínuos associados à manutenção de infraestruturas de armazenamento de dados em servidores internacionais. Isso inclui economias em taxas de serviço, manutenção e suporte, além de evitar custos associados a conformidade com regulamentações internacionais.

Aumento da Confiança e Reputação

A conformidade regulatória e a segurança aprimorada resultantes da repatriação de dados não apenas reduzem os riscos de penalidades legais e financeiras, mas também aumentam a confiança dos clientes e parceiros. Empresas que demonstram um compromisso com a proteção de dados e a conformidade regulatória ganham uma reputação positiva, o que pode ser um diferencial competitivo significativo.

Tendências Futuras

Regulamentações mais rigorosas

À medida que os governos ao redor do mundo implementam leis de privacidade de dados mais rigorosas, a necessidade de repatria-los para garantir conformidade continuará a crescer.

Adoção de tecnologias de nuvem híbrida

As empresas estão cada vez mais adotando modelos de nuvem híbrida que combinam infraestruturas locais com serviços de nuvem pública, facilitando a repatriação de dados e garantindo flexibilidade e segurança.

Desenvolvimento de infraestruturas locais

Investimentos em data centers locais e infraestrutura de TI aumentarão, permitindo uma transição mais suave para a repatriação.

Conclusão

A repatriação de dados representa uma estratégia essencial no atual panorama tecnológico, oferecendo às empresas e governos maior controle, segurança e conformidade regulatória.

É crucial que as organizações estejam cientes dos desafios envolvidos, como os custos iniciais e a complexidade do processo de migração. Planejamento cuidadoso, uso de tecnologias adequadas e consideração das regulamentações internacionais são essenciais para uma transição bem-sucedida e a garantia de que será uma decisão financeiramente sensata a longo prazo.

Olhando para o futuro, a repatriação de dados continuará a ser uma prioridade à medida que as regulamentações de privacidade de dados se tornarem mais rigorosas e as preocupações com a soberania tecnológica aumentarem. A adoção de práticas sustentáveis e a construção de uma infraestrutura tecnológica robusta localmente, também desempenharão um papel crucial nesse processo.

Conte conosco!

Oferecemos consultoria especializada em PostgreSQL para ajudar empresas a encontrarem um crescimento tecnológico sustentável através de uma combinação de expertise técnica e visão de negócios, que vai do panorama estratégico até a implementação operacional. Estamos prontos para oferecer suporte contínuo, assegurando que seus dados permaneçam seguros e suas operações não parem.

[>> Quero falar com a Timbira!]

PGConf Brasil 2022 – DBA Balboa: Como a resiliência de Rocky pode impactar na sua jornada? Por Emanuel Araujo Carneiro

By Institucional No Comments

Pensando sobre o ecossistema de Rocky Balboa (Sylvester Stallone), seja você um amante ou não dos filmes, é inegável que a série traz um drama especial com fases que sustentam e evoluem uma necessidade intrínseca muitas vezes identificada tardiamente: a resiliência.

Na PGConf.Brasil 2022, Emanuel Araujo consultor da Timbira, explicou que a resiliência nada mais é do que nossa capacidade de adaptação em meio a situações complicadas ou adversas. Durante sua palestra, ele definiu a adaptação como um equilíbrio físico e psicológico diante das adversidades cotidianas. E também que, embora não tenhamos controle sobre todos os aspectos de nossas vidas e eventos aleatórios que nos acometem, temos o controle sobre o modo como reagimos a essas situações.

Você tem poder sobre sua mente – não sobre eventos externos. Perceba isso e você encontrará sua força” (Marco Aurélio).

Emanuel destacou que Marco Aurélio já nos alertava sobre a importância de lidarmos com nossos pensamentos e não nos deixarmos abater por eventos externos. A trajetória de Rocky exemplifica como um conjunto de experiências pode fortalecer a resiliência e o amadurecimento pessoal ao longo dos filmes.

Traçando um paralelo entre os quatro primeiros filmes da série, e os quadrantes de maturidade, Emanuel explicou como funciona esse modelo teórico usado para descrever os estágios de desenvolvimento de habilidades, competências ou maturidade em diversos contextos, sejam pessoais, profissionais ou organizacionais.

Quadrante M1

No início, Rocky é um iniciante desajeitado e canhoto, um estrangeiro no mundo do boxe, mas de bom coração (M1). Ele não tem capacidade técnica e precisa apenas executar sem pensar muito. O bom coração de Rocky reflete suas soft skills, que se desenvolvem ao longo da série, acompanhando sua evolução.

Quadrante M2

Seguindo o roteiro, depois de empatar na sua luta final, podemos dizer que Rocky passou de fase. Chegando então ao quadrante M2, já possuindo experiência mínima, é bem visto pelo público, ganhou confiança e agora precisa não apenas executar, mas adquirir a competência de pensar antes de agir, ou seja, planejar sua execução. Com a nova grande chance que tem, seu treino se torna mais customizado e sua responsabilidade aumenta a cada novo dia. O planejamento da nova estratégia de luta foi decisivo e ao final o tornou campeão mundial de boxe.

Quadrante M3

No terceiro quadrante, surgem as armadilhas do nível 3 de maturidade: o excesso de confiança, conforto e a incapacidade de pensar em riscos. Um bom momento para reparar que em momentos da vida podemos estar no topo e em seguida no chão do ringue. Rocky se vê em um buraco, pois além de perder vergonhosamente o título mundial, perde seu treinador Mickey (Burgess Meredith), que morreu de ataque cardíaco antes da luta com Clubber Lang (Mr. T) iniciar. Existem grandes batalhas na vida e perder entes queridos é uma delas. A culpa de não poder ter feito mais, a dependência de não poder contar com determinadas pessoas, passa dia após dia em nossas mentes, nos testando ou nos preparando. No terceiro nível de maturidade ocorrem situações onde precisamos saber muito bem quem somos, para não assumirmos o que não podemos, achando que somos invencíveis, até nos depararmos com uma palavrinha chamada medo.

O medo é diferente do pânico 

Medo é estado de alerta, é um sentimento que nos dá a capacidade de reagir, de planejar, de ter o cuidado com o que estamos fazendo e com as situações em que nos encontramos. Foi justamente o reconhecimento disso e o apoio de sua esposa Adrian (Talia Shire) que fizeram Rocky mudar o seu posicionamento e voltar a treinar. Agora com seu ex-adversário, e então amigo, Apollo (Carl Weathers), Rocky possui o suporte necessário para desenvolver um planejamento, uma estratégia de luta com disciplina e alegria de estar fazendo o que gosta com as pessoas certas ao seu lado, um verdadeiro time, para no final voltar a ser o campeão mundial de boxe.

Quadrante M4

No quadrante M4, Rocky enfrenta uma nova adversidade: a morte de Apollo Creed. Depois de ter passado por várias situações da vida, a morte de Mickie, o topo, a família, o fracasso, o medo, com o nível de resiliência alto, Rocky passa por uma nova fase. Em meio a um contexto de rivalidade entre EUA e URSS, o que deveria ser uma luta de exibição acaba com a morte de seu amigo e treinador, Apollo. A grande diferença do quadrante M4 é que nosso nível de resiliência está mais robusto, preenchido de experiências e sentimentos já conhecidos, e com isso temos a capacidade de adaptação aos novos eventos, reconhecê-los, resolvê-los ou tomar decisões com muito mais controle. 

A cena em que Rocky está dirigindo seu carro após o enterro de Apollo, mostra a capacidade de refletirmos sobre nosso passado, erros, acertos e sentimentos. O filme que passa pela cabeça de Rocky mostra exatamente isso. A sua decisão de lutar na URSS, no dia de Natal, em um local completamente adverso, não apenas pelo frio intenso, mas também pela hostilidade que encontrará por ser um lutador americano, demonstra claramente sua evolução dentro da trajetória de maturidade. Rocky compreende a dificuldade que enfrentará e olha para todo o processo através de uma lente de humildade, buscando abrigo no isolamento e focando todos seus esforços em treinar sem ninguém para julgar ou atrapalhar a concentração de seu treino. Consciente do momento que está vivendo ele traz para perto de si aquelas pessoas em quem ele confia plenamente e que lhe dão o suporte necessário para atingir seus objetivos. Todas essas etapas sendo muito bem pensadas, planejadas e com a equipe certa para fazer o trabalho certo, o levaram aos melhores resultados possíveis.

Rocky V

“Rocky 5” fecha com chave de ouro o pilar de liderança espontânea, quando Rocky passa a treinar um jovem potencial, do zero ao título. Isso não seria algo comum aos líderes que transformam empresas? Ser o agente de mudança de sua equipe ou de sua família? Essa continuação podemos deixar para um próximo post.

Processo de Maturidade

Esse ciclo de maturidade representa vários contextos e está representados em cada etapa de nossa vida profissional e pessoal, o exemplo do Rocky Balboa é apenas uma forma de ilustrarmos essa trajetória. Posso ser M1 na cozinha e M4 em programação java, por exemplo. Cada competência, etapa ou contexto evolui através de um processo de maturação que está intrinsecamente ligado às experiências acumuladas ao longo do tempo. Esse processo não apenas fortalece nossa resiliência, como também amplia nossa capacidade de lidar com desafios e adversidades.

Keep calm, reflita e vamos buscar ser melhores do que ontem.

[Quero assistir a palestra completa]

Automatização de tarefas repetitivas no PostgreSQL: agilizando operações e reduzindo erros

By Institucional No Comments

Em um ambiente dinâmico de gerenciamento de banco de dados PostgreSQL, a eficiência operacional é muito importante para garantir a estabilidade e o desempenho consistentes. Uma abordagem fundamental para alcançar esse objetivo é a automatização de tarefas repetitivas, um processo que não apenas economiza tempo, mas também minimiza a probabilidade de erros humanos.

Por que automatizar?

Tarefas operacionais, como backup, otimização de índices e monitoramento, frequentemente consomem recursos significativos, exigindo intervenção manual frequente. A automação dessas tarefas não apenas libera a equipe para se concentrar em atividades mais estratégicas, mas também reduz a margem de erro humano, associada a intervenções manuais repetitivas. Como, por exemplo:

1- Backups: o time que administra o banco de dados pode esquecer de fazer backups regularmente, o que pode resultar na perda de dados em caso de falha no sistema.

2- Scripts SQL: ao executar manualmente scripts SQL para tarefas como limpeza de dados antigos ou otimização de consultas, a pessoa que está digitando os comandos, pode cometer erros de sintaxe que geram retrabalho ou mesmo erros de lógica, que podem causar problemas de integridade.

3- Comandos incorretos: ao executar rotineiramente comandos manuais, uma pessoa operando o banco pode executar comandos incorretos por engano. Um exemplo é executar um expurgo manual de dados e esquecer de utilizar algum filtro ou mesmo colocar um “;” (ponto-e-vírgula) onde não deveria e, com isso, excluir dados importantes em vez de dados obsoletos, durante esta limpeza de dados antigos.

4- Otimizações regulares: sem automatização, o time que administra o banco de dados pode esquecer de realizar otimizações regulares, levando à degradação do desempenho ao longo do tempo.

5- Monitorar o desempenho: sem ferramentas de automação para coletar dados, monitorar o desempenho do banco de dados e emitir notificações, o time que opera o banco o ambiente pode não identificar problemas de desempenho até que eles afetem negativamente os usuários finais.

Como automatizar?

Para efetuar tarefas repetitivas — tais como a realização de backups, a exclusão de dados obsoletos e a otimização de objetos no banco — uma prática comum de automação no PostgreSQL envolve a criação de scripts utilizando linguagens como Bash ou Python, e, em alguns casos, até mesmo PL/pgSQL. 

Abaixo, apresentamos dois exemplos de tarefas usuais e como podemos automatizá-las.

Backups

Os backups constituem uma medida fundamental para proteger os dados contra perdas ou danos. No contexto do PostgreSQL, é possível efetuar backups recorrendo a utilitários como o pg_dump, para backups lógicos, ou pg_basebackup, para backups físicos.

A automatização pode ser feita por meio de scripts ou recorrer a ferramentas de automação e agendamento que permite programar a execução de backups automáticos em momentos específicos. Por exemplo, pode-se elaborar um script configurado para realizar backups diários no período da madrugada, aproveitando a redução da atividade no sistema.

Em sistemas Linux é comum utilizar o utilitário “crontab” que é uma ferramenta disponível utilizada para agendar a execução automática de tarefas em horários específicos. Isso o torna útil para automatizar uma série de operações de manutenção de bancos de dados PostgreSQL, como backups, por exemplo.

Um exemplo prático é que podemos agendar um script que executa o pg_dump ou pg_basebackup para executar automaticamente durante a madrugada. Por exemplo, para um backup diário às 2 AM, uma entrada no crontab pode parecer com isso:

0 2 * * * /caminho/para/script_backup.sh

Já no Windows, você pode utilizar o Agendador de Tarefas que pode ser chamado pelo comando taskschd.msc. A diferença é que, no Windows, você criará um script em um arquivo BAT ou em Power Shell que será executado pelo agendador de tarefas conforme o agendamento configurado.

> Para saber mais sobre crontab 
> Para saber mais sobre o Agendador de Tarefas

Limpeza de dados antigos

Em muitos sistemas, é necessário remover periodicamente dados antigos para manter o banco de dados limpo e otimizado. Isso é importante em bancos de dados com grande volume de dados que podem impactar no desempenho das consultas.
A automatização nestes cenários pode ser feita através de procedures em PL/SQL ou mesmo PL/pgSQL, desenvolvendo mecanismos para identificar e excluir registros com base em critérios de validade ou outros critérios específicos. Essas procedures podem ser agendadas para executarem em intervalos regulares, garantindo que dados obsoletos sejam removidos automaticamente.
Uma vez que você tenha implementado a sua regra em uma procedure no Postgres, você pode utilizar a extensão “pg_cron” para agendar as execuções. Veja o exemplo abaixo onde uma procedure que remove registros criados há mais de 1 ano:

CREATE OR REPLACE PROCEDURE expurgar_dados_antigos()
LANGUAGE sql
AS $$
DELETE FROM registros
WHERE data_criacao < NOW() – INTERVAL ‘1 year’;
$$;

Agora, suponha que este procedimento precise executar diariamente às 3 horas da madrugada. Utilizando o pg_cron podemos criar um agendamento recorrente com um simples comando:

SELECT cron.schedule(‘expurgo’, ‘0 3 * * *’, ‘CALL expurgar_dados_antigos()’);

Caso queira desabilitar este expurgo por algum motivo, você pode utilizar o comando:

SELECT cron.unschedule(‘expurgo’);

> Para saber mais sobre procedures 
> Para saber mais sobre pg_cron

Esses são apenas alguns exemplos para servirem como ponto de partida e podem ser adaptados para suas necessidades.

Ganho de Eficiência e Redução de Riscos

Em resumo, a automatização de tarefas repetitivas no PostgreSQL não é apenas uma prática conveniente, mas uma estratégia essencial para otimizar operações e reduzir erros operacionais. Ao adotar uma abordagem proativa para a gestão de tarefas rotineiras, as equipes de banco de dados podem garantir a estabilidade, eficiência e integridade dos dados, posicionando-se para enfrentar desafios operacionais com confiança.

Se você está buscando otimizar o desempenho e a confiabilidade do seu banco de dados PostgreSQL, a Timbira está aqui para ajudar. Podemos oferecer orientação especializada para automatizar tarefas repetitivas, implementar melhores práticas e garantir que seu banco de dados esteja funcionando de forma eficiente e segura.

[>> Quero falar com a Timbira]

PostgreSQL: Versão 11 não receberá mais atualizações!

By Institucional No Comments

No dia 09 de novembro de 2023, o PostgreSQL 11 chegou ao fim de sua vida útil e não receberá mais correções de bugs e atualizações de segurança.
Lançada em 18 de outubro de 2018, a versão 11 nos trouxe algumas melhorias significativas, que nos permitiram extrair resultados aprimorados no PostgreSQL. Entre essas melhorias, destacamos algumas:

  • Particionamento
    Possibilidade de criar um particionamento por uma chave hash;
    Suporte à criação de uma partição padrão, que permitiu armazenar o dado que não corresponde com a regra das partições existentes;
    Melhoria no planejamento de consultas que utilizam tabelas particionadas, possibilitando a eliminação de partições desnecessárias durante a execução;
  • Paralelismo
    Possibilidade de criação de um índice btree de forma paralelizada;
    Melhoria de desempenho nos hash joins e varreduras sequenciais;
  • Procedures
    Foi adicionado o suporte a procedures, garantindo maior compatibilidade com outros banco de dados de mercado;
  • Índices
    Adicionado a cláusula INCLUDE, que permite especificar uma lista de colunas que serão incluídas no índice;
  • Desempenho
    Foi aprimorado com a capacidade de evitar a reescrita de uma tabela para um ALTER TABLE … ADD COLUMN com um default de coluna non-null;
  • Just-in-time Compilation (JIT)
    Adição do parâmetro JIT, , que determina se a compilação JIT pode ser usada pelo PostgreSQL para acelerar a avaliação de expressões.

Atualmente, o PostgreSQL adota uma política de versionamento, lançando uma nova versão a cada ano, geralmente entre os meses de Agosto e Novembro. Após o lançamento, cada versão é suportada por cinco anos, o que significa que ela não receberá novos recursos, apenas correções de bugs e atualizações de segurança. Caso queira saber mais sobre esse ponto, você pode acompanhar a política de versionamento neste link.

Diante dessa informação, nossa recomendação para a maioria dos casos é a migração para uma versão mais recente do PostgreSQL. No entanto, surge uma pergunta importante: quando é o momento adequado para realizar essa atualização? Sabemos que uma migração envolve diversas variáveis, incluindo esforço financeiro e humano. No intuito de auxiliar nessa tomada de decisão, elencamos alguns pontos importantes a serem considerados para escolha do momento ideal para implementar esse processo nos seus ambientes PostgreSQL.

Fim do suporte da sua versão atual

Seguindo a política de versionamento, uma versão, após ser lançada, recebe aproximadamente cinco anos de suporte pela comunidade. Nesse sentido, as atualizações de segurança ou correções de bugs, vitais para manter seu ambiente sustentável, têm uma data prevista para serem encerradas, a partir da expiração desse prazo.

Crescimento da demanda do seu banco de dados

Com o crescimento do seu negócio, o seu ambiente postgreSQL pode demandar melhores tempos de resposta e esse pode ser um ponto importante na decisão de migrar. A cada versão o PostgreSQL adiciona novos recursos, mas também aperfeiçoa recursos existentes. Com isso, manter seu ambiente atualizado garantirá uma melhor utilização dos recursos computacionais e, consequentemente, isso se refletirá no usuário final.

Necessidade de novas funcionalidades em seu negócio

A cada nova versão, são lançados novos recursos que têm o potencial de aprimorar a eficiência operacional. Portanto, ao planejar uma migração, você estará incorporando essas funcionalidades ao seu ambiente, garantindo melhores resultados para o seu negócio.

Aprimoramento da eficiência operacional

Novas versões trazem melhorias nas ferramentas de administração e manutenção do PostgreSQL. Se você busca melhorar a sua eficiência operacional, é um ponto a se considerar na decisão de migrar para uma versão mais recente.

Segurança é um ponto chave para o seu negócio

A cada nova versão, são incorporados novos recursos de segurança. Nos dias de hoje, considerando que os dados são vistos como o “novo petróleo”, é crucial manter a máxima precaução nesse aspecto. Manter-se sempre atualizado ajudará a evitar possíveis problemas e vulnerabilidades, uma vez que questões já identificadas e corrigidas estão presentes nas versões mais recentes.

A utilização de novas tecnologias é um destaque em relação aos seus concorrentes

Constantemente, novas ferramentas são desenvolvidas, drivers de conexão são atualizados e bibliotecas emergem. Manter uma versão desatualizada do PostgreSQL pode limitar o acesso a esses recursos inovadores. Por essa razão, consideramos este um ponto fundamental e estratégico para o seu negócio. Manter-se alinhado com as últimas tecnologias potencializará sua posição em relação aos concorrentes.
Além disso, migrar para uma versão mais recente pode proporcionar uma série de benefícios, incluindo melhoria de desempenho, suporte estendido, melhor gerenciamento de recursos, segurança aprimorada e a incorporação de novos recursos. Em uma próxima oportunidade, compartilharemos mais dicas e sugestões sobre como planejar essa atualização.

PostgreSQL 16

No dia 14 de setembro de 2023, foi anunciado o PostgreSQL 16, a versão mais recente do PostgreSQL. Nessa atualização, houve aprimoramentos significativos no desempenho, destacando melhorias notáveis em paralelismo de consultas, carregamento em massa e replicação lógica.
Entre os destaques estão a expansão da sintaxe SQL/JSON, estatísticas de monitoramento aprimoradas, flexibilidade no controle de acesso e políticas de segurança, melhorias de desempenho, replicação lógica a partir de instâncias standby e suporte a balanceamento de carga. O PostgreSQL 16 também traz melhorias na experiência das pessoas de desenvolvimento, introduzindo novos comandos no psql, suporte a agrupamentos de texto e a adição de métricas de E/S. Para mais detalhes, confira o link.

Processo de Migração

O processo de migração deve ser tratado como um projeto, dividido em várias fases, sendo a fase de homologação de suma importância e necessitando de cuidados especiais. Durante esse projeto, é crucial analisar todas as mudanças que ocorreram desde a versão atual até a versão alvo da migração. Essa atividade é fundamental para mapear os principais pontos de impacto do projeto. Recomenda-se sempre migrar para uma versão mais recente, e essas migrações devem ser incorporadas ao roadmap. Isso garante que as migrações ocorram em intervalos menores e com menor impacto de mudanças, facilitando a transição.

Atualmente, existem diversas estratégias para realizar a migração, como, por exemplo, o dump/restore, pg_upgrade ou até mesmo usando replicação lógica. A escolha desta estratégia dependerá de alguns fatores, como o tempo disponível para a janela de manutenção (downtime) e a estratégia de rollback.
Caso a decisão seja migrar para a última versão disponível do PostgreSQL, uma boa prática é aguardar pelo menos a primeira release de minor version (ex.: 16.1). Isso ajuda a prevenir possíveis riscos no ambiente causados por bugs na versão inicial.

Dica Importante!

Se você estiver executando o PostgreSQL 11 em um ambiente de produção, sugerimos que você faça planos para atualizar para uma versão mais recente e compatível do PostgreSQL. A migração para uma versão recente do PostgreSQL não é apenas uma atualização técnica, mas uma estratégia proativa para otimizar seu ambiente de banco de dados, melhorar a segurança, e se manter competitivo em um cenário tecnológico em constante evolução.

Se você precisa de ajuda no processo de planejamento, organização e implementação de uma migração no seu ambiente PostgreSQL, entre em contato com nosso time de atendimento. O futuro da sua empresa pode depender disso.

[>> Quero falar com a Timbira!]

Como o VACUUM pode influenciar o desempenho do seu PostgreSQL?

By Institucional No Comments

Uma característica importante do PostgreSQL é o isolamento de suas transações. Esse mecanismo utiliza o método MVCC (Multiversion Concurrency Control), ou Controle de Concorrência Multiversão. Este método apresenta vantagens e possibilidades a partir de seus mecanismos implementados, como, por exemplo, a redução de bloqueios ao permitir que várias transações simultâneas acessem os mesmos registros. Isso resulta em um cenário em que leituras não bloqueiam escritas e vice-versa. Por outro lado, uma desvantagem dessa arquitetura é o versionamento das linhas que não serão mais utilizadas (também conhecidas como tuplas mortas), exigindo algum mecanismo de limpeza.

Para solucionar esse problema, o PostgreSQL utiliza um recurso chamado VACUUM, que é responsável por efetuar essa limpeza. Esse recurso pode ser acionado manualmente por comandos simples ou de forma automática através do Autovacuum.

Neste texto, você poderá entender um pouco mais sobre o VACUUM e também sobre as melhorias implementadas na versão 16 do PostgreSQL, que foi lançada no dia 31 de agosto de 2023.

Quais são os tipos de Vacuum?

Antes de tudo é preciso compreender que o Vacuum no PostgreSQL apresenta algumas variações básicas. Aqui estão as principais:

VACUUM

De maneira simplificada, o VACUUM é uma ferramenta muito útil para identificar registros não utilizados no banco de dados, permitindo a recuperação de espaço em disco e melhorando o desempenho das consultas. Este comando pode operar em paralelo com a leitura e escrita normais da tabela, pois o Postgres não obtém um bloqueio exclusivo das tuplas desta tabela que sofre o VACUUM. Contudo, na maioria dos casos, o espaço extra não é devolvido ao sistema operacional; ele permanece disponível para reutilização na mesma tabela.

No PostgreSQL, os registros não são deletados fisicamente, mas marcados como inúteis, prática comum em diversas aplicações. De maneira geral, a ideia é tornar as operações de update mais eficientes e evitar um crescimento desnecessário da tabela, por isso entender a dinâmica do modelo de negócio é importante, assim como optar pela técnica do VACUUM mais adequada para cada banco de dados.

VACUUM FULL

O VACUUM FULL faz uma recriação de toda a tabela (objeto), deixando-a somente com registros válidos, pois ele grava uma nova cópia da tabela e não libera a tabela antiga até concluir a operação. Este procedimento requer cautela, pois é invasivo, precisa de espaço em disco suficiente, causa bloqueio da tabela e gera indisponibilidade de acesso durante sua execução. Dessa forma, é recomendável sempre programar uma janela de manutenção para esse tipo de procedimento.

Algumas empresas executam esse procedimento em situações bem específicas, como quando a base de dados atinge um tamanho considerável, com muitas tabelas, e existe a necessidade urgente de liberar espaço em disco, com a premissa de que downtime não prejudique os usuários. Uma dica importante: por questões de segurança, essa ação deve ser permitida apenas pelo superusuário do banco de dados e só pode ser executada de forma manual. Ou seja, nenhum processo do PostgreSQL executará um VACUUM FULL automático.

VACUUM FREEZE

O VACUUM FREEZE realiza um “congelamento” agressivo das linhas, essencialmente congelando o ID da transação para todas as páginas, independentemente de terem sido modificadas ou não. Isto faz com que todas as linhas atuais sejam vistas como antigas para todas as novas transações. Vale destacar que essa opção é sempre ativada ao usar o VACUUM FULL. Como citado anteriormente, o VACUUM FULL reescreve e corrige os dados, incluindo o VACUUM FREEZE. Embora sejam opções semelhantes, elas não são idênticas.

VACUUM VERBOSE

O VACUUM VERBOSE permite um acompanhamento de todas as ações que ocorrem durante o processo. Esse parâmetro possibilita a geração de um relatório detalhado de tudo o que está sendo executado pelo comando VACUUM.

O comando “VACUUM VERBOSE” é bastante útil para analisar possíveis falhas na execução do VACUUM ou até mesmo para conferir estatísticas após sua execução. Esse comando pode ser utilizado em conjunto com qualquer tipo de VACUUM. Exemplos: VACUUM VERBOSE FREEZE, VACUUM VERBOSE FULL.

VACUUM ANALYZE

Esta opção é responsável por atualizar as estatísticas usadas pelo planejador do plano de consultas. Embora possa ser acionada individualmente, quando em conjunto com o VACUUM traz uma excelente abordagem de otimização. Isso ocorre porque requer apenas o bloqueio de leitura da tabela, permitindo que as demais transações ocorram normalmente no banco de dados. E assim como o VACUUM VERBOSE, esse comando também pode ser utilizado em conjunto de qualquer tipo de VACUUM.

A execução coordenada do VACUUM e ANALYZE é essencial para manter atualizadas as estatísticas do banco de dados, possibilitando melhorar a performance nas pesquisas.

Autovacuum do PostgreSQL

Embora seja uma ferramenta opcional, é fortemente recomendado que esse processo nunca seja desativado em seu banco de dados. Essa funcionalidade, executada automaticamente pelo sistema gerenciador do PostgreSQL, realiza as operações de VACUUM e ANALYZE em segundo plano. O controle desse processo é realizado através dos valores definidos nos parâmetros de configuração.

O Autovacuum é nativo do PostgreSQL, permitindo a configuração para que o próprio banco execute o VACUUM simples (sem o FULL). É indicado para monitorar picos inesperados nas tabelas, devido às suas regras de verificação que determinam em quais tabelas as ações de limpeza devem ser executadas. Dessa forma se garante que todas tabelas (em todos os bancos de dados) que excedam estes valores sejam marcadas para o VACUUM. Esse processo conta com outros procedimentos integrados para seu funcionamento eficaz.

Existem outros tipos de VACUUM que você pode consultar aqui!

Entendendo as melhorias na atualização do PostgreSQL 16:

A partir desta versão, o VACUUM poderá ser utilizado ao fornecer apenas o nome do schema, possibilitando que a execução seja apenas nos objetos desse schema. Essa funcionalidade beneficia empresas que possuem uma organização de seus objetos agrupados por schema e têm a necessidade de realizar a manutenção desses objetos em conjunto.

Um exemplo desse cenário envolve clientes que usam o conceito de multi-tenancy baseado em schemas. Dessa forma, torna-se possível a execução da rotina de manutenção para clientes (schemas) de forma isolada, eliminando a necessidade de criação de recursos personalizados, como o uso de scripts ou blocos de código em pl/pgsql.

Outra implementação do VACUUM para a versão 16 é poder executar a rotina apenas para as tabelas TOAST. O comportamento padrão continua sendo a execução da rotina no objeto principal, o que é recomendado, mas agora há a opção de execução separada, caso necessário.

Dicas e Melhores Práticas

O VACUUM é um procedimento essencial para o desempenho ideal do PostgreSQL. Embora a configuração padrão do autovacuum venha habilitada seguindo métricas de valores globais, alguns cenários exigem que o seu uso seja ponderado ou que venha acompanhado da consultoria de um especialista DBA PostgreSQL. Alguns exemplos de cenários que exigem uma ação mais ponderada são: alto volume de alterações, cargas de dados, tamanho dos objetos, quantidade de tabelas, ou recursos disponíveis no servidor.

Não existe uma recomendação única de parametrização com valores exatos que atenda a todos os cenários. Cada caso é único, o que demanda um ajuste bem elaborado e contínuo. Nesse sentido, podemos ir de uma base com diversos problemas causados pela ausência do trabalho do autovacuum, causando impactos em todo o negócio, para uma situação que exige menos investimentos em infraestrutura e operações, aproveitando o melhor desempenho proporcionado por manutenções bem executadas.

Existem diversas estratégias para configuração e automatização da execução do VACUUM, mas a melhor abordagem é um ajuste customizado de autovacuum para cada tabela no seu banco de dados. Esses valores devem ser baseados em seu volume de alterações, tamanho da tabela, quantidade de recursos disponíveis, entre outras variáveis. Este é um trabalho contínuo que deve evoluir junto com o crescimento do banco de dados.

Como está o seu banco de dados? Já executou alguma operação de VACUUM? A Timbira pode te ajudar com uma consultoria especializada no PostgreSQL. Conte com o nosso time para ajudar o seu banco a performar e ser responsivo.

[Quero avaliar meu ambiente PostgreSQL]

[Quero falar com a Timbira]

A importância de ter uma versão do PostgreSQL atualizada

By Institucional No Comments

A necessidade de armazenar e gerenciar dados com segurança e de forma eficiente fomentou o surgimento dos bancos de dados relacionais. Esse é o caso do PostgreSQL, que surgiu nos anos 80 e vem ganhando espaço em diversas empresas de tamanhos e segmentos diferentes. Especialmente por ser um banco de dados open source e contar com uma comunidade bem ativa, que estuda, desenvolve, testa, corrige bugs e ainda ajuda fortemente a compartilhar versões atualizadas com frequência. Em setembro de 2023, o PostgreSQL Global Development Group anunciou a versão 16 que contou com diversas melhorias que você pode ver detalhadamente no site oficial postgresql.org.

Neste texto você poderá saber mais sobre a importância de manter um banco de dados atualizado. Falaremos sobre questões de segurança, alta disponibilidade, interação com outras aplicações e muito mais, confira.

Muitos gestores e profissionais de TI, às vezes por não estarem em contato direto com o banco, só percebem e entendem a importância dessa prática em situações de crise, que vão desde a perda de clientes por incompatibilidade de sistema, degradação dos dados, perda de performance ou uso excessivo de hardware, até a indisponibilidade da base de dados e ataques cibernéticos. Em suma, prejuízos financeiros e de imagem.

Vulnerabilidades de um Sistema Desatualizado

  • Processamento menos eficiente nas consultas dos dados
    As novas versões do PostgreSQL vêm com várias alterações para otimizar o motor de busca do banco de dados, podendo melhorar significativamente a performance de consultas de sua aplicação.
  • Problemas de compatibilidade
    Aplicações perdem a evolução de funcionalidades que permitiriam aumento de performance, correções de bugs e possibilidade de implementação de novas formas de acessar as informações dos bancos de dados.
  • Performance e brechas de segurança
    Constantemente lidamos com problemas de segurança e estar com uma versão desatualizada aumenta o risco de existirem bugs.

Portanto, questões de segurança, compatibilidade com demais aplicações, perda de performance e o uso excessivo de hardware (CPU) podem ser ocasionadas devido a um banco de dados desatualizado.

O Que Levar em Consideração Quando Buscar Atualizar a Versão do PostgreSQL

A partir do momento que o gestor percebe a necessidade de atualização da versão do seu banco de dados PostgreSQL, deve considerar:

  • No lado do cliente, a aplicação que irá consumir o banco de dados.
    Todos os softwares terão uma boa integração com o banco de dados? A consulta desses dados será performática nesse novo ambiente? Qual será o esforço humano diante das correções necessárias? Então, dependendo do modelo de negócio, esses fatores, somados ao custo benefício, devem ser pensados.
  • O servidor que irá hospedar o sistema, independente do sistema operacional.
    Durante o processo de migração, é crucial avaliar se o hardware atual pode acompanhar o crescimento do seu negócio, termo comumente referido no contexto de bancos de dados como “capacity planning”. O upgrade da versão do sistema operacional também desempenha um papel vital, trazendo consigo novas funcionalidades, melhorias de segurança e correções de bugs. Além disso, ajustes nas configurações do sistema operacional e do PostgreSQL são fundamentais para garantir o desempenho e a estabilidade do ambiente PostgreSQL.
  • A mudança de comportamento de alguns códigos, que pode alterar conforme a versão atualizada.
    Com a atualização de versão, alguns códigos já não produzem os mesmos efeitos de versões anteriores, podendo mudar a dinâmica do banco de dados.

5 motivos para você considerar uma migração para PostgreSQL 16

  1. Melhoria no controle de acesso e segurança
    O PostgreSQL 16 apresenta recursos avançados de segurança, incluindo atualizações nos protocolos de autenticação, controles de acesso (superusuário) e criptografia, assegurando dados seguros e íntegros.
  2. Melhorias de desempenho em consultas
    A última versão do PostgreSQL apresenta importantes melhorias no que tange desempenho, dando velocidade a consultas e operações de leitura. O desempenho aprimorado garante uma experiência fluida ao usuário.
  3. Melhoria no recurso de replicação lógica e monitoramento
    A partir do PostgreSQL 16, os usuários agora têm a capacidade de criar uma replicação lógica a partir de um servidor standby. Essa funcionalidade proporciona portabilidade na distribuição da carga de trabalho. Além disso, houve uma melhoria significativa no desempenho, possibilitando que os assinantes apliquem grandes transações em paralelo.
    Foi adicionada uma nova visão para o monitoramento de I/O, possibilitando um acompanhamento mais preciso da carga de trabalho e ajustes imediatos ao identificar pontos de gargalo. Também foi incluído um novo campo de data/hora na visão de estatísticas de tabela, permitindo verificar quando a tabela ou índice foi utilizado.
  4. Melhoria no suporte a JSON
    Os dados semi-estruturados continuam em uma crescente, e um bom exemplo é o JSON. A nova versão aprimora o suporte a esse formato, facilitando a integração e manipulação de dados complexos, facilitando assim o dia a dia do desenvolvedor que utiliza este recurso.
  5. Portabilidade e padronização
    A compatibilidade com os padrões SQL foram expandidas, com melhorias substanciais de desempenho. Nesse aspecto, os trabalhos de migrações são facilitados, assim como a promoção de operações conjuntas, possibilitando a portabilidade entre diferentes sistemas de gerenciamento de banco de dados.

Se você tiver curiosidade em saber sobre os bugs e alterações de uma versão para outra do PostgreSQL, acesse o site “Why upgrade PostgreSQL?”.Lá você pode inserir o número da versão anterior e comparar com uma versão atual, analisando as marcações em vermelho, que são bugs que foram corrigidos. Você vai notar que muita coisa mudou!

Todo processo de migração, especialmente em bancos em produção, é um trabalho delicado, que requer muita atenção e conhecimento. Se você precisa de ajuda no processo de planejamento, organização e implementação de uma migração segura, entre em contato com nosso time de atendimento. O futuro de sua empresa pode depender disso.

[Quero falar com a Timbira]

Computer Security Day: Você está protegendo seu Banco de Dados PostgreSQL?

By Institucional No Comments

Sistemas de gerenciamento de bancos de dados desempenham um papel muito importante em empresas e organizações. Para os usuários do PostgreSQL, a segurança dos dados é de suma importância. Em 30 de novembro, comemoramos o Computer Security Day, um lembrete de que a cibersegurança é um ponto fundamental em nossa jornada com o PostgreSQL. Neste artigo, vamos explorar a importância deste dia e discutiremos estratégias para proteger nossos dados ao usar o PostgreSQL.

Por que o Computer Security Day é importante para usuários do PostgreSQL?

Os usuários do PostgreSQL têm um motivo adicional para se dedicarem às melhores práticas de segurança. Este sistema de gerenciamento de banco de dados de código aberto é reconhecido por sua flexibilidade e robustez, o que o torna atrativo para uma variedade de  aplicações em organizações de todos os portes. No entanto, essa popularidade também o torna um alvo potencial para ameaças cibernéticas.

À medida que confiamos, informações importantes, sistemas essenciais e  dados críticos ao PostgreSQL, se torna muito importante garantir a segurança desses ativos, destacando a necessidade de medidas proativas para proteger nossos bancos de dados contra ameaças virtuais em constante evolução.

Dicas para Fortalecer a Segurança no PostgreSQL:

  • Senhas Fortes:  O PostgreSQL requer senhas sólidas para garantir o acesso seguro aos dados. Utilize senhas complexas e únicas para suas contas e, sempre que possível, implemente autenticação de dois fatores.
  • Atualização de segurança do sistema operacional: Mantenha o sistema operacional atualizado com as últimas correções de segurança para proteger o seu  ambiente do PostgreSQL.
  • Firewalls : Implemente firewalls e controle de acesso rigorosos para restringir quem pode se conectar ao banco de dados.
  • Controle de Acesso:  Evite  criar usuários com perfil de superusuário. Defina políticas de acesso com base no “princípio do privilégio mínimo”, garantindo que apenas usuários autorizados possam acessar e modificar os dados.
  • Conexões seguras: Utilize métodos seguros de conexão, como SSL/TLS, para estabelecer uma comunicação criptografada entre o cliente e o servidor.
  • Auditoria de Dados:  Ative auditorias de dados no PostgreSQL para monitorar atividades suspeitas e identificar evidências de acesso não autorizado.
  • Backup e Recuperação: Faça backups regulares de seus dados no PostgreSQL e tenha planos de recuperação em caso de incidentes de segurança. Teste constantemente seus planos de recuperação para garantir que eles funcionarão no momento em que precisarem ser aplicados.
  • Registros de eventos: Desenvolva constantemente o monitoramento dos registros do Postgres em busca de algo suspeito, fora do comum, e atue nessas correções o quanto antes. Busque identificar comportamentos fora do padrão, erros que começaram a ocorrer numa frequência fora do convencional.
  • Treine pessoas: Planeje treinamentos e mantenha seu time sempre atualizado, promovendo a conscientização sobre as práticas de segurança e destacando o valor dos dados para a sua empresa.

Responsabilidade Compartilhada:

Lembre-se de que a segurança cibernética é uma responsabilidade compartilhada. Tanto os administradores do PostgreSQL quanto os usuários finais desempenham um papel essencial na manutenção de um ambiente seguro. À medida que continuamos a utilizar o PostgreSQL como nossa escolha de sistema de gerenciamento de banco de dados, é essencial que também façamos da segurança cibernética uma prioridade

O Computer Security Day nos lembra que a segurança de nossos dados no PostgreSQL é uma tarefa constante. Proteger nosso mundo digital é um investimento valioso para o futuro de nossas operações de banco de dados. Nunca subestime o valor das medidas de segurança cibernética eficazes, pois elas podem ajudar a manter os dados seguros e a garantir o desempenho confiável do seu Banco de Dados PostgreSQL.

Se você precisar de ajuda para avaliar a segurança do seu ambiente e promover melhorias, conte conosco. Temos um time multidisciplinar preparado, incluindo uma engenharia dedicada com anos de experiência no uso do PostgreSQL.

Quero avaliar meu ambiente PostgreSQL

Quero falar com a Timbira