Persistência de dados: tudo que você precisa saber

Se você trabalha ou já precisou lidar com a construção de aplicações e sistemas para resolver algum problema, possivelmente já se deparou com o termo persistência de dados. Mas, assim como vários termos que são comumente usado nesse mundo de computação, às vezes não paramos para refletir sobre o que ele realmente significa e qual sua real importância.

Você já parou pra entender o que realmente significa persistir dados? Sabe quais benefícios isso pode trazer para você? Vamos discutir sobre isso ao longo deste texto, e espero que ao fim dele o conceito esteja mais claro para você.

Para começar a tratar de persistência de dados e entender melhor sobre o assunto, podemos começar definindo cada componente do termo.

Dados

Vamos começar pelos dados. Vivemos em um mundo de tecnologia e sistemas de informação, onde tentamos resolver problemas e otimizar negócios com soluções inovadoras. E para tal, fazemos uso de dados.

Tudo começa por uma pergunta, com a qual definimos o que desejamos analisar, ou qual problema queremos resolver. Nesse contexto, dados são quaisquer valores atribuídos a algo relacionados à nossa análise. 

Exemplo: imagine que você se depara com uma vasilha com mangas na mesa da cozinha. Você então as observa e obtém alguns dados. Inicialmente, é possível identificar a quantidade de mangas — existem 5 dentro da vasilha. Você consegue determinar o tamanho delas: todas são pequenas. Possuem formato arredondado. É possível determinar as cores, que não são iguais; algumas são verdes, enquanto outras têm coloração amarelada com pintinhas pretas.

Esses dados, quando analisados isoladamente, não fazem muito sentido. Mas, quando devidamente organizados, analisados e interpretados podem se transformar em uma informação útil. A manga com cor amarelada, por si só, não quer dizer muita coisa. No entanto, pelo tamanho pequeno e formato arredondado, você infere que se trata de uma manga do tipo Ubá, e que essas estão prontas para serem consumidas.

Essa associação feita de qual era o tipo da manga e se ela estava ou não pronta para consumo só foi possível porque de alguma forma, no passado, você teve dados que indicavam isso e os armazenou em sua memória. Com isso, após se deparar com a vasilha de mangas, você conseguiu recuperar essa informação e foi possível decidir qual pegar.

Persistência de dados

Com isso, chegamos à definição de persistência. Se buscarmos no dicionário, encontraremos a seguinte definição para a palavra “persistir”:

Continuar a existir, a acontecer.

Ou seja, podemos entender a persistência de dados como a garantia de que um dado foi salvo e que poderá ser recuperado quando necessário no futuro. Esse conceito existe na computação para referenciar o ato de salvar os dados.

Podemos fazer um paralelo entre o computador e o cérebro humano. Assim como nosso cérebro possui memórias de curto e longo prazo, também é o computador.

Quando vamos dormir, nosso cérebro processa nossa memória de trabalho, convertendo o que é relevante em memórias de longo prazo. Da mesma forma, o computador possui sua memória de curto prazo, a memória RAM. Essa memória é volátil, o que significa que qualquer dado armazenado ali irá se perder quando o computador for desligado, por exemplo.

Por isso, precisamos mover esses dados para uma memória de longo prazo, que resista à suspensão do computador. Nesse caso, estamos falando de algum local não-volátil, como HD, SSD, nuvem, etc.

Importância da persistência de dados

Uma vez que definimos o significado de persistência de dados, fica fácil perceber o quanto isso é importante para os nossos sistemas computacionais. Mantendo o registro dos dados processados pelos nossos sistemas, geramos insumos para análises futuras que vão possibilitar a tomada de decisões estratégicas por empresas para alavancar seus negócios. 

Uma boa análise de dados vai possibilitar que a empresa faça um melhor reconhecimento do mercado e conheça bem seus clientes, facilitando que a empresa consiga ter um melhor posicionamento no mercado e responda ao mercado de forma cada vez mais ágil.

Técnicas de persistência

O termo persistência de dados em si refere-se a qualquer forma de armazenamento de dados que for necessária em nosso sistema. O mais usual é utilizar um banco de dados, mas nada impede que sejam utilizadas outras ferramentas, como uma planilha no Excel, um arquivo de texto, etc. Tudo depende do propósito e de seu contexto.

No entanto, caso seja necessário fazer uma boa análise de dados, é interessante que os dados estejam armazenados em locais que te darão maior poder de recuperação e organização, por isso a recomendação de utilizar um bom banco de dados.

Bancos de dados

Korth define bancos de dados como “uma coleção de dados inter-relacionados, representando informações sobre um domínio específico”. Em síntese, são todas as informações que se relacionam a um assunto agrupadas em um sistema de arquivos físicos.

