Como explicar para sua avó a diferença entre SQL e NoSQL

Como explicar para sua avó a diferença entre SQL e NoSQL

Uma das decisões mais importantes que um desenvolvedor toma é qual banco de dados usar. Por muitos anos, as opções foram limitadas às diversas opções de banco de dados relacional que suportavam a Structured Query Language (SQL). Estes incluem MS SQL Server, Oracle, MySQL, PostgreSQL, DB2 e muitos mais.

Nos últimos 15 anos, muitos novos bancos de dados entraram no mercado sob a abordagem No-SQL. Isso inclui armazenamentos de valores-chave como Redis e Amazon DynamoDB, bancos de dados de colunas amplas como Cassandra e HBase, armazenamentos de documentos como MongoDB e Couchbase e bancos de dados gráficos e mecanismos de pesquisa como Elasticsearch e Solr.

Neste artigo, tentaremos entender SQL e NoSQL sem entrar em suas funcionalidades.
Além disso, nos divertiremos ao longo do caminho.

Explicando SQL para a vovó

Vovó, imagine que não sou seu único neto. Em vez disso, mamãe e papai se amavam como coelhos, tiveram 100 filhos e adotaram mais 50.

Então, você ama a todos nós e não quer esquecer nenhum de nossos nomes, aniversários, sabores de sorvete favoritos, tamanhos de roupas, hobbies, nomes de cônjuges, nomes de filhos e outros fatos super importantes. No entanto, vamos encarar isso. Você tem 85 anos e a boa e velha memória simplesmente não aguenta.

Felizmente, sendo o mais inteligente dos seus netos, posso ajudar. Então vou até sua casa, tiro algumas folhas de papel e peço para você assar alguns biscoitos antes de começarmos.

Em uma folha de papel fazemos uma lista chamada "Netos". Todo Neto gravado com algumas informações significativas sobre ele, incluindo um número único que agora indicará como Neto ele é. Além disso, por uma questão de organização, escrevemos os atributos nomeados no topo da lista para que sempre saibamos quais informações a lista contém.

id
nome
aniversário
ultima visita
tamanho de roupa
sorvete favorito
adotado

1
Jimmy
09-22-1992
09-01-2019
L
Chocolate de menta
falso

2
Jessica
07-21-1992
02-22-2018
M
estrada rochosa
verdadeiro

…continuamos a lista!

Lista de netos

Depois de um tempo você entende tudo e estamos quase terminando a lista! Porém, você se vira para mim e diz: “Esquecemos de acrescentar espaço para cônjuges, hobbies, netos!” Mas não, não esquecemos! Isso segue mais adiante e requer uma nova folha de papel.

Então eu pego outra folha de papel e nela chamamos a lista Cônjuges. Adicionamos novamente os atributos que são importantes para nós ao topo da lista e começamos a adicionar linhas.

id
neto_id
nome
aniversário

1
2
banheiro
06-01-1988

2
9
Fernanda
03-05-1985

…mais cônjuges!

Lista de cônjuges

Nesta fase explico à minha avó que se ela quiser saber quem é casado com quem, basta combinar id na lista netos с neto_id na lista de cônjuges.

Depois de algumas dúzias de biscoitos, preciso tirar uma soneca. "Você pode continuar, vovó?" Estou saindo para tirar uma soneca.

Estou voltando em algumas horas. Você é legal, vovó! Tudo parece ótimo, exceto a lista passatempo. Existem cerca de 1000 hobbies na lista. A maioria deles é repetitiva; O que aconteceu?

neto_id
passatempo

1
ciclismo

4
ciclismo

3
ciclismo

7
corrida

11
ciclismo

…nós continuamos!

Desculpe, esqueci completamente de dizer! Usando uma lista, você só pode rastrear passatempo. Então, em outra lista, precisamos rastrear netosquem está fazendo isso passatempo. Nós vamos chamá-lo "Lista comum". Vendo que você não gosta, fico preocupado e volto ao modo lista.

id
passatempo

1
ciclismo

2
corrida

3
natação

…mais passatempos!

Lista de hobbies

Assim que tivermos nossa lista de hobbies, criamos nossa segunda lista e a chamamos de "Passatempos dos netos".

neto_id
hobby_id

4
1

3
1

7
2

…mais!

Lista geral de hobbies dos netos

Depois de todo esse trabalho, a vovó agora tem um ótimo sistema de memória para acompanhar toda a sua família incrivelmente grande. E então - para me segurar por mais tempo - ela faz a pergunta mágica: "Onde você aprendeu a fazer tudo isso?"

Bancos de dados relacionais

Um banco de dados relacional é um conjunto de tabelas formalmente descritas (em nosso exemplo, são planilhas) a partir das quais você pode acessar Conforme ou coletá-los de várias maneiras sem ter que reorganizar as tabelas bases de dados. Existem muitos tipos diferentes de bancos de dados relacionais, mas infelizmente uma lista em um pedaço de papel não é um deles.

A marca registrada dos bancos de dados relacionais mais populares é a linguagem de consulta SQL (Structured Query Language). Graças a ele, se a vovó transferir seu sistema de memória para um computador, ela poderá obter rapidamente respostas para perguntas como: “Quem não me visitou ano passado, é casado e não tem hobbies?”

Um dos sistemas de gerenciamento de banco de dados SQL mais populares é o MySQL de código aberto. Ele é implementado principalmente como um sistema de gerenciamento de banco de dados relacional (RDBMS) para aplicativos de software baseados na web.

