Max's Output

Update Idempotency: Why It is Important in Cassandra Applications

with 14 comments

When you develop application for Cassandra you should be aware of the following fact. Even when client observes the failure of an update it is still possible that this update has been executed successfully. The cause of such anomalous behavior is that Cassandra does not support transactional rollback. But please do not rush with judgements. There is a reason for that. Cassandra is a distributed database so rollback requires support for distributed transactions that have a performance cost and do not scale well. So if you want it fast and scalable you have to handle this anomaly.

Before we discuss a solution let’s look at examples when the anomaly might happen:

  1. In Cassandra data are (usually) replicated. You can specify how many replicas must be successfully updated to consider the whole update to be successful (it allows making update writable even in case when some of replica nodes are down or not accessible due to network partitioning). Still if less nodes confirm updates than required Cassandra will return an error to the application saying the write failed. But it will not cleanup/rollback updates from those nodes where they were successfully executed. For example, if the replication factor is 3, the required number of nodes to be updated 2, and only 1 node was actually updated, the application will receive an error. Despite of the error subsequent reads will see the update. Moreover, the mechanism of eventual update propagation (i.e. read repair that is triggered on the first subsequent read) will update other replicas with a value that was actually deemed a failed write to the client. Note that it should not happen often as Cassandra does go out of its way (via gossip-based node failure detection) to make sure the cluster is healthy enough to executed the update. But it is possible.
  2. The whole update can be successfully executed but the return message is lost.

The idea is that you retry the failed update until it is successful. As a result, the same update can be executed several times! If the update increments a counter the counter value gets incorrect. Here we come to the main point of this post: all your updates should be idempotent (i.e. repeated update applications have the same effect as one). Designing updates to be idempotent is the standard discipline to cope with repeated updates. Read great articles Life beyond Distributed Transactions: an Apostate’s Opinion and Building on Quicksand by Pat Helland that stress the importance of idempotent updates in highly scalable systems.

To ensure idempotence (i.e. guarantee the processing of retried updates is harmless) the database should be designed to remember that the update has been processed. Typically it can be achieved by storing identifiers which can be used to uniquely identify an update. For example, suppose we want to count how many times each URL has been posted on Twitter.  Instead of just storing the mapping of URLs to counters (i.e. column family URL_statistics where each record has an URL as a key and a single column having counter as its value) a solution can be to store the mapping of each URL to the IDs of the tweets which contains the URL (i.e. column family URL_Tweets where each record has an URL as a key, columns representing tweets, column names are the tweet IDs, and column values are not used). URL counters will then be computed on retrieval by counting tweet IDs.

It is a good idea to store tweet IDs as column names so that Cassandra automatically eliminates duplicates – repeated update will be ignored in this case (use this great Cassandra feature to make your updates idempotent!). You can easily come up with other options to design the database but this way or another you have to store some information to ensure update idempotence.

It is common that Cassandra applications are not initially designed for idempotence. At first, small scale deployments do not exhibit these subtle problems and work fine. Only as time passes and their deployments expand the problems manifest and the applications respond to handle them. Do it right from the beginning.

Written by maxgrinev

July 12, 2010 at 1:02 am

Posted in Cassandra

14 Responses

