Puedes usar el lenguaje del query de MongoDB (MQL) en Atlas Data Federation para query y analizar datos en tu almacén de datos. Atlas Data Federation admite la mayoría, pero no todos, los comandos estándar del servidor. Para aprender más sobre los comandos soportados y no soportados del servidor MongoDB y las etapas del pipeline de agregación, consulta Comandos soportados de MongoDB.
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.
Bases de datos y colecciones virtuales de Instancia federada de base de datos que se asignan a tu almacén de instancia federada de base de datos.
Puedes crear o actualizar la configuración de almacenamiento de tu instancia federada de base de datos para tu almacén de datos usando la Interfaz de Usuario de Atlas Visual Editor o JSON Editor, los comandos de la CLI de Atlas Data Federation y los endpoints de la API de Atlas Data Federation. Para aprender más sobre la configuración del almacenamiento de la instancia federada de base de datos, consulte Configurar Almacenes de Datos para una Instancia federada de base de datos.
Atlas Data Federation crea las bases de datos y colecciones virtuales que especificaste en la configuración de la instancia federada de base de datos para los datos en tu almacén de datos. Cuando conectas a tu instancia federada de base de datos y ejecutas consultas, Atlas Data Federation procesa tus consultas contra los datos y devuelve los resultados de la consulta. Opcionalmente, puede configurar límites en la cantidad de datos que Atlas Data Federation procesa para tus consultas para 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:
Un rol personalizado con el privilegio de find para el namespace contra el que desea ejecutar queries
Puede ejecutar hasta 30 queries simultáneas en su instancia federada de base de datos en:
Datos en el contenedor de tu bucket S3 o en el almacenamiento de blobs de Azure.
Documentos en tu clúster de MongoDB Atlas.
Datos archivados en tu fichero en línea.
Datos en archivos alojados en URLs de acceso público.
Tip
Las siguientes secciones contienen información relacionada con la ejecución de consultas sobre los datos de tu almacen de datos.
Consultando datos en S3
Al implementar tu instancia federada de base de datos, si especificaste un bucket S3 con permisos de lectura y guardar o un permiso de AWS S3 s3:PutObject, también puedes guardar los resultados de tu query en tu bucket S3 usando $out en S3.
Si logra crear o actualizar un objeto en su almacenamiento 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 su query contiene múltiples etapas, cada etapa recibe los datos más recientes disponibles del almacenar a medida que se procesa esa etapa.
Por defecto, Atlas Data Federation no devuelve los documentos en ningún orden específico para las consultas en las Federaciones de Datos para almacenes de datos S3. Atlas Data Federation lee las particiones de forma concurrente y el orden de respuesta del almacenamiento subyacente determina qué documentos devuelve primero Atlas Data Federation, a menos que se defina el orden usando $sort en la query. Por ejemplo, si ejecutas la misma findOne() query dos veces, podrías ver documentos diferentes, y si usas $skip, podrían omitirse documentos diferentes si no $sort se emplea 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 y lee una sola partición. Por lo tanto, incurres en un costo de 1 GB de "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
El particionamiento de datos no garantiza una reducción en el costo de procesamiento de datos. Por ejemplo, si ejecutas una $match query en blanco, que consulta todos los datos, Atlas Data Federation necesita leer la colección completa para devolver los resultados de la query, independientemente del número de particiones.
Consulta de datos en Azure Blob almacenamiento
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 y lee una sola partición. Por lo tanto, incurres en un costo de 1 GB de "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.
Consultar datos en Google Cloud almacenamiento
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 y lee una sola partición. Por lo tanto, incurres en un costo de 1 GB de "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.
Consultando datos en tu clúster de Atlas
Cuando ejecuta consultas contra su clúster de Atlas a través de su instancia federada de base de datos, Atlas Data Federation establece el appName, al consultar el clúster, según el appName que haya utilizado para conectarse a la instancia federada de base de datos. Por ejemplo, si te conectas a tu instancia federada de base de datos con appName establecido en myApp (es decir, appName = "myApp"), Atlas Data Federation establece el appName al conectar 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
Considera la siguiente configuración de almacenamiento de instancia federada de base de datos:
{ "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.
Consultas de datos en tus ficheros en línea
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.
Consulta de datos en una URL HTTP o HTTPS
Data Federation también crea una partición para cada URL en tu colección. Cuando conectas a tu instancia federada de base de datos y ejecutas queries, Data Federation procesa tus queries con respecto a los datos y devuelve los resultados de las queries.
Ejecución de queries federados
Puedes usar Atlas Data Federation para consultar y analizar una vista unificada de los datos en tu clúster de Atlas, el bucket S3 o el contenedor de Azure Blob Storage, una URL HTTP y ficheros en línea. Para las consultas federadas, tu configuración de almacenamiento de la instancia federada de base de datos debe contener los parámetros que definen:
Tus S3 u Azure, Atlas, fichero en linea y almacenes HTTP.
Nota
Atlas Data Federation no admite consultas federadas entre proveedores de nube. Por lo tanto, no puedes ejecutar queries federados contra datos almacenados en AWS S3 buckets y en contenedores de almacenamiento Azure Blob. Independientemente del proveedor de nube que respalde su clúster de Atlas, puede ejecutar queries federados en los datos de su clúster de Atlas y el bucket AWS S3 o el contenedor de Azure Blob Storage simultáneamente.
Instancias federadas de base de datos con colecciones virtuales que se asignan a tu bucket S3 o Azure Blob Storage, clúster de Atlas, archivo en línea 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, el cubo S3 o el contenedor de Azure Blob Storage, y las URL s HTTPen bases de datos y colecciones virtuales y devuelve una unión de datos en los resultados.
Configurando límites de query
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.
Solución de problemas
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 Atlas Data Federation no puede ejecutar consultas debido a la contención de recursos. Te recomendamos que vuelvas a ejecutar tus consultas.