Ist es notwendig, die Save data as transactions Technik zu verwenden, wenn ein Wert nur erhöht ?. In dem Beispiel Firebase doc social blogging app kann die starCount
nach oben oder nach unten gehen, also ist es logisch, das Recht Transaction Technic zu verwenden. Aber wenn der Wert nur steigt, nehme ich an, die Transaktionstechnik wird nicht benötigt, oder? oder? Mehrere Benutzer gleichzeitig erhöhen einen Wert richtig.Wann Firebase-Transaktionen zu verwenden oder nicht
Antwort
Der Zähler kann auf- oder abwachsen, dh ein Benutzer kann auf den Zähler klicken, um den Wert zu erhöhen, kann aber auch den Wert verringern, wenn er erneut klickt. Wenn wir Transaktionen verwenden, verwenden wir nicht nur einen Zähler zu erhöhen oder zu verringern, wir verwenden, wenn wir wissen, dass in unserer App eine Möglichkeit besteht, dass zwei Benutzer die gleiche Aktion in derselben Zeit ausführen können. Wenn wir keine Transaktionen verwenden, kann der Zähler nur um eins anstatt um zwei erhöht/verringert werden, wenn zwei Benutzer die Aktion gleichzeitig ausführen.
Wenn wir Transaktionen verwenden, werden beide Aktionen in verschiedenen Ausführungsthreads stattfinden, daher gibt es keine Möglichkeit, einen Zähler nur einmal zu erhöhen/zu verringern, auch wenn beide Benutzer die gleiche Aktion gleichzeitig ausführen.
Als Schlussfolgerung, verwenden Sie Transaktionen jedes Mal, wenn Sie glauben, dass zwei oder mehr Benutzer denselben Wert in Ihrer Firebase-Datenbank zur gleichen Zeit ändern können.
Ich hoffe, es hilft.
- 1. Wann zu verwenden und wann nicht Python 3.5 `erwarten 'verwenden?
- 2. Hamcrest Wann zu verwenden ist oder equalTo
- 3. Wann abstrakte Klasse oder Schnittstelle zu verwenden?
- 4. wann elem.style.left oder elem.offsetLeft zu verwenden
- 5. Wann NICHT NoSQL zu verwenden?
- 6. wann, oder nicht, toLocale-Methoden verwenden?
- 7. Wann Array zu verwenden oder nicht, um sie in mongodb
- 8. Railties - Wann zu verwenden
- 9. angularjs Wann zu verwenden, Versprechen und wann Ereignisse zu verwenden
- 10. Wann HTML5 in Android zu verwenden? Wann nicht benutzen?
- 11. Wann socket.io zu verwenden und wann Ajax zu verwenden
- 12. Wann NSURLProtocol zu verwenden?
- 13. Wann nicht ACS verwenden?
- 14. Wann selbst zu verwenden?
- 15. Wann und wann nicht CoreAnimation verwenden
- 16. Wann zu verwenden $ zerstören
- 17. Wann Texturansichten zu verwenden
- 18. Wann GWT zu verwenden ist und wann nicht
- 19. Synchronisation, Wann oder nicht?
- 20. JPA - wann Beziehungen zu verwenden?
- 21. GWT: Wann LazyDomElement zu verwenden?
- 22. CompositeWPF: EventAggregator - wann zu verwenden?
- 23. Wann JavaScript-Framework zu verwenden?
- 24. Wann Datenbankansichten verwenden und wann nicht?
- 25. FluentD Aggregator - Wann zu verwenden?
- 26. Wann ist CultureInfo.GetCultureInfo (String) oder CultureInfo.CreateSpecificCulture (String) zu verwenden?
- 27. Mitgliedschaftsanbieter zu verwenden oder nicht zu verwenden?
- 28. Wann ist '(oder Zitat) in Lisp zu verwenden?
- 29. Wann Pack- oder Rasterlayouts in tkinter zu verwenden sind?
- 30. Wann sollte ich Subdomains verwenden oder vermeiden?
Danke, aber ich spreche über einen Zähler, der nie abnehmen wird, kann es nur gehen. –
Ist egal, ob nur erhöhen oder nur verringern. Wenn nur ein Benutzer diesen Zähler verwendet, benötigen Sie keine Transaktionen. Wenn zwei oder mehr Benutzer denselben Zähler zur gleichen Zeit verwenden können, benötigen Sie Transaktionen, um Fehler zu vermeiden. –
@ErikHellberg Es ist nicht so, wie sich die Daten per se ändern, sondern dass sie sich relativ zum vorherigen Wert ändern. Da die Überprüfung des Werts und die Festlegung eines neuen Werts unabhängige Aktionen sind, benötigen Sie eine Transaktion, um sicherzustellen, dass sie sich zwischenzeitlich nicht zu etwas anderem ändert. –