Desarrolle aplicaciones tácticas en MongoDB Enterprise Advanced y conéctelas a Ditto para la sincronización de datos de misión con prioridad local en entornos sin conexión.
Casos de uso: Entornos desconectados
Industrias: Edge y móvil,
Productos y herramientas: MongoDB Enterprise Advanced
emparejar: Ditto
Descripción general de la solución
Las operaciones de campo desconectadas generan un problema de datos. Los equipos de campo necesitan compartir actualizaciones de ubicación, elementos de mapas, alertas, archivos y mensajes.
Una arquitectura dependiente de la nube puede hacer que estos flujos de trabajo dependan de una conectividad constante. Este requisito es difícil de mantener en operaciones reales. Cuando falla la conectividad, los equipos pierden el acceso a la información actualizada.
Los desarrolladores se enfrentan a un problema similar. Deben dar soporte al almacenamiento local, la sincronización, la gestión de conflictos y la visibilidad del centro de control. Desarrollar estas funcionalidades por separado añade complejidad a cada aplicación.
Esta solución muestra cómo crear aplicaciones tácticas que sigan funcionando incluso con conectividad limitada. Utiliza MongoDB como capa de datos, conecta una plataforma de sincronización perimetral a MongoDB y amplía las capacidades de la capa de datos.
Comience con la capa de datos.
Utilice MongoDB Enterprise Advanced como capa de datos de confianza para la aplicación. Almacene las entidades de misión como documentos BSON y organícelas en colecciones que se ajusten al flujo de trabajo operativo. MongoDB admite diferentes formatos de documentos en la misma base de datos. Almacene datos de posición, objetos de mapa, mensajes de chat, alertas y archivos sin necesidad de un esquema rígido.
Aproveche este modelo de documentos flexible para desarrollar todas las funcionalidades de su aplicación en una única plataforma de datos. Utilice MongoDB para gestionar paneles de control, API, flujos de trabajo de comandos y sistemas posteriores. Añada nuevas entidades de misión sin necesidad de rediseñar toda la base de datos.
Conecta Edge con MongoDB
Utilice Ditto, una plataforma de sincronización perimetral, como socio para dicha sincronización. El complemento Ditto ATAK conecta los dispositivos ATAK a una red mallada peer-to-peer con prioridad local. ATAK constituye la aplicación de campo para compartir datos de ubicación, mapas, chat y misiones. Ditto sincroniza los datos de la misión entre dispositivos cercanos cuando el acceso a la red cambia o falla.
A continuación, conecta Ditto a MongoDB con el conector Ditto MongoDB. Este conector sincroniza los documentos entre Ditto y MongoDB y resuelve los cambios simultáneos entre ambos sistemas.
Construir sobre los datos
Ejecute MongoDB Enterprise Advanced localmente en el centro de control. Utilice la capa de datos de MongoDB para crear el panel de control del centro de control y otras aplicaciones de misión. Con las capas de datos y acceso implementadas, concéntrese en las funcionalidades de la aplicación en lugar de crear servicios de almacenamiento y sincronización independientes.
Utilice este patrón para:
Almacene los datos de la misión, que varían según el tipo de documento.
Conecte sus aplicaciones a MongoDB mediante controladores y API estándar.
Integración con Ditto para sincronización sin conexión.
Exponer una capa de datos compartida a las aplicaciones del centro de mando.
Amplíe la aplicación a medida que surjan nuevos flujos de trabajo para las misiones.
Arquitecturas de Referencia
La arquitectura utiliza MongoDB Enterprise Advanced como capa de datos de la aplicación para el centro de mando. MongoDB almacena los documentos de la misión y proporciona acceso al panel de control, las API y los flujos de trabajo operativos. MongoDB Ops Manager gestiona la implementación local de MongoDB.
El conector Ditto MongoDB enlaza MongoDB con Ditto Server. Ditto Server conecta la capa de datos de MongoDB con la red peer-to-peer en el perímetro táctico de ATAK mediante el complemento Ditto ATAK. De esta forma, los cambios se sincronizan entre MongoDB y Ditto sin conflictos entre ambos sistemas.
Figura 1. Arquitectura que muestra MongoDB Enterprise Advanced como la capa de datos del centro de mando, conectada a través del conector Ditto MongoDB a una red de malla punto a punto Ditto que da servicio a los dispositivos de campo ATAK.
Ventaja táctica
El ámbito táctico, la capa donde los dispositivos de campo crean e intercambian datos de misión cerca del punto de acción, incluye a los usuarios y dispositivos que operan en entornos donde la conectividad puede cambiar o fallar.
ATAK proporciona la aplicación de campo para compartir datos de ubicación, mapas, chat y misiones. El complemento Ditto ATAK captura esos datos y los sincroniza entre dispositivos cercanos a través de la red mallada peer-to-peer. Ditto utiliza protocolos de transporte disponibles como Bluetooth Low Energy, Wi-Fi, Wi-Fi peer-to-peer y rutas compatibles con MANET. Ditto también puede retransmitir datos entre varios dispositivos en la red mallada.
El borde actúa como otra fuente de datos de la aplicación. Ditto mantiene esos datos disponibles y los transfiere entre dispositivos. MongoDB almacena los documentos sincronizados y los pone a disposición de las aplicaciones del centro de control.
Integración del centro de mando
MongoDB Enterprise Advanced proporciona la capa central de datos de la aplicación. El panel de control lee los datos de la misión desde MongoDB y los presenta mediante mapas, vistas del estado de los nodos y flujos de comunicaciones.
El conector Ditto MongoDB detecta los cambios en Ditto y MongoDB. Aplica esos cambios en el otro sistema y mantiene sincronizados ambos almacenes de datos.
Las aplicaciones basadas en MongoDB consultan y actualizan documentos de misión sin conectarse directamente a los dispositivos ATAK. Ditto gestiona la entrega desde y hacia dispositivos periféricos desconectados. Esta integración permite crear la aplicación del centro de mando en MongoDB en lugar de directamente en los dispositivos ATAK.
Por qué este diseño es resistente
MongoDB almacena los datos de la misión. Ditto mantiene sincronizados los dispositivos de campo. ATAK proporciona la aplicación de campo. El conector enlaza ambos entornos y resuelve los cambios simultáneos.
Esta separación permite que cada tecnología se centre en una responsabilidad. MongoDB proporciona la capa de datos de la aplicación, Ditto sincroniza los datos en el entorno táctico y ATAK proporciona la experiencia sobre el terreno.
Este diseño permite crear funcionalidades de aplicación basadas en el modelo de documentos de MongoDB sin necesidad de implementar un modelo de almacenamiento independiente para cada dispositivo o condición de red.
Enfoque de modelo de datos
Almacene cada entidad de misión en un documento que coincida con la forma en que la aplicación la utiliza.
Las actualizaciones de posición, los objetos del mapa y los mensajes de chat tienen campos y patrones de actualización diferentes. Almacenarlos en colecciones separadas en lugar de forzar que cada entidad se ajuste a un esquema rígido. Este enfoque mantiene el modelo de datos cerca de los datos generados en el borde y reduce el código de transformación entre Ditto y MongoDB. Estos documentos se pueden usar para análisis en tiempo real y consultas de IA en el borde desconectado.
El complemento Ditto ATAK escribe el esquema Ditto ATAK v2. Este esquema utiliza nombres de campo compactos para los datos basados en CoT. Los siguientes ejemplos muestran los campos más relevantes para el desarrollo de aplicaciones.
Almacenar datos de ubicación en la colección track
Utilice la colección track para obtener datos de posición y estado de los agentes de campo. Consulte estos documentos para visualizar los dispositivos actuales e inactivos en el mapa del centro de mando.
{ "_id": "ANDROID-4486046569cda611", // document identifier "_r": false, // soft-delete flag "c": "MDB Actor 2", // display name "d": "ANDROID-4486046569cda611", // source device "e": "MDB Actor 2", // actor callsign "j": 19.451227, // latitude "l": -99.139832, // longitude "o": 1776886448640, // stale time "w": "a-f-G-U-C" // CoT type }
El esquema compacto mantiene el documento sincronizado cerca de los datos producidos por ATAK. MongoDB almacena el documento sin necesidad de una capa de mapeo relacional independiente.
Almacenar mensajes en la colección chat
Utilice la colección chat para los mensajes intercambiados entre usuarios de campo y flujos de trabajo de comandos. Esta colección tiene una estructura diferente a la de una pista, con campos para el texto del mensaje, el remitente, la sala y la marca de tiempo.
{ "_id": "b547f0b4-c371-4aff-ac1d-3bafe110a9e1", // message identifier "_r": false, // soft-delete flag "authorType": "a-f-G-U-C", // sender CoT type "b": 1776735193948, // message timestamp "d": "COMMAND-VEHICLE", // source device "e": "COMMAND", // sender callsign "msg": "Command", // message text "room": "Ditto", // room name "roomId": "ChatContact-Ditto" // room identifier }
MongoDB permite que la aplicación almacene documentos de mensajes, junto con documentos track sin agregar campos de ubicación vacíos ni forzar a ambas entidades a tener la misma estructura.
Conservar los objetos del mapa en la colección mapitem.
Utilice la colección mapitem para gráficos de mapas persistentes y objetos de misión compartidos.
Utiliza el modelo de documentos de MongoDB para almacenar cada entidad de misión con el formato que tu aplicación requiera. Mantén track, mapitem y chat en colecciones separadas, ya que representan datos y patrones de acceso diferentes. Este enfoque te permite crear funciones de mapas, estado y comunicaciones sin tener que ajustar todos los datos de la misión a un esquema rígido.
Colección | Propósito | Ejemplo de uso de la aplicación |
|---|---|---|
| Datos de posición y estado | Renderiza los actores de campo y los nodos obsoletos. |
| Objetos de mapa persistentes | Mostrar marcadores y gráficos de mapas compartidos. |
| Metadatos de mensajes y conversaciones | Mostrar las comunicaciones en el panel del centro de mando. |
Utilice cada colección para una función específica de la misión y mantenga todas las colecciones en una única capa de datos de MongoDB. Añada campos o nuevas entidades de misión sin necesidad de rediseñar las colecciones existentes.
Construir sobre una capa de datos flexible
Cree paneles de control, API y flujos de trabajo de centro de mando en MongoDB. Consulte cada colección según su propósito y conserve la estructura del documento que llega desde el borde.
Utilice este método para:
Reducir la transformación de datos entre Ditto y MongoDB.
Facilita la consulta de cada entidad de la misión.
Agregue nuevos campos sin rediseñar documentos no relacionados.
Amplíe la aplicación sin necesidad de crear un modelo de almacenamiento independiente para cada dispositivo o flujo de trabajo.
Compilar la solución
Utilice el repositorio de GitHub tak-situational-demo para implementar y explorar la solución.
Prepare los dispositivos de campo
Asegúrese de cumplir con los siguientes requisitos antes de continuar:
Configura dos o más dispositivos Android.
Asegúrese de que cada dispositivo ejecute Android 13 o superior con un mínimo de 4 GB de RAM.
Instale ATAK CIV en cada unidad y apruebe todos los permisos necesarios del dispositivo, incluido el acceso al GPS.
Obtén el plugin Ditto ATAK e instala la aplicación en cada teléfono.
Conecte todos los dispositivos al entorno Wi-Fi local que aloja la estación de mando.
Prepare el host del centro de comandos
Asegúrese de cumplir con los siguientes requisitos antes de continuar:
Instala Docker, kind, kubectl y Helm. Los scripts de automatización integrados crean automáticamente el despliegue de Kubernetes.
Asigne 32 GB de memoria del sistema. Los sistemas requieren 24 GB como mínimo, ya que Ops Manager, los registros de Ditto Server y MongoDB Enterprise Advanced combinados superan los límites de 16 GB.
Reserve 30 GB de capacidad de almacenamiento local para imágenes de contenedores y volúmenes de datos persistentes.
Desactive los puertos 80 y 443 para enrutar el tráfico a la vista web operativa y a los componentes de Ditto Server.
Implementar la pila del centro de comandos
Ejecuta make setup desde la carpeta raíz. Puedes volver a ejecutar este script sin problemas después de cualquier error, ya que retoma la ejecución donde se detuvo. Inicializa los componentes secuencialmente:
El operador de Kubernetes a través de controladores MongoDB para Kubernetes.
MongoDB Ops Manager operando dentro del clúster para administrar Enterprise Advanced.
Un conjunto de réplicas de MongoDB Enterprise Advanced, aprovisionado a través de Ops Manager.
El operador Ditto junto con una instancia de servidor Ditto autohospedada.
El conector Ditto para MongoDB se proporciona como un objeto nativo de Kubernetes.
La aplicación del panel de control del centro de mando.
Este script crea la base de datos, los usuarios y las colecciones para esta solución. Espere de 25 a 35 minutos durante la configuración inicial.
Una vez finalizado el proceso, se muestra la URL del panel de control, una cadena de conexión de Compass, las credenciales de Ops Manager y los valores de emparejamiento necesarios para los dispositivos perimetrales.
Ejecuta make verify para validar tu entorno. Este paso inserta un documento en MongoDB y lo recupera a través de Ditto Server, comprobando la sincronización bidireccional.
Para obtener comandos completos, detalles de configuración y manifiestos de despliegue, consulte docs/RUN_LOCAL.md en el repositorio de demostración situacional de TAK.
Configurar la sincronización
Automatice la configuración mediante el conector Ditto MongoDB. Declare el conector como un recurso BigPeerDataBridge de Kubernetes para sincronizar las colecciones track, mapitem, chat, file y alert bidireccionalmente entre unidades tácticas y aplicaciones de centro de mando.
Aloje Ditto Server en el mismo clúster de Kubernetes que MongoDB para enrutar el tráfico internamente. Conéctese mediante cadenas de conexión estándar de MongoDB sin exponer puntos finales públicos ni administrar listas de direcciones IP permitidas.
Verifique estas condiciones previas antes de inicializar el conector:
Confirme que las bases de datos y colecciones de destino existen.
Otorgar permisos
readWriteal usuario del conector.Habilite
changeStreamPreAndPostImagesen todas las colecciones sincronizadas para mantener la coherencia causal entre plataformas.
Aplique indicadores de eliminación lógica (_r: true) para marcar documentos obsoletos. Las eliminaciones permanentes en MongoDB activan operaciones de purga permanentes en Ditto. Consulte los datos operativos utilizando filtros _r: false.
Consulte la documentación del conector Ditto Operator para MongoDB para obtener opciones adicionales.
Par de unidades tácticas
Inicie la interfaz de usuario operativa y haga clic en Agregar dispositivo. La superposición mostrará un código QR junto con los siguientes parámetros de texto: ID de la aplicación, punto final de autenticación, punto final de WebSocket y token de Playground. Ejecute make pair para visualizar estas credenciales en la terminal.
Inicie ATAK y el complemento Ditto ATAK en cada unidad de hardware de destino. Escanee el código QR generado o introduzca las variables de conexión en las preferencias del complemento. Desactive la sincronización de Ditto Cloud para dirigir el tráfico de red hacia su servidor Ditto local.
Active los servicios de ubicación para que ATAK genere telemetría de posición. Repita estos pasos de configuración para cada unidad que se conecte a la red de malla local. Las actualizaciones de telemetría se muestran rápidamente en el mapa del panel de control central.
Consulte docs/RUN_LOCAL.md en el repositorio de demostraciones situacionales de TAK para obtener instrucciones paso a paso sobre la configuración del dispositivo.
Explorar los flujos de trabajo operativos
Acceda al panel de control operativo en http://localhost. La interfaz de mapeo muestra los actores de campo y atenúa los nodos inactivos. El panel de telemetría proporciona los indicativos de llamada activos, mientras que la ventana de chat transmite las comunicaciones de campo.
Envíe mensajes o coloque marcadores en el mapa directamente desde la interfaz central. El panel de control escribe los nuevos documentos en MongoDB, y el conector difunde las actualizaciones a través de Ditto Server a cada dispositivo portátil emparejado en la capa de datos compartida.
Conecte MongoDB Compass a localhost:27017 para inspeccionar los documentos de la aplicación sin procesar y abra Ops Manager para supervisar el clúster como un administrador de producción.
Lecciones clave
Primero, desarrolle la capa de datos de la aplicación: utilice MongoDB Enterprise Advanced para almacenar y servir datos de misión para paneles de control, API y flujos de trabajo del centro de mando.
Modela las entidades de la misión como documentos: utiliza colecciones de MongoDB para almacenar datos de posición, objetos de mapa, mensajes de chat, archivos y alertas sin imponer un esquema rígido.
Conecte MongoDB al borde de la red: utilice el conector Ditto MongoDB para extender las aplicaciones basadas en MongoDB a dispositivos ATAK desconectados.
Simplifique el desarrollo de aplicaciones: cree funcionalidades de aplicación sobre una única capa de datos de MongoDB en lugar de crear modelos de almacenamiento separados para cada dispositivo o condición de red.
Diseño para operaciones desconectadas: combine el almacenamiento de documentos duradero de MongoDB con la sincronización local y la gestión de conflictos de Ditto.
Autores
Timothy Marland, MongoDB
Alberto Camarena Rodriguez, MongoDB