Para gerenciar e manipular os bancos de dados, existem os Sistemas Gerenciadores de Banco de Dados (SGBDs). São os SGBDs que vão permitir que aqueles dados que discutimos no início deste artigo sejam organizados e persistidos, e posteriormente analisados para geração de informações úteis para tomadas de decisões.

Existem muitos tipo de bancos de dados e várias alternativas de SGBDs para cada um deles. Qual utilizar em seu sistema vai depender, pois cada um tem suas características e formas de armazenamento, que devem ser levados em conta de acordo com a sua aplicação. Uma boa escolha deve ser feita para beneficiar uma futura mineração de dados.

Tipos de bancos de dados

Os bancos de dados podem ser divididos em duas categorias: bancos relacionais e bancos não-relacionais. 

Os bancos de dados relacionais seguem um paradigma de orientação a conjuntos, no qual os dados se relacionam e são organizados em estruturas de tabelas, que têm em sua composição colunas, tuplas e registros. Esses tipos de bancos proporcionam mais facilidade de inserção e recuperação dos dados e são mais indicados para sistemas que necessitem de uma grande consistência de dados.

Alguns exemplos de bancos relacionais são: Oracle, SQL Server, MySQL.

Já os bancos de dados não-relacionais são soluções para casos em que não é possível organizar os dados de forma relacional — quando temos dados mistos como imagens e tabelas, por exemplo, que tornam inviáveis a organização no sistema de linhas e colunas. Esses bancos também são conhecidos como NoSQL.

Como exemplo, temos: MongoDB, Redis e Cassandra.

Frameworks de acesso a bancos de dados

Existe uma gama de frameworks que podemos utilizar em nossas aplicações e sistemas para facilitar o acesso ao banco de dados e, assim, persistir e manipular os dados. Elas garantem uma maior produtividade na construção de aplicações para quem desenvolve. Qual utilizar pode depender da linguagem de programação utilizada assim como qual banco de dados é usado para persistência dos dados.

Esses frameworks são conhecidos como ferramentas de mapeamento-objeto-relacional (ORM), e levam esse nome basicamente por proporcionarem um mapeamento de classes em tabelas de bancos de dados de forma mais simples e clara.

A seguir, apresento algumas opções de frameworks:

  • Entity Framework: o Entity Framework é a principal ferramenta de persistência no universo .NET. O EF, como também é conhecido, dispões de três metodologias para desenvolvermos o acesso ao banco de dados:
    • Database First: nesta metodologia, já dispomos de um banco de dados e o mapeamento na aplicação é feito a partir dele. É um método visual em que é feita uma engenharia reversa, carregando quais classes representarão o banco de dados na aplicação;
    • Model First: nesta abordagem, também há um método visual, mas nele podemos modelar nosso banco e gerar a base a partir dele;
    • Code First: essa abordagem se diferencia das demais pelo fato de o trabalho de mapeamento ser todo feito programaticamente. Primeiro implementamos classes que representam nossas tabelas do banco de dados e, então, deixamos que o próprio EF crie o banco de dados pra gente posteriormente;
  • Hibernate: o Hibernate é o framework de ORM escrito em Java, mas também possui sua versão em .NET, o NHibernate. Ele facilita o mapeamento da base de dados em nosso modelo fazendo uso de arquivos XML ou anotações Java.
  • Dapper: esse framework foi desenvolvido pelo grupo StackExchange e traz como principal benefício apresentar uma performance bem melhor quando comparado com o Entity Framework e NHibernate. Ele consegue isso simplificando o trabalho com objetos de conexão do ADO.NET, permitindo que o desenvolvedor crie seus comandos SQL, podendo assim se beneficiar de índices. Nas outras soluções que discutimos até aqui, as instruções são geradas pelo próprio framework e nem sempre são as opções mais performáticas.

Conclusão

Com esse texto, pudemos entender melhor o que significa a persistência de dados e as vantagens que ela pode gerar para as empresas em tomadas de decisão, uma vez que esse processo é essencial para uma análise de mercado e clientes. Vimos também as opções de bancos de dados para fazermos essa persistência, assim como alguns frameworks para facilitar a vida de devs na construção de aplicações que conversem com esses bancos.

Com essa introdução dos conceitos e das ferramentas, você já pode dar um passo inicial nessa etapa tão importante da construção do seu sistema. Basta analisar as opções apresentadas e identificar qual é a mais adequada para a sua solução!

Referências: Escola de Dados, Wikipédia, Red Hat, CBL Tech, JDev, Stack Over Flow, Escola EDTI, DevMedia, OP Services, DevMedia, Wikipédia

weberson post integração a apis

Weberson Pereira

Analista de Sistemas na Take

 

Leia mais:

APIs: conceito e importância das interfaces de programação de aplicações

Como anda a área de TI no Brasil? Saiba mais sobre o mercado

Criptografia, segurança no envio de mensagens e WhatsApp