Skip to content

Instantly share code, notes, and snippets.

@suissa
Last active October 22, 2016 23:46
Show Gist options
  • Save suissa/95311be68a0defed8d284c081a10262a to your computer and use it in GitHub Desktop.
Save suissa/95311be68a0defed8d284c081a10262a to your computer and use it in GitHub Desktop.

Explicação sobre o MongoDb enviada por 1 aluno porém carece de correções

O que é o MongoDB ?

MongoDB é um Banco de Dados noSQL (Not Only SQL), também podemos dizer que é um banco não relacional. Grande parte de seus recursos, características e funcionalidades do MongoDB assenta no fato que é um Banco de Dados Orientado a Documentos (Document Database). Ao discutir/trabalhar/utilizar modelos de dado, modelagem, consulta (queries), e dados salvo no MongoDB, nós utilizamos JSON (JavaScript Object Notation).

Exemplo:

{
  "_id": "462606",
  "nome": "Sistema On",
  "endereco": {
      "nomeRua": "Avenida do Contorno",
      "numero": "3498",
      "complemento": "Apartamento 302",
      "referencia": "Esquina com Avenida Assis Chateaubriand",
      "bairro": "Floresta",
      "cidade": "Belo Horizonte",
      "Estado": "Minas Gerais",
      "Pais": "Brasil"
  },
  "hobbies": [ "games", "bike", "artesão cervejeiro", "rock n roll", "tea"  ]
}

Vantagem muito importante deste design é que equipes de desenvolvimento podem muito bem projetar modelos de dados para suportar o acesso de dados comuns. Como por exemplo, uma equipe desenvolvendo um site de notícias podem estruturar seu modelo de dados, para que a página mais vista necessite apenas de uma única consulta (query) do banco de dados, e pode ser feito de uma maneira elegante e é suportado pelo MongoDB.

Comparando com uma estrutura relacional, exigindo alguns joins entre as tabelas, ou uma maneira desnecessária de armazenar valores múltiplos em um único campo de uma tabela.

Como o MongoDB não baseia em junção de dados de múltiplas tabelas em conjunto, assim fica mais simples de distribuir ou shard dados em vários servidores, você tem uma grande variedade de opções considerando implantações de banco de dados entre máquinas com baixo custo e maiores e com mais poder.

MongoDB suporta nativamente scaling out através do seu recurso sharding, fazendo algo de uma forma bastante abstrato, afastando da lógica da aplicação para que desenvolvedores possam construir de uma forma agnóstico sobre o modelo de implantação utilizado.

Se é em um único dispositivo ou alguns dispositivos ou centenas de dispositivos são usados não faz diferença do ponto de vista da aplicação, desde que joins e operações em várias tabelas são difíceis de fazer em paralelo, em um sistema relacional, sua melhor opção é scaling up (escalar pra cima) e com isso, aumentando cada vez mais custos somente para seus dados serem disponíveis de um único servidor.

MongoDB funciona com design de esquemas (schemas), suporta modelos que exige leitura e escrita atômicas em documentos individuais.

Em resumo MongoDB permite que os desenvolvedores projetam modelos de dados que eficientemente suportam padrões de acesso de dados comum, também é projetado para suportar práticas de engenharia de software ágil e atender a escalabilidade e necessidades de aplicações modernas de desempenho.

@suissa
Copy link
Author

suissa commented Oct 22, 2016

Mudar de:

MongoDB é um Banco de Dados noSQL (Not Only SQL), também podemos dizer que é um banco não relacional. Grande parte de seus recursos, características e funcionalidades do MongoDB assenta no fato que é um Banco de Dados Orientado a Documentos (Document Database). Ao discutir/trabalhar/utilizar modelos de dado, modelagem, consulta (queries), e dados salvo no MongoDB, nós utilizamos JSON (JavaScript Object Notation).

Para:

MongoDB é um Banco de Dados noSQL (Not Only SQL), o que significa que ele é um banco não relacional, qualquer banco que não seja Relacional será um banco NoSQL. Todos seus recursos, características e funcionalidades foram desenvolvidas pensando um Banco de Dados Orientado a Documentos (Document Database). Para trabalhar com o MongoDb iremos utilizar como linguagem de acesso direto o JavaScript e a modelagem, como os dados ficarão, nós utilizamos JSON (JavaScript Object Notation).

@suissa
Copy link
Author

suissa commented Oct 22, 2016

Mudar de:

Como o MongoDB não baseia em junção de dados de múltiplas tabelas em conjunto, assim fica mais simples de distribuir ou shard dados em vários servidores, você tem uma grande variedade de opções considerando implantações de banco de dados entre máquinas com baixo custo e maiores e com mais poder.

Para:

Como o MongoDB não baseia em junção de dados vindos de múltiplas tabelas, fica mais simples de distribuir/sharding os dados em vários servidores, com isso você terá uma facilidade maior para escalar horizontalmente não precisando utilizar máquinas muito poderosas, mas sim diversas pequenas máquinas para a criação de um cluster.

@suissa
Copy link
Author

suissa commented Oct 22, 2016

Mudar de:

MongoDB suporta nativamente scaling out através do seu recurso sharding, fazendo algo de uma forma bastante abstrato, afastando da lógica da aplicação para que desenvolvedores possam construir de uma forma agnóstico sobre o modelo de implantação utilizado.

Para:

MongoDB escala horizontalmente através de Sharding e Replicas de uma forma simples e transparente, afastando esse gerenciamento da lógica da aplicação para que desenvolvedores possam construir sistemas altamente disponíveis sem muito trabalho.

@suissa
Copy link
Author

suissa commented Oct 22, 2016

Mudar de:

Se é em um único dispositivo ou alguns dispositivos ou centenas de dispositivos são usados não faz diferença do ponto de vista da aplicação, desde que joins e operações em várias tabelas são difíceis de fazer em paralelo, em um sistema relacional, sua melhor opção é scaling up (escalar pra cima) e com isso, aumentando cada vez mais custos somente para seus dados serem disponíveis de um único servidor.

Para:

Se é em um único dispositivo ou em centenas isso não faz diferença do ponto de vista da aplicação, porém joins e operações em várias tabelas adicionam uma carga de trabalho computacional que pode sobrecarregar o servidor, em um sistema relacional, sua melhor opção é scaling up (escalar pra cima/ escalabilidade vertical) e com isso aumentar cada vez mais os custos para que os dados estejam disponíveis de um único servidor.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment