Overview
Atlas App Services tiene varias pautas a tener en cuenta al diseñar cómo tus herramientas y clientes interactúan con MongoDB a través de App Services. Ten en cuenta esta orientación al decidir cómo estructurar queries, seleccionar las operaciones CRUD y de agregación adecuadas, 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.
For a list of pipeline stages that are available and their allowed function context, see Aggregation.
Atlas
Carga por lotes
When data is bulk/batch loaded into MongoDB Atlas, you may see a delay in data appearing on devices while App Services processes changes.
instancia federada de base de datos
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 does not currently support sharded MongoDB Atlas clusters. However, you can add a sharded cluster as a data source and access it from a function.
Colecciones de series de tiempo
Las colecciones de series de tiempo aún no admiten los cambios en las transmisiones. Por lo tanto, no puedes definir activadores en una colección de series de tiempo.
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 de clúster | Número máximo de flujos de cambios |
|---|---|
Nivel gratuito ( | 5 |
Clústeres compartidos ( | 10 |
Pequeños, Clústeres Dedicados ( | 100 |
Clústeres estándar ( | 1000 |
Clusters 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:
Aplica operaciones de sincronización solo cuando sea necesario. Cierra cualquier stream de sincronización abierto inmediatamente cuando ya no sean necesarios.
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.
Device Sync
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 escrituras simultáneas, es posible que se produzcan retrasos en la sincronización o la resolución de conflictos.
- Reading:
- Frontend clients reading from a global realm can scale past tens of thousands of concurrent users.
Tip
Escalabilidad
Cuando se prevé un gran número de escritores simultáneos, se debe asignar a cada uno de ellos un documento diferente.
Límite de tamaño de mensaje por defecto
Device Sync has a default message size limit of 20 MB compressed for any messages sent from the client application. The message size depends on the compressed size of changes sent from the client device. For more information about changesets and the compression that Sync uses, refer to Changeset.
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 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 funcionalidades de CRUD y Agregación de MongoDB versión 3.6 con el servicio de MongoDB; sin embargo, aplicación Services no admite todas las operaciones y funcionalidades disponibles en las herramientas y clientes estándar. Para una lista de operaciones específicas de MongoDB disponibles cuando conecta a MongoDB a través de Servicios de aplicación, vea la referencia de la API CRUD & agregación.
Device Sync requires MongoDB Atlas clusters to run specific versions of MongoDB. Flexible Sync requires MongoDB 5.0.0 or greater.
Requisito de versión HTTP
La API de datos y los HTTPS Endpoints requieren HTTP/1.1 o superior al realizar solicitudes.
Opciones de query
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.
Tráfico de solicitud
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 concurrent Device Sync connections.
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.
agrupamiento de conexiones
App Services uses connection pooling to reduce the overhead of frequently opening and closing connections between requests and trigger executions. Connections are opened as needed. Connection pooling is dependent on several factors:
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.
Static Hosting
App Services aplica una restricción de tamaño de archivo máximo de 25 MB en el alojamiento estático.
Importante
Static Hosting is deprecated. Learn More.