Uma vantagem significativa ao usar um RDBMS é a “integridade referencial”. A integridade referencial refere-se à precisão e consistência dos dados. Esta integridade de dados é alcançada através do uso destas chaves primárias e estrangeiras.
Integridade referencial preserva a integridade dos dados através de “restrições”. Restrições são as regras que reforçam a precisão dos dados, impedindo que um registro relacionado seja excluído sem antes apagar o registro primário na tabela principal. Se uma relação chave primária foi adicionada corretamente, então tentar apagar um registro primário sem primeiro remover registros relacionados de outras tabelas irá bloquear a transação até que os registros relacionados sejam removidos. Isto impede o que é chamado de “registros órfãos”, que são registros referenciados em uma tabela que não tem mais um registro primário na tabela principal.
As três regras que a integridade referencial impõe são:
1. Uma chave estrangeira deve ter uma chave primária correspondente. (“No orphans” rule.)
2. Quando um registro em uma tabela primária é apagado, todos os registros relacionados referenciando a chave primária também devem ser apagados, o que normalmente é feito usando a cascata delete.
3. Se a chave primária de um registro mudar, todos os registros correspondentes em outras tabelas usando a chave primária como uma chave estrangeira também devem ser modificados. Isto pode ser feito usando uma atualização em cascata.
Querying the data in a relational database management system is done by using Structured Querying Language (SQL), which is a robust language designed for managing the data housed in a relational database.
SQL has the capabilities to create, retrive, update and delete records and heavily rely on this primary/foreign key relationship to identify related data across multiple tables. Os recursos do SQL fazem do sistema de banco de dados relacional a primeira escolha para qualquer aplicação que exija uma forte funcionalidade transacional, data mining e relatórios complexos.
Esta instrução SQL demonstra a recuperação de um conjunto de resultados de como todos os registros de vendas para um único funcionário cujo EmployeeId = 1 seriam recuperados.
SELECT * FROM Employees
JOIN Sales ON Employees.EmployeeId = SALES.EmployeeId
WHERE EmployeeId = 1
Esta próxima instrução SQL é um exemplo de uma consulta implementando joins em várias tabelas. Neste caso, a consulta SQL está recuperando todas as informações de empregados, informações de vendas e informações de clientes da tabela Clientes.
SELECT * DE Empregados
JUNtar vendas sobre Empregados.EmployeeId = SALES.EmployeeId
Juntar clientes sobre clientes.CustomerId = SALES.CustomerId
AQUI EmpregadoId = 1
Bases de dados relacionais também fornecem funcionalidade chamada “indexação”. Uma base de dados de indexação é uma estrutura de dados que melhora a velocidade de recuperação de dados. Os índices são normalmente adicionados aos campos de dados que são rotineiramente usados para consultar e juntar tabelas. Nas instruções SQL acima EmployeeId e CompanyId seriam candidatos para este tipo de otimização.
Bases de dados não-relacionais
O banco de dados não-relacional, ou banco de dados NoSQL, armazena os dados. No entanto, ao contrário da base de dados relacional, não existem tabelas, linhas, chaves primárias ou chaves estrangeiras. Ao invés disso, o banco de dados não-relacional utiliza um modelo de armazenamento otimizado para requisitos específicos do tipo de dados sendo armazenados.
Alguns dos bancos de dados NoSQL mais populares são MongoDB, Apache Cassandra, Redis, Couchbase e Apache HBase.
Existem quatro tipos populares não-relacionais: banco de dados de documentos, banco de dados orientado a colunas, banco de dados de valores de chaves e banco de dados gráficos. Muitas vezes combinações destes tipos são utilizadas para uma única aplicação.
Document data stores
A document data store gere um conjunto de campos de string nomeados e valores de dados de objectos numa entidade referida como um “documento” tipicamente armazenado na forma de documentos JSON, que podem ser codificados de várias formas, incluindo XML, YAML, JSON, BSON ou como texto simples. Os campos dentro dos documentos são expostos, permitindo a uma aplicação consultar e filtrar dados usando valores de campo.
Os arquivos de documentos não requerem que todos os documentos mantenham estruturas de dados idênticas, o que proporciona uma grande flexibilidade. É fácil ver então como essa flexibilidade pode ser alavancada à medida que os requisitos de uma organização mudam.
Armazenamento de dados em colunas (ou orientado a colunas)
Um armazém de dados em colunas organiza os dados em colunas, o que é conceitualmente similar ao banco de dados relacional. A verdadeira vantagem de um banco de dados coluna-família está em sua abordagem desnormalizada para estruturar dados esparsos, que vem de sua abordagem orientada a coluna para armazenar dados.
Lojas de valores-chave
Esta é a menos complicada das bases de dados NoSQL e, como o nome indica, a loja de valores-chave é simplesmente uma coleção de pares de valores-chave contidos dentro de um objeto.
Lojas de documentos
Lojas de documentos são um pouco mais complexas do que as lojas de valores chave. Elas não assumem uma estrutura de documento particular especificada com um esquema. A loja de documentos é projetada para armazenar documentos do dia-a-dia como está, e eles permitem consultas complicadas.
MongoDB e CouchDB são ambos exemplos de lojas de documentos.
Bases de dados gráficas
O último é o mais complexo tipo de base de dados não relacional. Foi concebida para armazenar de forma eficiente as relações entre entidades. Quando os dados estão muito interconectados, como sistemas de compras e manufatura ou catálogos de referência, bancos de dados gráficos são uma boa solução.
As possibilidades de bancos de dados gráficos NoSQL são infinitas, e com os dados que coletamos cada vez mais interconectados, os bancos de dados gráficos vão continuar a ganhar popularidade, incluindo o banco de dados relacional ainda dominante.
Em vez da Linguagem de Consulta de Estrutura (SQL) usada por bancos de dados relacionais, o banco de dados NoSQL usa mapeamento objeto-relacional (ORM). O conceito de ORM é a capacidade de escrever consultas utilizando a sua linguagem de programação preferida. Algumas das ORMs mais populares são Java, Javascript, .NET e PHP.
Em resumo
O que você precisa saber sobre bancos de dados relacionais:
-
Tratam dados estruturados.
-
As relações no sistema têm restrições, o que promove um alto nível de integridade dos dados.
-
Existem recursos de indexação ilimitada, o que resulta em tempos de resposta de consulta mais rápidos.
-
São excelentes para manter as transações de dados seguras.
-
Fornecem a capacidade de escrever consultas SQL complexas para análise de dados e relatórios.
-
Os seus modelos podem assegurar e aplicar regras de negócio na camada de dados, adicionando um nível de integridade de dados não encontrado em um banco de dados não-relacional.
-
São orientados para tabelas e linhas.
-
Utilizam SQL (linguagem de consulta estruturada) para modelar e manipular dados, o que é muito poderoso.
-
Exemplos de banco de dados doSQL: MySql, Oracle, Sqlite, Postgres e MS-SQL. Exemplos de banco de dados NoSQL: MongoDB, BigTable, Redis, RavenDb, Cassandra, Hbase, Neo4j e CouchDb.
-
Bancos de dados do tipoSQL são mais adequados para aplicações do tipo transaccionais pesadas.
Bancos de dados não-relacionais/NoSQL:
-
Têm a capacidade de armazenar grandes quantidades de dados com pouca estrutura.
-
Fornecem escalabilidade e flexibilidade para atender às mudanças nas exigências do negócio.
-
Fornecem opções sem esquema ou esquema sobre leitura.
-
Têm a capacidade de capturar todos os tipos de dados “Grandes Dados” incluindo dados não estruturados.
-
Têm a capacidade de capturar todos os tipos de dados “Grandes Dados” incluindo dados não estruturados.
-
Têm a capacidade de armazenar grandes quantidades de dados com pouca estrutura.
-
Exemplos de bancos de dados noSQL ou não relacionados: MongoDB, Apache Cassandra, Redis, Couchbase e Apache HBase.
-
São os melhores para o desenvolvimento rápido de aplicações. NoSQL é a melhor seleção para armazenamento flexível de dados com pouca ou nenhuma limitação de estrutura.
-
Fornecem modelo flexível de dados com a capacidade de facilmente armazenar e combinar dados de qualquer estrutura sem a necessidade de modificar um esquema.
Então, qual você deve escolher para o seu projeto? Para a resposta a esta pergunta, podemos voltar ao início deste artigo. Estes dois tipos muito diferentes de bases de dados são igualmente úteis por direito próprio, mas por razões contrastantes e por casos de uso. Uma não é necessariamente melhor que a outra e tanto as bases de dados relacionais como as não relacionais têm o seu lugar.
Em suma, não há uma única resposta certa. A melhor maneira de determinar que tipo de banco de dados é melhor para seu projeto é analisar as necessidades da organização e a funcionalidade da aplicação que você precisa alcançar.