Hay dos problemas aquí.
- ¿Está replicar los datos en el cliente y el servidor (si es así, ¿por qué?) O no uno, el otro o un agente de base de datos de sostener el modelo?
- ¿Cómo accede cada agente (es/es) el modelo?
Si el modelo sólo se lleva a cabo por un agente (cliente, servidor de base de datos), entonces los otros agentes necesitan una manera para consultar a distancia el modelo (por ejemplo, objeto enumeradores, captadores y definidores para diversos campos) operando en entidades de modelo abstracto (por ejemplo, identificadores de elementos de modelo, que podrían implementarse como enteros como lo ha hecho).
Independientemente de quién tenga el modelo (uno o todos), cada modelo se puede implementar de forma natural. La implementación normal tiene cada objeto simplemente se refiere a otros objetos usando referencias de objetos normales, como si hubiera codificado esto sin pensar en compartir entre agentes, y a diferencia de lo que hizo .
Puede asociar un objeto con cada objeto, como lo ha hecho, pero su aplicación no es necesario que lo use; solo es necesario cuando se hace referencia a una copia remota de del modelo. Si este objeto está asociado con cada objeto como un campo especial , una tabla hash o se calcula sobre la marcha es solo un detalle de implementación.
Una forma de manejar esto es calcular el objectid sobre la marcha. Puede hacer esto si hay un árbol de expansión canónico en todo el modelo. En este caso, el objectid es "solo" la ruta desde la raíz del árbol de expansión hasta la ubicación del objeto. Si no tiene un árbol de expansión o es muy costoso de calcular, puede asignar objetos a medida que se crean objetos.
El problema real con un modelo distribuido duplicado, como ha sugerido, es mantenerlo actualizado con ambos agentes actualizándolo.¿Cómo previene que cree un objeto (una asignación de un objeto) al mismo tiempo como el otro, pero los objetos que se crean son diferentes con el mismo objeto, o lo mismo con diferentes Objectids? Necesitará bloqueo remoto y señalización para mantener los modelos sincronizados (este es el mismo problema que "coherencia de caché" para múltiples CPU, solo piense en cada objeto actuando como una línea de caché). La forma en que generalmente se resuelve es designar quién posee la copia maestra (quizás de todo el modelo, tal vez de objetos individuales dentro del modelo) y luego realizar consultas, leer , leer-con-intento-modificar, o escribe para asegurarse de que el modelo completo "único" se actualice.
por cierto. Descubrí que hay un nombre para la técnica 'Mapa estático', llamado [el patrón de multitonos] (http://en.wikipedia.org/wiki/Multiton) – kornfridge