{"id":7171,"date":"2022-08-05T14:07:00","date_gmt":"2022-08-05T17:07:00","guid":{"rendered":"https:\/\/www.blip.ai\/blog\/?p=7171"},"modified":"2024-04-22T11:31:46","modified_gmt":"2024-04-22T14:31:46","slug":"persistencia-de-dados","status":"publish","type":"post","link":"https:\/\/www.blip.ai\/blog\/tecnologia\/persistencia-de-dados\/","title":{"rendered":"Tudo que voc\u00ea precisa saber sobre persist\u00eancia de dados: conceito, tipos e t\u00e9cnicas"},"content":{"rendered":"\n<p>Se voc\u00ea trabalha ou j\u00e1 precisou lidar com a constru\u00e7\u00e3o de aplica\u00e7\u00f5es e sistemas para resolver algum problema, possivelmente j\u00e1 se deparou com o termo <strong>persist\u00eancia de dados<\/strong>.<\/p>\n\n\n\n<p>Mas, assim como v\u00e1rios termos que s\u00e3o comumente usado nesse mundo de computa\u00e7\u00e3o, \u00e0s vezes n\u00e3o paramos para refletir sobre <strong>o que ele realmente significa e qual sua real import\u00e2ncia.<\/strong><\/p>\n\n\n\n<p><em>Voc\u00ea j\u00e1 parou pra entender o que realmente significa persistir dados?<\/em><br><em>Sabe quais benef\u00edcios que a&nbsp;persist\u00eancia de dados pode trazer para voc\u00ea?<\/em><\/p>\n\n\n\n<p>Vamos discutir sobre isso ao longo deste texto, e espero que ao fim dele o conceito esteja mais claro.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>O que \u00e9 persist\u00eancia de dados: entenda seus componentes<\/strong><\/h2>\n\n\n\n<p>Para come\u00e7ar a tratar de persist\u00eancia de dados e entender melhor sobre o assunto, podemos come\u00e7ar definindo cada componente do termo.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Dados<\/strong><\/h3>\n\n\n\n<p>Vamos come\u00e7ar pelos dados.&nbsp;Vivemos em um mundo de<strong> tecnologia e sistemas de informa\u00e7\u00e3o<\/strong>, onde tentamos <strong>resolver problemas<\/strong> e <strong>otimizar neg\u00f3cios<\/strong> com solu\u00e7\u00f5es inovadoras. E para tal, fazemos uso de dados.<\/p>\n\n\n\n<p>Tudo come\u00e7a por uma pergunta, com a qual definimos o que desejamos analisar, ou qual problema queremos resolver.<\/p>\n\n\n\n<p>Nesse contexto, <strong>dados s\u00e3o quaisquer valores atribu\u00eddos a algo relacionados \u00e0 nossa an\u00e1lise.<\/strong><br><strong>Exemplo:<\/strong> imagine que voc\u00ea se depara com uma vasilha com mangas na mesa da cozinha.<\/p>\n\n\n\n<p>Voc\u00ea ent\u00e3o as observa e obt\u00e9m alguns dados. Inicialmente, \u00e9 poss\u00edvel identificar a quantidade de mangas \u2014 existem 5 dentro da vasilha.<\/p>\n\n\n\n<p>Voc\u00ea consegue determinar o tamanho delas: todas s\u00e3o pequenas. Possuem formato arredondado. \u00c9 poss\u00edvel determinar as cores, que n\u00e3o s\u00e3o iguais; algumas s\u00e3o verdes, enquanto outras t\u00eam colora\u00e7\u00e3o amarelada com pintinhas pretas.<\/p>\n\n\n\n<p>Esses dados, quando analisados isoladamente, n\u00e3o fazem muito sentido. Mas, quando devidamente organizados, analisados e interpretados podem se transformar em uma informa\u00e7\u00e3o \u00fatil.<\/p>\n\n\n\n<p>A manga com cor amarelada, por si s\u00f3, n\u00e3o quer dizer muita coisa. No entanto, pelo tamanho pequeno e formato arredondado, voc\u00ea infere que se trata de uma manga do tipo Ub\u00e1, e que essas est\u00e3o prontas para serem consumidas.<\/p>\n\n\n\n<p>Essa associa\u00e7\u00e3o feita de qual era o tipo da manga e se ela estava ou n\u00e3o pronta para consumo s\u00f3 foi poss\u00edvel porque de alguma forma, no passado, voc\u00ea teve <strong>dados<\/strong> que indicavam isso e os armazenou em sua mem\u00f3ria.<\/p>\n\n\n\n<p>Com isso, ap\u00f3s se deparar com a vasilha de mangas, voc\u00ea conseguiu recuperar essa informa\u00e7\u00e3o e foi poss\u00edvel decidir qual pegar.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Persist\u00eancia de dados<\/strong><\/h3>\n\n\n\n<p>Com isso, chegamos \u00e0 defini\u00e7\u00e3o de <strong>persist\u00eancia<\/strong>. Se buscarmos no dicion\u00e1rio, encontraremos a seguinte defini\u00e7\u00e3o para a palavra \u201cpersistir\u201d:<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>Continuar a existir, a acontecer.<\/p>\n<\/blockquote>\n\n\n\n<p>Ou seja, podemos entender o que \u00e9&nbsp;<strong>persist\u00eancia de dados<\/strong> como a garantia de que <strong>um dado foi salvo e que poder\u00e1 ser recuperado quando necess\u00e1rio no futuro<\/strong>. Esse conceito existe na computa\u00e7\u00e3o para referenciar o ato de salvar os dados.<\/p>\n\n\n\n<p>Podemos fazer um paralelo entre o computador e o c\u00e9rebro humano. Assim como nosso c\u00e9rebro possui mem\u00f3rias de curto e longo prazo, tamb\u00e9m \u00e9 o computador.<\/p>\n\n\n\n<p>Quando vamos dormir, nosso c\u00e9rebro processa nossa <strong>mem\u00f3ria de trabalho<\/strong>, convertendo o que \u00e9 relevante em <strong>mem\u00f3rias de longo prazo<\/strong>.<\/p>\n\n\n\n<p>Da mesma forma, o computador possui sua mem\u00f3ria de curto prazo, a mem\u00f3ria RAM. Essa mem\u00f3ria \u00e9 vol\u00e1til, o que significa que qualquer dado armazenado ali ir\u00e1 se perder quando o computador for desligado, por exemplo.<\/p>\n\n\n\n<p>Por isso, precisamos<strong> mover esses dados para uma mem\u00f3ria de longo prazo<\/strong>, que resista \u00e0 suspens\u00e3o do computador. Nesse caso, estamos falando de algum <strong>local n\u00e3o-vol\u00e1til<\/strong>, como:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>HD;<\/li>\n\n\n\n<li>SSD;<\/li>\n\n\n\n<li><a href=\"https:\/\/www.blip.ai\/blog\/tecnologia\/tecnologia-cloud-computing\/\" target=\"_blank\" rel=\"noopener noreferrer\">tecnologia cloud computing<\/a> (nuvem) etc.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Import\u00e2ncia da persist\u00eancia de dados<\/strong><\/h2>\n\n\n\n<p>Uma vez que definimos o que \u00e9 persist\u00eancia de dados, fica f\u00e1cil perceber o quanto isso \u00e9 importante para os nossos sistemas computacionais.<\/p>\n\n\n\n<p>Mantendo o<strong> registro de dados processados <\/strong>pelos sistemas, e transformando-os em dados persistentes, geramos<strong> insumos para an\u00e1lises futuras<\/strong> que v\u00e3o possibilitar a <strong>tomada de decis\u00f5es estrat\u00e9gicas<\/strong> por empresas para alavancar seus neg\u00f3cios.<\/p>\n\n\n\n<p><a href=\"https:\/\/caetreinamentos.com.br\/blog\/processos\/como-fazer-analise-de-dados\/\" target=\"_blank\" rel=\"noopener\">Uma boa an\u00e1lise de dados<\/a> vai possibilitar que a empresa:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>fa\u00e7a um melhor reconhecimento do mercado;<\/li>\n\n\n\n<li>conhe\u00e7a bem seus clientes;<\/li>\n\n\n\n<li>consiga ter um melhor posicionamento no mercado;<\/li>\n\n\n\n<li>responda ao mercado de forma cada vez mais \u00e1gil.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>T\u00e9cnicas de persist\u00eancia de dados<\/strong><\/h2>\n\n\n\n<p>O termo persist\u00eancia de dados em si refere-se a qualquer forma de <strong>armazenamento de dados<\/strong> que for necess\u00e1ria em nosso sistema.<\/p>\n\n\n\n<p>O mais usual \u00e9 utilizar um <strong>banco de dados<\/strong>, mas nada impede que sejam utilizadas outras ferramentas, como uma planilha no Excel, um arquivo de texto, etc. Tudo depende do prop\u00f3sito dos dados persistentes e de seu contexto.<\/p>\n\n\n\n<p>No entanto, caso seja necess\u00e1rio fazer uma boa an\u00e1lise de dados, \u00e9 interessante que os dados estejam armazenados em locais que te dar\u00e3o maior poder de <strong>recupera\u00e7\u00e3o e organiza\u00e7\u00e3o<\/strong>, por isso a recomenda\u00e7\u00e3o de utilizar um bom banco de dados.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Bancos de dados persistentes<\/strong><\/h2>\n\n\n\n<p>Korth define bancos de dados como \u201c<em>uma cole\u00e7\u00e3o de dados inter-relacionados, representando informa\u00e7\u00f5es sobre um dom\u00ednio espec\u00edfico\u201d<\/em>. Em s\u00edntese, s\u00e3o<strong> todas as informa\u00e7\u00f5es que se relacionam<\/strong> a um assunto agrupadas em um sistema de arquivos f\u00edsicos.<\/p>\n\n\n\n<p>Para gerenciar e manipular os bancos de dados, existem os Sistemas Gerenciadores de Banco de Dados (SGBDs).<\/p>\n\n\n\n<p>S\u00e3o os SGBDs que v\u00e3o permitir que aqueles dados que discutimos no in\u00edcio deste artigo sejam <strong>organizados e persistidos<\/strong>, e posteriormente analisados para<strong> gera\u00e7\u00e3o de informa\u00e7\u00f5es \u00fateis<\/strong> para tomadas de decis\u00f5es.<\/p>\n\n\n\n<p>Existem muitos tipo de bancos de dados e v\u00e1rias alternativas de SGBDs para cada um deles.<\/p>\n\n\n\n<p>Qual utilizar em seu sistema vai depender, pois cada um tem suas caracter\u00edsticas e formas de armazenamento, que devem ser levados em conta de acordo com a sua aplica\u00e7\u00e3o.<\/p>\n\n\n\n<p>Uma boa escolha deve ser feita para beneficiar uma futura <strong>minera\u00e7\u00e3o de dados.<\/strong><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Tipos de bancos de dados<\/h3>\n\n\n\n<p>Os bancos de dados podem ser divididos em duas categorias:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>bancos relacionais;<\/li>\n\n\n\n<li>bancos n\u00e3o-relacionais.<\/li>\n<\/ol>\n\n\n\n<p>Os <strong>bancos de dados relacionais<\/strong> seguem um paradigma de orienta\u00e7\u00e3o a conjuntos, no qual os dados se relacionam e s\u00e3o organizados em estruturas de tabelas, que t\u00eam em sua composi\u00e7\u00e3o colunas, tuplas e registros.<\/p>\n\n\n\n<p>Esses tipos de bancos proporcionam mais<strong> facilidade de inser\u00e7\u00e3o e recupera\u00e7\u00e3o dos dados<\/strong> e s\u00e3o mais indicados para sistemas que necessitem de uma grande consist\u00eancia de dados.<br>Alguns exemplos de bancos relacionais s\u00e3o:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Oracle;<\/li>\n\n\n\n<li>SQL Server;<\/li>\n\n\n\n<li>MySQL.<\/li>\n<\/ul>\n\n\n\n<p>J\u00e1 os <strong>bancos de dados n\u00e3o-relacionais<\/strong> s\u00e3o solu\u00e7\u00f5es para casos em que n\u00e3o \u00e9 poss\u00edvel organizar os dados de forma relacional \u2014 quando temos dados mistos como imagens e tabelas, por exemplo, que tornam invi\u00e1veis a organiza\u00e7\u00e3o no sistema de linhas e colunas. Esses bancos tamb\u00e9m s\u00e3o conhecidos como NoSQL.<\/p>\n\n\n\n<p>Como exemplo, temos:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>MongoDB;<\/li>\n\n\n\n<li>Redis;<\/li>\n\n\n\n<li>Cassandra.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Frameworks de acesso a bancos de dados persistentes<\/h3>\n\n\n\n<p>Existe uma gama de frameworks que podemos utilizar em nossas aplica\u00e7\u00f5es e sistemas para facilitar o acesso ao banco de dados e, assim, <strong>persistir e manipular os dados<\/strong>.<\/p>\n\n\n\n<p>Elas garantem uma maior produtividade na constru\u00e7\u00e3o de aplica\u00e7\u00f5es para quem desenvolve. Qual utilizar pode depender da <a href=\"https:\/\/www.blip.ai\/blog\/devs\/linguagens-de-programacao\/\" target=\"_blank\" rel=\"noopener noreferrer\">linguagem de programa\u00e7\u00e3o<\/a> utilizada assim como qual banco de dados \u00e9 usado para persist\u00eancia dos dados.<\/p>\n\n\n\n<p>Esses frameworks s\u00e3o conhecidos como <strong>ferramentas de mapeamento-objeto-relacional<\/strong> (ORM), e levam esse nome basicamente por proporcionarem um<strong> mapeamento de classes em tabelas de bancos de dados<\/strong> de forma mais simples e clara.<\/p>\n\n\n\n<p>A seguir, apresento algumas op\u00e7\u00f5es de frameworks:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Entity Framework<\/strong>: o Entity Framework \u00e9 a principal ferramenta de persist\u00eancia de dados no universo .NET. O EF, como tamb\u00e9m \u00e9 conhecido, disp\u00f5es de tr\u00eas metodologias para desenvolvermos o acesso ao banco de dados:\n<ul class=\"wp-block-list\">\n<li><strong>Database First<\/strong>: nesta metodologia, j\u00e1 dispomos de um banco de dados e o mapeamento na aplica\u00e7\u00e3o \u00e9 feito a partir dele. \u00c9 um m\u00e9todo visual em que \u00e9 feita uma engenharia reversa, carregando quais classes representar\u00e3o o banco de dados na aplica\u00e7\u00e3o;<\/li>\n\n\n\n<li><strong>Model First<\/strong>: nesta abordagem, tamb\u00e9m h\u00e1 um m\u00e9todo visual, mas nele podemos modelar nosso banco e gerar a base a partir dele;<\/li>\n\n\n\n<li><strong>Code First<\/strong>:&nbsp;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\u00e3o, deixamos que o pr\u00f3prio EF crie o banco de dados pra gente posteriormente; <\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Hibernate<\/strong>: o Hibernate \u00e9 o framework de ORM escrito em Java, mas tamb\u00e9m possui sua vers\u00e3o em .NET, o NHibernate. Ele facilita o mapeamento da base de dados em nosso modelo fazendo uso de arquivos <a href=\"https:\/\/arquivei.com.br\/blog\/xml-nfe-tudo-que-voce-precisa-saber\/\" data-type=\"URL\" data-id=\"https:\/\/arquivei.com.br\/blog\/xml-nfe-tudo-que-voce-precisa-saber\/\" target=\"_blank\" rel=\"noreferrer noopener\">XML <\/a>ou anota\u00e7\u00f5es Java.<\/li>\n\n\n\n<li><strong>Dapper<\/strong>: esse framework foi desenvolvido pelo grupo StackExchange e traz como principal benef\u00edcio apresentar uma performance bem melhor quando comparado com o Entity Framework e NHibernate.<br>Ele consegue isso simplificando o trabalho com objetos de conex\u00e3o do ADO.NET, permitindo que o desenvolvedor crie seus comandos SQL, podendo assim se beneficiar de \u00edndices.  <p>Nas outras solu\u00e7\u00f5es que discutimos at\u00e9 aqui, as instru\u00e7\u00f5es s\u00e3o geradas pelo pr\u00f3prio framework e nem sempre s\u00e3o as op\u00e7\u00f5es mais perform\u00e1ticas.<\/p><\/li>\n<\/ul>\n\n\n\n<p><strong>Leia tamb\u00e9m<\/strong>:&nbsp;<a href=\"https:\/\/www.blip.ai\/blog\/devs\/programacao-funcional-javascript\/\" target=\"_blank\" rel=\"noopener\">Programa\u00e7\u00e3o funcional Javascript<\/a>: guia de como aplicar os conceitos [+benef\u00edcios]<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Comece a construir seu sistema aplicando a persist\u00eancia de dados<\/strong><\/h2>\n\n\n\n<p>Com esse texto, pudemos entender melhor o que \u00e9 persist\u00eancia de dados e as vantagens que ela pode gerar para as empresas em tomadas de decis\u00e3o, uma vez que esse processo \u00e9 essencial para uma <strong>an\u00e1lise de mercado e clientes<\/strong>.<\/p>\n\n\n\n<p>Vimos tamb\u00e9m as op\u00e7\u00f5es de bancos de dados para fazermos essa persist\u00eancia, assim como alguns frameworks para facilitar a vida de<em> devs<\/em> na<strong> constru\u00e7\u00e3o de aplica\u00e7\u00f5es que conversem com esses bancos.<\/strong><\/p>\n\n\n\n<p>Com essa introdu\u00e7\u00e3o dos conceitos e das ferramentas, voc\u00ea j\u00e1 pode dar um passo inicial nessa etapa t\u00e3o importante da constru\u00e7\u00e3o do seu sistema.<\/p>\n\n\n\n<p>Basta analisar as op\u00e7\u00f5es apresentadas e identificar qual \u00e9 a mais adequada para a sua solu\u00e7\u00e3o!<\/p>\n\n\n\n<p>Quer continuar aprendendo sobre tecnologia? <strong><a href=\"https:\/\/www.blip.ai\/blog\/chatbots\/chatbot\/\" target=\"_blank\" rel=\"noreferrer noopener\">Leia este guia completo e aprenda tudo que precisa sobre chatbots!<\/a><\/strong><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Se voc\u00ea trabalha ou j\u00e1 precisou lidar com a constru\u00e7\u00e3o de aplica\u00e7\u00f5es e sistemas para resolver algum problema, possivelmente j\u00e1 se deparou com o termo persist\u00eancia de dados. Mas, assim como v\u00e1rios termos que s\u00e3o comumente usado nesse mundo de computa\u00e7\u00e3o, \u00e0s vezes n\u00e3o paramos para refletir sobre o que ele realmente significa e qual [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":23437,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[401],"tags":[],"class_list":["post-7171","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-tecnologia"],"lang":"pt","translations":{"pt":7171},"pll_sync_post":[],"_links":{"self":[{"href":"https:\/\/www.blip.ai\/blog\/wp-json\/wp\/v2\/posts\/7171","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.blip.ai\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.blip.ai\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.blip.ai\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.blip.ai\/blog\/wp-json\/wp\/v2\/comments?post=7171"}],"version-history":[{"count":0,"href":"https:\/\/www.blip.ai\/blog\/wp-json\/wp\/v2\/posts\/7171\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.blip.ai\/blog\/wp-json\/wp\/v2\/media\/23437"}],"wp:attachment":[{"href":"https:\/\/www.blip.ai\/blog\/wp-json\/wp\/v2\/media?parent=7171"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.blip.ai\/blog\/wp-json\/wp\/v2\/categories?post=7171"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.blip.ai\/blog\/wp-json\/wp\/v2\/tags?post=7171"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}