Introdução
Os bancos de dados são componentes essenciais para muitos aplicativos e ferramentas modernas. Como usuário, você pode interagir com dezenas ou centenas de bancos de dados todos os dias ao visitar sites, usar aplicativos em seu telefone ou comprar itens no supermercado. Como desenvolvedor, os bancos de dados são o componente principal usado para manter os dados além da vida útil do seu aplicativo. Mas o que exatamente são bancos de dados e por que eles são tão comuns?
Neste artigo, abordaremos:
- o que são bancos de dados
- como eles são usados por pessoas e aplicativos para acompanhar vários tipos de dados
- o que os bancos de dados de recursos oferecem
- que tipos de garantias eles fazem
- como eles se comparam a outros métodos de armazenamento de dados
Por fim, discutiremos como os aplicativos dependem de bancos de dados para armazenar e recuperar dados para habilitar funcionalidades complexas.
O que são bancos de dados?
Bancos de dados são estruturas lógicas usadas para organizar e armazenar dados para processamento, recuperação ou avaliação futuros. No contexto dos computadores, essas estruturas são quase sempre gerenciadas por um aplicativo chamado sistema de gerenciamento de banco de dados ou SGBD . O SGBD gerencia arquivos dedicados no disco do computador e apresenta uma interface lógica para usuários e aplicações.
Os sistemas de gerenciamento de banco de dados geralmente são projetados para organizar os dados de acordo com um padrão específico. Esses padrões, chamados de tipos de banco de dados ou modelos de banco de dados, são os fundamentos lógicos e estruturais que determinam como os dados individuais são armazenados e gerenciados. Existem muitos tipos diferentes de banco de dados, cada um com suas próprias vantagens e limitações. O modelo relacional , que organiza os dados em tabelas, linhas e colunas com referências cruzadas, geralmente é considerado o paradigma padrão.
Os DBMSs podem tornar os bancos de dados que eles controlam acessíveis por vários meios, incluindo clientes de linha de comando, APIs, bibliotecas de programação e interfaces administrativas. Por meio desses canais, os dados podem ser ingeridos no sistema, organizados conforme necessário e retornados conforme solicitado.
Persistência de dados versus armazenamento temporário
Os bancos de dados armazenam dados em disco ou na memória.
O armazenamento em disco é geralmente considerado persistente , o que significa que os dados são salvos de forma confiável para mais tarde, mesmo que o aplicativo de banco de dados ou o próprio computador seja reiniciado.
Por outro lado, o armazenamento na memória é considerado efêmero ou volátil . O armazenamento efêmero não sobrevive ao desligamento do aplicativo ou do sistema. A vantagem dos bancos de dados na memória é que eles geralmente são muito rápidos.
Na prática, muitos ambientes usarão uma mistura desses dois tipos de sistemas para obter as vantagens de cada tipo. Para sistemas que aceitam novas gravações na camada efêmera, isso pode ser feito salvando periodicamente dados efêmeros em disco. Outros sistemas usam cópias na memória somente leitura de dados persistentes para acelerar o acesso de leitura. Esses sistemas podem recarregar os dados do armazenamento de apoio a qualquer momento para atualizar seus dados.
Tipo de armazenamento de backup | Os dados sobrevivem a reinicializações? | Vantagens | Exemplos |
---|---|---|---|
No disco | Sim | Longevidade dos dados | MySQL |
Na memória | Não | Velocidade operacional | memcached |
Interagindo com bancos de dados para gerenciar seus dados
Enquanto o sistema de banco de dados cuida de como armazenar os dados em disco ou na memória, ele também fornece uma interface para usuários ou aplicativos. As interfaces para o banco de dados devem ser capazes de representar as operações que as partes externas podem realizar e devem ser capazes de representar todos os tipos de dados que o sistema suporta.
De acordo com a Wikipedia, os bancos de dados normalmente permitem os quatro tipos de interações a seguir:
- Definição de dados :Criar, modificar e remover definições da estrutura dos dados. Essas operações alteram as propriedades que afetam como o banco de dados aceitará e armazenará dados. Isso é mais importante em alguns tipos de banco de dados do que em outros.
- Atualizar :Insira, modifique e exclua dados no banco de dados. Essas operações alteram os dados reais que estão sendo gerenciados.
- Recuperação :Fornece acesso aos dados armazenados. Os dados podem ser recuperados como estão ou muitas vezes podem ser filtrados ou transformados para transformá-los em um formato mais útil. Muitos sistemas de banco de dados entendem linguagens de consulta avançadas para conseguir isso.
- Administração :outras tarefas como gerenciamento de usuários, segurança, monitoramento de desempenho etc. que são necessárias, mas não diretamente relacionadas aos dados em si.
Vamos ver isso com um pouco mais de detalhes abaixo.
As definições de dados controlam a forma e a estrutura dos dados dentro do sistema
Criar e controlar a estrutura que seus dados terão dentro do banco de dados é uma parte importante do gerenciamento de banco de dados. Isso pode ajudá-lo a controlar a forma ou estrutura de seus dados antes de ingeri-los no sistema. Ele também permite que você configure restrições para garantir que seus dados cumpram determinados parâmetros.
Em bancos de dados que operam em dados altamente regulares, como bancos de dados relacionais, essas definições geralmente são conhecidas como esquema do banco de dados . Um esquema de banco de dados é um esboço estrito de como os dados devem ser formatados para serem aceitos por um banco de dados específico. Isso abrange os campos específicos que devem estar presentes em registros individuais, bem como requisitos para valores como tipo de dados, comprimento do campo, valores mínimos ou máximos, etc. Um esquema de banco de dados é uma das ferramentas mais importantes que um proprietário de banco de dados tem para influenciar e controlar os dados que serão armazenados no sistema.
Os sistemas de gerenciamento de banco de dados que valorizam a flexibilidade em vez da regularidade são frequentemente chamados de bancos de dados sem esquema . Embora isso pareça implicar que os dados armazenados nesses bancos de dados não tenham estrutura, isso geralmente não é o caso. Em vez disso, a estrutura do banco de dados é determinada pelos próprios dados e pelo conhecimento e relação do aplicativo com os dados. O banco de dados geralmente ainda adere a uma estrutura, mas o sistema de gerenciamento de banco de dados está menos envolvido na imposição de restrições. Esta é uma escolha de design que tem vantagens e desvantagens dependendo da situação.
Atualizações de dados para ingerir, modificar e remover dados do sistema
As atualizações de dados incluem qualquer operação que:
- Insere novos dados no sistema
- Modifica entradas existentes
- Exclui entradas do banco de dados
Esses recursos são essenciais para qualquer banco de dados e, em muitos casos, constituem a maioria das ações que o sistema de banco de dados processa. Esses tipos de atividades — operações que causam alterações nos dados do sistema — são conhecidas coletivamente como gravação operações.
As ações de gravação são importantes para qualquer fonte de dados que mudará com o tempo. Mesmo a remoção de dados, uma ação destrutiva, é considerada uma operação de gravação, pois modifica os dados dentro do sistema.
Como as operações de gravação podem alterar os dados, essas ações são potencialmente perigosas. A maioria dos administradores de banco de dados configura seus sistemas para restringir as operações de gravação a determinados processos de aplicativos para minimizar a chance de manipulação acidental ou mal-intencionada de dados. Por exemplo, a análise de dados, que usa dados existentes para responder a perguntas sobre o desempenho de um site ou o comportamento dos visitantes, exige apenas permissão de leitura. Por outro lado, a parte da aplicação que registra os pedidos de um usuário precisa ser capaz de gravar novos dados no banco de dados.
Recuperando dados para extrair informações ou responder a perguntas específicas
Armazenar dados não é muito útil, a menos que você tenha uma maneira de recuperá-los quando precisar. Como o retorno de dados não afeta nenhuma das informações atualmente armazenadas no banco de dados, essas ações são chamadas de ler operações. As operações de leitura são a principal maneira de coletar dados já armazenados em um banco de dados.
Os sistemas de gerenciamento de banco de dados quase sempre têm uma maneira direta de acessar os dados por meio de um identificador exclusivo, geralmente chamado de chave primária . Isso permite o acesso a qualquer entrada fornecendo a chave.
Muitos sistemas também possuem métodos sofisticados de consulta ao banco de dados para retornar conjuntos de dados que correspondam a critérios específicos ou retornem informações parciais sobre entradas. Esse tipo de flexibilidade de consulta ajuda o sistema de gerenciamento de banco de dados a operar como um processador de dados, além de seus recursos básicos de armazenamento de dados. Ao desenvolver consultas específicas, os usuários podem solicitar ao sistema de banco de dados que retorne apenas as informações necessárias. Esse recurso é frequentemente usado em conjunto com operações de gravação para localizar e modificar um registro específico por suas propriedades.
Administrar o sistema de banco de dados para manter tudo funcionando perfeitamente
A categoria final de ações que os bancos de dados geralmente suportam são as funções administrativas. Essa é uma classe de ações ampla e geral que ajuda a dar suporte ao ambiente de banco de dados sem influenciar diretamente os próprios dados. Alguns itens que podem se encaixar neste grupo incluem:
- Gerenciando usuários, permissões, autenticação e autorização
- Configuração e manutenção de backups
- Configurando a mídia de apoio para armazenamento
- Gerenciando a replicação e outras considerações de escalonamento
- Fornecendo opções de recuperação on-line e off-line
Esse conjunto de ações se alinha às preocupações administrativas básicas comuns a qualquer aplicativo moderno.
As operações administrativas podem não ser centrais para a funcionalidade principal de gerenciamento de dados, mas esses recursos geralmente diferenciam sistemas de gerenciamento de banco de dados semelhantes. Ser capaz de fazer backup e restaurar dados com facilidade, implementar gerenciamento de usuários que se conecta a sistemas existentes ou dimensionar seu banco de dados para atender à demanda são recursos essenciais para operar em produção. Bancos de dados que não prestam atenção a essas áreas geralmente lutam para obter adoção em ambientes do mundo real.
Quais responsabilidades os bancos de dados têm?
Dada a descrição acima, como podemos generalizar as responsabilidades primárias que os bancos de dados têm? A resposta depende muito do tipo de banco de dados que está sendo usado e dos requisitos de seus aplicativos. Mesmo assim, há um conjunto comum de responsabilidades que todos os bancos de dados procuram fornecer.
Proteger a integridade dos dados por meio de gravação e reconstituição fiéis
A integridade dos dados é um requisito fundamental de um sistema de banco de dados, independentemente de sua finalidade ou design. Os dados carregados no banco de dados devem poder ser recuperados de forma confiável, sem modificação, manipulação ou apagamento inesperados. Isso requer métodos confiáveis de carregamento e recuperação de dados, bem como serialização e desserialização dos dados conforme necessário para armazená-los em mídia física.
Os bancos de dados geralmente contam com recursos para verificar os dados à medida que são gravados ou recuperados, como soma de verificação, ou para proteger contra problemas causados por desligamentos inesperados, usando técnicas como logs de gravação antecipada, por exemplo. A integridade dos dados se torna mais desafiadora quanto mais distribuído for o armazenamento de dados, pois cada parte do sistema deve refletir o estado atual desejado de cada item de dados. Isso geralmente é alcançado com requisitos e respostas mais robustos de vários membros sempre que os dados são alterados no sistema.
Oferecendo desempenho que atende aos requisitos do ambiente de implantação
Os bancos de dados devem ter um desempenho adequado para serem úteis. As características de desempenho de que você precisa dependem muito das demandas específicas de seus aplicativos. Cada ambiente tem um equilíbrio único de solicitações de leitura e gravação e você terá que decidir o que significa desempenho aceitável para ambas as categorias.
Os bancos de dados geralmente são melhores na execução de certos tipos de operações do que outros. As características de desempenho operacional geralmente refletem o tipo de banco de dados usado, o esquema ou estrutura de dados e a própria operação. Em alguns casos, recursos como indexação , que cria um armazenamento alternativo otimizado para desempenho de dados acessados com frequência, pode fornecer uma recuperação mais rápida para esses itens. Outras vezes, o banco de dados pode não ser adequado para os padrões de acesso solicitados. Isso é algo a ser considerado ao decidir sobre que tipo de banco de dados você precisa.
Configurando processos para permitir acesso simultâneo seguro
Embora isso não seja um requisito estrito, na prática, os bancos de dados devem permitir acesso simultâneo. Isso significa que várias partes devem poder trabalhar com o banco de dados ao mesmo tempo. Os registros devem ser legíveis por qualquer número de usuários ao mesmo tempo e graváveis quando não estiverem bloqueados por outro usuário.
O acesso concorrente geralmente significa que o banco de dados deve implementar alguns outros recursos fundamentais, como contas de usuário, um sistema de permissões e mecanismos de autenticação e autorização. Deve também desenvolver estratégias para evitar que vários usuários tentem manipular os mesmos dados simultaneamente. O bloqueio de registros e as transações são frequentemente implementados para resolver essas preocupações.
Recuperando dados individualmente ou agregados
Uma das responsabilidades fundamentais de um banco de dados é a capacidade de recuperar dados mediante solicitação. As solicitações podem ser para dados individuais associados a um único registro ou podem envolver a recuperação dos dados encontrados em vários registros diferentes. Ambos os casos devem ser possíveis na maioria dos sistemas.
Na maioria dos bancos de dados, algum nível de processamento de dados é fornecido pelo próprio banco de dados durante a recuperação. Estes podem incluir os seguintes tipos de operações:
- Pesquisando por critérios
- Filtrar e aderir a restrições
- Extrair campos específicos
- Média, classificação etc.
Essas opções ajudam você a articular os dados desejados e o formato que seria mais útil.
Alternativas para bancos de dados
Antes de prosseguirmos, devemos dar uma breve olhada em quais são suas opções se você não usar um banco de dados.
A maioria dos métodos que armazenam dados podem ser classificados como algum tipo de banco de dados. Algumas exceções incluem o seguinte.
Memória local ou sistemas de arquivos temporários
Às vezes, os aplicativos produzem dados que não são úteis ou que são relevantes apenas para o tempo de vida do aplicativo. Nesses casos, você pode querer manter esses dados na memória ou transferi-los para um sistema de arquivos temporário, pois não precisará deles quando o aplicativo for encerrado. Para casos em que os dados nunca são úteis, você pode desabilitar a saída completamente ou registrá-la em
/dev/null
. Serializando dados do aplicativo diretamente para o sistema de arquivos local
Outra instância em que um banco de dados pode não ser necessário é quando uma pequena quantidade de dados pode ser serializada e desserializada diretamente. Isso só é prático para pequenas quantidades de dados com um padrão de uso previsível que não envolve muita simultaneidade, se houver. Isso não é bem dimensionado, mas pode ser útil para determinados casos, como a saída de informações de log local.
Armazenar objetos semelhantes a arquivos diretamente no disco ou no armazenamento de objetos
Às vezes, os dados dos aplicativos podem ser gravados diretamente no disco ou em um armazenamento alternativo, em vez de serem armazenados em um banco de dados. Por exemplo, se os dados já estiverem organizados em um formato orientado a arquivos, como um arquivo de imagem ou áudio, e não exigir metadados adicionais, pode ser mais fácil armazená-los diretamente no disco ou em um armazenamento de objetos dedicado.
Para que são usados os bancos de dados?
Quase todos os aplicativos e sites que não são totalmente estáticos dependem de um banco de dados em algum lugar de seu ambiente. O objetivo principal do banco de dados geralmente determina o tipo de banco de dados usado, os dados armazenados e os padrões de acesso empregados. Muitas vezes, vários sistemas de banco de dados são implantados para lidar com diferentes tipos de dados com diferentes requisitos. Alguns bancos de dados são flexíveis o suficiente para cumprir várias funções, dependendo da natureza dos diferentes conjuntos de dados.
Vamos dar uma olhada em um exemplo para discutir os pontos de contato que um aplicativo Web típico pode ter com bancos de dados. Vamos fingir que o aplicativo contém uma vitrine básica e vende itens que rastreia em um inventário.
Armazenamento e processamento de dados do site
Um dos principais usos dos bancos de dados é armazenar e processar dados relacionados ao site. Esses itens afetam a forma como as informações do site são organizadas e, em muitos casos, constituem a maior parte do "conteúdo" do site.
No aplicativo de exemplo mencionado acima, o banco de dados preencheria a maior parte do conteúdo do site, incluindo informações do produto, detalhes do inventário e informações do perfil do usuário. Isso significa que o banco de dados ou algum cache intermediário seria consultado sempre que uma lista de produtos, uma página de detalhes do produto ou um perfil de usuário precisasse ser exibido.
Um banco de dados também estaria envolvido ao exibir pedidos atuais e passados, calcular o custo de envio e aplicar descontos verificando códigos de desconto ou calculando recompensas frequentes para clientes. Nosso site de exemplo usaria o sistema de banco de dados para criar pedidos corretamente, combinando informações do produto, estoque e informações do usuário. As informações compostas registradas em um pedido seriam armazenadas em um banco de dados novamente para rastrear o processamento do pedido, permitir devoluções, cancelar ou modificar pedidos ou permitir um melhor suporte ao cliente.
Analisar informações para ajudar a tomar melhores decisões
As ações da última categoria estavam relacionadas à funcionalidade básica do site. Embora sejam muito importantes para lidar com os requisitos de dados da camada de aplicativo, eles não representam o quadro completo.
Depois que seu aplicativo da Web começar a registrar usuários e processar pedidos, você provavelmente desejará responder a perguntas detalhadas sobre como os diferentes produtos estão sendo vendidos, quem são seus usuários mais lucrativos e quais fatores influenciam suas vendas. Essas são perguntas analíticas que podem ser executadas a qualquer momento para reunir informações atualizadas sobre as tendências e o desempenho de sua organização.
Esses tipos de operações costumam ser chamados de inteligência de negócios ou análise . Juntos, eles ajudam as organizações a entender o que aconteceu no passado e a fazer mudanças informadas. Os sistemas de banco de dados armazenam a maioria dos dados usados durante esses processos e devem fornecer as ferramentas apropriadas ou recursos de consulta para responder a perguntas sobre eles.
Em nosso aplicativo de exemplo, os bancos de dados podem ser consultados para responder a perguntas sobre tendências de produtos, números de registro de usuários, quais estados enviamos mais ou quem são nossos usuários mais fiéis. Essas consultas relativamente básicas podem ser usadas para compor perguntas mais complexas para entender e controlar melhor os fatores que influenciam o desempenho do produto.
Gerenciando a configuração do software
Alguns tipos de bancos de dados são usados como repositórios de valores de configuração para outros softwares na rede. Eles servem como uma fonte central de verdade para valores de configuração na rede. À medida que novos serviços são iniciados, eles são configurados para verificar os valores de chaves específicas no endereço de rede do banco de dados de configuração. Isso permite que você armazene todas as informações necessárias para inicializar serviços em um único local.
Após a inicialização, os aplicativos podem ser configurados para observar as chaves relacionadas à sua configuração quanto a alterações. Se uma alteração for detectada, o aplicativo pode se reconfigurar para usar a nova configuração. Esse processo às vezes é orquestrado por um processo de gerenciamento que implementa os novos valores ao longo do tempo, desativando os serviços antigos à medida que os novos serviços surgem, alterando a configuração ativa ao longo do tempo para manter a disponibilidade.
Nosso aplicativo pode usar esse tipo de banco de dados para armazenar dados de configuração persistentes para todo o ambiente do aplicativo. Nossos servidores de aplicativos, servidores da Web, balanceadores de carga, filas de mensagens e muito mais podem ser configurados para fazer referência a um banco de dados de configuração para obter suas configurações de produção. Os desenvolvedores do aplicativo poderiam então modificar o comportamento do ambiente ajustando os valores de configuração em um local central.
Coleta de logs, eventos e outras saídas
A execução de aplicativos que atendem ativamente a solicitações pode gerar muita saída. Isso inclui arquivos de log, eventos e outras saídas. Eles podem ser gravados em disco ou em algum outro local não gerenciado, mas isso limita sua utilidade. A coleta desse tipo de dados em um banco de dados facilita o trabalho, a identificação de padrões e a análise de eventos quando algo inesperado acontece ou quando você precisa saber mais sobre o desempenho histórico.
Nosso aplicativo de exemplo pode coletar logs de cada um de nossos sistemas em um banco de dados para facilitar a análise. Isso pode nos ajudar a encontrar correlações entre eventos se tentarmos analisar a origem dos problemas ou entender a saúde do nosso ambiente como um todo.
Separadamente, podemos coletar métricas produzidas por nossa infraestrutura e código em um banco de dados de série temporal , um banco de dados projetado especificamente para rastrear valores ao longo do tempo. Esse banco de dados pode ser usado para fornecer ferramentas de monitoramento e visualização em tempo real para fornecer às equipes de desenvolvimento e operações do aplicativo informações sobre desempenho, taxas de erro, etc.
Como diferentes funções funcionam com bancos de dados?
Os bancos de dados são fundamentais para o trabalho de muitas funções diferentes dentro das organizações. Em equipes menores, um ou alguns indivíduos podem ser responsáveis por desempenhar as funções de várias funções. Em empresas maiores, essas responsabilidades geralmente são segmentadas em funções discretas desempenhadas por indivíduos ou equipes dedicadas.
Arquitetos de dados
Os arquitetos de dados são responsáveis pela macroestrutura geral dos sistemas de banco de dados, pelas interfaces que expõem aos aplicativos e às equipes de desenvolvimento e pelas tecnologias e infraestrutura subjacentes necessárias para atender às necessidades de dados da organização.
As pessoas nessa função geralmente decidem sobre o modelo e a implementação de banco de dados apropriados que serão usados para diferentes aplicativos. Eles são responsáveis por implementar decisões de banco de dados investigando opções, decidindo sobre tecnologia, integrando-a com sistemas existentes e desenvolvendo uma estratégia de dados abrangente para a organização. Eles lidam com os sistemas de dados de forma holística e ajudam na decisão e implementação de modelos de dados para vários projetos.
DBAs (administradores de banco de dados)
Administradores de banco de dados, ou DBAs, são indivíduos responsáveis por manter os sistemas de dados funcionando sem problemas. Eles são responsáveis por planejar novos sistemas de dados, instalar e configurar software, configurar sistemas de banco de dados para outras partes e gerenciar o desempenho. Eles também são frequentemente responsáveis por proteger o banco de dados, monitorá-lo em busca de problemas e fazer ajustes no sistema para otimizar os padrões de uso.
Os administradores de banco de dados são especialistas em sistemas de banco de dados individuais e em como integrá-los bem ao sistema operacional e hardware subjacentes para maximizar o desempenho. Eles trabalham extensivamente com equipes que usam os bancos de dados para ajudar a gerenciar a capacidade e o desempenho e para ajudar as equipes a solucionar problemas com o sistema de banco de dados.
Desenvolvedores de aplicativos
Os desenvolvedores de aplicativos interagem com bancos de dados de muitas maneiras diferentes. Eles desenvolvem muitos dos aplicativos que interagem com o banco de dados. Isso é muito importante porque esses são quase sempre os únicos aplicativos que controlam como usuários individuais ou clientes interagem com os dados gerenciados pelo sistema de banco de dados. Desempenho, exatidão e confiabilidade são extremamente importantes para os desenvolvedores de aplicativos.
Os desenvolvedores gerenciam as estruturas de dados associadas a seus aplicativos para manter seus dados em disco. Eles devem criar ou usar mecanismos que possam mapear seus dados de programação para o sistema de banco de dados para que os componentes possam trabalhar juntos em harmonia. À medida que os aplicativos mudam, eles devem manter os dados e as estruturas de dados dentro do sistema de banco de dados sincronizados. Falaremos mais sobre como os desenvolvedores trabalham com bancos de dados posteriormente neste artigo.
SREs (engenheiros de confiabilidade do site) e profissionais de operações
Os SREs (engenheiros de confiabilidade do site) e os profissionais de operações interagem com os sistemas de banco de dados a partir de uma perspectiva de infraestrutura e configuração de aplicativos. Eles podem ser responsáveis por fornecer capacidade adicional, manter sistemas de banco de dados, garantir que a configuração do banco de dados corresponda às diretrizes organizacionais, monitorar o tempo de atividade e gerenciar backups.
De muitas maneiras, esses indivíduos têm responsabilidades sobrepostas com DBAs, mas não estão focados apenas em bancos de dados. A equipe de operações garante que os sistemas dos quais o restante da organização depende, incluindo sistemas de banco de dados, estejam funcionando de forma confiável e tenham um tempo de inatividade mínimo.
Inteligência de negócios e analistas de dados
Os departamentos de inteligência de negócios e analistas de dados estão interessados principalmente nos dados que já estão coletados e disponíveis no sistema de banco de dados. Eles trabalham para desenvolver insights com base em tendências e padrões nos dados para que possam prever o desempenho futuro, aconselhar a organização sobre possíveis mudanças e responder a perguntas sobre os dados para outros departamentos, como marketing e vendas.
Os analistas de dados geralmente podem trabalhar exclusivamente com acesso somente leitura a sistemas de dados. As consultas executadas geralmente têm características de desempenho drasticamente diferentes daquelas usadas pelos aplicativos primários. Por causa disso, eles geralmente trabalham com réplicas de banco de dados, ou cópias, para que possam executar consultas agregadas de longa execução e desempenho intensivo que, de outra forma, podem afetar o uso de recursos do sistema de banco de dados primário.
Como trabalho com bancos de dados como desenvolvedor?
Então, como você realmente trabalha com bancos de dados como desenvolvedor de aplicativos? Em um nível básico, se seu aplicativo tiver que gerenciar e persistir o estado, trabalhar com um banco de dados será uma parte importante do seu código.
Traduzindo dados entre seu aplicativo e o banco de dados
Você precisará criar ou usar uma interface existente para se comunicar com o banco de dados. Você pode se conectar diretamente ao banco de dados usando funções de rede regulares, alavancar bibliotecas simples ou bibliotecas de programação de nível superior (por exemplo, construtores de consultas ou ORMs).
ORMs , ou mapeadores objeto-relacionais, são camadas de mapeamento que traduzem as tabelas encontradas no banco de dados relacional para as classes usadas nas linguagens de programação orientadas a objetos e vice-versa. Embora essa tradução seja frequentemente útil, ela nunca é perfeita. Incompatibilidade de impedância objeto-relacional é um termo usado para descrever o atrito causado pela diferença em como os bancos de dados relacionais e os programas orientados a objetos estruturam os dados.
Embora os bancos de dados relacionais e a programação orientada a objetos descrevam duas opções de design específicas, o problema de traduzir entre a camada de aplicativo e o de banco de dados é generalizado e existe independentemente do tipo de banco de dados ou do paradigma de programação. Camada de abstração do banco de dados é um termo mais geral para software com a responsabilidade de traduzir entre esses dois contextos.
Manter as mudanças estruturais em sincronia com o banco de dados
Um fato importante que você descobrirá ao desenvolver seus aplicativos é que, como o banco de dados existe fora de sua base de código, ele precisa de atenção especial para lidar com alterações em sua estrutura de dados. Esse problema é mais prevalente em alguns designs de banco de dados do que em outros.
A abordagem mais comum para sincronizar as estruturas de dados de seu aplicativo com seu banco de dados é um processo chamado migração de banco de dados ou migração de esquema (ambos conhecidos coloquialmente simplesmente como migração). A migração envolve a atualização da estrutura do seu banco de dados para refletir as alterações à medida que o modelo de dados do seu aplicativo evolui. Estes geralmente assumem a forma de uma série de arquivos, um para cada evolução, que contém as instruções necessárias para transformar o banco de dados no novo formato.
Proteger o acesso aos seus dados e limpar a entrada
Uma responsabilidade importante ao trabalhar com bancos de dados como desenvolvedor é garantir que seus aplicativos não permitam acesso não autorizado aos dados. A segurança de dados é um problema amplo e de várias camadas com muitas partes interessadas. Em última análise, algumas das considerações de segurança serão seu dever cuidar.
Seu aplicativo exigirá acesso privilegiado ao seu banco de dados para executar tarefas de rotina. Por segurança, a estrutura de autorização do banco de dados pode ajudar a restringir o tipo de operações que seu aplicativo pode executar. No entanto, você precisa garantir que seu aplicativo restrinja essas operações adequadamente. Por exemplo, se seu aplicativo gerencia dados de perfil de usuário, você deve impedir que um usuário manipule esse acesso para visualizar ou editar as informações de outros usuários.
One specific challenge is sanitizing user input. Sanitizing input means taking special precautions when operating on any data provided by a user. There is a long history of malicious actors using normal user input mechanisms to trick applications into revealing sensitive data. Crafting your applications to protect against these scenarios is an important skill.
Conclusion
Databases are an indispensable component in modern application development. Storing and controlling the stateful information related to your application and its environment is an important responsibility that requires reliability, performance, and flexibility.
Fortunately, there are many different database options designed to fulfil the requirements of different types of applications. In our next article, we'll take an in-depth look at the different types of databases available and how they can be used to match different types of application requirements.