Ao com­pa­rar­mos o MongoDB com a clássica abordagem SQL para ge­ren­ci­a­mento e ar­ma­ze­na­mento de dados, en­con­tra­re­mos mais di­fe­ren­ças do que se­me­lhan­ças. O MongoDB im­pres­si­ona por sua in­com­pa­rá­vel fle­xi­bi­li­dade, mas o SQL continua sendo uma opção con­sis­tente, íntegra, e in­can­sa­vel­mente testada e aprovada.

SQL: A abordagem padrão

Antes de apre­sen­tar­mos nossa com­pa­ra­ção MongoDB vs. SQL, achamos in­te­res­sante que você conheça o histórico e o de­sen­vol­vi­mento de cada solução se­pa­ra­da­mente. SQL (Struc­tu­red Query Language) é a linguagem de pro­gra­ma­ção padrão usada no ge­ren­ci­a­mento de bancos de dados re­la­ci­o­nais. Ela pos­si­bi­lita tanto inserções, al­te­ra­ções e exclusões de dados quanto consultas e so­li­ci­ta­ções a esses mesmos dados ar­ma­ze­na­dos. Já bastante es­ta­be­le­cida no mercado, ela deriva da linguagem de consulta SEQUEL, de­sen­vol­vida na década de 1970. Entre os sistemas re­la­ci­o­nais mais populares que utilizam essa linguagem de pro­gra­ma­ção estão MySQL, Microsoft SQL Server, Oracle, Post­greSQL e Sybase.

MongoDB: A al­ter­na­tiva ao SQL

O MongoDB surgiu décadas depois do SQL. De­sen­vol­vido em 2009 pela empresa 10gen (atual MongoDB, Inc.), ele teve o nome inspirado no termo em inglês “huMONGOus” (gi­gan­tesco), que descreve sua incrível ca­pa­ci­dade de gerenciar grandes quan­ti­da­des e tipos de dados. Apesar de bem mais novo que o sistema SQL, o MongoDB, de abordagem NoSQL e código aberto, já é um dos bancos de dados mais populares e usados do mundo. Duas ca­rac­te­rís­ti­cas desse sistema de ge­ren­ci­a­mento de banco de dados que con­tri­buem para o sucesso dele são sua enorme fle­xi­bi­li­dade e sua alta es­ca­la­bi­li­dade. O MongoDB cresce junto com o aumento das demandas, podendo ser ho­ri­zon­tal­mente di­men­si­o­nado de forma infinita.

MongoDB vs. SQL: Fun­ci­o­na­mento

Ambos os sistemas, MongoDB e SQL, são usados para armazenar dados — essa é pra­ti­ca­mente a única se­me­lhança entre eles. A abordagem que cada um adota define o tipo de ar­ma­ze­na­mento, que os di­fe­ren­cia por completo. Por isso, somente depois de analisar essas di­fe­ren­ças você saberá, com certeza, qual deverá utilizar para alcançar os seus objetivos.

O SQL é um sistema de ge­ren­ci­a­mento de dados re­la­ci­o­nal. Isso quer dizer que ele armazena todos os dados em tabelas. Essas, por sua vez, consistem em linhas e colunas car­re­ga­das de in­for­ma­ções. Di­fe­ren­tes bancos de dados podem ser ar­ma­ze­na­dos em um sistema de ge­ren­ci­a­mento SQL padrão, o que pos­si­bi­lita que eles se co­mu­ni­quem entre si. Consultas aos dados ar­ma­ze­na­dos ocorrem por meio do servidor, em processo de algumas etapas:

  1. O ana­li­sa­dor verifica a con­for­mi­dade de uma instrução, checando se ela possui as regras e au­to­ri­za­ções ne­ces­sá­rias.
  2. O pro­ces­sa­dor de consultas agenda as re­cu­pe­ra­ções, gravações ou atu­a­li­za­ções.
  3. O mecanismo de ar­ma­ze­na­mento executa a consulta, lê os dados e envia o resultado ao cliente.

