Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /

Consultar una instancia de base de datos federada

Puede usar el lenguaje de consulta de MongoDB (MQL) en Atlas Data Federation para consultar y analizar datos en su almacén de datos. Atlas Data Federation admite la mayoría de los comandos de servidor estándar, pero no todos. Para obtener más información sobre los comandos de servidor de MongoDB compatibles y no compatibles, y las etapas de la canalización de agregación, consulte Comandos MongoDB compatibles.

Para consultar datos en tu almacén de datos, tu configuración de almacenamiento de instancias de bases de datos federadas debe contener configuraciones que definan lo siguiente:

  • El almacenamiento de tu instancia de base de datos federada.

  • Instancias de bases de datos federadas: bases de datos virtuales y colecciones que se asignan a su almacén de instancias de bases de datos federadas.

Puedes crear o actualizar la configuración de almacenamiento de tu instancia de base de datos federada para tu almacén de datos utilizando la Interfaz de Usuario de Atlas Visual Editor o JSON Editor, comandos de la Atlas Data Federation CLI y Atlas Data Federation Puntos finales de la API. Para obtener más información sobre la configuración del almacenamiento de instancias de bases de datos federadas, consulte Configurar almacenes de datos para una instancia de base de datos federada.

Atlas Data Federation crea las bases de datos y colecciones virtuales que especificó en la configuración de su instancia de base de datos federada para los datos de su almacén de datos. Al conectarse a su instancia de base de datos federada y ejecutar consultas, Atlas Data Federation procesa las consultas con los datos y devuelve los resultados. Opcionalmente, puede configurar límites en la cantidad de datos que Atlas Data Federation procesa para sus consultas a fin de controlar los costos.

Nota

Atlas Data Federation utiliza almacenamiento en columnas que no conserva el orden de los campos dentro de los documentos. Por lo tanto, Atlas Data Federation no permite consultas que sean sensibles al orden de los campos, como una consulta de igualdad de documentos incrustados o el ordenamiento de un campo de documentos.

Un usuario de base de datos debe tener uno de los siguientes roles para ejecutar queries en una instancia federada de base de datos:

Puede ejecutar hasta 30 queries simultáneas en su instancia federada de base de datos en:

  • Datos en tu S3 bucket o contenedor de Azure Blob Storage.

  • Documentos en tu clúster de MongoDB Atlas.

  • Datos archivados en tu fichero en línea.

  • Datos en archivos alojados en URL deacceso público.

Tip

Consulte:

Las siguientes secciones contienen información relacionada con la ejecución de consultas sobre los datos de tu almacen de datos.

Al implementar su instancia de base de datos federada, si especificó un depósito S3 con permisos de lectura y escritura o AWS S3 3s:PutObjectpermiso, también puede guardar los resultados de su consulta en su 3 depósito S3 usando $out to S.

Si creas o actualizas un objeto correctamente en tu almacén de datos S3, Data Federation devuelve la versión más reciente de ese objeto para cualquier solicitud de lectura posterior y todas las operaciones de listado de objetos también reflejan los cambios. Si tu query contiene varias etapas, cada etapa recibe los datos más recientes disponibles del almacén de datos a medida que esa etapa se procesa.

De forma predeterminada, Atlas Data Federation no devuelve documentos en un orden específico para las consultas en Data Federations para almacenes de 3 datos S. Atlas Data Federation lee las particiones simultáneamente y el orden de respuesta del almacenamiento subyacente determina qué documentos Atlas Data Federation devuelve primero, a menos que se defina el orden mediante $sort en tu query. Por ejemplo, si ejecutas la misma findOne() query dos veces, podrías ver diferentes documentos, y si utilizas $skip, podrían omitirse diferentes documentos si $sort no se utiliza en la query.

Tienes costos de "Datos procesados" por la cantidad de datos que Atlas Data Federation procesa para devolver resultados para tus consultas, además del costo de "Datos devueltos" por la cantidad de datos que Atlas Data Federation devuelve. Por ejemplo, para un archivo de 10 GB, incurres en el siguiente costo de “Datos procesados” además del costo de “Datos devueltos”:

  • Si no tienes particiones, Atlas Data Federation lee el archivo completo para devolver los resultados de la query. Por lo tanto, incurrirá en 10 GB de costo de "Datos procesados".

  • Si tiene 10 particiones de 1 GB cada una, Atlas Data Federation se dirige a una sola partición y la lee. Por lo tanto, incurre en un costo de 1 GB por datos procesados.

Puede configurar los límites de queries por cada instancia federada de base de datos y para todas las instancias federadas de su Proyecto, a fin de limitar la cantidad de datos procesados. Para obtener más información, consulte Administrar los límites de Query de Atlas Data Federation.

Nota

La partición de datos no garantiza una reducción en el costo del procesamiento de datos. Por ejemplo, si ejecuta una $match consulta en blanco, que consulta todos los datos, Atlas Data Federation necesita leer toda la colección para obtener los resultados de la consulta, independientemente del número de particiones.

