ho capito che le operazioni Firebase consentono l'aggiornamento atomico di un certo valore, dato il suo valore vecchio e nuovo valoreQuando bisogna utilizzare le transazioni Firebase
Ma dato che Firebase è un database in tempo reale, presumo, si deve utilizzare le transazioni solo con parsimonia e non in 'funzionalità realtime'
ecco un esempio:
capisco che se si sta eseguendo qualche operazione matematica su un valore (aggiungendo 'piace' o equivalente), ha senso utilizzare transazione
Non capisco se abbia senso utilizzare le transazioni nel seguente caso d'uso: Dire che un campo di testo può essere aggiornato da un numero qualsiasi di utenti, e siamo interessati a tutti gli aggiornamenti, poiché si verificano in tempo reale. Firebase consiglia di utilizzare la transazione in questo caso? O è l'ultima 'operazione persistente' che si verifica sul valore, limitata solo a una singola 'operazione permanente' per granularità dell'orario di clock del server Firebase?
Inoltre è garantito che gli eventi verranno consegnati nell'ordine in cui i valori finali sono stati mantenuti?
Sì, non intendo utilizzare le transazioni. ecco un esempio. Assumi un sistema "Comment". Posso andare avanti e memorizzare tutti i commenti in un nodo radice "commenti" con un tasto push univoco + alcuni attributi. Questa radice può diventare grande e se mi piacerebbe ottenere una lista ordinata, invierei una query con qualche parametro sort (su timestamp). Se ho un altro nodo: CommentLatest, che memorizza il tasto push univoco dell'ultimo commento. Quindi ogni cliente esegue due scritture: una scrittura nell'albero "Comment" con un tasto push univoco e un aggiornamento all'albero commentlatest con l'ultimo = tasto push univoco che ha appena usato. Questa scala? – wrecktangle
(continua) ed esiste una possibilità di danneggiamento nel nodo CommentLatest se ci sono più client che aggiornano il nodo commentLatest? – wrecktangle
Se si è preoccupati per la contestazione dell'aggiornamento del valore 'latestCommentId', è possibile che l'ottimizzazione venga anticipata. La sovrascrittura con una data precedente può essere evitata includendo il timestamp come valore di 'latestCommentId' e quindi il rifiuto del timestamp è più vecchio di quello che è attualmente presente. Ma notiamo che siamo passati da una domanda incredibilmente ampia a un caso d'uso molto dettagliato qui. Prima potresti dedicare un po 'più di tempo a lavorare con le transazioni Firebase e poi fare una domanda più concreta con codice e regole di sicurezza. –