O que C# e Javascript podem nos dizer sobre bancos relacionais e não-relacionais?
Começo esse texto com uma provocação:
Se banco de dados relacional fosse C# (ou qualquer outra linguagem fortemente tipada), o banco de dados não-relacional seria então Javascript?
Quando conclui o módulo de "Introdução Banco de Dados" do bootCamp da Pottencial, essa dúvida ficou ressoando na minha cabeça!
Entendam, conheço muitíssimo pouco sobre o Js (sei de sua importância, respeito quem trabalha com ele, mas, neste momento eu quero ficar razoavelmente bom em C# primeiro), entretanto, pelo pouco que já vi sobre Javascript, ele é um pouco mais flexível quanto aos valores que são utilizados nele (pelo menos, no que diz respeito a sua aplicação de maior abrangência que é a programação para web). Então, quando falamos sobre bancos de dados não-relacionais, estamos pensando em um banco de dados que é um pouco mais "mente aberta" quanto a estruturação dos dados que são apresentados a ele.
Se um banco de dados relacional fosse receber um adjetivo, literal poderia se encaixar muitíssimo bem, já os bancos não relacionais, bom, eles poderiam ser abordados como levemente conceituais...
Como assim?
Um banco relacional, lida com estruturamento rígido: os dados inseridos nele, DEVEM obrigatoriamente obedecer os critérios estabelecidos para os dados que ele recebe. Uma coluna que recebeu a especificação de que receberá inteiros, receberá única e exclusivamente inteiros, uma coluna para Datetimes (inclusive é um ponto que precisa receber bastante atenção dos devs quando falamos em bancos de dados relacionais), vai receber Datetimes apenas se estes atenderem as especificações de formato!
No caso de um banco não-relacional, ele tem sim algum critério quanto a estrutura, entretanto, ele não vai impedir que você inclua 1 ao invés de "1", num determinado campo...
Pareceu familiar? Então, da mesma forma do lugar onde você pensou já ter visto algo semelhante, a atenção deve ser do desenvolvedor ao trabalhar com os dados vindos e idos para o banco não-relacional para que não tenhamos inconsistências de informações geradas devido a essa "maleabilidade" dos dados. No caso de um banco relacional por outro lado, se você tentar (é, ele não vai deixar) incluir 1 no lugar de "1" (tipo de dado inadequado para o campo se falamos de inteiros), ele não vai permitir!
Sem muito aprofundamento, poderíamos dizer que no caso de uma banco de dados relacional, o maior cuidado para que esses dados possam ser inclusos é atenção quanto ao seu formato no momento da inserção...
Para bancos não-relacionais, podemos dizer que o maior cuidado deve estar nos resultados que pretendemos obter através da computação desses dados em nossas aplicações...
O restante o Leo já explicou, com muito maior competência do que eu poderei fazer aqui neste momento...
Dá uma revisada lá! Continue a codar e até breve!
Contatos:
linkedin : www.linkedin.com/in/rjsilva-oficial
github: https://github.com/rjsilvaoficial