2016-04-13 107 views
0

Aynı nesne üzerinde değişiklik yapmak ve güncellemek için birden çok iş parçacığı çalıştırıyorum!Nasıl veri saklamaktan kaçınmak Üzerine yazma (kayıp) Yazma - aynı nesnede Cassandra ile birden çok iş parçacığı ile güncelleştirme

en basit tutalım:

Bir obj1 vardır: | kimlik | sayaç | zaman damgası | :)

run() 3 Konu t1, t2 t3 sayacı yapmak ++ böylece deneyiminden, nasıl benim için önermek benim güncelleme veya cadı çözümünü yapmak için nesneyi kilitleyebilir Cassandra'ya

bi'şey yeni Böyle bir durumda verilerin üzerine yazılmasını önlemek için kullanmak!

sizden duymak isteyen ve size kilit yok olan

+0

Tablonuzun ** CREATE TABLE ** komut dosyasını gönderir misiniz? – doanduyhai

+0

basit bir çoğaltma stratejisi faktörü 1 – Housekl

cevap

0

teşekkür ederim. Aynı nesneyi mutasyona almak yerine, mutabakat için mutasyonların bir kaydını yazın. CRDT'ye veya olay kaynaklarına bakın ve senaryolara bağlı olarak biraz farklı bir şekilde uygulanabilir.

Alternatif olarak, hafif işlemleri kullanabilirsiniz ve mutasyonunuz çalışana kadar tekrar denemeye devam edebilirsiniz, ancak veriminiz karşılaştırmada çok zayıf olacaktır. senin eşzamanlılık/üretilen iş gereksinimlerine bağlı o IF/denge şartı yeni ile yeniden denemek başarısız olursa

UPDATE purchases SET balance=-200 WHERE user='user1' IF balance=-208; 

olsa yeterli olabilir. Eğer sadece arttırılması veya özel durum yapacağını eksiltilmesi eğer https://docs.datastax.com/en/cql/3.1/cql/cql_using/use_counter_t.html :

söz değer bir karşı türü yoktur.

+0

ile örnek bir tablo var Teşekkürler Chris, ama mutabakat için bir mutasyon günlüğü ile ilgili ilk bölüm almadım. Ben de hafif ağırlık işlemlerini denedim ama benim için çalışmıyor, sayaç sadece bir kullanım durumu, tip sayacı değil, Nesne DB + aldığımda bir çözüm var benim operasyonum ve Güncelleme sırasında Değiştirildiyse veya değiştirmediyse zaman damgasını gerçek zamanlı olarak kontrol et. – Housekl

+0

"benim için çalışmıyor"? ama evet, bir zaman damgası ** uuid ** son okunuşundan değiştirilip değiştirilmediğini kontrol etmek için çalışacaktır (sadece zaman damgasını kullanırsa çarpışmalar olabilir). Gerçi çok yavaş olur. [CRDT] (https://hal.inria.fr/file/index/docid/445975/filename/icdcs09-treedoc.pdf) ve [etkinlik kaynağı] (http://martinfowler.com/eaaDev/EventSourcing.html) eşzamanlılık çatışmalarından kaçınırken hala çok hızlı yazılar yazıyor. Ayrıca OT, CQRS, bir tavşan deliği gibi şeyler denir ama benzer bir amacı var - çatışmalardan kaçının. Id ziyaret biraz zaman googling/youtube –

+0

harcama tavsiye ederim ben onları kontrol edecek ve bu makale için bir çözüm bulursanız size geri dönün! sizin bölümden herhangi bir yorum öneri bekliyoruz – Housekl