SQL es la forma preferida de interactuar con bases de datos relacionales en lo que respecta a las consultas. Se entiende que los usuarios habrían trabajado con bases de datos relacionales como MySQL y PostgreSQL que emplean la función de consulta SQL. En general, SQL es fácil de entender y, por lo tanto, se volvió ampliamente utilizado, especialmente en bases de datos relacionales.
Sin embargo, SQL es bastante complejo cuando se trata de incluir un amplio conjunto de documentos en una base de datos. En pocas palabras, no está destinado a bases de datos de documentos, ya que presenta una serie de contratiempos. Por ejemplo, no puede consultar documentos de matriz incrustados con facilidad o, más bien, deberá diseñar un subprograma para iterar y filtrar los datos devueltos para obtener los resultados requeridos. En consecuencia, esto resultará en un incremento de la duración de la ejecución. Pero tener una buena comprensión de SQL proporcionará una mejor base para interactuar con MongoDB desde algún punto en lugar de comenzar desde cero.
En este blog, usaremos el programa Studio 3T para mostrar las diversas consultas de unión de SQL y cómo puede rediseñarlas en consultas de MongoDB para lograr un mejor rendimiento. El programa se puede descargar desde este enlace.
Conectando SQL a MongoDB
Hay varios controladores o más bien interfaces a través de los cuales puede usar SQL para comunicarse con MongoDB, por ejemplo, ODBC. ODBC significa Conectividad abierta de bases de datos. Esta es simplemente una interfaz que permite que las aplicaciones accedan a los datos en los sistemas de administración de bases de datos utilizando SQL como el proceso estándar para acceder a esos datos. Viene con una ventaja adicional de interoperabilidad mediante la cual una sola aplicación puede acceder a múltiples sistemas de administración de bases de datos.
En este blog, produciremos y probaremos código de SQL y luego lo optimizaremos a través de un editor de agregación para producir una consulta MongoDB.
Gráfico de asignación de SQL a MongoDB
Antes de entrar en muchos detalles, debemos comprender las relaciones básicas entre estas 2 bases de datos, especialmente las palabras clave en el concepto de consulta.
Terminología y Conceptos
SQL | MongoDB |
---|---|
Tabla Fila Columna Uniones de tabla | Colección Documento BSON Campo $búsqueda |
La clave principal en SQL define una columna única que básicamente organiza las filas en orden de tiempo récord. Por otro lado, la clave principal en MongoDB es un campo único para contener un documento y garantizar que los campos indexados no almacenen valores duplicados.
Varios nueves Conviértase en un administrador de bases de datos de MongoDB - Llevando MongoDB a la producción Obtenga información sobre lo que necesita saber para implementar, monitorear, administrar y escalar MongoDBDescargar gratisCorrelación entre SQL y MongoDB
Digamos que tenemos datos de un estudiante y queremos registrar estos datos tanto en la base de datos SQL como en MongoDB. Podemos definir un objeto estudiante simple como:
{
name: ‘James Washington’,
age: 15,
grade: A,
Score: 10.5
}
Al crear una tabla SQL, debemos definir los nombres de las columnas y el tipo de datos, mientras que en MongoDB se creará automáticamente una colección durante la primera inserción.
La siguiente tabla nos ayudará a comprender cómo se pueden escribir algunas de las declaraciones SQL en MongoDB.
instrucción de esquema SQL | Declaraciones de esquema de MongoDB |
---|---|
Para insertar un documento en la base de datos | Podemos definir un diseño de esquema utilizando algunos módulos como mangosta y definir los campos como un objeto en lugar de insertar un documento directamente para mostrar la correlación. La identificación de archivo principal se generará automáticamente durante la inserción de un documento. Insertando un nuevo documento para crear la colección |
Usando la instrucción ADD para agregar una nueva columna a la tabla existente. | La estructura de los documentos de la colección no está bien definida y, por lo tanto, actualice los documentos a nivel de documento utilizando updateMany() |
Para soltar una columna (unidades) | Para soltar un campo (unidades) |
Para dejar una mesa estudiantes | Para dejar estudiantes de colección |
instrucción SQL Select | Declaraciones de búsqueda de MongoDB |
---|---|
Seleccionar todas las filas | Seleccionar todos los documentos |
Para devolver solo columnas específicas. | Para devolver solo campos específicos. De forma predeterminada, se devuelve el campo _id a menos que se especifique lo contrario en el proceso de proyección. Establecer el _id:0 significa que solo el documento devuelto tendrá el nombre y los valores del objeto de calificación únicamente. |
Para seleccionar filas específicas con algún valor de columna coincidente. | Para seleccionar documentos específicos con algún valor de campo coincidente. |
Selección de filas con una columna cuyos valores tienen algunos caracteres como el valor de criterio proporcionado | Selección de documentos con un campo cuyos valores tienen algunos caracteres como el valor de criterio suministrado |
Para devolver las filas en orden ascendente utilizando la clave principal. | Para devolver los documentos en forma ascendente usando la clave principal |
Para agrupar filas devueltas de acuerdo a alguna columna (grado) | Para agrupar documentos devueltos de acuerdo a algún campo (grado) |
Limitar el número de filas devueltas y omitir algunas | Limitar el número de documentos devueltos y omitir filas |
Una opción esencial es saber cómo se ejecuta nuestra consulta, por lo tanto, use el método de explicación. | |
Instrucción de actualización de SQL | Declaraciones de actualización de MongoDB |
---|---|
Actualice la columna de calificación para los estudiantes cuya edad sea igual o mayor a 15 años | Aquí usamos algunos operadores como $gt, $lt y $lte. |
Incrementando algún valor de columna | |
Declaración de eliminación de SQL | MongoDB eliminar declaraciones |
---|---|
Para eliminar todas las filas | Para eliminar todos los documentos. |
Para eliminar una fila específica donde alguna columna tiene un valor específico. | |
Esta tabla de mapeo de muestra le permitirá comprender mejor lo que vamos a aprender en nuestro próximo tema.
SQL y Studio 3T
Studio 3T es uno de los programas disponibles que ayuda a conectar SQL y MongoDB. Tiene una función de consulta SQL para mejorar una para manipular SQL. La consulta se interpreta en el shell de Mongo para producir un código de consulta simple en el equivalente del lenguaje MongoDB. Además de realizar consultas simples, la aplicación Studio 3T ahora puede realizar uniones.
Para nuestros datos de muestra anteriores, después de conectar su base de datos en Studio 3T, podemos usar la ventana SQL para encontrar el documento que coincida con nuestros criterios, es decir:
SELECT * FROM students WHERE name LIKE 'James%';
Si tiene un documento con el campo de nombre establecido en el valor de James, se devolverá. Asimismo, si hace clic en la pestaña de código de consulta, se le presentará una ventana con el código MongoDB equivalente. Para la afirmación anterior, tendremos:
db.getCollection("students").find(
{
"name" : /^James.*$/i
}
);

Resumen
A veces, es posible que desee una forma rápida de interactuar con MongoDB a partir del conocimiento que tiene sobre SQL. Hemos aprendido algunas similitudes básicas de código entre SQL y su equivalente en MongoDB. Además, algunos programas como Studio 3T tienen herramientas bien establecidas para convertir la consulta SQL al lenguaje equivalente de MongoDB y ajustar esta consulta para obtener mejores resultados. Bueno, para la mayoría de nosotros, esta será una gran herramienta para facilitar nuestro trabajo y garantizar que cualquier código que tengamos al final sea óptimo para el rendimiento de nuestra base de datos. En la Parte 2 de este blog, aprenderemos sobre SQL INNER JOIN en MongoDB.