O MongoDB, por sua vez, é um sistema não re­la­ci­o­nal: seus dados não são ar­ma­ze­na­dos em tabelas, e sim como do­cu­men­tos. Esses do­cu­men­tos, todos no formato JSON binário (BSON), são agrupados em coleções. Entre seus elementos também estão pares de chaves-valor, nos quais chaves cor­res­pon­dem a cadeias de ca­rac­te­res e valores a arquivos, booleanos e do­cu­men­tos. O MongoDB, assim como outros sistemas NoSQL similares, tem a ca­pa­ci­dade de armazenar e gerenciar tipos de dados com­ple­ta­mente di­fe­ren­tes, que podem ser es­tru­tu­ra­dos, se­mi­es­tru­tu­ra­dos e não es­tru­tu­ra­dos. A linguagem de consulta adotada é própria e se chama MongoDB Query Language (MQL).

MongoDB vs. SQL: Di­men­si­o­na­mento e dis­po­ni­bi­li­dade

Ambos os sistemas desta com­pa­ra­ção podem ser di­men­si­o­na­dos, contudo soluções NoSQL fazem isso com muito mais fa­ci­li­dade e eficácia. O MongoDB, por exemplo, lança mão de uma técnica chamada sharding para di­men­si­o­nar seus bancos de dados ho­ri­zon­tal­mente. Ele armazena dados em di­fe­ren­tes nós, de modo a dis­tri­buir cargas. Além de ser mais barato, o processo aumenta a ve­lo­ci­dade de consulta e a segurança dos dados ar­ma­ze­na­dos, prin­ci­pal­mente quando em grande volume ou de di­fe­ren­tes tipos. Funciona assim: réplicas pos­si­bi­li­tam reações imediatas a possíveis falhas no servidor, enquanto o failover au­to­má­tico trans­forma um novo nó em nó principal.

Bancos de dados de abordagem SQL, por outro lado, só podem ser ver­ti­cal­mente escalados. Isso quer dizer que eles requerem mais espaço de ar­ma­ze­na­mento e maior ca­pa­ci­dade de com­pu­ta­ção à medida em que o volume de dados aumenta. Cres­cen­tes demandas incorrem em enormes custos, razão pela qual bancos de dados SQL só são re­co­men­da­dos a projetos que lidam com volumes de dados cons­tan­tes ou cres­ci­men­tos marginais. Em se tratando de dis­po­ni­bi­li­dade, contudo, o SQL concorre de igual para igual com o MongoDB. Ele também faz uso de vários nós para reagir ime­di­a­ta­mente a falhas e dis­po­ni­bi­li­zar dados em caso de in­ter­rup­ção.

Cloud Compute Engine da IONOS

Empresas de médio e grande porte optam pela nuvem da Alemanha. Serviços IaaS e PaaS são para campeões.

  • Seguro
  • Confiável
  • Flexível

MongoDB vs. SQL: Linguagem de consulta

A linguagem de consulta mais in­te­res­sante de se aprender dependerá do gosto pessoal e do co­nhe­ci­mento prévio de cada usuário. O SQL tem um padrão conhecido há décadas, além de ser simples de entender e par­ci­al­mente baseado no idioma inglês. Depois de se fa­mi­li­a­ri­zar com a linguagem padrão do SQL, você se adaptará a lin­gua­gens se­me­lhan­tes e a variações com fa­ci­li­dade. Entre suas vantagens está a numerosa do­cu­men­ta­ção e sua ampla uti­li­za­ção. Ela tem, contudo, a des­van­ta­gem de não ser muito dinâmica, de­pen­dendo de esquemas fixos, como de for­mu­lá­rios de tabelas. Ainda, apesar de conter muitos dialetos, a base do SQL não muda.

A linguagem de consulta do MongoDB é bem mais dinâmica e flexível do que a linguagem SQL, prin­ci­pal­mente para dar conta dos re­qui­si­tos de di­fe­ren­tes tipos de dados e consultas. A MQL foi projetada para lidar com do­cu­men­tos BSON e pos­si­bi­li­tar ações como alterar, excluir e adicionar campos. Sua grande des­van­ta­gem é que ela só é adotada pelo MongoDB. Outros sistemas NoSQL e todos os sistemas SQL fazem uso de lin­gua­gens par­ci­al­mente ou com­ple­ta­mente di­fe­ren­tes.

MongoDB vs. SQL: ACID e CAP

