Atrás

MongoDB1

Viendo la versión de página #15
(Restaurar esta versión) 

Modificado: 30 de junio de 2023, 11:03   Usuario: Danielle Modesti  → Danielle Modesti

1. Nome de Banco de Dados

MongoDB 

2. Lista de alunos

  • Bernardo Maia Coelho - nUSP 12542481
  • Carlos Filipe Castro Lemos (Apresentador 1) - nUSP 12542630
  • Danielle Modesti (Editor) - nUSP 12543544
  • Gustavo Wadas Lopes - nUSP 12745640
  • Hélio Nogueira Cardoso - nUSP 10310227
  • Henrique Souza Marques - nUSP 11815722
  • João Gabriel Sasseron Roberto Amorim - nUSP 12542564
  • Laura Ferré Scotelari (Apresentador 2) - nUSP 12543436
  • Pedro Guilherme dos Reis Teixeira (Coordenador) - nUSP 12542477
  • Pedro Henrique Vilela do Nascimento - nUSP 12803492
3. Funcionalidades e características principais do Banco de Dados

    O MongoDB oferece uma ampla gama de funcionalidades e características que o tornam uma escolha poderosa para o gerenciamento de bancos de dados. Abaixo estão algumas das principais funcionalidades do MongoDB:
  1. Orientação a Documentos: o MongoDB organiza e armazena os dados em um formato semelhante ao JSON, chamado BSON (Binary JSON). Essa abordagem orientada a documentos permite uma estrutura flexível, fornecendo adaptabilidade e facilidade de evolução em comparação com os formatos rígidos das tabelas SQL;
  2. Esquema de dados flexível: o MongoDB suporta esquemas de dados dinâmicos, permitindo que documentos em uma coleção possuam diferentes estruturas de dados. Isso oferece maior flexibilidade para armazenar, recuperar e manipular os dados, facilitando a adaptação e atualização dos requisitos do banco de dados durante sua produção ou manutenção;
  3. Consultas avançadas: o MongoDB oferece diversas técnicas de indexação para consultas avançadas. É possível realizar indexação por hash, por texto e geoespacial, proporcionando múltiplas opções de consulta. Essas técnicas incluem consultas geoespaciais, nas quais os dados são buscados com base em sua distribuição geográfica, e consultas ad-hoc, que utilizam uma linguagem flexível adaptada ao esquema de cada documento, permitindo o uso de operadores lógicos, agregação e outras ferramentas para uma maior adaptabilidade;
  4. Escalabilidade (sharding): o MongoDB oferece escalabilidade horizontal, permitindo lidar com grandes volumes de dados distribuindo-os em vários servidores. Esse recurso é alcançado por meio do particionamento automático dos dados em shards, que são responsáveis por armazenar e processar uma parte dos dados. Com isso, o MongoDB pode acomodar conjuntos de dados muito grandes de maneira eficiente, distribuindo a carga de trabalho entre vários servidores e permitindo adicionar mais servidores conforme necessário para aumentar a capacidade de armazenamento e processamento;
  5. Flexibilidade de armazenamento: o MongoDB é capaz de armazenar documentos de outros formatos, como PDFs e imagens, usando o BSON. Essa capacidade permite inserir os bytes desses arquivos em campos BinData dos documentos MongoDB. No entanto, é recomendado armazenar apenas os metadados dos documentos no MongoDB, enquanto os arquivos binários em si são melhor armazenados em sistemas de arquivos ou serviços dedicados.
    O MongoDB pode gerenciar as referências e informações sobre esses documentos, proporcionando maior flexibilidade no armazenamento de diferentes tipos de dados;
  6. Transações multi-documento: o MongoDB oferece suporte a transações multi-documento, permitindo a execução de várias operações de leitura e gravação como uma única ação atômica. Isso garante a consistência e a integridade dos dados durante a execução de operações complexas. A capacidade de realizar transações multi-documento é especialmente útil em situações em que é importante garantir que todas as alterações ocorram corretamente ou nenhuma delas seja aplicada.
    Essas funcionalidades e características do MongoDB fornecem uma base sólida para a construção e gestão de bancos de dados eficientes, adaptáveis e capazes de lidar com cargas de trabalho intensivas, justificando sua relevância e utilidade na área de gerenciamento de dados.

4. O banco escolhido implementa CA, CP ou AP, em termos de teorema CAP? Por quê?
    O MongoDB (v4.4 ou qualquer versão anterior) implementa o CP. Ele é focado em oferecer consistência e tolerância ao particionamento; é assíncrono por natureza e, por seu caráter flexível, não há a necessidade de sincronizar esquemas (schema). Essas características são úteis porque permitem que a base de dados seja bastante escalável. Dessa forma, as partições são facilmente distribuídas em nós (é um sistema distribuído por padrão), o que aumenta o paralelismo, divide a carga útil e pode reduzir a latência. Finalmente, um modelo simples (bson) reduz a quantidade de configurações necessárias para que a base seja expandida, ao passo de que a garantia de consistência faz com que os desenvolvedores não precisem se preocupar com a consistência entre nós por padrão.

    Complementarmente: há várias configurações que usuários experientes podem utilizar para reduzir a consistência e aumentar a performance ou a disponibilidade. Isso pode aumentar drasticamente o risco de perda de dados ou de inconsistências entre nós e estruturas de dados; todavia, isso é totalmente opcional. Neste cenário, se o administrador da base de dados consegue afirmar que, nas condições de operação, esse risco é controlado, ele pode decidir o nível de consistência e disponibilidade que ele precisa e quais riscos são justificados. Observa-se que não há, por padrão, nas versões clássicas do MongoDB (4.4 ou anteriores, relembramos), garantia de que a queda de nós não leve o banco a sair do ar e de que todo cliente sempre pode ler e escrever todo dado. Isto, em um sistema bem planejado, não deveria ser um grande problema, pois não deveria, em funcionamento ideal, afetar bastante o tempo médio que a base de dados gasta para servir cada cliente.
   Concluindo, o serviço funciona bem. Porém, se parte do sistema sair do ar (um ou mais nós), o restante dele restringe o acesso a dados (preservando a consistência).

