Voltar

MongoDB2

Visualizando versão #5 da página
(Restaurar esta versão) 

Modificado: 30 junho 2023, 12:16 PM   Usuário: Breno Livio Silva de Almeida  → Breno Livio Silva de Almeida

1. Nome de Banco de Dados

MongoDB 

2. Lista de alunos

  • Gabriel Fernando Machado Fachini - 11953481

  • Samuel de Assunção Ferreira - 12543565

  • Andre Santana Fernandes - 11208537

  • Breno Lívio Silva de Almeida (Editor, Apresentador) - 10276675

  • Bruna Azevedo Garcia (Coordenadora) - 11381789

  • Gustavo Hitomi da Silva - 11801202

  • Andrey Cortez Rufino (Apresentador) - 11819487

  • Daniel Arrais Martins - 11819445

  • Mateus de Souza Santos - 11366913

  • Benício Januário (Apresentador) - 12543843
3. Documento


4. Slides


5. Main DB Features

  • Orientação a documentos: O MongoDB é um banco de dados orientado a documentos, o que significa que ele armazena dados em documentos flexíveis, semelhantes a JSON, chamados BSON (Binary JSON). Além de ser uma forma simples e bem conhecida por desenvolvedores, essa estrutura permite uma evolução de esquema fácil e dinâmica, tornando-o adequado para lidar com dados não estruturados e semi-estruturados.

  • Escalabilidade: O MongoDB foi projetado para escalar horizontalmente em vários servidores, permitindo alta disponibilidade e acomodando o crescimento de dados e cargas de usuários. Ele suporta shardings automáticos, onde os dados são distribuídos em várias máquinas, possibilitando a escalabilidade horizontal sem comprometer o desempenho.

  • Alta Performance: O MongoDB oferece leituras e gravações de alta performance por meio de diversas técnicas de otimização. Ele possui um mecanismo de armazenamento em memória e suporta indexação, otimização de consultas e mecanismos de cache para oferecer uma recuperação e manipulação eficientes dos dados.

  • Modelo de Dados Flexível: Com sua natureza sem esquema, o MongoDB permite a modelagem flexível de dados. Os documentos dentro de uma coleção podem ter estruturas variadas, permitindo o armazenamento fácil de dados heterogêneos. Essa flexibilidade torna-o adequado para o desenvolvimento ágil e requisitos de dados em constante evolução.

  • Replicação e Tolerância a Falhas: O MongoDB oferece conjuntos de réplicas, que são clusters auto-recuperáveis ​​que consistem em nós primários e secundários. A replicação fornece redundância e tolerância a falhas, garantindo a disponibilidade dos dados mesmo em caso de falhas nos nós. A recuperação automática e a sincronização de dados são recursos-chave dos conjuntos de réplicas.

  • Consultas Ad Hoc: O MongoDB suporta consultas ad hoc poderosas, permitindo que você consulte dados usando um conjunto rico de operadores e expressões. Ele oferece capacidades de consulta flexíveis, incluindo suporte à indexação e pipelines de agregação, tornando-o eficiente para uma recuperação complexa de dados.

  • Capacidades Geoespaciais: O MongoDB inclui recursos de indexação e consulta geoespaciais, permitindo o armazenamento e recuperação de dados geoespaciais. Isso o torna adequado para aplicativos baseados em localização e serviços que exigem operações geoespaciais.

  • Opções Flexíveis de Implantação: O MongoDB pode ser implantado em várias configurações, incluindo local, na nuvem ou como um serviço de banco de dados gerenciado. Ele suporta plataformas de nuvem populares e oferece integrações nativas com estruturas e ferramentas comumente usadas no desenvolvimento de aplicativos modernos.

6. Does it implement CA, CP, or AP? Why?

O MongoDB é classificado como CP (Consistente e Tolerante à Partição). Ele prioriza a consistência e a tolerância à partição, em detrimento da disponibilidade.

O MongoDB segue um modelo de "sistema de um mestre" (single-master system), em que cada conjunto de réplicas (replica set) possui um nó primário que recebe as operações de escrita. Os demais nós do mesmo conjunto são secundários, responsáveis apenas pela replicação.

Quando o nó primário se torna indisponível, o secundário mais recente assume o papel de novo primário e o cluster fica temporariamente indisponível até que os secundários alcancem o estado atualizado do novo primário.

Essa abordagem garante a consistência dos dados, mas pode resultar em períodos de indisponibilidade durante a transição entre primários.

