Bu senaryo hakkında konuşacak bir kaç konu daha buldum. varsa Firebase data consistency across multiple nodes Firebase: Tek bir işlemde birden çok nesneyi güncelle
Firebase: How do I update multiple resources atomically
- Ancak yine de bulmak için mücadele, herhangi Bunun için veri yapısı tasarımını önerilir. Bir çok yazım kitaplığı firebase-multi-write görüyorum, bu da muhtemelen çoğu durumda buna ihtiyacınız olmadığını söylüyor.
Ama bu ihtiyacım var düşünüyorum benim Senaryo:. 3 kullanıcı
Ve her kullanıcı aynı anda birbirine kontör çalabilecek,/users/A : {credit:20} /users/B : {credit:3} /users/C : {credit:10}
- A B kredisi top çalma Cı kredi görünümündedir
- B çalar {2, 21} gibi nokta {3, 9}
- C A kredisi çalar {11, 2 benziyor 0}
Artık, her kullanıcı için bu tutarlılığı korumak için kredileri güncellemem gerekiyor, böylece her çalma işlemi doğal olarak atomiktir. Java veri bütünlüğünü korurken
Ne tür senaryo işlemek için en iyi yolu olacak?
İlk bağlantılı iplik görüşmelerini başka yaklaşımı hakkında (Olay Kaynak - http://martinfowler.com/eaaDev/ EventSourcing.html). Üç çalma olayını yakalayan tek bir olay yazacaksınız ve mevcut kredi dengesini bulmanız gerektiğinde ilk durumu (muhtemelen 0 kredi) yükleyeceksin ve daha sonra son halini alabilene kadar olay geçmişini oynatın. Bonus puanları - tüm "çalma" geçmişiniz var. Bunun kabul edilemez bir nedeni var mı? –
Teşekkürler, bahsettiğim senaryo, öngördüğüm iş akışının basitleştirilmiş bir versiyonuydu. Bu, A'nın B formunu çaldığı basit bir oyun uygulamasının bir parçasıdır ve bir sonraki B de, C ve D oyuncularının karışımıyla onu geri çalar. Yani basit bir atomik güncelleme için çok fazla hesaplamalar? – duskandawn
Atom işlemlerinin işe yarayıp yaramadığını öğrenmek için senaryo hakkında yeterli bilgim yok - ama tanımladığınız şey bana atomik bir işlem gibi gelmiyor. Eğer A B'den alırsa ve sonra "bir sonraki anda" B onu çalarsa ... bu atomik değildir. Bu, birbirine yakın zamanda meydana gelen iki ayrı operasyon. –