5. Vantagens do Banco de Dados MongoDB
  • Flexibilidade: o MongoDB utiliza esquemas como base de armazenamento de dados, o que possibilita fácil modelagem e manipulação de qualquer estrutura de dados. Além disso, ele emprega o formato de BSON  (inspirado no JSON),  permitindo a criação de uma coleção com diferentes conjuntos de campos;
  • Compatibilidade: o MongoDB armazena e representa dados na forma de documentos; isso possibilita o acesso de qualquer linguagem. Entretanto, é necessária uma conexão entre a aplicação e o banco de dados MongoDB;
  • Escalabilidade: o banco em questão é altamente escalável, permitindo a adição de novos servidores e a distribuição de seus dados em vários nós. Nesse sentido, é possível dimensionar a aplicação sem precisar se preocupar com o desempenho;
  • Alto desempenho: graças ao modelo de documentos do MongoDB, as informações são incorporadas num único documento, não sendo necessária as operações de junção, JOIN, dos bancos de dados relacionais. Isto possibilita que as consultas sejam muito mais rápidas e retornem todas as informações necessárias em uma única chamada;
  • Suporte a transações: o MongoDB suporta transações ACID (atomicidade, consistência, isolamento e durabilidade). As garantias fornecidas pelo MongoDB garantem o isolamento completo enquanto um documento é atualizado. Deste modo, quando qualquer erro ocorre, a operação é revertida e o documento permanece inalterado (característica de atomicidade de transações para evitar inconsistências).
6. Desvantagens do Banco de Dados MongoDB
  • Gestão inexperiente ou mal feita pode levar a falhas nas vantagens do sistema: como ele promove mais flexibilidade de soluções, documentos podem acabar tendo estruturas completamente diferentes;
  • Limite de tamanho de dados: limite de memória por unidade de 16MB, causando problemas ao lidar com documentos de tamanho maior. Assim, é preciso particionar documentos maiores, algo que facilmente leva a problemas;
  • Dificultadores do uso Open Source: muitas das ferramentas associadas recomendadas estão ligadas a plataformas comerciais, dificultando o uso Open Source;
  • Rotinas de restauração e backup não são triviais para Shared Clusters e ReplicaSets;
  • Intensidade de Memória: o MongoDB pode ser utilizar grande quantidade de memória conforme o conjunto de dados cresce;
  • Ausência de joins: dificulta o trabalho com relações de dados complexas; o left outer join é feito por meio de uma operação muito custosa, tornando difícil sua frequente utilização.

7. Nichos de aplicação

    O MongoDB, por ser um sistema de armazenamento NoSQL, tem como objetivo suprir as falhas de sistemas SQL para grandes quantidades de dados (Big Data). Por isso, os nichos de aplicações desse banco estão relacionados com grandes volumes de dados, com necessidade de alta performance e ampla conectividade, o que nem sempre é garantido simultaneamente. Sendo assim, o MongoDB clássico optou pelo particionamento de dados e consistência. Por isso, podemos citar como exemplo os seguintes nichos:

  1. Aplicações WEB e mobile: por ser baseado em documentos (JSON) o MongoDB é ideal para aplicações WEB e mobile, provendo fácil integração com frameworks WEB  como o Node.js, permitindo aos desenvolvedores a construção de aplicações em tempo real robustas.

  1. Content Management Systems (CMS): MongoDB é amplamente utilizado para lidar com grandes volumes de dados não estruturados, sendo excelente para aplicações pesadas. Dessa maneira, plataformas CMS, como blogs, portais de notícia e e-commerces utilizam MongoDB para gerenciamento de seus conteúdos.

  1. Internet das Coisas (IoT): o MongoDB é ideal para lidar com dados de maneira rápida e flexível, sendo uma solução ideal para aplicações IoT.

  1. Big Data: a integração do MongoDB com plataformas de análise, como Apache Spark, permite que haja análise em tempo real de grandes datasets. Assim, ele suporta processamento distribuído de dados.

  1. Redes Sociais: MongoDB é amplamente utilizado em redes sociais e plataformas de recomendação para lidar com conteúdos gerados por usuários em tempo real. Isto pois seu sistema de esquemas flexíveis permite que os desenvolvedores se adaptem às mudanças nos requisitos do usuário e escalem a plataforma à medida que a base de usuários cresce.


Exemplos de empresas que utilizam o MongoDB: Adobe, E-bay, Coinbase, The Weather Channel, Cisco, Bosch e Forbes.


Links úteis