Skip to main content
Category

Artigos

Postgres e Machine Learning – Parte I

By Artigos No Comments

Desde o início dos tempos, a humanidade tem sido fascinada pela ideia de prever o futuro. Do olhar para as estrelas até a interpretação dos sonhos, sempre buscamos maneiras de antecipar o que está por vir. A jornada humana para prever o futuro é uma trama tecida através de séculos, entrelaçando a imaginação literária com marcos científicos.

No universo literário, podemos citar aqui romances de ficção científica, como a série “Foundation” de Isaac Asimov, onde explora-se a “psico-história” [1], uma ciência que prevê o futuro da humanidade. O tema também foi especulado por autores como Arthur C. Clarke e Philip K. Dick, escrevendo sobre os limites da previsão e da realidade.

Já na ciência, essa busca pelo entendimento do futuro encontrou um pilar em Alan Turing, cujas ideias fundamentais sobre computação abriram caminho para o que sabemos hoje sobre processamento de dados. Turing não apenas sonhou com máquinas que poderiam pensar, mas também lançou as bases para que isso se tornasse realidade.
Essa busca por essa nova realidade não apenas moldou nossas histórias e culturas, como também impulsionou o desenvolvimento de uma das mais revolucionárias invenções da nossa era: a inteligência artificial (IA).

Em um mundo em constante mudança e com cada vez mais necessidade de processar dados, tornou-se inevitável organizá-los de modo estruturado e reaproveitável.

A evolução da organização de dados

Com o surgimento dos bancos de dados relacionais na década de 70 a organização estruturada dos dados tornou-se cada vez mais essencial, estabelecendo a base fundamental dos diversos sistemas de informação existentes até os dias atuais.

Nesta mesma época, as principais teorias sobre inteligência artificial estavam sendo elaboradas. Teorias estas que somente nas últimas décadas puderam ser aplicadas em grande escala, principalmente pelo advento de novas tecnologias de processadores e também pela quantidade significativa de dados que atualmente estamos gerando.

O papel dos bancos de dados relacionais

Neste cenário, onde a inteligência artificial espera cada vez mais volumes massivos de dados, bem como formas de armazenamento e processamento cada vez mais sofisticadas, os bancos de dados relacionais enfrentam novos desafios. Algumas questões surgem neste momento:

  • Sendo os bancos de dados relacionais os principais centralizadores das informações que norteiam os processos das organizações, quais recursos eles possuem para apoiar a análise de dados com foco em inteligência artificial?
  • Se já temos uma tecnologia de gerenciamento de bancos de dados madura no ecossistema de nossa organização, até que ponto precisaremos aprender outras tecnologias de gerenciamento de bancos de dados?

Ao longo de uma séries de posts, iniciando com este, embarcaremos em uma jornada pelo desenvolvimento da inteligência artificial e como o PostgreSQL se destaca com sua robustez e extensibilidade, não só por ser um sistema de gerenciamento de dados tradicional, mas uma plataforma para desenvolvimento de soluções.

Explorando o potencial da Inteligência Artificial com PostgreSQL

O Postgres, conhecido por sua robustez e confiabilidade, também se destaca pela sua adaptabilidade. Ele tem evoluído para lidar não só com o volume de dados massivos, mas também com a complexidade crescente desses dados. Tendo como um dos seus principais triunfos a extensibilidade, esta característica permite ao Postgres customização de suas funcionalidades atuais e a expansão de novos recursos para atender às necessidades específicas de diferentes soluções.

O constante avanço das inteligências artificiais generativas e novas formas de aprendizado de máquina (Machine Learning ou ML) está redefinindo o que os gerenciadores de bancos de dados devem oferecer de recursos. Nesse cenário, o Postgres se adapta para suportar não apenas os tipos tradicionais de dados, mas também estruturas mais complexas, como as que são necessárias para os Vector Databases.

Um banco de dados vetorial se especializa em armazenar, pesquisar e manipular vetores de maneira rápida e eficaz, o que o torna ideal para tarefas que exigem análises avançadas e cálculos de similaridade em grandes conjuntos de dados. Os vetores são sequências de números ou representações de dados em um espaço multidimensional e são comumente utilizados em aplicações de aprendizado de máquina e inteligência artificial para representar e comparar características complexas de determinados dados em reconhecimento de imagem ou no processamento de linguagem natural.

Figura 1: Uma ilustração de um espaço vetorial multidimensional contínuo representando frases individuais. Fonte: [2]

Então o Postgres pode ser um banco de dados vetorial também? Tudo indica que sim.

