Domanda

Sto implementando un applicazione per iPhone con la funzione di "seguire" su Java / GAE. Questa funzione è simile a Instagram di in cui un utente può seguire gli eventi di altri utenti. Gli eventi possono essere nuove foto pubblicate, simpatia foto, a seguito di altri utenti, ecc.

Let dire che abbiamo due entità:. Seguire ed eventi, entrambi i quali hanno un riferimento per l'utente id

Così sto pensando di usare o query in cui possiamo elencare eventi di utenti target. Ma GAE non supporta OR query, e il rilascio query separate sarebbe anche inefficiente come il numero di query può essere molto grande (ad esempio 100+ segue è una norma).

Che cosa è una pratica comune per fare questo?

È stato utile?

Soluzione

Si deve smettere di pensare nel modello relazionale ;-) Facciamo qualcosa di simile sulla nostra app. Mantenere una lista di UID che sono "sottoscritto" per l'utente che viene seguita in entità dell'utente seguito. Quando l'utente fa qualcosa che richiede la notifica creare un'entità evento per ogni utente che sta seguendo l'utente (sì, un utente popolare potrebbe creare un sacco di voci, questo potrebbe essere scaricata a una coda Task).

Quando un utente si verifica la presenza di notifiche di loro è possibile recuperare dal suo UID. Dal momento che questo è indicizzato tornerà molto rapidamente. Quando si recupera gli eventi, cancellarli o segnano li leggono.

Ricordate, si unisce e altre query filtrati sono molto lento, ma il recupero massiccio numero di record indicizzati non lo è. Se qualcosa sta per creare un gran numero di record, offload a una coda di task.

Altri suggerimenti

mi piacerebbe usare un ListProperty sia per abbonamenti e gli abbonati. Ogni volta che un utente inserisce sottoscritti, si utilizza un compito di aggiungere voci per ogni utente di vedere. Come Rick Mangi sottolineato, il modello relazionale non vi aiuterà con l'archivio dati. Se si sta utilizzando la nuova API NDB, è possibile utilizzare invece un ripetuto di proprietà. Dal momento che si sta creando enti per ogni osservatore, l'API asincrona può essere a portata di mano.

Stiamo implementando il modello di Etsy ha descritto la loro quota di diapositive pubblico.

Ecco lo schema di schema.

di Etsy modello

raccomando di leggere la loro presentazione nella sua interezza.

Etsy Feed attività Arch

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top