7. DB Advantages

  • Flexibilidade de Esquema: O MongoDB possui um modelo flexível de esquema, permitindo que os documentos em uma coleção tenham estruturas diferentes. Isso facilita a evolução do esquema e acomoda mudanças nos requisitos de dados sem a necessidade de alterar esquemas rígidos.

  • Escalabilidade Horizontal: O MongoDB é altamente escalável, permitindo a distribuição de dados em vários servidores através do recurso de shardings automáticos. Essa abordagem facilita o dimensionamento do banco de dados para lidar com grandes volumes de dados e cargas de trabalho intensas.

  • Alta Performance: O MongoDB foi projetado para oferecer alto desempenho em operações de leitura e gravação. Ele utiliza otimizações como indexação, caching em memória e consultas eficientes para melhorar a velocidade de acesso aos dados.

  • Suporte a Consultas Complexas: O MongoDB possui um poderoso mecanismo de consulta que permite realizar consultas ad hoc complexas, incluindo consultas geoespaciais e agregações avançadas. Isso oferece flexibilidade na recuperação e análise dos dados armazenados.

  • Replicação e Tolerância a Falhas: O MongoDB suporta a replicação automática de dados através de conjuntos de réplicas (replica sets). Isso melhora a disponibilidade e a resiliência do sistema, permitindo a continuidade do serviço mesmo em caso de falhas de hardware ou interrupções.

  • Gerenciamento de Dados Distribuídos: O MongoDB oferece recursos para gerenciar dados distribuídos, incluindo balanceamento automático de carga, roteamento inteligente de consultas e recuperação automática em caso de falhas. Isso facilita o gerenciamento eficiente de clusters de bancos de dados distribuídos.

  • Integração com Ecossistema de Dados: O MongoDB possui uma ampla integração com o ecossistema de dados, oferecendo suporte a diversas linguagens de programação, frameworks e ferramentas populares. Isso facilita a integração com outras tecnologias e simplifica o desenvolvimento de aplicativos.

  • Comunidade Ativa e Suporte: O MongoDB possui uma comunidade ativa de usuários e uma empresa por trás do desenvolvimento e suporte contínuo do produto. Isso garante que você tenha acesso a recursos, documentação e suporte técnico confiável quando necessário.
8. DB Disadvantages

  • Ausência de Transações Multicolunas: Antes da versão 4.0, o MongoDB não suportava transações multicolunas que abrangiam várias coleções ou bancos de dados. Embora o suporte a transações tenha sido adicionado posteriormente, ainda pode ser uma limitação em comparação com bancos de dados relacionais tradicionais.

  • Consumo de Recursos: O MongoDB pode consumir mais recursos de hardware, como memória e armazenamento, em comparação com bancos de dados relacionais tradicionais. Isso ocorre devido à flexibilidade de esquema e às operações de indexação e replicação que exigem recursos adicionais.

  • Complexidade de Consultas: Embora o MongoDB ofereça recursos avançados de consulta, consultas complexas envolvendo várias operações e agregações podem ser desafiadoras de desenvolver e otimizar. É importante projetar adequadamente o esquema e os índices para obter um desempenho ideal.

  • Não é a Melhor Opção para Dados Altamente Relacionados: Se você possui um conjunto de dados altamente relacionados e com estrutura rígida, um banco de dados relacional tradicional pode ser uma escolha mais adequada. O MongoDB é mais adequado para casos de uso com dados semi estruturados ou não estruturados, onde a flexibilidade de esquema é valorizada.

  • Fragmentação de Dados: Ao realizar shardings automáticos para dimensionar horizontalmente o MongoDB, pode ocorrer a fragmentação dos dados, o que pode complicar certas operações e consultas que exigem a união de dados distribuídos em diferentes shards.

  • Maior Curva de Aprendizado: Para aqueles acostumados com bancos de dados relacionais, a transição para um banco de dados NoSQL como o MongoDB pode exigir uma curva de aprendizado adicional. Os conceitos e abordagens são diferentes, o que pode demandar tempo para se familiarizar completamente.

  • Gerenciamento de Transações Distribuídas: Embora o MongoDB suporte transações, o gerenciamento de transações distribuídas em ambientes com múltiplos bancos de dados ou coleções pode ser complexo e requerer cuidados adicionais para garantir a consistência e a integridade dos dados.
9. Application niches

O MongoDB é amplamente adotado por desenvolvedores de diversos perfis devido à sua arquitetura expansível, que permite criar aplicações escaláveis com esquemas de dados em constante evolução. Como um banco de dados de documentos, o MongoDB oferece uma solução conveniente para armazenar dados estruturados ou não estruturados. Ele utiliza um formato semelhante ao JSON para armazenar os documentos, o que se alinha perfeitamente com os objetos nativos das linguagens de programação modernas. Isso torna o MongoDB uma escolha natural para os desenvolvedores, pois eles não precisam se preocupar com a normalização dos dados. Além disso, o MongoDB é capaz de lidar com grandes volumes de dados e pode escalar vertical ou horizontalmente para acomodar uma carga de dados significativa.

Entre as empresas que utilizam o MongoDB destacam-se: Globo.com, SourceForge, FourSquare, MailBox (serviço de e-mail do Dropbox), LinkedIn, SAP, MTV, Pearson Education, e muitos outros.