Enquanto o ar­ma­ze­na­mento do SQL é baseado em tabelas re­la­ci­o­nais, o MongoDB, de estrutura não re­la­ci­o­nal, reúne do­cu­men­tos em coleções. Em outras palavras, o SQL respeita as pro­pri­e­da­des ACID clássicas (Ato­mi­ci­dade, Con­sis­tên­cia, Iso­la­mento e Du­ra­bi­li­dade) para que tran­sa­ções possam ser exe­cu­ta­das com­ple­ta­mente ou não exe­cu­ta­das, per­ma­ne­cendo con­sis­ten­tes e pro­te­gi­das de in­fluên­cias internas e externas. É que o foco do SQL está na segurança dos dados e na con­fi­a­bi­li­dade das trans­fe­rên­cias.

O MongoDB, todavia, é baseado no teorema CAP (Con­sis­tên­cia, Avai­la­bi­lity (dis­po­ni­bi­li­dade) e Partição), que afirma que é im­pos­sí­vel que um sistema de dados dis­tri­buí­dos garanta, si­mul­ta­ne­a­mente, essas três pro­pri­e­da­des. Assim, o MongoDB é um sistema ar­ma­ze­na­mento de dados que garante a con­sis­tên­cia e a partição tolerante, com­pro­me­tendo, con­se­quen­te­mente, a dis­po­ni­bi­li­dade. Para tanto, a solução depende de um nó primário, por meio do qual todas as consultas são exe­cu­ta­das. Nós se­cun­dá­rios só são usados se o primário falhar.

MongoDB vs. SQL: Fi­na­li­dade

As exi­gên­cias impostas ao MongoDB e ao SQL são bastante di­fe­ren­tes, jus­ta­mente por isso você deve optar pela solução que mais se adequa aos seus tipos de dados. O SQL é um ótimo sistema para dados es­tru­tu­ra­dos, que podem ser modelados em forma de tabela. Se o seu foco é na cons­tân­cia, essa abordagem clássica é re­co­men­dada. O SQL, con­si­de­rado seguro e con­sis­tente, é bastante adotado por apli­ca­ções de comércio ele­trô­nico, por outros sistemas de transação, pela con­ta­bi­li­dade de pequenas empresas e por processos que exigem dados ri­go­ro­sa­mente íntegros.

A grande vantagem do MongoDB está na sua fle­xi­bi­li­dade. Ele suporta não somente di­fe­ren­tes tipos de dados, mas também dados es­tru­tu­ra­dos, se­mi­es­tru­tu­ra­dos e não es­tru­tu­ra­dos. Seu sistema também é flexível quanto ao di­men­si­o­na­mento. Por expandir-se ho­ri­zon­tal­mente, esse banco de dados NoSQL é in­fi­ni­ta­mente escalável, podendo crescer de acordo com as ne­ces­si­da­des do projeto. A ve­lo­ci­dade do MongoDB também é um fator de con­ven­ci­mento, por isso, além de ser igual­mente utilizado por apli­ca­ções de comércio ele­trô­nico, ele é comum em sistemas de ge­ren­ci­a­mento de conteúdo (CMS), em soluções de cloud computing e em projetos que demandam recursos de análise em tempo real.

Empresas que utilizam o MongoDB ou o SQL

Im­por­tan­tes e in­flu­en­tes empresas confiam nas abor­da­gens dessa com­pa­ra­ção para armazenar e gerenciar seus dados. Entre as que adotam o MongoDB estão:

  • Adobe
  • Amadeus
  • AppScale
  • Craftbase
  • Disney
  • Etsy
  • Fours­quare
  • Lyft
  • MTV
  • The New York Times
  • Via Varejo

Soluções SQL, por outro lado, são a base dos bancos de dados destas empresas:

  • Adobe
  • Apple
  • Dell
  • IMDB
  • LinkedIn
  • Microsoft
  • Reddit
  • Seagate
  • Skype
  • Spotify
  • Twitch

MongoDB vs. SQL: Combinar as duas soluções

Você pode perceber, ao analisar a lista acima, que algumas empresas adotam os dois sistemas de bancos de dados: tanto o MongoDB quanto o SQL. É possível combinar soluções SQL e NoSQL na ar­qui­te­tura de uma aplicação, para apro­vei­tar as vantagens de ambas as abor­da­gens. Apesar dessa com­bi­na­ção não ser in­te­res­sante para todos os usuários, ela pode levar a melhores re­sul­ta­dos, a depender das cir­cuns­tân­cias.

Ir para o menu principal