Una base de datos NoSQL proporciona un mecanismo para el almacenamiento y la recuperación de datos que se modelan en medios distintos a las relaciones tabulares utilizadas en las bases de datos relacionales (como SQL, Oracle, etc.).

Tipos de bases de datos NoSQL:

  • Orientado a documentos
  • Valor clave
  • Graph
  • Orientado a columnas

MongoDB es una base de datos orientada a documentos. Almacena datos en forma de documentos basados ​​en estructura BSON. Estos documentos se almacenan en una colección.

  • Modelo de datos flexible en forma de documentos
  • Base de datos ágil y altamente escalable
  • Más rápido que las bases de datos tradicionales
  • Lenguaje de consulta expresivo

Un espacio de nombres es la concatenación del nombre de la base de datos y el nombre de la colección. Por ejemplo, estudiantes de escuela con escuela como base de datos y estudiantes como colección

Actualmente, MonggoDB proporciona soporte de controlador oficial para C, C ++, C #, Java, Node.js, Perl, PHP, Python, Ruby, Scala, Go y Erlang. MongoDB se puede utilizar fácilmente con cualquiera de estos lenguajes. También hay algunos otros controladores compatibles con la comunidad, pero los mencionados anteriormente son proporcionados oficialmente por MongoDB.

Las bases de datos SQL almacenan datos en forma de tablas, filas, columnas y registros. Estos datos se almacenan en un modelo de datos predefinido que no es muy flexible para las aplicaciones de gran crecimiento del mundo real de hoy. MongoDB, por el contrario, utiliza una estructura flexible que se puede modificar y ampliar fácilmente.

MongoDB permite una estructura de documentos altamente flexible y escalable. Por ejemplo, un documento de datos en MongoDB puede tener cinco columnas y el otro en la misma colección puede tener diez columnas. Además, las bases de datos MongoDB son más rápidas en comparación con las bases de datos SQL debido a las eficientes técnicas de indexación y almacenamiento.

Aunque ambas bases de datos están orientadas a documentos, MongoDB es una mejor opción para aplicaciones que necesitan consultas dinámicas y buen rendimiento en una base de datos muy grande. Por otro lado, CouchDB se usa mejor para aplicaciones con consultas que cambian ocasionalmente y consultas predefinidas.

No. MongoDB no admite este tipo de relaciones.

No. MongoDB no admite transacciones ACID predeterminadas de varios documentos. Sin embargo, MongoDB proporciona operación atómica en un solo documento.

De forma predeterminada, MongoDB no admite este tipo de relaciones de clave primaria - clave externa. Sin embargo, podemos lograr este concepto incrustando un documento dentro de otro. Por ejemplo, se puede incrustar un documento de dirección dentro del documento del cliente.

No. MongoDB se puede ejecutar incluso con una pequeña cantidad de RAM. MongoDB asigna y desasigna dinámicamente RAM según los requisitos de otros procesos.

MongoDB envía los datos al disco de manera perezosa. Actualiza lo que se escribe inmediatamente en el diario, pero la escritura de los datos del diario en el disco ocurre de forma perezosa.

ObjectID es un tipo BSON de 12 bytes con:

  • Valor de 4 bytes que representa segundos
  • Identificador de máquina de 3 bytes
  • ID de proceso de 2 bytes
  • Contador de 3 bytes

Cierto

Si. Al eliminar un documento de la base de datos, también se elimina del disco.

use school;
db.persons.insert( { name: "kadhir", dept: "CSE" } )

Los índices admiten la ejecución eficiente de consultas en MongoDB. Sin índices, MongoDB debe realizar un escaneo de la colección, es decir, escanear todos los documentos de una colección, para seleccionar aquellos documentos que coincidan con la declaración de consulta. Si existe un índice apropiado para una consulta, MongoDB puede usar el índice para limitar la cantidad de documentos que debe inspeccionar.

De forma predeterminada, MongoDB creó la colección _id para cada colección.

Si. Un campo de matriz se puede indexar en MongoDB. En este caso, MongoDB indexaría cada valor de la matriz.

Una consulta cubierta es aquella en la que:

  • los campos usados ​​en la consulta son parte de un índice usado en la consulta, y
  • los campos devueltos en los resultados están en el mismo índice

Dado que todos los campos están cubiertos en el índice mismo, MongoDB puede coincidir con la condición de la consulta y devolver los campos de resultado utilizando el mismo índice sin mirar dentro de los documentos. Dado que los índices se almacenan en RAM o se ubican secuencialmente en el disco, dicho acceso es mucho más rápido.

Si. MongoDB admite la creación de índices de texto para admitir la búsqueda de texto dentro del contenido de la cadena. Esta fue una nueva característica que se puede introducir en la versión 2.6.

Si los índices no caben en la RAM, MongoDB lee los datos del disco, que es relativamente mucho más lento que leer desde la RAM.

db.collection.getIndexes()

Por configuración predeterminada, MongoDB escribe actualizaciones en el disco cada 60 segundos. Sin embargo, esto se puede configurar con las opciones commitIntervalMs y syncPeriodSecs.