Al implementar tu instancia federada de base de datos, puedes especificar un contenedor Azure Blob almacenamiento con permisos de lectura y guardar.

Tienes costos de "Datos procesados" por la cantidad de datos que Atlas Data Federation procesa para devolver resultados para tus consultas, además del costo de "Datos devueltos" por la cantidad de datos que Atlas Data Federation devuelve. Por ejemplo, para un archivo de 10 GB, incurres en el siguiente costo de “Datos procesados” además del costo de “Datos devueltos”:

  • Si no tienes particiones, Atlas Data Federation lee el archivo completo para devolver los resultados de la query. Por lo tanto, incurrirá en 10 GB de costo de "Datos procesados".

  • Si tiene 10 particiones de 1 GB cada una, Atlas Data Federation se dirige a una sola partición y la lee. Por lo tanto, incurre en un costo de 1 GB por datos procesados.

Puede configurar los límites de queries por cada instancia federada de base de datos y para todas las instancias federadas de su Proyecto, a fin de limitar la cantidad de datos procesados. Para obtener más información, consulte Administrar los límites de Query de Atlas Data Federation.

Al implementar su instancia de base de datos federada, puede especificar un bucket de Google Cloud almacenamiento con permisos de lectura y guardar.

Tienes costos de "Datos procesados" por la cantidad de datos que Atlas Data Federation procesa para devolver resultados para tus consultas, además del costo de "Datos devueltos" por la cantidad de datos que Atlas Data Federation devuelve. Por ejemplo, para un archivo de 10 GB, incurres en el siguiente costo de “Datos procesados” además del costo de “Datos devueltos”:

  • Si no tienes particiones, Atlas Data Federation lee el archivo completo para devolver los resultados de la query. Por lo tanto, incurrirá en 10 GB de costo de "Datos procesados".

  • Si tiene 10 particiones de 1 GB cada una, Atlas Data Federation se dirige a una sola partición y la lee. Por lo tanto, incurre en un costo de 1 GB por datos procesados.

Puede configurar los límites de queries por cada instancia federada de base de datos y para todas las instancias federadas de su Proyecto, a fin de limitar la cantidad de datos procesados. Para obtener más información, consulte Administrar los límites de Query de Atlas Data Federation.

Al ejecutar consultas en su clúster Atlas a través de su instancia de base de datos federada, Atlas Data Federation establece el valor appName al consultar su clúster, basándose en el valor appName que utilizó para conectarse a su instancia de base de datos federada. Por ejemplo, si se conecta a su instancia de base de datos federada con appName establecido en myApp (es decir, appName = "myApp"), Atlas Data Federation establece el valor appName al conectarse a su clúster de la siguiente manera:

atlas-data-federation|myApp

Si consultas una colección en Atlas Data Federation que está asignada a una sola colección Atlas, Atlas Data Federation actúa como un proxy y reenvía tus queries a Atlas. Cuando actúa como proxy, Atlas Data Federation no escanea datos en su colección virtual para procesar la query, lo que mejora el rendimiento y reduce el costo. Esta optimización no está disponible para queries en colecciones de Atlas Data Federation que están mapeadas a varias colecciones de Atlas.

Ejemplo

Considere la siguiente configuración de almacenamiento de instancia de base de datos federada:

{
"stores" : [
{
"name" : "atlas-store",
"provider": "atlas",
"clusterName": "myCluster",
"projectId": "5e2211c17a3e5a48f5497de3"
}
],
"databases" : [
{
"name" : "atlas-db",
"collections" : [
{
"name" : "foo",
"dataSources" : [
{
"storeName" : "atlas-store",
"database" : "myFooData",
"collection" : "foo"
}
]
},
{
"name" : "barbaz",
"dataSources" : [
{
"storeName" : "atlas-store",
"database" : "myBarData",
"collection" : "bar"
},
{
"storeName" : "atlas-store",
"database" : "myBazData",
"collection" : "baz"
}
]
}
]
}
]
}

Para la configuración de almacenamiento anterior, Atlas Data Federation actúa como proxy de las consultas en la colección foo y reenvía las consultas a Atlas. Esta optimización de rendimiento y costo no está disponible para las queries en la colección barbaz porque barbaz está asignada a múltiples colecciones de Atlas.

También puedes guardar los resultados de tus consultas en tu clúster de Atlas usando $out en Atlas.

Si crea o actualiza con éxito un documento en su colección del clúster de Atlas, Data Federation devuelve la última versión de ese documento para cualquier solicitud de lectura posterior y todas las operaciones de listado de la colección también reflejan los cambios. Si su consulta contiene varias etapas, cada etapa recibe los datos más recientes disponibles del almacén de datos a medida que esa etapa se procesa.

Atlas registra tus queries contra los datos de tu clúster en los registros de auditoría del clúster de Atlas. La entrada del registro para un usuario de base de datos tiene el siguiente formato:

<SERVICE_NAME>-<ATLAS_DATA_FEDERATION_INSTANCE_NAME>-<DATABASE_USER_NAME>

