Overview
Atlas App Services cuenta con varias directrices que se deben tener en cuenta al diseñar la interacción de sus herramientas y clientes con MongoDB a través de App Services. Tenga en cuenta estas directrices al decidir cómo estructurar las consultas, seleccionar las operaciones CRUD y de agregación que se utilizarán y determinar cómo gestionar las cargas de trabajo simultáneas.
Agregación
Los servicios de aplicaciones son compatibles con todos etapas de lacanalización de agregación en las funciones del sistema, excepto $currentOp
y $indexStats.
Por razones de seguridad, solo un subconjunto de las etapas del proceso de agregación se admiten en las funciones de usuario.
Para obtener una lista de las etapas de la canalización que están disponibles y su contexto de función permitido, consulte Agregación.
Atlas
Carga por lotes
Cuando se cargan datos en masa en MongoDB Atlas, es posible que observe una demora en la aparición de datos en los dispositivos mientras App Services procesa los cambios.
Instancias de bases de datos federadas
Puedes vincular una instancia de base de datos federada a tu aplicación como fuente de datos de MongoDB. Sin embargo, hay algunas advertencias que debes tener en cuenta al trabajar con Atlas Data Federation:
Las fuentes de datos federadas no admiten operaciones de escritura.
Solo se puede acceder a una fuente de datos federada desde una función del sistema.
No es posible conectarse a una fuente de datos federada a través del protocolo de cable.
No se pueden definir roles ni permisos para una fuente de datos federada.
No se puede establecer una preferencia de lectura para una fuente de datos federada.
No se puede crear un activador de base de datos en una fuente de datos federada.
No puede utilizar una fuente de datos federada como el clúster de Device Sync de su aplicación.
Instancias sin servidor
Puedes vincular una instancia sin servidor a tu aplicación como fuente de datos de MongoDB. Sin embargo, actualmente las instancias sin servidor no admiten flujos de cambios, por lo que las siguientes funciones están limitadas:
No es posible crear un activador de base de datos en una instancia sin servidor.
No puedes usar una instancia sin servidor como clúster de sincronización de dispositivos de tu aplicación.
No es posible supervisar colecciones en busca de cambios en las fuentes de datos que son instancias de MongoDB Atlas sin servidor.
Clústeres fragmentados
Atlas Device Sync no es compatible actualmente con clústeres fragmentados de MongoDB Atlas. Sin embargo, puede agregar un clúster fragmentado como fuente de datos y acceder a él desde una función.
Colecciones de series de tiempo
Las colecciones de series temporales aún no admiten flujos de cambios. Por lo tanto, no se pueden definir desencadenadores en ellas.
Puede utilizar colecciones de series temporales con Atlas Device Sync, pero solo se admite la ingesta de datos.
Nodos privados
App Services admite puntos de conexión privados para conectarse de forma segura a una nube virtual privada de AWS con AWS PrivateLink. Las aplicaciones deben implementarse localmente en una región de AWS para usar un punto de conexión privado. App Services no admite puntos de conexión privados para aplicaciones globales ni para aplicaciones implementadas en GCP o Azure. Para obtener más información,consulte Puntos de conexión privados.
Flujos de cambio
App Services limita el número total de flujos de cambios abiertos en un clúster determinado para todas las aplicaciones, según el tamaño del clúster. La siguiente tabla muestra las limitaciones para cada tamaño de clúster:
Tamaño del clúster | Número máximo de flujos de cambio |
|---|---|
Nivel gratuito ( | 5 |
Clústeres compartidos ( | 10 |
Clústeres pequeños y dedicados ( | 100 |
Clústeres estándar ( | 1000 |
Clústeres estándar ( | 1000 |
Clústeres de alta potencia ( | 1000 |
Nota
App Services abre un único flujo de cambios en cada colección que esté asociada con un disparador de base de datos o una operación de sincronización de dispositivo.
Importante
Recomendación de uso
Para minimizar el número de flujos de cambio abiertos:
Inicie las operaciones de sincronización solo cuando sea necesario. Cierre inmediatamente cualquier flujo de sincronización abierto cuando ya no sea necesario.
Evite los modelos de datos que requieren sincronizar una cantidad ilimitada de colecciones.
Comandos de base de datos
App Services no admite ningún comando de base de datos en los SDK ni en las funciones del cliente. Sin embargo, puede ejecutar un subconjunto limitado de comandos de base de datos al conectarse a un clúster de MongoDB mediante el protocolo de conexión. Para obtener una lista de los comandos compatibles, consulte Comandos de base de datos.
Sincronización de dispositivos
Cargas de trabajo concurrentes
Puedes tener hasta 5,000 conexiones de sincronización concurrentes. Consulta Tráfico de solicitudes.
- Escribiendo:
- Para mejorar el rendimiento, puede limitar el número de escrituras simultáneas en un solo documento de MongoDB. App Services no tiene un límite estricto para la cantidad de usuarios que escriben datos simultáneamente en un documento de MongoDB. Sin embargo, con más de 30 usuarios que escriben datos simultáneamente, es posible que se produzcan retrasos en la sincronización o la resolución de conflictos.
- Lectura:
- Los clientes frontend que leen desde un ámbito global pueden escalar más allá de decenas de miles de usuarios simultáneos.
Tip
Escalabilidad
Cuando tenga previsto contar con varios escritores simultáneos, haga que cada uno trabaje en un documento independiente.
Límite de tamaño de mensaje por defecto
Device Sync tiene un límite de tamaño de mensaje comprimido predeterminado de 20 MB para cualquier mensaje enviado desde la aplicación cliente. El tamaño del mensaje depende del tamaño comprimido de los cambios enviados desde el dispositivo cliente. Para obtener más información sobre los conjuntos de cambios y la compresión que utiliza Sync, consulte Conjunto de cambios.
El tamaño comprimido de un changeset no es directamente equivalente al tamaño de ningún documento en la carga. Sin embargo, en la práctica, el tamaño del changeset suele ser del mismo orden de magnitud que el tamaño de los documentos en la carga.
Este límite actúa como una contramedida contra las conexiones que consumen demasiados recursos.
Puedes ver este límite como un mensaje de error similar a failed to read: read
limited at 20971521 bytes.
Puede solicitar un límite superior enviando un ticket de soporte.
Pausa por inactividad
Después de 30 días sin actividad, Device Sync se pausa. Consulta Rehabilitar sincronización para obtener información sobre cómo reactivar Device Sync.
Requisitos de la versión de MongoDB
Puede acceder a la mayoría de las funciones de CRUD y agregación de MongoDB versión 3.6 con el servicio MongoDB; sin embargo, App Services no admite todas las operaciones y funciones disponibles en las herramientas y clientes estándar. Para obtener una lista de las operaciones específicas de MongoDB disponibles al conectarse a través de App Services, consulte la referencia de la API de CRUD y agregación.
La sincronización de dispositivos requiere clústeres de MongoDB Atlas para ejecutar versiones específicas de MongoDB. La sincronización flexible requiere MongoDB 5.0.0 o superior.
Requisito de versión HTTP
Los puntos finales de API de datos y HTTPS requieren HTTP/1.1 o superior al realizar solicitudes.
Opciones de consulta
App Services admite todas las opciones de consulta en las funciones del sistema. No admite ciertas opciones para operaciones CRUD ejecutadas desde funciones de usuario. Para obtener una lista de las opciones disponibles al conectarse a MongoDB a través de App Services, consulte Opciones de consulta.
Resultados de la consulta
Las consultas de MongoDB ejecutadas a través de App Services pueden devolver un máximo de 50,000 documentos. Si necesita devolver más documentos, considere paginar su consulta.
Solicitar tráfico
App Services limita el tráfico de solicitudes a los siguientes valores predeterminados:
10,000 solicitudes simultáneas. Cualquier solicitud realizada más allá del límite de solicitudes simultáneas sin sincronización recibe un código de estado de respuesta HTTP:429 Demasiadas solicitudes..
5,000 conexiones de sincronización de dispositivos simultáneas.
Los servicios de aplicación pueden gestionar solicitudes muchas veces por encima de los límites anteriores. Sin embargo, estos límites se establecen para garantizar que las aplicaciones escalen de manera responsable y para prevenir ataques DOS y cargos no deseados.
Puede solicitar un límite superior enviando un ticket de soporte.
Agrupación de conexiones
App Services utiliza la agrupación de conexiones para reducir la sobrecarga que supone abrir y cerrar conexiones con frecuencia entre solicitudes y ejecuciones de desencadenadores. Las conexiones se abren según sea necesario. La agrupación de conexiones depende de varios factores:
Nivel de clúster. Cuanto mayor sea el nivel del clúster, más conexiones estarán disponibles en el pool.
Modo de implementación. Las implementaciones globales utilizan varios servidores en cada región y, por lo tanto, cuentan con un grupo de conexiones más amplio.
Servicios. Cada servicio tiene un pool de conexiones independiente, por lo que la cantidad de servicios en tu aplicación no afecta el número de conexiones disponibles.
Alojamiento estático
App Services aplica una 25restricción de tamaño de archivo máximo de MB en el alojamiento estático.
Importante
El alojamiento estático está obsoleto. Másinformación.