Para lograr conceptos de transacción y bloqueo en MongoDB, podemos usar el anidamiento de documentos, también llamados documentos incrustados. MongoDB admite operaciones atómicas en un solo documento.

Las operaciones de agregaciones procesan registros de datos y devuelven resultados calculados. Las operaciones de agregación agrupan valores de varios documentos y pueden realizar una variedad de operaciones en los datos agrupados para devolver un solo resultado. MongoDB proporciona tres formas de realizar la agregación: la canalización de agregación, la función de reducción de mapa y los métodos y comandos de agregación de propósito único.

La fragmentación es un método para almacenar datos en varias máquinas. MongoDB utiliza la fragmentación para admitir implementaciones con conjuntos de datos muy grandes y operaciones de alto rendimiento.

La replicación es el proceso de sincronizar datos en varios servidores. La replicación proporciona redundancia y aumenta la disponibilidad de datos. Con múltiples copias de datos en diferentes servidores de bases de datos, la replicación protege una base de datos de la pérdida de un solo servidor. La replicación también le permite recuperarse de fallas de hardware e interrupciones del servicio.

Los nodos principal y principal son los nodos que pueden aceptar escrituras. La replicación de MongoDB es 'maestro único:' solo un nodo puede aceptar operaciones de escritura a la vez.

Los nodos secundarios y esclavos son nodos de solo lectura que se replican desde el primario.

Falso. MongoDB escribe datos solo en el conjunto de réplicas principal.

MongoDB preasigna archivos de datos para reservar espacio y evitar la fragmentación del sistema de archivos cuando configura el servidor.

Debería considerar incrustar documentos para:

  • 'contiene' relaciones entre entidades
  • Relaciones de uno a muchos
  • Razones de desempeño

Cuando se ejecuta una compilación de 32 bits de MongoDB, el tamaño de almacenamiento total del servidor, incluidos los datos y los índices, es de 2 gigabytes. Por esta razón, no implemente MongoDB en producción en máquinas de 32 bits.

Si está ejecutando una compilación de 64 bits de MongoDB, prácticamente no hay límite para el tamaño de almacenamiento.

Un motor de almacenamiento es la parte de una base de datos que es responsable de administrar cómo se almacenan los datos en el disco. Por ejemplo, un motor de almacenamiento puede ofrecer un mejor rendimiento para cargas de trabajo de lectura intensa y otro puede admitir un mayor rendimiento para las operaciones de escritura.

MongoDB usa MMAPv1 y WiredTiger.

El generador de perfiles de base de datos recopila datos detallados sobre operaciones de escritura, cursores y comandos de base de datos de MongoDB en una instancia de mongod en ejecución. Puede habilitar la creación de perfiles por base de datos o por instancia.

El generador de perfiles de la base de datos escribe todos los datos que recopila en la colección system.profile, que es una colección limitada.

Cuando se ejecuta con el diario, MongoDB almacena y aplica operaciones de escritura en la memoria y en el diario del disco antes de que los cambios estén presentes en los archivos de datos del disco. Las escrituras en el diario son atómicas, lo que garantiza la coherencia de los archivos del diario en disco. Con el diario habilitado, MongoDB crea un subdirectorio de diario dentro del directorio definido por dbPath, que es / data / db por defecto.

db.isMaster ()

No. MMAPv1 no permite configurar el tamaño de la caché.

Para el motor de almacenamiento WiredTiger, puede especificar el tamaño máximo de caché que WiredTiger utilizará para todos los datos. Esto se puede hacer usando la opción storage.wiredTiger.engineConfig.cacheSizeGB.

MongoDB utiliza bloqueos de lector-escritor que permiten a los lectores simultáneos acceso compartido a un recurso, como una base de datos o una colección, pero dan acceso exclusivo a una única operación de escritura.

Puede usar el método snapshot () en un cursor para aislar la operación para un caso muy específico. snapshot () recorre el índice en el campo _id y garantiza que la consulta devolverá cada documento no más de una vez.

Si. Operaciones como copyDatabase (), repairDatabase (), etc. pueden bloquear más de una base de datos involucrada.

En la replicación, cuando MongoDB escribe en una colección en el primario, MongoDB también escribe en el registro de operaciones primario, que es una colección especial en la base de datos local. Por lo tanto, MongoDB debe bloquear tanto la base de datos de la colección como la base de datos local.

GridFS es una especificación para almacenar y recuperar archivos que exceden el límite de tamaño de documento BSON de 16 MB. En lugar de almacenar un archivo en un solo documento, GridFS divide un archivo en partes o fragmentos y almacena cada uno de esos fragmentos como un documento separado.

Si. El motor de JavaScript V8 agregado en 2.4 permite que se ejecuten múltiples operaciones de JavaScript al mismo tiempo.

El comando explica () se puede utilizar para esta información. Los modos posibles son: 'queryPlanner', 'executionStats' y 'allPlansExecution'.