
Uma das decisões mais importantes que um desenvolvedor toma é qual banco de dados usar. Ao longo dos anos, as opções foram limitadas a várias opções de banco de dados relacional que suportam SQL (Structured Query Language). Isso inclui o MS SQL Server, Oracle, MySQL, PostgreSQL, DB2 e muitos outros.
Nos últimos 15 anos, muitos novos bancos de dados apareceram no mercado como parte da abordagem No-SQL. Isso inclui armazenamentos de valores-chave, como Redis e Amazon DynamoDB, bancos de dados de coluna ampla, como Cassandra e HBase, armazenamentos de documentos, como MongoDB e Couchbase, além de 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 no processo.
Explique o Granny SQL
Vovó, imagine que eu não sou seu único neto. Em vez disso, mamãe e papai se amavam como coelhos, tiveram 100 filhos e adotaram outros 50.
Então, você nos ama e não quer esquecer nenhum de nossos nomes, aniversários, gostos de nossos sorvetes favoritos, tamanhos de roupas, hobbies, nomes de cônjuges, nomes de filhos e outros fatos super importantes. Mas vamos enfrentá-lo. Você tem 85 anos e a boa e velha memória simplesmente não é capaz de lidar.
Felizmente, eu, sendo o mais inteligente dos seus netos, posso ajudar. Então, eu chego à sua casa, pego algumas folhas de papel e peço que faça biscoitos antes de começarmos.
Em uma folha de papel, fazemos uma lista chamada "
Netos ". Cada
neto é gravado com algumas informações essenciais sobre ele, incluindo um número único, que agora indica que tipo de
neto ele é. Além disso, para o bem da organização, escrevemos os atributos nomeados no topo da lista para sempre saber quais informações essa lista contém.
Lista de netos
Depois de um tempo, você entende tudo e estamos quase terminando a lista! No entanto, você se vira para mim e diz: "Esquecemos de acrescentar um lugar para cônjuges, hobbies, netos!" Mas não, não esquecemos! Isso vai além e requer uma nova folha de papel.
Então pego outro pedaço de papel e nele chamamos de lista de
cônjuges . Novamente, adicionamos os atributos que são importantes para nós no topo da lista e começamos a adicionar as linhas.
Lista de cônjuges
Nesse estágio, explico à minha avó que, se ela quer saber quem é casado com quem, ela só precisa corresponder o
ID da lista de
netos ao
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.
Volto em algumas horas. E você é legal, vovó! Tudo parece ótimo, exceto na lista de
hobby . Existem cerca de 1000 hobbies na lista. A maioria deles é repetida; o que aconteceu
Desculpe, esqueci completamente de dizer! Usando uma única lista, você pode rastrear apenas
hobbies . Em outra lista, precisamos rastrear os
netos que estão envolvidos nesse
hobby . Vamos chamá-lo de
"Lista Geral" . Vendo que você não gosta, começo a me preocupar e volto ao modo de lista.
Lista de Hobby
Assim que temos nossa lista de hobbies, criamos nossa segunda lista e chamamos de "
Hobbies dos
netos ".
Lista geral de passatempos netos
Depois de todo esse trabalho, minha avó agora tem um sistema de memorização legal para rastrear toda a sua família surpreendentemente grande. E então - para me deter 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 (no nosso exemplo, são planilhas) a partir das quais é possível acessar
dados ou coletá-los de várias maneiras sem precisar reorganizar as tabelas do
banco de dados . Existem muitos tipos diferentes de bancos de dados relacionais, mas infelizmente a lista em um pedaço de papel não é um deles.
Um recurso distintivo dos bancos de dados relacionais mais populares é a linguagem de consulta SQL (Structured Query Language). Graças a ele, se minha avó transferir seu sistema de memória para um computador, ela poderá obter rapidamente respostas para perguntas como: "Quem não me visitou no 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 famoso, amplamente utilizado e exaustivamente testado.
- Existem muitos desenvolvedores qualificados com experiência trabalhando com SQL e bancos de dados relacionais.
- Os dados são armazenados em várias tabelas, o que facilita o estabelecimento da comunicação usando chaves primárias e estrangeiras (identificadores).
- É fácil de usar e eficiente, tornando-o ideal para grandes e pequenas empresas.
- O código fonte está sujeito à Licença Pública Geral GNU.
Agora esqueça
tudo .
Explique Grandma NoSQL
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 memorização!
Felizmente, eu,
não querendo que você esqueça meu aniversário e meu gosto favorito de sorvete, posso ajudar. Portanto, corro para a loja mais próxima, pego um caderno e volto para sua casa.
O primeiro passo que dou é escrever "Netos" em grandes letras em negrito na capa de um caderno. Depois, volto para a primeira página e começo a escrever tudo o que você deve se lembrar de mim. Após alguns minutos, a página fica mais ou menos assim.
{ "_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!" }
Eu : "Tudo parece pronto!"
Avó : “Espere, e os outros netos?”
Eu : Sim, exatamente. Em seguida, selecione uma página para cada um. ”
Avó : “E precisarei registrar todas as mesmas informações para todos, como fiz para você?”
Eu : “Não, apenas se você quiser. Deixe-me mostrar-lhe.
Depois de pegar a caneta da minha avó, viro a página e escrevo rapidamente as informações sobre meu primo mais amado.
{ "_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 ir para a página certa no caderno de anotações de seus netos. Todas as informações sobre eles serão armazenadas na página, que podem ser alteradas e atualizadas rapidamente.
Quando tudo já está 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
um banco de dados de documentos . Os bancos de dados NoSQL modelam dados de maneira a excluir relacionamentos tabulares usados em bancos de dados relacionais. Esses bancos de dados se tornaram populares no início dos anos 2000 entre as empresas que precisavam de um cluster de bancos de dados na nuvem devido a seus requisitos explícitos de escalabilidade (por exemplo, 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 tratava de aplicativos da Web e nuvem, os bancos de dados NoSQL processavam e distribuíam quantidades significativas de dados. Os engenheiros que trabalham com o NoSQL também gostaram do esquema de dados flexível (ou de sua completa ausência), para que mudanças rápidas nos aplicativos atualizados fossem possíveis.
Principais recursos do NoSQL:
- Maneira muito flexível de armazenar dados.
- Escalar para Clusters
- Consistência possível / sequência de distribuição
- Documentos identificados usando chaves exclusivas
Comparação detalhada
O MySQL requer uma estrutura específica e estruturada.
NoSQL permite salvar todos os dados em um "documento".
O MySQL suporta uma enorme comunidade.
O NoSQL possui uma comunidade pequena e em rápido crescimento.
O NoSQL é fácil de escalar.
O MySQL precisa de mais capacidade de gerenciamento.
O MySQL usa SQL, que é usado em muitos tipos de bancos de dados.
O NoSQL é um banco de dados baseado em design com implementações populares.
O MySQL usa linguagem de consulta padrão (SQL).
O NoSQL não usa a linguagem de consulta padrão.
O MySQL possui muitas ótimas ferramentas de geração de relatórios.
O NoSQL possui várias ferramentas de relatório difíceis de padronizar.
O MySQL pode emitir problemas de desempenho para big data.
O NoSQL oferece excelente desempenho em big data.
Pensamentos 8base
Na
8base , onde trabalho, fornecemos o espaço de trabalho de cada projeto com o banco de dados relacional Aurora MySQL hospedado na AWS. Embora o NoSQL seja uma escolha lógica quando os requisitos do seu aplicativo exigem alto desempenho e escalabilidade, acreditamos que a estrita consistência de dados fornecida pelo DBMS é necessária ao criar aplicativos SaaS e outros softwares comerciais.
Para startups e desenvolvedores que criam aplicativos de negócios que precisam de relatórios, integridade de transações e modelos de dados bem definidos, investir em bancos de dados relacionais é, em nossa opinião, a escolha certa.
Saiba mais sobre o desenvolvimento com Aurora, Serverless e GraphQL com 8base.com
aqui .