Alguns recursos principais do MySQL:

  • É bastante conhecido, amplamente utilizado e extensivamente testado.
  • Existem muitos desenvolvedores qualificados com experiência com SQL e bancos de dados relacionais.
  • Os dados são armazenados em diversas tabelas, o que facilita o estabelecimento de relacionamentos por meio de chaves primárias e estrangeiras (identificadores).
  • É fácil de usar e eficiente, o que o torna ideal para empresas de grande e pequeno porte.
  • O código-fonte está sob os termos da Licença Pública Geral GNU.

Agora esqueça Todos.

Explicando NoSQL para a vovó

Vovó, temos uma família enorme. Ela tem 150 netos! Muitos deles são casados, têm filhos, gostam de alguma coisa e assim por diante. Na sua idade, é impossível lembrar tudo sobre todos nós. O que você precisa é de um sistema de memória!

Felizmente, eu não querendo que você esqueça meu aniversário e meu sabor favorito de sorvete, posso ajudar. Então corro até a loja mais próxima, pego um caderno e volto para sua casa.

O primeiro passo que dou é escrever “Netos” em letras grandes e em negrito na capa do meu caderno. Então passo para a primeira página e começo a escrever tudo o que você precisa lembrar sobre mim. Alguns minutos depois, a página se parece com isto.

{ 
  "_id":"dkdigiye82gd87gd99dg87gd",
  "name":"Cody",
  "birthday":"09-12-2006",
  "last_visit":"09-02-2019",
  "clothing_size":"XL",
  "favorite_ice_cream":"Fudge caramel",
  "adopted":false,
  "hobbies":[ 
     "video games",
     "computers",
     "cooking"
  ],
  "spouse":null,
  "kids":[ 

  ],
  "favorite_picture":"file://scrapbook-103/christmas-2010.jpg",
  "misc_notes":"Prefers ice-cream cake on birthday instead of chocolate cake!"
}

Я: “Parece que está tudo pronto!”
Avó: “Espere, e o resto dos netos?”
Я: "Sim, exatamente. Em seguida, aloque uma página para cada.”
Avó: “Precisarei anotar todas as mesmas informações para todos, como fiz para você?”
Я: “Não, só se você quiser. Deixe-me mostrar."
Pegando a caneta da minha avó, viro a página e rapidamente anoto informações sobre meu primo menos favorito.

{ 
  "_id":"dh97dhs9b39397ss001",
  "name":"Tanner",
  "birthday":"09-12-2008",
  "clothing_size":"S",
  "friend_count":0,
  "favorite_picture":null,
  "remember":"Born on same day as Cody but not as important"
}

Sempre que uma avó precisa se lembrar de algo sobre um de seus netos, ela só precisa navegar até a página certa no caderno dos netos. Todas as informações sobre eles serão armazenadas ali mesmo em sua página, que ela poderá alterar e atualizar rapidamente.

Quando tudo estiver pronto, ela faz a pergunta mágica: “Onde você aprendeu a fazer tudo isso?”

Bancos de dados NoSQL

Existem muitos Bancos de dados NoSQL (“não apenas SQL”). Em nossos exemplos, mostramos banco de dados de documentos. Os bancos de dados NoSQL modelam os dados de maneira que excluem os relacionamentos de tabela usados ​​nos bancos de dados relacionais. Esses bancos de dados se tornaram populares no início dos anos 2000 entre empresas que precisavam de cluster de banco de dados baseado em nuvem devido aos seus requisitos explícitos de escalabilidade (como o Facebook). Nessas aplicações, a consistência dos dados era muito menos importante que o desempenho e a escalabilidade.

No início, os bancos de dados NoSQL eram frequentemente usados ​​para tarefas de gerenciamento de dados de nicho. Basicamente, quando se trata de aplicações web e em nuvem, os bancos de dados NoSQL processam e distribuem quantidades significativas de dados. Os engenheiros do NoSQL também gostaram do esquema de dados flexível (ou da falta dele), para que mudanças rápidas fossem possíveis nos aplicativos atualizados.

Principais recursos do NoSQL:

  • Maneira muito flexível de armazenar dados
  • Dimensionamento horizontal para clusters
  • Possível sequenciamento por persistência/spread
  • Documentos que são identificados usando chaves exclusivas

Comparação detalhada

MySQL requer um esquema definido e estruturado.
NoSQL permite armazenar quaisquer dados em um “documento”.

MySQL tem uma comunidade enorme.
NoSQL tem uma comunidade pequena e em rápido crescimento.

NoSQL é fácil de escalar.
MySQL precisa de mais capacidade de gerenciamento.

MySQL usa SQL, que é usado em muitos tipos de bancos de dados.
NoSQL é um design baseado em banco de dados com implementações populares.

MySQL usa uma linguagem de consulta padrão (SQL).
NoSQL não usa uma linguagem de consulta padrão.

MySQL tem muitas ferramentas de relatórios excelentes.
O NoSQL possui diversas ferramentas de relatórios que são difíceis de padronizar.

MySQL pode mostrar problemas de desempenho para big data.
NoSQL oferece excelente desempenho em big data.

Pensamentos 8base

A empresa 8 baseonde trabalho, disponibilizamos um espaço de trabalho para cada projeto com um banco de dados relacional Aurora MySQL hospedado na AWS. Embora o NoSQL seja uma escolha lógica quando seu aplicativo exige alto desempenho e escalabilidade, acreditamos que a forte consistência de dados fornecida por um SGBD é essencial ao construir aplicativos SaaS e outros softwares empresariais.

Para startups e desenvolvedores que criam aplicações de negócios que exigem relatórios, integridade transacional e modelos de dados bem definidos, investir em bancos de dados relacionais é, em nossa opinião, a escolha certa.

Saiba mais sobre como desenvolver com Aurora, Serverless e GraphQL em 8base.com aqui.

Fonte: habr.com

Adicionar um comentário