Tal como o Postgres se adaptou às novas tecnologias de estruturas de dados mais dinâmicas, como o JSON, e criou mecanismos para suportar a rápida recuperação de dados neste formato, seja por um armazenamento efetivo como o jsonb, seja pelo recurso de índices avançados como GIN,seu mecanismo de extensibilidade atual permitiu a existência de extensões como a pgvector [3], que surge como um esforço da comunidade Postgres de disponibilizar uma ferramenta que permite armazenar vetores junto com outros tipos de dados em um banco de dados PostgreSQL.

Ampliando as capacidades do Postgres com pgvector

O pgvector é uma extensão open source que concede ao Postgres o suporte ao tipo de dados vetor (vector), permitindo buscas exatas ou aproximadas, utilizando métricas como distância L2, produto interno e distância cosseno. Compatível com qualquer linguagem que possua um cliente Postgres, essa extensão também oferece as vantagens tradicionais do PostgreSQL, incluindo conformidade ACID (Atomicidade, Consistência, Isolamento, Durabilidade), recuperação de pontos específicos no tempo, possibilidade de realizar JOINs e todas as outras funcionalidades avançadas existentes no PostgreSQL.

Extensões como a pgvector e recursos nativos como JSON provam que o PostgreSQL está cada vez mais no centro de uma revolução de dados e de inteligência artificial. Sua evolução consistente e sua capacidade de adaptar-se a um mundo de dados cada vez mais complexo e faminto o tornam um componente indispensável para qualquer empresa que deseja explorar o potencial do aprendizado de máquina. À medida que avançamos, o Postgres não é apenas um SGDB; é um facilitador crucial no caminho para um futuro mais inteligente, sustentável e orientado a dados.

Quer saber mais sobre PostgreSQL, Machine Learning e pgvector? Continue nos acompanhando nesta série que trará conteúdos cheios de insights e conhecimentos práticos sobre o assunto.

Referências

[1] Wikipedia (2024). Psychohistory (fictional science). Link: https://en.wikipedia.org/wiki/Psychohistory_(fictional_science). Acessado em 09/04/2024.

[2] Petra Barančíková, & Ondřej Bojar. (2019). In Search for Linear Relations in Sentence Embedding Spaces. Link: https://arxiv.org/pdf/1910.03375v1.pdf#page=2. Acessado em 08/04/2024.

[3] Andrew Kane (2021). pgvector. Link: https://github.com/pgvector/pgvector. Acessado em 23/03/2024.

Data Recovery e a Matriz BIA na Gestão de Crises em Banco de Dados

By Artigos, Operação No Comments

A base essencial de qualquer empresa reside em seus dados. Desde informações cruciais de clientes, fornecedores e credores até a gestão de estoque, registros financeiros e análise em tempo real, tudo está ligado a um sistema de bancos de dados. Perder informações ou encontrar dificuldades para acessá-las em tempo hábil pode causar grandes dores de cabeça para quem se preocupa com a saúde financeira da empresa.

Neste post, discutiremos sobre Data Recovery e a importância de as empresas adotarem uma política sólida para momentos de crise no banco de dados. Também abordaremos o conceito de Análise de Impacto no Negócio (BIA), uma metodologia de análise e gestão para reduzir riscos nos negócios.

O que é Data Recovery?

Para começar, é importante entender que a recuperação de dados, também conhecida como data recovery, consiste na restauração de informações a partir de cópias de segurança (backups), após a ocorrência de um incidente como erro humano, desastre natural, falha de hardware ou ataques cibernéticos.

Por exemplo, imagine um HD de computador pessoal que caiu no chão. Neste HD estavam todos os trabalhos de conclusão de curso de uma pessoa que, por descuido, não fez uma cópia. A solução neste caso seria chamar um especialista para tentar recuperar esses dados, um trabalho que na melhor das hipóteses levará tempo, trazendo uma enorme dor de cabeça para essa pessoa que pode perder o prazo de entrega do trabalho e na pior das hipóteses precisará começar o trabalho do zero, pois pode ser impossível recuperá-lo. No ambiente corporativo não é diferente, incidentes ocorrem por diversos fatores e o processo de recuperação de dados deve estar inserido dentro de uma política de backup, alinhado com os objetivos do negócio e deve ser validado periodicamente.

BIA (Business Impact Analysis)