Subscribe to comments with RSS.

  1. We have been investigating implementing counters in Cassandra and this sounds extremely promising. Using this method, is there any practical upper bound on the number of columns? For example, if we have 100,000 counters and each counter has 1,000,000 columns, no problem? I’m guessing we will want to wait until 0.7 comes out to address CASSANDRA-16 (entire row must fit into memory). But other than that, are there any practical (or theoretical) limits to this approach?

    Chris Price

    July 21, 2010 at 2:34 pm

    • I cannot see any other limits except CASSANDRA-16. According to the ticket https://issues.apache.org/jira/browse/CASSANDRA-16 this issue is already resolved so you don’t have to wait to play with it. Just take the current SVN version. We are using this current version for a prototype and it works fine in general. Have not tried this particular feature as in my app the rows fit into memory.

      maxgrinev

      July 22, 2010 at 3:25 pm

    • Got it! Thanks a lot again for hlipeng me out!

      Emmy

      April 17, 2011 at 6:48 am

  2. I think it’s a bit much to say that idempotent updates are a “standard discipline” for addressing this need in a scalable system. *Conditional* updates also offer a solution, from LoadLocked/StoreConditional within MIPS processors to HTTP If-Match or other predicate-based operations e.g. in Voldemort. By themselves these can handle the case where a NAK is received. In the timeout case, they can be helped along by XIDs and such so that the success of the first update can be detected before a second (erroneous) update is made. This doesn’t rely on key uniqueness, and avoids self-conflicts instead of storing them and relying on later reconciliation (e.g. on read).

    Jeff Darcy

    July 21, 2010 at 5:04 pm

  3. [...] Note that triggers may be executed more than once that requires triggers to be idempotent. This is a requirement to any Cassandra update though. We chose not to implement exactly-once semantics because it introduces essential [...]

  4. It’s actually a great and helpful piece of info. I’m satisfied that you simply shared this useful information with us. Please keep us informed like this. Thanks for sharing.|

    linux hosting

    August 5, 2013 at 9:17 am

  5. Chociażkoszt pierwotny do ustawiania systemu fotowoltaicznego
    jest całkiem na wysokie w porównaniu do innych form wytwarzania energii
    elektrycznej , atoli na dłuższą metę wytwarzania energii słonecznej energii jest lepiej
    spośród kilku powodów . Po pierwsze, paliwa kopalne , które używamy obecnie w produkcji energii elektrycznej została odkryta się
    zmniejszać się (to jest jego dostępność ) . Po drugie, jeśli porównamy koszty eksploatacji systemu solarnego a generator energii
    elektrycznej domu ( pracuje na benzynie albo oleju napędowego ) na przestrzeni pięciu latkoszt na które spośród benzyną albo wytwornica diesla jest wyższa aniżeli generator energii
    słonecznej . Ogólnym celem jest zilustrowanie wzorzec systemu
    solarnego , oba rodzaje termicznych i fotowoltaicznych .

    W tym celu badamy rezerwa słoneczną i sztuka różnych
    typów kolektorów słonecznych , iżby chwytać to skutecznie .
    Narzędzia do projektowania zostały opracowane , które konsolidować zdolność produkcyjna izolacji kolektorów słonecznych ,
    natomiast także przechowywania energii , aż
    do dużego systemu , kto dostarcza także energii elektrycznej bądź cieplnej żądamy
    . Posolar platforma jest skonfigurowany , zero nie jest potrzebne, ażeby istnieć zastąpione czy też dodane aż do
    niego od czasu lat co najmniejkolejnych 5 , ponieważ nie
    mają ruchomych części, które wymagają smarowania
    , tudzież gros składników mają długą witalność .
    Na przykład , panele na mniej więcej 25 lat, spośród baterii przypadkiem trwać 5-6 lat .
    Ale nasze generatory , które współpracują spośród paliw kopalnych, mają ruchome części , które noszą
    , zaś także wymontować w wyniku tarcia . Następnie patrząc
    na kosztach paliwa ( paliwo czy też oliwa napędzający i
    oliwa ) , który będzie wykorzystywany z
    wykorzystaniem generator na przestrzeni pięciu lat , to da nam złudzenie o długim pożytek
    wykonywania że generator energii słonecznej ma . Mamy nadzieję, że razprostota konstrukcji systemu słonecznego energii rozumie , inżynierowie tudzież producenci dostarczą nowych projektów systemowych , które będą obejmować słonecznych
    światowym rynku natomiast zgodzić się wszystkim wykorzystywać z tej czystej , zrównoważonej zaś
    rozproszone źródła energii. Timothy Kolawole
    pomógł różnych ludzi być w użyciu informacje na materia
    energii słonecznej do ich domów . Więcej darmowy doniesienie na stronie:

    panele słoneczne

    September 6, 2013 at 3:05 pm

  6. Mały chłód na panele słoneczne mogą opuszczać ich
    zdolność produkcyjna nawet o 80% . Sprawność płyty zmienia się w relacje od lokalizacji ,
    mimo to prawdopodobnie owo być zmaksymalizowane za pośrednictwem redukcję pokrycia cieniem .
    Nie musisz anulować skończony dach do wykorzystania energii słonecznej.

    Powinieneś znajdować się w stanie skorzystać oświetlenie zasilane energią słoneczną wszędzie nie mówiąc o własnym domu
    . Ten forma oświetlenia obciąża kompletny doba w słońcu , by zapewnić , iż można go uruchomić od momentu
    nocy . Panele słoneczne energii powinny istnieć zmieniane
    sezonowo , czy też 4x w roku. Ilość słońca, które uderza własne zmiany aż do domu ze wszystkich
    pór roku , podobnie gdy kierunek, z którego ciosy światło słoneczne .
    Jeśli upewnisz się, iżby trafnie dostroić swoje płyty ,
    możliwe jest pełne wykorzystanie dostępnego światła słonecznego
    . Twoje systemy słoneczne dyskusja panelowa musi istnieć
    w stanie uzyskać maksymalną ilość światła formieopalania.
    Podczas obserwacji lokalizację w celu systemów solarnych paneli , mniemać o ścieżki słońca i jaksezon wpływa światła słonecznego .
    Energia słoneczna przypuszczalnie udoskonalić sporo życie zaś ochronić
    naszą planetę . Mamy nadzieję, że te informacje przekazał Ci powodów bezmiar doskonałych ,
    by trwać optymalny niewprawiony wybór energii, energii słonecznej.
    Niemniej natomiast rozszerzyć swoje oświata czytając więcej
    online. Pointer : unikać marnowania czasu natomiast pieniędzy w toku dokonywania osobisty polski architektura
    energii słonecznej wewnątrz pomocą \”jak \” prowadnice lub ćwiczebny , jaki jest nieetyczne natomiast
    niepełne . Zamiast tego należy użyć przewodnik
    , który ma setki zaletą ludzi na całym świecie !

    webpage

    September 7, 2013 at 3:27 am

  7. Wybór energii słonecznej na suma jest jednym spośród idealnym sposobem na upust kosztów zużycia energii .
    Pozaa tym, prawdopodobnie stanowić ustawiony na wypadek, koszty energi
    zwiększy w smutek kosztowny . Dlategho znając solaarnych źródeł energii gwoli swojego domu ewentualnie firmy tomądra werdykt .
    Czytaj więcej o więcej informacji na sprawa sposobów wykorzystania energii zaasilany energią
    słoneczną w celu twojej korzyści . Dry pozornie ubrania .
    Może byćrównież praktyczny pomysł, natomiast no tak
    w przyszłości działa ! Zamiast z suszarką na słoneczny dzień, powiesić
    czyszczenie na zewnątrz naa sznurku do wyschnięcia.
    To być może ulżyć zaoszczędzić bezmiar na swwoich rachunków .
    Gdy koszty oraz sq footage nie dotyczą ,sun- tracking system
    paneli jest wspaniałym rozwiązaniem. Ten wariant systemu następujące ścieżki słonecznej
    na niebie . Chociaż koszty rozruchu przypuszczalnie istnieć większa
    , niż dostać się stałe , każda dodatkowa produkcja energii być może uznać
    mu się opłacać. To nie jest coś, co swobnodnie poważnie , tymczasem należy wykorzystywać z energii słonecznej ,
    to nie musi istniećpodłączony do swojej społeczności w sieci energetycznej.
    Ty tenże ssam , będzie owoo działać, zaś twoja klan w wyższym stopniu niezależne niż sąsiadów .
    To oznacza, że ​​nie będzie musiał opłacać miesięczne rachunki zasilania anymore ewentualnie umieścić w
    służbie mocy punkkt w toku przenoszenia domów. Jeśli nie możesz sobie zezwolić na
    kupno paneli słonecznych bądź najczęściej nie zamierzają sprawić
    długi okresie inwestycji , warto rozważyć o leasingu systemu solarnego .
    Towięcej niedrogi tryb , aby przebyć niż rzeczywiście nabycia całego systemu , i zapewni
    Ci zgodny idea , jeżeli jest coś, czego potrzebujesz do dmu na stałe.
    Opisz dokładnie, jak dużo energii jest dozwolone korzystać spośród każdego dnia.
    Przed dokonaniem konwersji aż do enefgii słonecznej , owo ważne ,
    iż masz wielgachny hołd ilości energiii , iż konkretnego domu
    ewentualnie biura korzysta . Te szczegóły są ważne
    w wyborze odpowiedniego rozmiaru systemu słonecznego technologii .
    Należy sądzić o rachunkach za energię , albowiem w ciągu roku koszty się w zależności od momentu sezonu.
    Nie należy używać życia starszaych wersji paneli słonecznych mocy.
    Stara technologia po prostu nie jesdt faktycznie żywy podczas gdy nowsze modele .

    Starsze style dyskusja panelowa nasłoneczniony przypuhszczalnie
    byćtańsze inwestycje przede wszystkim , lecz nie zwrócą się
    również w czasie. Trudno dotrzymać kroku za tempem wzrostu innowacyjności zaś detaliści naumyślnie trudności zapas
    najnowsze a najlepsze produkty . Wybierz internetowy oparty zasobu należy poszukiwać
    , żeby panele słoneczne zasilające . By zakupów , możesz
    zanieść uczestnictwo w zakupach mniej więcej łatwiej .

    web page

    September 10, 2013 at 12:10 pm

  8. Sama impuls o pozwalając zewnętrznego dostępu do systemu a być w kolizji z
    konfiguracji sieci być może wywołać ukłucie uciążliwość , w następstwie tego aplikacja narzędzi monitorowania hostowane są minimalnie inwazyjne .
    Narzędzia te wszystkie istotne informacje kanału systemu w środku pomocą
    prostego kolektora danych zainstalowanego do wewnątrz zapory.
    Bezpieczeństwo jest oczywiścieniezwykle istotne ważność w celu żadnej wymiany danych biznesowych w swoich systemach
    . Aplikacji za pomocą narzędzia do monitorowania odległych serwerów musi słuchać rygorystycznych norm
    bezpieczeństwa . W celu zapewnienia,centrum danych , w którym dane
    z monitoringu jest obsługiwany , jest zabezpieczony poprzednio przestępczością , pożaru zaś wypadków , serwery znajdują się w obiektach o wysokim poziomie bezpieczeństwa .
    Obiekty te są strzeżone dzięki pełny okres a na to samo upoważnieni załoga mogą
    w ciągu pośrednictwem bezpiecznych systemów dostępu .

    Te centra danych są badane na adekwatność z SAS 70 norm .
    Aparaty i utensylia nadzoru pomaga nie oddać ścisłą ochronę , w toku kiedy alarmy rozproszyć zagrożenie obrażeń od chwili ognia.
    To nie pełnia . Dane są szyfrowane a hasła są zamaskowane , natomiast firewall
    a SSL zapewniają zwiększoną warstwę zabezpieczeń
    . Aby uratować przejrzystość ,centrum danych rejestruje model dostępu do kont
    klientów . Backup danych natomiast centrów danych przeprowadzić zbędne zasady bezpieczeństwa .
    Łatwy w użyciu natomiast Upgrade Oprócz bezpieczeństwa ,
    oprogramowanie do monitorowania wydajności aplikacji, winien istnieć sprężysty w zakresie skalowalności oraz dostępu użytkownika .
    Katastrofy nie może oczekiwać . Możliwości dostępu
    aż do wpisów w podróży , bądź w biurze , w domu , bądź dokądkolwiek indziej ,
    jestpodstawowym wymogiem narzędzi monitorowania VMware .
    Kokpity zaskarżeniu wykresy niestandardowe oraz rozwiązywania problemów, sprawia,
    że ​​łatwiej dostępne gwoli młodszych techników , dodawanie urządzeń a generowania raportów
    są tak jak proste .

    monitoring ip

    December 13, 2013 at 4:07 pm

  9. Hello, yeah this paragraph is truly good and I have learned lot of things from it regarding blogging.

    thanks.

    Vilma

    March 8, 2014 at 7:37 am

  10. It’s going to be ending of mine day, except before ending I am
    reading this wonderful piece of writing to improve my knowledge.

  11. I see a lot of interesting content on your page.
    You have to spend a lot of time writing, i know how to save you a lot
    of time, there is a tool that creates unique, google friendly posts in couple of seconds, just search in google – k2 unlimited content

    Darwin

    July 11, 2014 at 12:53 pm

  12. I read a lot of interesting content here. Probably you spend a lot of time
    writing, i know how to save you a lot of time, there is an online tool
    that creates high quality, google friendly articles in minutes, just
    type in google – laranitas free content source

    Terri

    August 27, 2014 at 7:32 am


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Follow

Get every new post delivered to your Inbox.

%d bloggers like this: