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:
Su almacén de instancias 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.
Puede crear o actualizar la configuración de almacenamiento de su instancia de base de datos federada para su almacén de datos mediante la interfaz de usuario de Atlas Visual Editor o, comandos JSON Editor CLI de Atlas Data Federation 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, no admite consultas que presten atención al orden de los campos, como consultas de igualdad de documentos incrustadas o la ordenación de un campo de documento.
Un usuario de base de datos debe tener uno de los siguientes roles para ejecutar consultas en una instancia de base de datos federada:
Un rol personalizado con el privilegio de búsqueda para el espacio de nombres en el que desea ejecutar consultas
Puede ejecutar hasta 30 consultas simultáneas en su instancia de base de datos federada contra:
Datos en su CuboS o contenedor de Azure Blob Storage.3
Documentos en su clúster MongoDB Atlas.
Datos archivados en su Archivo 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 datos en su almacén de datos.
Consulta de datos en S3
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 crea o actualiza correctamente un objeto en su almacén de datos S, la Federación de Datos devuelve la versión más reciente de ese objeto para cualquier solicitud de lectura posterior, y todas las operaciones de lista de los objetos 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 se 3 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 $sorten su consulta. Por ejemplo, si ejecuta la misma consulta findOne() dos veces, podría ver documentos diferentes, y si usa$skip, podría omitir documentos diferentes si no usa$sorten la consulta.
Incurrirá en costos de "Datos procesados" por la cantidad de datos que Atlas Data Federation procesa para obtener resultados de sus 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, incurrirá en el siguiente costo de "Datos procesados" además del costo de "Datos devueltos":
Si no tiene particiones, Atlas Data Federation lee el archivo completo para obtener los resultados de la consulta. Por lo tanto, incurre en un costo de 10 GB por 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 de "Datos procesados".
Puede configurar límites de consultas por instancia de base de datos federada y para todas las instancias de su proyecto para limitar la cantidad de datos procesados. Para obtener más información, consulte Administrar límites de consultas de federación de datos de Atlas.
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.
Consulta de datos en Azure Blob almacenamiento
Al implementar su instancia de base de datos federada, puede especificar un contenedor de Azure Blob Storage con permisos de lectura y escritura.
Incurrirá en costos de "Datos procesados" por la cantidad de datos que Atlas Data Federation procesa para obtener resultados de sus 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, incurrirá en el siguiente costo de "Datos procesados" además del costo de "Datos devueltos":
Si no tiene particiones, Atlas Data Federation lee el archivo completo para obtener los resultados de la consulta. Por lo tanto, incurre en un costo de 10 GB por 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 de "Datos procesados".
Puede configurar límites de consultas por instancia de base de datos federada y para todas las instancias de su proyecto para limitar la cantidad de datos procesados. Para obtener más información, consulte Administrar límites de consultas de federación de datos de Atlas.
Consultar datos en Google Cloud almacenamiento
Al implementar su instancia de base de datos federada, puede especificar un depósito de Google Cloud Storage con permisos de lectura y escritura.
Incurrirá en costos de "Datos procesados" por la cantidad de datos que Atlas Data Federation procesa para obtener resultados de sus 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, incurrirá en el siguiente costo de "Datos procesados" además del costo de "Datos devueltos":
Si no tiene particiones, Atlas Data Federation lee el archivo completo para obtener los resultados de la consulta. Por lo tanto, incurre en un costo de 10 GB por 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 de "Datos procesados".
Puede configurar límites de consultas por instancia de base de datos federada y para todas las instancias de su proyecto para limitar la cantidad de datos procesados. Para obtener más información, consulte Administrar límites de consultas de federación de datos de Atlas.
Consulta de datos en su clúster Atlas
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 puede guardar los resultados de su consulta en su clúster Atlas usando $out to Atlas.
Si crea o actualiza correctamente un documento en su colección en el clúster Atlas, la Federación de Datos devuelve la versión más reciente de ese documento para cualquier solicitud de lectura posterior, y todas las operaciones de lista 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 se procesa.
Atlas registra las consultas realizadas a los datos del clúster en los registros de auditoría del clúster. La entrada de registro de 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 parece a la 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 Atlas.
Consulta de datos en sus archivos en línea
Para las consultas, Atlas Data Federation utiliza las particiones creadas en los campos durante la creación del Archivo Atlas Online. El orden de los campos en las particiones es tan importante como para los índices compuestos. Los datos se optimizan para las consultas según el primer campo, seguido del segundo, y así sucesivamente. Atlas Data Federation analiza las particiones en orden; si una consulta omite una partición específica, Atlas Data Federation es menos eficiente al utilizar las particiones posteriores a la omitida.
Atlas Data Federation tiene menos rendimiento al admitir consultas en campos que no tienen particiones.
Consulta de datos en una URL HTTP o HTTPS
La federación de datos también crea una partición para cada URL de su colección. Al conectarse a su instancia de base de datos federada y ejecutar consultas, la federación de datos procesa las consultas con los datos y devuelve los resultados.
Ejecución de consultas federadas
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 proveedores de nube. Por lo tanto, no se pueden ejecutar consultas federadas en datos almacenados en buckets de AWS S ni en contenedores de Azure Blob Storage. Independientemente del proveedor de nube que respalde su clúster3 Atlas, puede ejecutar consultas federadas en los datos de su clúster Atlas y en un bucket de AWS S3 o contenedor de Azure Blob Storage simultáneamente.
Instancias de bases de datos federadas con colecciones virtuales que se asignan a su bucket S o a Azure Blob Storage, al clúster3 Atlas, al Online Archive y a los almacenes HTTP.
Puede crear o actualizar la configuración de almacenamiento de su instancia de base de datos federada mediante la interfaz de usuario de Atlas Visual Editor JSON Editoro, los comandos de la CLI de Atlas Data Federation y los puntos de conexión de la API de Atlas Data Federation. Para obtener más información sobre la configuración de almacenamiento de instancias de base de datos federada, consulte Configurar almacenes de datos para una instancia de base de datos federada.
Cuando se conecta a su instancia de base de datos federada y ejecuta consultas federadas, Data Federation combina datos de su clúster Atlas, bucketS o contenedor de Azure3 Blob Storage y URL HTTP en bases de datos y colecciones virtuales, y devuelve una unión de datos en los resultados.
Configuración de límites de consulta
Puede limitar la cantidad de datos que Atlas Data Federation procesa en sus consultas para controlar los costos. Para limitar la cantidad de datos que Atlas Data Federation procesa en sus consultas, puede configurar límites de consultas por instancia de base de datos federada o para todas las instancias de base de datos federadas de su proyecto. Cuando la cantidad de datos procesados alcanza cualquier límite configurado aplicable, Atlas Data Federation no ejecutará nuevas consultas y devolverá un error a la aplicación cliente indicando que se ha alcanzado el límite. Para obtener más información,consulte Administrar límites de consultas de Atlas Data Federation.
Solución de problemas
Error: Estamos experimentando un aumento en los tiempos de espera para el procesamiento de consultas en Atlas Data Federation. Nuestro equipo de ingeniería está investigando el problema. El servicio se reanudará en breve. Inténtelo 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.