¿Qué son las bases
Que son y como se comportan las bases de datos y sus tipos
de datos?
Bases de datos, ¿Qué son?
El término de bases de datos fue escuchado por primera vez en 1963, en un simposio celebrado en California, USA. Una base de datos se puede definir como un conjunto de información relacionada que se encuentra agrupada ó estructurada.
- Desde el punto de vista informático, la base de datos es un sistema formado por un conjunto de datos almacenados en discos que permiten el acceso directo a ellos y un conjunto de programas que manipulen ese conjunto de datos.
- Cada base de datos se compone de una o más tablas que guarda un conjunto de datos. Cada tabla tiene una o más columnas y filas. Las columnas guardan una parte de la información sobre cada elemento que queramos guardar en la tabla, cada fila de la tabla conforma un registro.
Características
Se define una base de datos como una serie de datos organizados y relacionados entre sí, los cuales son recolectados y explotados por los sistemas de información de una empresa o negocio en particular.
Objetivos de la bases de datos
Tipos de bases de datos
•Trabajar con consultas complejas y no predefinidas
•Ofrecer flexibilidad e independencia
•Evitar la redundancia
•Garantizar la integridad de los datos
•Permitir la concurrencia de usuarios
•Asegurar la seguridad de los datos
Según el modelo Relacionales Distribuida NoSQL Orientadas a objetos Multidimensionales Documentales Deductivas
Transaccionales Jerárquicas Red Según el contenido Bibliográficas Texto completo Según la variabilidad Estáticas Dinámicas
Bases de datos relacionales y no relacionales
Bases de datos relacionales, ¿Qué son?
se trata de una base de datos que almacena y da acceso a puntos de datos relacionados entre sí. El modelo relacional es una forma intuitiva y directa de representar datos sin necesidad de jerarquizarlos.
Una base de datos relacional es, en esencia, un conjunto de tablas (o relaciones) formadas por filas (registros) y columnas (campos); así, cada registro (cada fila) tiene una ID única, denominada clave y las columnas de la tabla contienen los atributos de los datos. Cada registro tiene normalmente un valor para cada atributo, lo que simplifica la creación de relaciones entre los puntos de datos.
Características
Id única
Claves ajenas
se colocan en la tabla hija y contienen el mismo valor que la clave primaria del registro padre
Claves primarias
Evitar la duplicidad de registros y a su vez garantizar la integridad referencial, es decir, que si se elimina uno de los registros, la integridad de los registros restantes no será afectada. son la clave principal de un registro dentro de una tabla
Software especifico
Este software proporciona una interfaz entre los usuarios y/o las aplicaciones y la base de datos, además de contar con funciones administrativas para gestionar el acceso
Ventajas desventajas
Sencillez
permite manejar grandes cantidades de datos con puntos de relación entre sí, gestionándolos de forma segura y conforme a unas normas y un modo uniforme.
Uniformidad
garantizan que todas las copias de la base de datos tienen los mismos datos en todo momento.
Normalización
Garantizan que no se produzca la duplicidad de registros.
Evita conflictos
Bloquea el acceso de varios usuarios al mismo dato según las políticas de datos.
Control de datos
Gestiona los accesos a los usuarios dependiendo de las políticas.
Procesamientos
Son deficientes a la hora de manejar datos gráficos, multimedia, CAD y sistemas de información geográfica Sub datos
no se puede crear un sub fila, porque todas las filas están al mismo nivel jerárquico, por tanto no se puede emplear entidades subordinadas.
Segmentación
Al segmentarse en diferentes tablas por separado, esto provoca un rendimiento negativo a la hora de hacer consultas y obtener la información deseada.
Bases de datos no relacionales, ¿Qué son?
Son un sistema de almacenamiento de información que se caracteriza por no usar el lenguaje SQL para las consultas. No significa que no puedan usar el lenguaje SQL, pero no lo hacen como herramienta de consulta, sino como apoyo y no trabajan con estructuras definidas. Es decir, los datos no se almacenan en tablas, y la información tampoco se organiza en registros o campos. Tienen una gran escalabilidad y están pensadas para la gestión de grandes volúmenes de datos. Por otro lado, a diferencia de las bases de datos relacionales no cumple con el estándar ACID de atomicidad, consistencia, aislamiento y durabilidad. Son más actuales que las relacionales, y su desarrollo se ha basado en la necesidad de crear sistemas de gestión capaces de trabajar con datos no estructurados o semi-estructurados.
Características
Desestructuración
Des estandarización
Es un sistema de almacenamiento de datos relativamente nuevo, y como tal, todavía no posee un sistema estandarizado.
Escalabilidad
Son muy útiles para organizar y gestionar información no estructurada, o cuando no se tiene una noción clara de los datos a almacenar.. están diseñadas para soportar grandes volúmenes de datos.
No ACID no garantizan el cumplimiento de las cualidades ACID, esto es, atomicidad, consistencia, integridad y durabilidad.
Ventajas desventajas
Flexibilidad
La flexibilidad en el tipo de datos las convierte en una solución ideal para el almacenamiento y gestión de datos no estructurados o semiestructurados.
Escalabilidad
soporta mayores volúmenes de datos y añade mayor capacidad de nuevos módulos de software, sin necesidad de añadir nuevos servidores.
Alto rendimiento
Están diseñadas para trabajar con modelos de datos concretos y patrones de acceso específicos.
Funcionales
cuentan con API exclusivas y proporcionan modelos de datos para trabajar con cada tipo de datos presentes en la base.
No ACID
No cumplen igual que las relacionales con las propiedades de atomicidad, consistencia, integridad y durabilidad.
No consultas SQL
No son compatibles con determinadas consultas en lenguaje SQL.
Soporte limitado
las bases de datos no relacionales este soporte es mucho más limitado, mientras que muchas relacionales son de código abierto
¿Qué es un sistema de gestor de bases de datos?
Ejemplos de gestor de bases
—
Tipos de gestores relacionales
Como ya hemos mencionada más arriba, el software empleado para manejar una base de datos relacional es un sistema de Gestión de Bases de Datos Relacionales (RDBMS).
Actualmente existen varios tipos de de gestores de BDR, entre ellos, los más usados son:
—
Tipos de gestores no relacionales
Son bases de datos que no usan el lenguaje SQL, o que lo usan solo como apoyo, pero no como consulta. Entre los lenguajes más usados por las bases de datos no relacionales están CQL (Contextual Query Language, JSON (JavaScript Object Notation) y GQL (Graph Query Language).
¿Qué es MySQL?
Funcionalidad y características
¿Qué es MySQL?
Es un sistema de gestión de bases de datos relacionales gratuito y de código abierto. Organiza y almacena los datos en un formato tabular con filas y columnas en las que se relacionan los tipos de datos. En cuanto al rendimiento, es rápida y estable, y cuenta con un servidor de bases de datos multihilo y multiusuario.
● Replicación y clustering MySQL permite la replicación y la agrupación en clústeres que ayudan a mejorar la escalabilidad y el rendimiento de las aplicaciones mediante diferentes tipos de sincronización.
● Soporte de contraseñas: MySQL facilita un sistema de encriptación de contraseñas para la verificación del host cuando alguien intenta acceder a la base de datos.
● Esquema de rendimiento: Supervisa el rendimiento de la aplicación, la utilización de los recursos y los eventos del servidor.
● Esquema en línea: MySQL admite múltiples esquemas en línea que te ayudan a cumplir tus requisitos de almacenamiento de datos y te ofrecen más flexibilidad.
● Resistencia: Las aplicaciones soportadas por MySQL son resistentes a los fallos y pueden hacer frente fácilmente a estas situaciones.
● Soporte de transacciones: Tienes soporte para transacciones multinivel y distribuidas, bloqueo ilimitado a nivel de filas y transacciones conformes con ACID.
● Soporte de GUI: Hay muchas herramientas de interfaz gráfica de usuario disponibles en MySQL para facilitar el proceso de creación, diseño y administración de herramientas de línea de comandos para ahorrar tiempo.
● Limitaciones: El escalado horizontal no es fácil; millones de procesos de lectura o escritura afectan al rendimiento de la base de datos e incluyen otras limitaciones que comparten las bases de datos relacionales.
● Estos son algunos de los usos de MySQL:
● Sistemas de gestión de contenidos y blogs.
● Aplicaciones de comercio electrónico con muchos productos.
● Almacenamiento de datos.
¿Qué es Mongo DB?
Funcionalidad
¿Qué es Mongo DB?
Es un potente sistema de base de datos no relacional de código abierto y de uso gratuito, muy popular para almacenar grandes volúmenes de datos. Fue lanzado hace 12 años, en 2009, por 10gen (ahora MongoDB Inc.) con una licencia pública del lado del servidor. Es un programa de base de datos NoSQL con compatibilidad multiplataforma.
En lugar de almacenar los datos en filas y columnas, MongoDB adopta un diseño orientado a los documentos que representa los datos en varios documentos y colecciones de tipo JSON. Estos documentos contienen una serie de pares de valores o claves de diferentes tipos, como documentos anidados y matrices. Los pares clave/valor pueden tener una estructura diferente de un documento a otro.
¿Diseño de bases de datos?
Relacionales y no relacionales
6,1
¿Diseño de bases de datos relacionales?
¿Qué es el modelo relacional en base de datos?
El modelo relacional se basa en el concepto matemático de relación, que gráficamente se representa mediante una tabla. Es decir, una relación es una tabla, con columnas y filas. Un SGBD sólo necesita que el usuario pueda percibir la base de datos como un conjunto de tablas.
Su idea fundamental es el uso de relaciones. Estas relaciones podrían considerarse en forma lógica como conjuntos de datos llamados tuplas. Pese a que esta es la teoría de las bases de datos relacionales creadas por Codd, la mayoría de las veces se conceptualiza de una manera más fácil de imaginar, pensando en cada relación como si fuese una tabla que está compuesta por registros (cada fila de la tabla sería un registro o “tupla”) y columnas (también llamadas “campos”).
El Modelo Relacional se ocupa de:
- La estructura de datos
- La manipulación de datos
- La integridad de los datos
Donde las relaciones están formadas por :
- Atributos (columnas)
- Tuplas (Conjunto de filas)
Existen dos formas para la construcción de modelos relacionales:
- Creando un conjunto de tablas iniciales y aplicando operaciones de normalización hasta conseguir el esquema más óptimo, - O, convertir el modelo entidad relación (ER) en tablas, con una depuración lógica y la aplicación de restricciones de integridad.
¿Cuáles son los pasos para crear un modelo entidad - relación?
Paso 1
Propósito y alcance definen el propósito y el alcance de lo que estás analizando o modelando
Paso 2
Entidades : identifican las entidades involucradas. Cuando estés listo, comienza a dibujarlas en rectángulos (o en la figura que selecciones en tu sistema) y etiquétalas como sustantivos.
Paso 3
Paso 5
Cardinalidad: muestra si la relación es 1-1, 1-muchos o muchos a muchos.
Relaciones: determinan cómo se relacionan todas las entidades. Dibuja líneas entre ellas para indicar las relaciones y etiquétalas. Algunas entidades pueden no estar relacionadas, y eso está bien. En diferentes sistemas de notación, la relación se puede etiquetar en un diamante, otro rectángulo o directamente sobre la línea de conexión.
Paso 4
Atributos: brindan más detalles mediante la adición de atributos clave de las entidades. Los atributos a menudo se muestran como óvalos.
¿Qué es SQL y por que es importante?
● SQL (Lenguaje estructurado de consulta) es un lenguaje de tipo declarativo que permite un gran alcance para las consultas.
● El Lenguaje de Consulta Estructurada (SQL) es un lenguaje gestor para el manejo de la información en las bases de datos relacionales. Este tipo de lenguaje de programación permite comunicarse con la base de datos y realizar operaciones de acceso y manipulación de la información almacenada.
● El lenguaje de programación SQL no solo permite realizar operaciones de selección, inserción, actualización y eliminación de datos sino también operaciones administrativas sobre las bases de datos. Por tanto, se trata de un lenguaje completo de bases de datos que va más allá de la recuperación de la información.
● Diseñado para administrar y recuperar información de los sistemas de gestión de bases de datos relacionales, el lenguaje de programación SQL se caracteriza por el uso del álgebra y el cálculo relacional para realizar las consultas.
Manipulación DDL (Data Definition Language)
● El lenguaje de definición de datos (DDL) es un subconjunto de SQL. Es un lenguaje para describir los datos y sus relaciones en una base de datos. Puede generar DDL en un script de objetos de base de datos para:
● Mantener una instantánea de la estructura de base de datos.
● Configurar un sistema de prueba donde la base de datos actúe como el sistema de producción, pero sin contener datos.
● Producir plantillas para los nuevos objetos que puede crear basándose en los existentes. Por ejemplo, genere el DDL para la tabla Customer y, a continuación, edite el DDL para crear la tabla Customer_New con el mismo esquema.
¿Pára que sirven las sentencias DDL?
Ejemplo sentencia CREATE
Este comando crea un objeto dentro del gestor de base de datos. Puede ser una base de datos, tabla, índice, procedimiento almacenado o vista.
CREATE TABLE Empleado ( id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, Nombre VARCHAR(50), Apellido VARCHAR(50), Direccion VARCHAR(255), Ciudad VARCHAR(60), Telefono VARCHAR(15), Peso VARCHAR (5), Edad (2), Actividad Específica (100), idCargo INT )
Ejemplo sentencia ALTER
Este comando permite modificar la estructura de un objeto. Se pueden agregar/quitar campos a una tabla, modificar el tipo de un campo, agregar/quitar índices a una tabla, modificar un trigger, etc.
ALTER TABLE 'NOMBRE_TABLA' ADD NUEVO_CAMPO INT;
ALTER TABLE 'NOMBRE_TABLA' DROP COLUMN NOMBRE_COLUMNA;
Ejemplo sentencia DROP
Este comando elimina un objeto de la base de datos. Puede ser una tabla, vista, índice, trigger, función, procedimiento o cualquier otro objeto que el motor de la base de datos soporte. Se puede combinar con la sentencia ALTER.
DROP TABLE 'NOMBRE_TABLA';
DROP SCHEMA 'ESQUEMA';
Ejemplo sentencia TRUNCATE
Este comando trunca todo el contenido de una tabla. La ventaja sobre el comando DROP, es que si se quiere borrar todo el contenido de la tabla, es mucho más rápido, especialmente si la tabla es muy grande. La desventaja es que TRUNCATE sólo sirve cuando se quiere eliminar absolutamente todos los registros, ya que no se permite la cláusula WHERE. Si bien, en un principio, esta sentencia parecería ser DML (Lenguaje de Manipulación de Datos), es en realidad una DDL, ya que internamente, el comando TRUNCATE borra la tabla y la vuelve a crear y no ejecuta ninguna transacción.
DROP DATABASE 'BASEDATOS'; TRUNCATE TABLE 'NOMBRE_TABLA';
Manipulación DML (Data Manipulation Language)
¿Pára que sirven las sentencias
Ejemplo sentencia
Ejemplo sentencia INSERT
Realiza una operación de inserción en la tabla o vista de destino. La operación Insert toma una matriz de registros como entrada. Cada registro se escribe fuertemente en la tabla de destino y se asigna a la fila que se inserta en la tabla.
Ejemplo sentencia UPDATE
Realiza una operación de actualización en la tabla o vista de destino. La operación de actualización toma una matriz de pares de registros como entrada. Cada par de registros es una colección de dos registros y cada registro se escribe fuertemente en la tabla de destino.
INSERT INTO libros (titulo, autor, isbn, edicion, editorial, añoPublicacion, ctdPaginas, genero, idioma, cantidad, disponible) VALUES ('orgullo y prejuicio', 'jane austen', '978-8544001820', 'lujo', 'martin claret', 2018, 424, 'romance', 'portugues', 2, 2);
UPDATE libros SET disponible=1 WHERE titulo='El Diario de Anne Frank';
Ejemplo sentencia DELETE
Realiza una operación De eliminación en la tabla o vista de destino basada en una matriz fuertemente fuerte de registros (lista de nombres de columna) de la tabla de destino y una cadena de filtro que especifica una cláusula WHERE.
DELETE from libros;
Normalización de base de datos relacional?
Hay reglas en la normalización de una base de datos y cada una de ellas se denomina Forma Normal. Existen 3 tipos principales.
Paso 1
Forma Normal (1FN)
1. Eliminar los grupos repetitivos de las tablas individuales.
1. Crear una tabla separada por cada grupo de datos relacionados.
1. Identificar cada grupo de datos relacionados con una clave primaria.
Paso 2
Forma Normal (2FN)
1. Tener la primera forma normal.
Paso 3 Forma Normal (3FN)
1. Tener la segunda forma normal.
2. Crear tablas separadas para aquellos grupos de datos que se aplican a varios registros.
3. Relacionar estas tablas mediante una clave externa.
2. Eliminar aquellos campos que no dependen de la clave.
3. Ninguna columna puede depender de una columna que no tenga una clave.
4. No puede haber datos derivados.
¿Diseño de bases de datos no relacionales?
Mongo Atlas, ¿Qué es?
Es Una base de datos mundial basada en la nube y completamente administrada de MongoDB que combina modelos de datos similares a JSON, indexación y búsqueda avanzadas, y escalabilidad elástica, a la vez que automatiza las tareas administrativas que llevan mucho tiempo. Es usada por desarrolladores ya que ofrece almacenamiento en base de datos en la nube de forma gratuita, al igual de que paga
¿Qué es Moongose?
Mongoose es una librería para Node.js que nos permite escribir consultas para una base de datos de MongooDB, con características como validaciones, construcción de queries, middlewares, conversión de tipos y algunas otras, que enriquecen la funcionalidad de la base de datos.
La parte central del uso de Mongoose está en la definición de un esquema donde se indica la configuración de los documentos para una colección de MongoDB. Y aunque MongoDB es una base de datos nosql, donde los documentos se almacenan sin un esquema predefinido, el uso de un esquema te permite normalizar tu información, sin sacrificar la flexibilidad. Además, hace que la transición de sql a nosql, sea más sencilla.
Mongo DB , y su esquema flexible
En MongoDB no es necesario definir una estructura a nivel de colección, y una llave puede contener diferentes valores en los documentos, como en el caso de la llave teléfono o llegar a ser inexistentes como el caso de la llave teléfono_emergencia.
Esta versatilidad es favorable en entornos de desarrollo ágil, dado que la adición de una llave a un documento no implica tener que alterar todos los documentos de la colección. El no estandarizar llaves dentro de los documentos de una colección puede llevar a comportamientos no esperados en el aplicativo, se debe definir una estructura base en sus documentos y los cambios que se hacen sobre ellos.
Este control se puede implementar desde el código o haciendo uso de herramientas como “schema validation” para validar los documentos al momento de realizar inserciones o actualizaciones.
Documentos colecciones
Diferencia entre JSON y BSON
Es un sistema de compatibilidad de información legible por humanos basado en texto que se utiliza para comunicarse con estructuras y objetos de información básica en código basado en navegador web. JSON se basó inicialmente en el dialecto de programación de JavaScript y se presentó como el dialecto de secuencias de comandos de página para el navegador web Netscape Pilot. JSON puede ser una estructura de lenguaje para serializar objetos, clústeres, números, cadenas, booleanos e inválidos.
BJConocido ser una forma binaria de JSON que se utiliza para hablar con estructuras de datos, llamadas registros u objetos, en MongoDB. Aunque en comparación con JSON, BSON no es lo mismo. El JSON de texto sin formato es hasta cierto punto un desperdicio para la capacidad masiva y la transmisión de datos, por lo que el arreglo BSON se puede utilizar después de enviar una parte de los datos JSON a alta velocidad, y no necesita negociar con la compresión, que puede ser costosa.
Tipos de operadores de Mongo DB
Hay nueve tipos de operadores, cada uno de los cuales recibe el nombre de su función. Por ejemplo, los operadores lógicos utilizan operaciones lógicas. Para ejecutarlos, tienes que utilizar una palabra clave específica y seguir la sintaxis.
Operadores lógicos
$and : realiza una operación lógica en una matriz de dos o más expresiones. Selecciona los documentos en los que se cumplen todas las condiciones de las expresiones.
Los operadores lógicos se utilizan a menudo para filtrar datos en función de las condiciones dadas. También permiten la evaluación de muchas condiciones, de las que hablaremos con más detalle.
$or : realiza una operación lógica «or» en una matriz de dos o más expresiones. Selecciona los documentos en los que al menos una de las expresiones es verdadera.
$nor : realiza una operación lógica «or» en una matriz de dos o más expresiones. Selecciona los documentos en los que al menos una de las expresiones es verdadera.
$not : Este operador realiza una operación lógica de «not» en una matriz para la expresión especificada. A continuación, selecciona los documentos que no coinciden con las expresiones de la consulta. Esto incluye los documentos que no contienen el campo.
Igual a ($eq): Este operador coincide con los valores que son iguales al valor dado,
Mayor que ($gt): Este operador coincide si los valores son mayores que el valor dado
Menor que ($lt): Este operador coincide si los valores son menores que el valor proporcionado
Operadores
comparación Los operadores de comparación pueden utilizarse para comparar valores en uno o más documentos.
Mayor o igual que ($gte): Este operador coincide cuando los valores son mayores o iguales que el valor dado
Menor o igual que ($lte): Este operador sólo coincide si los valores son menores o iguales que el valor dado:
En ($en): Este operador devuelve los documentos que coinciden con los valores especificados
No en ($nin): Este operador devuelve los documentos que no coinciden con los valores dados. Esta es la sintaxis básica del operador
No es igual ($ne): El operador $ne devuelve los documentos en los que el valor especificado no es igual
Operadores de Elementos
Los operadores de consulta de elementos pueden identificar los documentos utilizando los campos del documento. Los operadores de elementos consisten en $exist y $type
$exists: Este operador coincide con los documentos que tienen un campo especificado. Este operador tiene un valor booleano que puede ser true o false.
Si se especifica que es true, coincide con los documentos que contienen ese campo, incluidos los documentos en los que el valor del campo es nulo. Si <boolean> es false, la consulta sólo devuelve los documentos que no contienen el campo.
$type: Este operador hace coincidir los documentos según el tipo de campo especificado. Es útil cuando tienes datos muy desestructurados, o cuando los tipos de datos no son predecibles. Estos tipos de campo son tipos BSON especificados y pueden definirse por número de tipo o por alias.
Operadores de
Matrices MongoDB también dispone de operadores de matrices o arrays, para consultar documentos que contienen matrices.
Hay tres operadores principales: $all, $elemMatch y $size. A continuación hablaremos de cada uno de ellos en detalle.
$all: El operador $all elige los documentos en los que el valor de un campo es una matriz que contiene los elementos especificados
$elemMatch: El operador $elemMatch coincide con los documentos que contienen un campo de matriz con al menos un elemento que coincide con todos los criterios de consulta especificados.
$size: El operador $size devuelve aquellos documentos en los que el tamaño de la matriz coincide con el número de elementos especificado en el argumento
$geometry: Este operador menciona la geometría GeoJSON para su uso con los siguientes operadores de consulta geoespacial: $geoIntersects, $geoWithin,$nearSphere, y $near. $geometry aprovecha EPSG:4326 como sistema de referencia de coordenadas (CRS) por defecto.
$polygon: El operador $polygon puede utilizarse para especificar un polígono para una consulta geoespacial $geoWithin sobre pares de coordenadas heredados. Esta consulta devolverá los pares que estén dentro de los límites del polígono. Sin embargo, $polygon no consultará ningún objeto GeoJSON. Para definir un polígono
Operadores
geoespaciales
MongoDB te permite almacenar datos geoespaciales en forma de tipos GeoJSON. GeoJSON es un formato de estándar abierto basado en la notación de objetos de JavaScript que puede representar características geográficas y admitir atributos no espaciales. Hay dos tipos de operadores geoespaciales de los que hablaremos en este artículo: los especificadores de geometría y los selectores de consulta.
$geoWithin: Este operador se puede utilizar para elegir documentos con datos geoespaciales que estén completamente contenidos en una forma específica. La forma especificada puede ser un multipolígono GeoJSON, un polígono GeoJSON (de anillos múltiples o de anillos simples), o una forma que puede ser definida por pares de coordenadas heredadas.
El operador $geoWithin aprovechará el operador $geometry para mencionar el objeto GeoJSON.
Para mencionar los multipolígonos o polígonos GeoJSON a través del Sistema de Referencia de Coordenadas (SRC) por defecto
$box: Puedes utilizar $box para especificar un rectángulo para que una consulta geoespacial $geoWithin te proporcione los documentos que están dentro de los límites del rectángulo, según sus datos de localización basados en puntos. Cuando utilices $geoWithin con el $box, obtendrás documentos basados en las coordenadas de la consulta. En este escenario, $geoWithin no consultará ninguna forma GeoJSON.
Para aprovechar el operador $box, tienes que mencionar las esquinas superior derecha e inferior izquierda del rectángulo en un objeto array
$nearSphere: Puedes utilizar $nearSphere para mencionar un punto para el que una consulta geoespacial devuelva los documentos de más cercano a más lejano.
MongoDB utiliza la geometría esférica para calcular las distancias para $nearSphere. Necesitará un índice geoespacial como el siguiente:
índice 2d para datos de localización descritos como pares de coordenadas heredados. Para aprovechar un índice 2d en puntos GeoJSON, debes generar el índice en el campo de coordenadas del objeto GeoJSON.
índice 2dsphere para datos de localización descritos como puntos GeoJSON.
Operadores geoespaciales
MongoDB te permite almacenar datos geoespaciales en forma de tipos GeoJSON. GeoJSON es un formato de estándar abierto basado en la notación de objetos de JavaScript que puede representar características geográficas y admitir atributos no espaciales. Hay dos tipos de operadores geoespaciales de los que hablaremos en este artículo: los especificadores de geometría y los selectores de consulta.
$geoIntersects: El operador $geoIntersects te permite seleccionar los documentos cuyos datos geoespaciales se intersectan con un objeto GeoJSON concreto (es decir, cuando la convergencia del objeto especificado y los datos no está vacía). Aprovecha el operador $geometry para especificar el objeto GeoJSON.
Para mencionar los multipolígonos o polígonos GeoJSON a través del sistema de referencia de coordenadas (CRS) por defecto
$center: El operador $center menciona un círculo para una consulta $geoWithin que devuelve los pares de coordenadas heredadas que están dentro de los límites del círculo.
$center no devuelve objetos GeoJSON. Para aprovechar el operador $center, tienes que especificar un array que contenga:
El radio del círculo, medido en las unidades utilizadas por el sistema de coordenadas. Las coordenadas de la cuadrícula del punto central del círculo.
Operadores de proyección
Puedes utilizar operadores de proyección para mencionar los campos devueltos por una operación. Los operadores de proyección de MongoDB permiten utilizar la función find() con argumentos de filtrado de datos. Esto ayuda a los usuarios a extraer sólo los campos de datos necesarios de un documento. Por tanto, permite proyectar datos transparentes y concisos sin afectar al rendimiento general de la base de datos.
$elemMatch (proyección): El operador $elemMatch se encarga de limitar el contenido de un campo de los resultados de la consulta para que sólo contenga el primer elemento que coincida con la condición $elemMatch
$slice (proyección): El operador de proyección $slice puede utilizarse para especificar el número de elementos de una matriz que se devolverán en el resultado de la consulta
$ (proyección): El operador posicional $ limita el contenido de un array para devolver el primer elemento que coincida con la condición de consulta de ese array. Puedes utilizar $ en el documento de proyección del método find() o del método findOne() cuando sólo necesites un elemento concreto de la matriz en los documentos elegidos.
Este es el aspecto de la sintaxis del operador $
Operadores de evaluación
$mod: Puedes utilizar este operador para hacer coincidir los documentos en los que el valor de un campo especificado es igual al resto después de ser dividido por un valor especificado.
Puedes aprovechar los operadores de evaluación de MongoDB para calibrar la estructura general de datos o un campo individual dentro de un documento. Veamos algunos operadores de evaluación comunes de MongoDB.
$jsonSchema: La página $jsonSchema te permite hacer coincidir los documentos que coinciden con el esquema JSON especificado. La implementación de MongoDB del esquema JSON incluye la adición de la palabra clave bsonType, que te permite utilizar todos los tipos BSON dentro del operador $jsonSchema. bsonType puede aceptar los mismos alias de cadena que usarías para el operador type. Este es el aspecto que tendría la sintaxis de $jsonSchema
$text: El operador $text buscaría un texto dentro del contenido del campo especificado, indexado con un índice de texto
$regex: El operador $regex ofrece la posibilidad de utilizar expresiones regulares para hacer coincidir cadenas con patrones en las consultas. MongoDB aprovecha las expresiones regulares que son compatibles con Perl
$expr: El operador $expr te permite aprovechar las expresiones de agregación dentro del lenguaje de consulta
$where: Puedes aprovechar el operador $where para pasar una cadena que contenga una función completa de JavaScript o una expresión de JavaScript al sistema de consulta. El operador $where proporciona una mayor flexibilidad, pero necesita que la base de datos procese la función o expresión JavaScript para cada documento de la colección. Puedes hacer referencia a este documento en la función o expresión de JavaScript utilizando obj o this.
Operadores Bitwise
Los operadores bit a bit devuelven datos en función de las condiciones de posición de los bits. En pocas palabras, se utilizan para hacer coincidir valores numéricos o binarios en los que cualquier bit de un conjunto de posiciones de bits tiene un valor de 1 o 0.
$bitsAllSet: Este operador coincidirá con todos los documentos en los que todas las posiciones de bits proporcionadas por la consulta estén establecidas (es decir, 1) en el campo
$bitsAllClear: El operador $bitsAllClear coincidirá con los documentos en los que todas las posiciones de bits proporcionadas por la consulta estén claras o 0
Meta operadores
Hay varios modificadores de consulta que te permiten modificar el comportamiento o la respuesta de una consulta en MongoDB. Las interfaces del controlador pueden proporcionar métodos de cursor que los envuelven para su uso.
$hint: MongoDB ha dejado de utilizar $hint desde la versión 3.2. Sin embargo, este operador puede seguir estando disponible para los controladores de MongoDB como Go, Java, Scala, Ruby, Swift, etc. Puede forzar al optimizador de consultas a aprovechar un índice específico para realizar la consulta, que puede mencionarse por documento o por nombre de índice.
También puedes utilizar el operador $hint para probar las estrategias de indexación y el rendimiento de la consulta. Por ejemplo
$comment: El operador $comment te permite adjuntar un comentario a una consulta en cualquier contexto en el que pueda aparecer $query. Dado que los comentarios se propagan al registro del perfil, añadir un comentario puede facilitar la interpretación y el seguimiento de tu perfil.
$max: Puedes mencionar un valor de $max para especificar el límite superior exclusivo de un índice concreto para restringir los resultados de find(). Este operador especificará el límite superior de todas las claves de un orden concreto en el índice.
$explain: Este operador te dará información sobre el plan de consulta. Devuelve un documento que describe los índices y procesos utilizados para devolver la consulta. Esto puede ser útil cuando se trata de optimizar una consulta.
Estrategias para modelamientos de datos en Mongo DB
01, Esquema Flexible con MongoDb
MongoDB tiene un esquema flexible, donde las colecciones no fuerzan tener una estructura idéntica para todos los documentos. Esto significa que los documentos de la misma coleccion no necesitan tener el mismo numero de campos o estructura. Cada documento solo necesita contener un numero relevante de campos de la entidad u objeto que el documento representa. Por ejemplo pueden existir distintos tipos de usuarios en una aplicación, donde un cliente necesita información personal, mientras que un administrador solo le basta con los datos credenciales.
En la práctica la mayoria de los documentos de una colección comparte una estructura similar, pero la flexibilidad del esquema nos aporta una capacidad de modelado de los documentos independiente.
02, Aplicaciones Cambiantes y Escalables
Cuando pasa el tiempo, la cantidad de datos de la aplicación va a crecer y sera cambiante, lo que implica que se van a definir los tipos de consultas que la aplicación va a requerir. Estas consideraciones y requisitos hacen tomar decisones a los desarrolladores en los modelos de datos, normalizando o desnormalizando Colecciones. Estas decisiones implican que el modelo de datos almacene la información en un único documento o sin embargo este documento deba poseer relaciones con otros documentos.
03, Decisiones de Modelado en MongoDb
Las decisiones para el modelado de los datos implica determinar como se debe estructurar los documentos para ganar en eficiencia. Una de las decisiones primordiales es saber cuando debemos de emplear documentos embebidos o cuando referencias a otros documentos
Schema Validation
Una de las características más potentes que nos ofrece MongoDB es su flexibilidad a la hora de definir esquemas, de hecho hay sitios en donde indican que este es un motor SchemaLess.
Esta ventaja, en algunos casos, se puede convertir en un quebradero de cabeza, ya que hay escenarios en los que sí, es crítico que cierto campo sea obligatorio de informar, o debe tener un tipo dado, incluso queremos que esté en un rango de valores. Lo chicos de MongoDb a partir de la versión 3.2 nos permiten añadir reglas de validación de esquema a nuestras colecciones.
Diferencia entre Embedding y Referencing
MongoDB le proporciona una función interesante que se conoce como documento incrustado o anidado. Los documentos incrustados o documentos anidados son aquellos tipos de documentos que contienen un documento dentro de otro documento .
ECuando un documento es frecuentemente leído pero tiene un documento embebido que raramente es acceido: por ejemplo un Cliente con su Informe anual. En este caso Embedding incrementa la memoria, el flujo de datos a traer,…
Cuando una parte del documento es frecuentemente actualizada y crece en tamaño mientras que el resto del documento es relativamente estático
RCuando el documento excede el tamaño de 16 MB que tiene de límite actual MongoDB Cuando el objeto es referenciado desde diferentes fuentes
Para representar relaciones complejas many to many Para data set jerárquico.