Database
 sql >> Base de Dados >  >> RDS >> Database

Bancos de dados relacionais versus não relacionais - Parte 1


Nos últimos anos, as ferramentas de banco de dados NoSQL ou não relacional ganharam muita popularidade em termos de armazenamento de grande quantidade de dados e dimensionamento fácil. Há debates sobre se os bancos de dados não relacionais substituirão os bancos de dados relacionais no futuro. Com o crescente número de dados sociais e outros dados não estruturados, a seguir estão algumas das questões levantadas sobre bancos de dados relacionais.
Os bancos de dados relacionais são capazes de lidar com big data?
Os bancos de dados relacionais são capazes de escalar uma enorme quantidade de dados?
Os bancos de dados relacionais são adequados para os dados da era moderna?
Antes de responder a essas perguntas, deixe-nos saber alguns conceitos básicos de bancos de dados relacionais e não relacionais.

Noções básicas de bancos de dados relacionais e não relacionais


Bancos de dados relacionais: O conceito de Banco de Dados Relacional foi desenvolvido na década de 1970. A característica mais importante de todos os bancos de dados relacionais é o suporte de propriedades ACID (Automicity,Consistency, Isolation and Durability) que garantem que todas as transações sejam processadas de forma confiável.
Automaticidade: Cada transação é única e garante que, se uma parte lógica de uma transação falhar, tudo será revertido para que os dados não sejam alterados.
Consistência: Todos os dados gravados no banco de dados estão sujeitos às regras definidas (restrições, gatilhos, etc)
Isolamento: As alterações feitas em uma transação não são visíveis para outras transações até que sejam confirmadas.
Durabilidade: As alterações confirmadas em uma transação são armazenadas e disponibilizadas no banco de dados mesmo se houver uma falha de energia ou o banco de dados ficar off-line repentinamente.
Estritamente estruturado: Os objetos nos bancos de dados relacionais são estritamente estruturados. Todos os dados da tabela são armazenados em linhas e colunas. Cada coluna tem um tipo de dados. É principalmente normalizado. A Linguagem de Consulta Estruturada (SQL) é adequada para bancos de dados relacionais para armazenar e recuperar dados de forma estruturada. As consultas são comandos em inglês simples. Há sempre um número fixo de colunas, embora colunas adicionais possam ser adicionadas posteriormente. A maioria das tabelas estão relacionadas entre si com chaves primárias e estrangeiras proporcionando assim “Integridade Referencial” entre os objetos. Os principais fornecedores são ORACLE, SQL Server, MySQL, PostgreSQL, etc.
Bancos de dados não relacionais: O conceito de bancos de dados não relacionais entrou em cena para lidar com o rápido crescimento de dados não estruturados e dimensioná-los facilmente. Isso fornece um esquema flexível para que não exista algo chamado “Integridade Referencial” como vemos em bancos de dados relacionais. Os dados são altamente desnormalizados e não requerem JOINs entre objetos. Isso relaxa a propriedade ACID de bancos de dados relacionais e oferece suporte a CAP (Consistência, Disponibilidade e Particionamento). Mas destes três apenas dois são garantidos a qualquer momento. Portanto, ao contrário do ACID, ele suportará apenas o BASE (estado suave basicamente disponível, consistência eventual). Os bancos de dados iniciais criados com base nesses conceitos são BigTable do Google, HBase do Yahoo, Cassandra do Facebook, etc.
Categorias de bancos de dados não relacionais: Os bancos de dados não relacionais podem ser classificados em quatro categorias principais, como banco de dados de valores-chave, banco de dados de colunas, banco de dados de documentos e banco de dados de gráficos.
Banco de dados de valores-chave: Esta é a forma mais simples de banco de dados NoSQL, onde cada valor é associado à chave exclusiva.(ex Redis)
Banco de dados de coluna: Esse banco de dados é capaz de armazenar e processar uma grande quantidade de dados usando um ponteiro que aponta para várias colunas distribuídas em um cluster. (ex HBase)
Banco de dados de documentos: Esse banco de dados pode conter muitos documentos de valores-chave com muitos níveis aninhados. Consultas eficientes são possíveis com este banco de dados. Os documentos são armazenados no formato JSON.(ex MongoDB)
Banco de dados gráfico: Em vez de linhas e colunas tradicionais, esses bancos de dados usam nós e arestas para representar estruturas gráficas e armazenar dados. (ex Neo4J)