O que é um BANCO DE DADOS?
Um BANCO DE DADOS (BD) é uma estrutura organizada de dados inter-relacionados, projetada para
ser armazenada e gerida de forma eficiente por um SGBD. O objetivo principal de um BD é armazenar
informações de maneira
sistemática, permitindo o acesso, a modificação e a recuperação rápida e eficiente dos dados.
Já os SGBD, ou SISTEMAS DE GERENCIAMENTO DE BANCO DE DADOS, são softwares projetados para
gerenciar, organizar, armazenar e recuperar dados de maneira eficiente e segura.
Eles permitem que os usuários interajam com os dados sem precisar se preocupar com os
detalhes de armazenamento e gerenciamento, oferecendo uma camada de abstração entre os
bancos de dados e os aplicativos ou usuários que os utilizam.
E por serem o software que facilita a criação, o gerenciamento e a manipulação de um
BD, possuem e devem possuir várias funcionalidades para serem classificados como um
SGBD.
Exemplos de algumas dessas funções são:
Permitem a definição de estruturas de dados, como tabelas, colunas e tipos de dados.
Oferecem linguagens de consulta, como SQL, para inserir, atualizar, excluir e consultar
dados.
Gerenciam permissões para garantir que apenas usuários autorizados possam acessar
ou modificar os dados.
-
Integridade e consistência:
Mantêm a integridade dos dados através de mecanismos, como chaves estrangeiras e
transações.
Possuem recursos para criar cópias de segurança dos dados e recuperar informações em caso de
falhas.
Gerenciam o acesso simultâneo de múltiplos usuários para garantir a integridade dos
dados durante operações concorrentes.
BD são fundamentais para diversas aplicações computacionais, e eles podem ser
classificados
basicamente em BANCO DE DADOS RELACIONAIS (SQL), e NÃO RELACIONAIS (NOSQL).
BANCO DE DADOS RELACIONAL (SQL):
BANCO DE DADOS RELACIONAIS, também conhecidos como SQL (STRUCTURED QUERY LANGUAGE), ou LINGUAGEM
DE CONSULTA ESTRUTURADA. Tem o intuito de organizar os dados em tabelas estruturizadas.
Cada tabela é composta por linhas e colunas, onde as colunas representam os atributos (ou campos) e
as linhas representam os registros (ou tuplas).
A relação entre as tabelas é estabelecida através de chaves estrangeiras, que são referências a
chaves primárias de outras tabelas. Isso permite a criação de consultas complexas que relacionam múltiplas
tabelas para extrair informações.
Vantagens do SQL:
SQL é uma linguagem padronizada pela indústria, o que facilita a interoperabilidade entre diferentes
tipos de SGBD.
A linguagem SQL é relativamente fácil de aprender e usar, especialmente para consultas básicas e
manipulação de dados.
SQL permite acesso rápido e eficiente aos dados, sendo capaz de recuperar múltiplos registros com
comandos simples.
SQL oferece recursos para garantir a integridade e consistência dos dados nos BANCO DE DADOS
RELACIONAIS.
A capacidade de realizar consultas complexas e bem estruturadas, especialmente com o uso de
cláusulas,
que facilitam a combinação de dados de várias tabelas.
Desvantagens do SQL:
Algumas versões de SGBD RELACIONAIS podem ter opções de licenciamento caras.
-
Compatibilidade limitada:
Uns tipos de SQL, por exemplo, é projetado para rodar apenas em servidores baseados no WINDOWS,
limitando assim a flexibilidade em ambientes multiplataforma.
SQL é baseado em esquemas rígidos, o que pode ser uma desvantagem quando se trabalha com dados não
estruturados
ou semiestruturados, onde o NOSQL pode oferecer mais flexibilidade.
BANCO DE DADOS NÃO RELACIONAL (NOSQL):
BANCO DE DADOS NÃO RELACIONAIS, ou NOSQL (NOT ONLY SQL), NÃO APENAS SQL, surgiram
como uma alternativa aos bancos de dados tradicionais (é referido o SQL aqui) para lidar com
grandes
volumes de dados e situações onde a flexibilidade na estrutura dos dados é mais
importante do que a consistência e a integridade transacional.
Eles não dependem de tabelas e linhas como estrutura de dados, permitindo armazenar dados de
maneira mais diversificada e menos estruturada.
E são basicamente, qualquer linguagem para SGBD que não seja baseada no SQL,
por isso que é chamado de NOSQL (NOT ONLY SQL - NÃO APENAS SQL). Alguns exemplos das categorias:
documentos, colunas, chave-valor, grafos, etc
Vantagens do NOSQL:
Bancos de dados NOSQL permitem armazenar dados com estruturas variáveis, o que
proporciona maior agilidade no desenvolvimento de aplicações que lidam com dados dinâmicos.
-
Escalabilidade horizontal:
NOSQL é frequentemente escolhido por sua capacidade de escalar horizontalmente, distribuindo
dados por vários servidores para lidar com cargas de trabalho muito grandes.
Em muitos casos, especialmente com grandes volumes de dados e operações de
leitura / escrita intensivas, os bancos de dados NOSQL podem oferecer melhor
desempenho do que os BD RELACIONAIS.
-
Suporte a dados não estruturados:
NOSQL é ideal para armazenar dados que não se encaixam bem em tabelas,
como documentos JSON, pares chave-valor, grafos ou colunas de dados variáveis.
Permite a modelagem de dados mais próxima da forma como os desenvolvedores
pensam e estruturam suas aplicações, reduzindo a necessidade de abstrações e
conversões.
Desvantagens do NOSQL:
Ao contrário do SQL, não há um padrão universal para a linguagem de consulta
em NOSQL, o que pode levar a uma curva de aprendizado mais acentuada e a problemas
de interoperabilidade (esse termo se refere à capacidade de diversos sistemas trabalharem em
conjunto).
Muitos sistemas NOSQL relaxam as restrições de integridade referencial que são
comuns em BD de SQL, o que pode dificultar a manutenção da consistência
dos dados.
-
Complexidade de consultas:
Realizar consultas complexas, especialmente aquelas que envolvem junções de
múltiplas tabelas ou coleções, pode ser mais difícil e menos eficiente em NOSQL.
Alguns bancos de dados NOSQL são relativamente novos e podem não ter a
mesma maturidade e quantidade de recursos do que os SGBD RELACIONAIS estabelecidos.
Muitos BD de NOSQL não oferecem suporte completo às propriedades
ACID (Atomicidade, Consistência, Isolamento e Durabilidade), o que pode ser uma
limitação crítica para aplicações que exigem transações altamente confiáveis.
OBSERVE:
NOSQL não é uma substituição direta para SQL, mas sim uma alternativa que é mais adequada
para certos tipos de requisitos. A escolha entre SQL e NOSQL deve ser feita com base nas
necessidades específicas do projeto, como a estrutura dos dados, a escala desejada,
os requisitos de transação etc.
E dependendo do caso, ambos podem ser usados ao mesmo tempo em um sistema híbrido, aproveitando as
vantagens dos dois.