Por ejemplo, para un usuario de base de datos configurado en Atlas como "user" : "CN=atlasDataFederation-DataFederation0-test_datafederation0", una entrada de registro en el registro de auditoría del clúster Atlas se ve de manera similar a lo siguiente:

{
"atype" : "authenticate",
"ts" : { "$date" : "2022-04-29T13:17:54.020+00:00" },
"local" : { "ip" : "XXXX", "port" : 27017 },
"remote" : { "ip" : "XXXXX", "port" : 10844 },
"users" : [ { "user" : "CN=atlasDataFederation-DataFederation0-test_datafederation0", "db" : "$external" } ],
"roles" : [ { "role" : "backup", "db" : "admin" }, { "role" : "readWriteAnyDatabase", "db" : "admin" }, { "role" : "clusterMonitor", "db" : "admin" }, { "role" : "enableSharding", "db" : "admin" }, { "role" : "atlasAdmin", "db" : "admin" }, { "role" : "dbAdminAnyDatabase", "db" : "admin" } ],
"param" : { "user" : "CN=atlasDataFederation-DataFederation0-test_datafederation0", "db" : "$external", "mechanism" : "MONGODB-X509" },
"result" : 0
}

Nota

El mecanismo de conexión siempre es MONGODB-X509 en los registros de auditoría del clúster de Atlas.

Para las queries, Atlas Data Federation emplea las particiones que creaste en los campos durante la creación del Atlas Online Archive. El orden de los campos en las particiones es importante de la misma manera que para los Índices Compuestos. Los datos se optimizan para las consultas por el primer campo, seguidos por el segundo campo, y así sucesivamente. Atlas Data Federation analiza las particiones en orden; si una query omite una partición en particular, Atlas Data Federation es menos eficiente al hacer uso de cualquier partición que siga a la partición omitida.

Atlas Data Federation es menos eficiente en el soporte de consultas en campos que no tienen particiones.

Data Federation también crea una partición para cada URL en su colección. Cuando te conectas a tu instancia federada de base de datos y ejecutas consultas, Data Federation procesa tus consultas en los datos y devuelve los resultados de las consultas.

Puede usar Atlas Data Federation para consultar y analizar una vista unificada de los datos en su clúster de Atlas, bucketS3 o contenedor de Azure Blob Storage, URLHTTP y archivos en línea. Para las consultas federadas, la configuración de almacenamiento de la instancia de base de datos federada debe incluir los ajustes que definen:

  • Sus almacenes S3 o Azure, Atlas, Online Archive y HTTP.

    Nota

    Atlas Data Federation no admite consultas federadas entre diferentes proveedores de nube. Por lo tanto, no puedes ejecutar queries federados sobre datos almacenados en AWS S3 buckets y contenedores de Azure Blob Storage. Independientemente del proveedor de nube que respalde tu clúster de Atlas, puedes ejecutar queries federados sobre los datos de tu clúster Atlas y en AWS S3 bucket o contenedor de Azure Blob almacenamiento simultáneamente.

  • Instancias de base de datos federadas con colecciones virtuales que se asignan a tu depósito S3 o Azure Blob Storage, clúster Atlas, Archivo en linea y almacenes HTTP.

Puedes crear o actualizar la configuración de almacenamiento de tu instancia federada de base de datos usando la Interfaz de Usuario de Atlas Visual Editor o la JSON Editor, los comandos CLI de Atlas Data Federation y los puntos finales de la API de Atlas Data Federation. Para obtener más información sobre la configuración del almacenamiento de instancias federadas de base de datos, consulta Configurar almacenes de datos para una instancia federada de base de datos.

Cuando te conectas a tu instancia federada de base de datos y ejecutas queries federados, Data Federation combina datos de tu clúster de Atlas, del bucket S3, o del contenedor de Azure Blob Storage, además de HTTP URLs en bases de datos virtuales y colecciones, y devuelve una unión de datos en los resultados.

Puede limitar la cantidad de datos que Atlas Data Federation procesa para sus consultas a fin de controlar los costos. Para limitar la cantidad de datos que Atlas Data Federation procesa para sus queries, puede establecer límites de query por instancia federada de base de datos o para todas las instancias federadas de base de datos de su Proyecto. Cuando el volumen de datos procesados alcance cualquier límite configurado aplicable, Atlas Data Federation no ejecutará nuevas queries y devolverá un error a la aplicación cliente indicando que se ha alcanzado un límite. Para obtener más información, consulta Administrar límites de consultas de Atlas Data Federation.

Error: Actualmente estamos experimentando tiempos de espera más prolongados para el procesamiento de consultas en Atlas Data Federation. Nuestro equipo de ingeniería está investigando. El servicio normal se reanudará en breve, por favor intente de nuevo.

Atlas Data Federation devuelve este error solo cuando no puede ejecutar consultas debido a una contención de recursos. Le recomendamos que vuelva a ejecutar las consultas.

Volver

Descargar registros de query

En esta página