Um banco de dados NoSQL fornece um mecanismo para armazenamento e recuperação de dados que são modelados em meios diferentes das relações tabulares usadas em bancos de dados relacionais (como SQL, Oracle, etc.).
Tipos de bancos de dados NoSQL:
- Orientado a Documento
- Valor chave
- Graph
- Orientado a coluna
MongoDB é um banco de dados orientado a documentos. Ele armazena dados na forma de documentos baseados na estrutura BSON. Esses documentos são armazenados em uma coleção.
- Modelo de dados flexível na forma de documentos
- Banco de dados ágil e altamente escalável
- Mais rápido do que bancos de dados tradicionais
- Linguagem de consulta expressiva
Um namespace é a concatenação do nome do banco de dados e do nome da coleção. Por exemplo, school.students com a escola como o banco de dados e os alunos como a coleção
Atualmente, o MonggoDB fornece suporte de driver oficial para C, C ++, C #, Java, Node.js, Perl, PHP, Python, Ruby, Scala, Go e Erlang. O MongoDB pode ser facilmente usado com qualquer uma dessas linguagens. Existem alguns outros drivers suportados pela comunidade também, mas os mencionados acima são oficialmente fornecidos pelo MongoDB.
Os bancos de dados SQL armazenam dados na forma de tabelas, linhas, colunas e registros. Esses dados são armazenados em um modelo de dados predefinido que não é muito flexível para os aplicativos de alto crescimento do mundo real de hoje. O MongoDB, em contraste, usa uma estrutura flexível que pode ser facilmente modificada e estendida.
O MongoDB permite uma estrutura de documentos altamente flexível e escalonável. Por exemplo, um documento de dados no MongoDB pode ter cinco colunas e o outro na mesma coleção pode ter dez colunas. Além disso, o banco de dados MongoDB é mais rápido em comparação com os bancos de dados SQL devido às técnicas eficientes de indexação e armazenamento.
Embora ambos os bancos de dados sejam orientados a documentos, o MongoDB é a melhor escolha para aplicativos que precisam de consultas dinâmicas e bom desempenho em um banco de dados muito grande. Por outro lado, o CouchDB é melhor usado para aplicativos com consultas que mudam ocasionalmente e consultas predefinidas.
Não. O MongoDB não oferece suporte a esses relacionamentos.
Não. O MongoDB não oferece suporte a transações ACID padrão de vários documentos. No entanto, o MongoDB fornece operação atômica em um único documento.
Por padrão, o MongoDB não suporta tais relacionamentos de chave primária - chave estrangeira. No entanto, podemos alcançar esse conceito incorporando um documento dentro de outro. Por exemplo, um documento de endereço pode ser incorporado ao documento do cliente.
Não. O MongoDB pode ser executado mesmo em uma pequena quantidade de RAM. O MongoDB aloca e desaloca a RAM dinamicamente com base nos requisitos de outros processos.
O MongoDB envia os dados para o disco lentamente. Ele atualiza o imediatamente gravado no diário, mas a gravação dos dados do diário no disco ocorre lentamente.
ObjectID é um tipo BSON de 12 bytes com:
- Valor de 4 bytes representando segundos
- Identificador de máquina de 3 bytes
- Id de processo de 2 bytes
- Contador de 3 bytes
Verdadeiro
Sim. Remover um documento do banco de dados também o remove do disco.
use school;
db.persons.insert( { name: "kadhir", dept: "CSE" } )
Os índices suportam a execução eficiente de consultas no MongoDB. Sem índices, o MongoDB deve executar uma varredura de coleção, ou seja, varrer todos os documentos em uma coleção, para selecionar os documentos que correspondem à instrução de consulta. Se existir um índice apropriado para uma consulta, o MongoDB pode usar o índice para limitar o número de documentos que deve inspecionar.
Por padrão, o MongoDB criou a coleção _id para cada coleção.
Sim. Um campo de array pode ser indexado no MongoDB. Nesse caso, o MongoDB indexaria cada valor do array.
Uma consulta coberta é aquela em que:
- campos usados na consulta fazem parte de um índice usado na consulta, e
- os campos retornados nos resultados estão no mesmo índice
Como todos os campos são cobertos pelo próprio índice, o MongoDB pode corresponder à condição da consulta, bem como retornar os campos de resultado usando o mesmo índice, sem olhar dentro dos documentos. Como os índices são armazenados na RAM ou localizados sequencialmente no disco, esse acesso é muito mais rápido.
Sim. O MongoDB oferece suporte à criação de índices de texto para dar suporte à pesquisa de texto dentro do conteúdo da string. Este é um novo recurso que pode ser introduzido na versão 2.6.
Se os índices não couberem na RAM, o MongoDB lê os dados do disco, que é relativamente muito mais lento do que ler na RAM.
db.collection.getIndexes()
Por configuração padrão, o MongoDB grava atualizações no disco a cada 60 segundos. No entanto, isso é configurável com as opções commitIntervalMs e syncPeriodSecs.
Para alcançar os conceitos de transação e bloqueio no MongoDB, podemos usar o aninhamento de documentos, também chamados de documentos incorporados. O MongoDB oferece suporte a operações atômicas em um único documento.
As operações de agregação processam registros de dados e retornam resultados computados. As operações de agregação agrupam valores de vários documentos e podem executar uma variedade de operações nos dados agrupados para retornar um único resultado. O MongoDB fornece três maneiras de realizar a agregação: o pipeline de agregação, a função de redução de mapa e métodos e comandos de agregação de propósito único.
Sharding é um método para armazenar dados em várias máquinas. O MongoDB usa fragmentação para dar suporte a implantações com conjuntos de dados muito grandes e operações de alto rendimento.
A replicação é o processo de sincronização de dados em vários servidores. A replicação fornece redundância e aumenta a disponibilidade dos dados. Com várias cópias de dados em diferentes servidores de banco de dados, a replicação protege um banco de dados da perda de um único servidor. A replicação também permite a recuperação de falhas de hardware e interrupções de serviço.
Os nós primários e mestres são os nós que podem aceitar gravações. A replicação do MongoDB é 'mestre único': apenas um nó pode aceitar operações de gravação por vez.
Os nós secundários e escravos são nós somente leitura que se replicam do primário.
Falso. MongoDB grava dados apenas no conjunto de réplicas principal.
O MongoDB pré-aloca arquivos de dados para reservar espaço e evitar a fragmentação do sistema de arquivos ao configurar o servidor.
Você deve considerar a incorporação de documentos para:
- 'contém' relacionamentos entre entidades
- Relacionamentos um-para-muitos
- Razões de desempenho
Ao executar uma compilação de 32 bits do MongoDB, o tamanho total de armazenamento do servidor, incluindo dados e índices, é de 2 gigabytes. Por esse motivo, não implante o MongoDB para produção em máquinas de 32 bits.
Se você estiver executando uma compilação de 64 bits do MongoDB, praticamente não há limite para o tamanho do armazenamento.
Um mecanismo de armazenamento é a parte de um banco de dados responsável por gerenciar como os dados são armazenados no disco. Por exemplo, um mecanismo de armazenamento pode oferecer melhor desempenho para cargas de trabalho pesadas de leitura e outro pode oferecer suporte a um rendimento mais alto para operações de gravação.
O MongoDB usa MMAPv1 e WiredTiger.
O criador de perfil do banco de dados coleta dados refinados sobre operações de gravação, cursores e comandos de banco de dados do MongoDB em uma instância mongod em execução. Você pode habilitar a criação de perfil por banco de dados ou por instância.
O criador de perfil do banco de dados grava todos os dados que coleta na coleção system.profile, que é uma coleção limitada.
Ao executar com registro em diário, o MongoDB armazena e aplica operações de gravação na memória e no registro em disco antes que as alterações estejam presentes nos arquivos de dados no disco. As gravações no diário são atômicas, garantindo a consistência dos arquivos de diário no disco. Com o registro no diário habilitado, o MongoDB cria um subdiretório de registro no diretório definido por dbPath, que é / data / db por padrão.
db.isMaster ()
Não. O MMAPv1 não permite configurar o tamanho do cache.
Para o mecanismo de armazenamento WiredTiger, você pode especificar o tamanho máximo do cache que o WiredTiger usará para todos os dados. Isso pode ser feito usando a opção storage.wiredTiger.engineConfig.cacheSizeGB.
O MongoDB usa bloqueios de leitor-gravador que permitem que leitores simultâneos tenham acesso compartilhado a um recurso, como um banco de dados ou coleção, mas fornecem acesso exclusivo a uma única operação de gravação.
Você pode usar o método snapshot () em um cursor para isolar a operação para um caso muito específico. snapshot () percorre o índice no campo _id e garante que a consulta retornará cada documento no máximo uma vez.
Sim. Operações como copyDatabase (), repairDatabase (), etc. podem bloquear mais de um banco de dados envolvido.
Na replicação, quando o MongoDB grava em uma coleção no primário, o MongoDB também grava no oplog do primário, que é uma coleção especial no banco de dados local. Portanto, o MongoDB deve bloquear o banco de dados da coleção e o banco de dados local.
GridFS é uma especificação para armazenar e recuperar arquivos que excedem o limite de tamanho de documento BSON de 16 MB. Em vez de armazenar um arquivo em um único documento, o GridFS divide um arquivo em partes, ou pedaços, e armazena cada um desses pedaços como um documento separado.
Sim. O mecanismo V8 JavaScript adicionado no 2.4 permite que várias operações JavaScript sejam executadas ao mesmo tempo.
O comando explain () pode ser usado para esta informação. Os modos possíveis são: 'queryPlanner', 'executionStats' e 'allPlansExecution'.