Estoy construyendo una aplicación en Google App Engine (Java), donde los usuarios pueden hacer postes y estoy pensando en añadir etiquetas a estos puestos, así que voy a tener algo como esto:Almacén de datos del motor de aplicaciones: ¿cómo implementar publicaciones y etiquetas sin uniones?
en la entidad de la publicación:
public List<Key> tags;
en la entidad tag:
public List<Key> posts;
sería fácil de consultar, por ejemplo, todos los mensajes con una determinada etiqueta, pero ¿cómo podría conseguir todos los mensajes que tiene una lista de etiquetas? Podría hacer una consulta para cada etiqueta y luego hacer una intersección de los resultados, pero tal vez haya una mejor manera ... porque sería lento con muchas publicaciones.
Otra cosa que puede ser más difícil es tener una publicación, obtener las publicaciones que tienen etiquetas en común ordenadas por el número de etiquetas comunes, por lo que podría obtener publicaciones "similares" a esta, de alguna manera.
Bueno, con join esto sería mucho más fácil, pero estoy comenzando con el motor de aplicación y realmente no puedo pensar en una buena manera de reemplazar las uniones.
Gracias!
No sabía que cuando recuperaba una entidad con una propiedad de lista también se recuperaban todas las entidades en esa lista ... ¿Es así? Así que eliminaré la lista de Publicaciones. Tampoco sabía que podía consultar de esa manera sobre una propiedad de lista: q.setFilter ("tags" == 'Java' && "tags == 'appengine'"); Eso es realmente una buena noticia :) Gracias Peter. – Damian
Las entidades completas en las listas pueden o no obtenerse dependiendo de cómo implementes exactamente tus entidades y si estás usando JDO o JPA (lee sobre grupos de búsqueda en JDO, por ejemplo) Pero incluso si solo estabas cargando las claves, unos cuantos miles de teclas comenzarán a sumarse si los mueve constantemente de un lado a otro. –