Independentemente da origem do problema, esses incidentes resultam em prejuízos para os negócios. Para diminuir o risco e evitar o problema, é possível desenvolver uma análise de riscos do negócio na cadeia produtiva da empresa. Essa análise de riscos é conhecida como BIA (Business Impact Analysis). Trata-se de uma metodologia de gestão que ajuda a identificar e avaliar os processos e sistemas críticos para o funcionamento da empresa, bem como avaliar o impacto financeiro, operacional e de recuperação que poderia resultar na interrupção de negócios.

Ao identificar os impactos que eventos adversos causam, as organizações podem se preparar de forma adequada, minimizando perdas e interrupções nas operações. Além disso, o BIA traz diversos benefícios, como a identificação de processos críticos, o estabelecimento de planos de contingência e a melhoria da tomada de decisão.

Observa-se que um dos pressupostos da Análise de Impacto no Negócio é a existência de dependência entre os processos de uma empresa ou organização. É evidente que alguns processos têm maior relevância do que outros. Portanto, é crucial ter clareza sobre quais são vitais e prioritários durante uma situação emergencial.

Cinco ações que vão te ajudar na construção de uma matriz BIA eficiente

  1. Identificação de processos críticos de negócios: identificar e priorizar os processos de negócios essenciais para a operação da organização.
  2. Avaliação de impacto: envolve uma avaliação dos impactos financeiros, operacionais e de negociação que podem resultar de intermediários nos processos de negócios identificados.
  3. Identificação de requisitos de recuperação: determinar os requisitos de tempo e recursos necessários para recuperar os processos de negócios após uma interrupção.
  4. Desenvolvimento de planos de continuidade de negócios: com base na análise realizada, desenvolva um plano de continuidade de negócios que detalham as ações a serem tomadas para recuperar os processos críticos em diferentes cenários de interrupção.
  5. Teste e revisão: teste regularmente os planos de continuidade de negócios para garantir que eles estejam atualizados e sejam eficazes. Faça revisões periódicas da análise de impacto no negócio para garantir que ela reflita as mudanças na empresa.

Duas métricas importantes que devem ser consideradas

A primeira delas é o Recovery Time Objective (RTO), que se refere ao tempo máximo permitido para restaurar os sistemas, aplicativos e dados após um incidente. Em outras palavras, é o intervalo de tempo que uma organização determina como aceitável para recuperar seus serviços operacionais após uma interrupção. Isso significa que se uma empresa definir um tempo de 4 horas de um RTO, ela se compromete a restaurar suas operações normais dentro desse período após um incidente.

A segunda métrica, o Recovery Point Objective (RPO), está relacionada com a quantidade máxima de dados que uma organização está disposta a perder em caso de interrupção. Ele representa o ponto no tempo até o qual os dados devem ser recuperados após um incidente, indicando a máxima tolerância à perda de dados. Se assim, se uma organização tem um RPO de uma hora, isso implica que está disposta a perder no máximo uma hora de dados em caso de uma interrupção. Ambos RTO e RPO são partes críticas do planejamento de recuperação de desastres e são usados para determinar as estratégias e tecnologias necessárias para garantir a continuidade dos negócios.

Planejamento é essencial

Cada modelo de negócio tem suas particularidades e a maioria dos incidentes de dados tem o potencial de serem evitados. É importante que os gestores do negócio percebam o quanto valem os seus dados e invistam em políticas e abordagens concretas para diminuir uma possível perda de dados. O desenvolvimento de Handbooks discriminando os processos de cada setor, o passo a passo, treinamento da equipe técnica, assim como uma Matriz “viva” da análise de riscos, sempre em desenvolvimento, ajudam na organização interna dos squads e na tomada de decisão do time em momento de crise.

Para equipes que não possuem DBAs experientes e desejam estar preparadas para emergências, além das dicas mencionadas, vale a pena pensar na contratação de uma consultoria especializada em banco de dados para esses momentos críticos.

Investir no planejamento é fundamental, pois um incidente de dados sem backup pode ser irreversível, dependendo da gravidade. É importante que os gestores de negócio disponibilizem recursos para iniciativas relacionadas à recuperação de dados. Em muitos casos, a prevenção e o investimento contínuo revelam-se menos dispendiosos quando comparados às ações reativas. Priorizar a implementação de medidas preventivas não apenas resguarda contra possíveis perdas de dados, mas também se revela uma abordagem financeiramente mais vantajosa no longo prazo.

Conte conosco!

Se você sente que está deixando seus dados em risco e precisa de ajuda para definir uma política de recuperação de desastres para o seu negócio, mande uma mensagem para nós. Temos um time experiente que irá desenvolver um plano específico para o modelo de dados do seu negócio.

[>> Fale com a Timbira!]