As diferenças entre SQL e NoSQL: MySQL x MongoDB

Lauren Ferreira
devtranslate
Published in
5 min readFeb 26, 2018
Databases for the win!

Na hora de escolher uma base de dados, uma das maiores decisões é entre uma estrutura de dados relacional (SQL) e não-relacional (NoSQL). Apesar de ambas serem opções viáveis, existem certas distinções que os usuários devem ter em mente quando forem fazer essa decisão.

Nesse artigo, vamos falar sobre as diferenças mais importantes entre eles e discutimos sobre dois dos principais competidores no debate relacional x não-relacional: MySQL e MongoDB.

Qual é a melhor opção para o seu negócio?

Diferenças gerais

Linguagem

Pense em uma cidade — vamos chamá-la de Cidade A — onde todos falam a mesma língua. Todas as empresas são criadas em torno dela, toda forma de comunicação a utiliza essa língua — resumindo, é a única forma que os moradores entendem e interagem com o mundo ao redor deles. Mudar essa língua em um lugar seria confuso e disruptivo para todos.

Agora pense em outra cidade, a Cidade B, onde cada casa pode falar uma língua diferente. Todos interagem com o mundo de forma diferente e não há um entendimento “universal” ou uma organização definida. Se uma casa é diferente, ela não afeta mais ninguém de forma alguma.

Isso ajuda a ilustrar uma das diferenças fundamentais entre as bases de dados relacionais e não-relacionais, e essa diferença tem grandes implicações. Vamos explicar:

As bases de dados SQL são estruturadas em linguagem de consulta (SQL) para definição e manipulação de dados. Por um lado, isso é extremamente poderoso: o SQL é uma das opções mais versáveis e mais utilizadas, sendo uma escolha segura e especialmente ótima para consultas complexas.

Por outro lado, ele pode ser restritivo. O SQL exige que você use esquemas (arquiteturas visuais e lógicas de uma base de dados) pré-definidos para determinar a estrutura dos seus dados antes de trabalhar com eles.

Além disso, todos os seus dados devem seguir a mesma estrutura. Isso pode requerer uma preparação inicial significante e, assim como na Cidade A, pode ser que uma mudança na estrutura seja tanto difícil quanto disruptiva para todo o seu sistema.

Uma base de dados NoSQL, por outro lado, tem um esquema dinâmico para dados não estruturados, e o dado é armazenado em várias formas: pode ser orientado a coluna, orientado a documento, baseado em grafos ou organizado como chave-valor. Essa flexibilidade permite que:

· Você crie documentos sem ter que definir sua estrutura primeiro;

· Cada documento tenha sua própria estrutura única;

· A sintaxe varie de base de dados para base de dados;

· Você adicione campos sempre que precisar.

Escalabilidade

Na maioria das situações, as bases de dados SQL são verticalmente escaláveis, o que significa que você pode aumentar o carregamento em um servidor melhorando coisas como CPU, RAM ou SSD.

As bases de dados NoSQL, por sua vez, são horizontalmente escaláveis. Isso quer dizer que você suporta muito mais tráfego por sharding (particionamento de dados), ou seja, adicionando mais servidores na sua base de dados NoSQL. É como se comparássemos entre adicionar mais andares no mesmo prédio e adicionar mais prédios na vizinhança. O segundo pode ficar maior e mais poderoso, tornando as bases de dados NoSQL a escolha de preferência para conjuntos de dados maiores ou em mudança constante.

Estrutura

As bases de dados SQL são baseadas em tabelas, enquanto que as bases de dados NoSQL podem ser baseadas em documentos, pares de chave-valor, grafos ou orientados a colunas. Isso torna as bases de dados SQL relacionais opções melhores para aplicações que requerem transações retornando várias colunas — como um sistema de contabilidade — ou para sistemas legados que foram criados em uma estrutura relacional.

Alguns exemplos de bases de dados SQL incluem o MySQL, Oracle, PostgreSQL e Microsoft SQL Server. Exemplos de bases de dados NoSQL incluem MongoDB, BigTable, Rediz, RavenDB, Cassandra, HBase, Neo4j e CouchDB.

SQL x NoSQL: MySQL x MongoDB

Agora que deixamos claras as principais diferenças estruturais entre as bases de dados SQL e NoSQL, vamos mergulhar nas principais diferenças funcionais entre às duas, usando especificamente o MySQL e o MongoDB como exemplos.

MySQL: O banco de dados SQL relacional

Os benefícios e pontos fortes do MySQL são:

· Maturidade. O MySQL é uma base de dados extremamente estabelecida, o que significa que há uma grande comunidade por trás, testes extensos e muita estabilidade.

· Compatibilidade. O MySQL está disponível para todas as plataformas mais utilizadas, inclusive Linux, Windows, Mac, BSD e Solaris. Ele também tem conectores para linguagens como Node.js, Ruby, C#, C++, Java, Perl, Python e PHP, então não está limitado à linguagem de consulta SQL.

· Custo-benefício. A base de dados é open source e gratuita.

· Replicável. A base de dados MySQL pode ser replicada através de vários nós, significando que a carga de trabalho pode ser reduzida e a escalabilidade e disponibilidade da aplicação podem ser aumentadas.

· Sharding. Apesar do sharding (termo comum das bases de dados não-relacionais que significa divisão de dados entre vários servidores) não poder ser feito na maioria das bases de dados SQL, ele pode ser feito em servidores MySQL. Isso é tanto economicamente viável quanto bom para a empresa.

MongoDB: O banco de dados NoSQL não-relacional

Os benefícios e pontos fortes do MongoDB são:

· Esquema dinâmico. Como mencionado, isso te dá flexibilidade para mudar seu esquema de dados sem modificar nenhum outro dado existente.

· Escalabilidade. O MongoDB é horizontamente escalável, o que ajuda a reduzir a carga de trabalho e escalar seu negócio com facilidade.

· Gerenciamento. A base de dados não requer um administrador. Isso facilita o uso do sistema, já que ele pode ser usado tanto pelos desenvolvedores quanto administradores.

· Velocidade. Tem performance alta para consultas simples.

· Flexibilidade. Você pode adicionar novas colunas e campos no MongoDB sem afetar as colunas existentes nem a performance da aplicação.

Então qual base de dados é a certa para o seu negócio?

MySQL é uma escolha de peso para qualquer negócio que vai se beneficiar de sua estrutura e esquema pré-definidos. Por exemplo, aplicações que requerem transações de várias linhas — como sistemas de contabilidades ou sistemas que monitoram inventário — ou rodam em sistemas legados vão prosperar com a estrutura MySQL.

O MongoDB, por outro lado, é uma boa escolha para negócios que têm crescimento rápido ou bases de dados sem definições claras de esquemas. Mais especificamente, se você não conseguir definir um esquema para o seu banco de dados, se perceber que está sempre desnormalizando esquemas de dados ou se o seu esquema passa constantemente por mudanças — como costuma ser o caso de apps mobile, análises em tempo real, sistemas de gerenciamento de conteúdo etc — o MongoDB pode ser a escolha certa para você.

Adaptado de XplentyBlog

Agradecimentos especiais à Dani Monteiro pelo apoio na tradução dos termos técnicos ❤

--

--

Lauren Ferreira
devtranslate

Learnin’ and leavin’ in this wonderful tech world.