MongoDB VS MySQL

mongodb vs mysql

MySQL

O MySQL é um sistema de gerenciamento de uma base de dados relacional opensource (RDBMS) desenvolvida, distribuída e suportada pela Oracle Corporation. Como outros sistemas relacionais, o MySQL armazena dados nas tabelas e usa a linguagem de consulta estruturada (SQL) para aceder á base de dados. No MySQL,  é pré elaborado o esquema da base de dados com base nos seus requisitos e configura as regras necessárias para gerir as relações entre os campos nas tabelas. No MySQL, as informações relacionadas podem ser guardadas em tabelas separadas, mas associadas através do uso de associações. Desta forma, a duplicação de dados é minimizada.

MongoDB

MongoDB é uma base de dados opensource desenvolvida pela MongoDB, Inc. MongoDB armazena os dados em documentos semelhantes ao formato de dados JSON, que pode variar na sua estrutura. As informações relacionais são guardadas em conjunto para existir um rápido acesso ás consultas através do linguagem de consulta do MongoDB. MongoDB usa esquemas dinâmicos, o que significa que se pode criar registos sem primeiro definir a estrutura, como os campos ou os tipos dos seus valores. Pode-se alterar a estrutura dos registos (que chamamos de documentos) simplesmente adicionando novos campos ou excluindo os existentes. Este modelo de dados oferece a capacidade de representar relacionamentos hierárquicos, armazenar arrays e outras estruturas mais complexas de uma forma mais simplificada. Os documentos numa coleção não precisam de ter um conjunto de campos idêntico e a desnormalização de dados é comum. O MongoDB também foi projetado com alta disponibilidade e escalabilidade em mente.

mongodb vs mysql

 

Terminologias e Conceitos

Esta tabela descreve alguns dos conceitos comuns entre MySQl e MongoDB.

MySQL MongoDB
Table Collection
Row Document
Column Field
Joins Embedded documents, linking

 

Comparação

Como o MySQL, o MongoDB oferece um rico conjunto de recursos e funcionalidades muito superiores ás key-value databases. O MongoDB possui uma linguagem de consulta, índices secundários altamente funcionais (incluindo procura de texto e geoespacial), uma poderosa estrutura de agregação para análise de dados e muito mais. Com o MongoDB, também se pode usar esses recursos em tipos de dados mais diversos do que com uma base de dados relacional e em escala.

MySQL MongoDB
Rich Data Model No Yes
Dynamic Schema No Yes
Typed Data Yes Yes
Data Locality No Yes
Field Updates Yes Yes
Easy for Programmers No Yes
Complex Transactions Yes No
Auditing Yes Yes
Auto-Sharding No Yes

 

Query Language

Tanto o MySQL quanto o MongoDB possuem uma linguagem de consulta bastante rica e elaborada.

MySQL MongoDB
INSERT INTO utilizadores (utilizador_id, idade, estado)
VALUES ('teste001', 40, 'B')
db.utilizadores.insert({
  utilizador_id: 'teste001',
  idade: 40,
  estado: 'B'
})
SELECT * FROM utilizadores
db.utilizadores.find()
UPDATE utilizadores SET estado = 'C'
WHERE idade > 25
db.utilizadores.update(
  { idade: { $gt: 25 } },
  { $set: { estado: 'C' } },
  { multi: true }
)

 

MongoDB ao invés MySQL

Várias organizações estão a optar pela base de dados MongoDB porque permite que eles criem aplicações mais rapidamente, manipulem os mais diversos tipos de dados e possam gerir as aplicações de forma mais eficiente e em escala.

O desenvolvimento é simplificado, pois os documentos MongoDB são desenhados para linguagens de programação modernas e orientadas a objetos. O uso do MongoDB remove a complexa camada de Object-relational mapping (ORM) que traduz objetos no código para tabelas relacionais.

O modelo de dados flexível do MongoDB também significa que o seu esquema de base de dados pode evoluir com os requisitos do projeto. Por exemplo, as mudanças de esquematização que levam dias da semanas nas bases de dados MySQL do Weather Channel podem ser feitas em apenas algumas horas com o MongoDB.

O MongoDB também pode ser dimensionado dentro e entre vários centros de dados distribuídos, fornecendo novos níveis de disponibilidade e escalabilidade anteriormente impossíveis de serem alcançados com base de dados relacionais como o MySQL. À medida que as suas implementações crescem em termos de volume de dados e throughput, o MongoDB é escalado facilmente sem tempo de inatividade e sem alterar a aplicação. Em contraste, alcançar o escalonamento com o MySQL requer frequentemente um trabalho elaborado por especialistas em base de dados e que demora bastante tempo. Um caso real, o Baidu migrou do MySQL para o MongoDB para suportar o seu negócio que está a ter um rápido crescimento. O gigante chinês , provedor de serviços de internet agora possui mais de 100 aplicações e gere mais de 1PB de dados com seu cluster MongoDB.

Saber mais…

Siga a Leak no Google Notícias e no MSN Portugal.

Receba as notícias Leak no seu e-mail. Carregue aqui para se registar. É grátis!

Leia também