Unsere Datenschutzrichtlinie wird in Kürze aktualisiert. Bitte sehen Sie sich die Vorschau an.

Apache Cassandra Grundkurs

Counters

Testen Sie unsere 2016 Kurse

10 Tage kostenlos!

Jetzt testen Alle Abonnements anzeigen
Sehen Sie, wie Sie mit Counters parallelen Zugriff auf Zählvariablen realisieren können, der garantiert zu keiner Race Condition führt.
03:39

Transkript

Das Addieren und Subtrahieren auf Zellen, die Zahlen enthalten, ist in einem verteilten System bei parallelem Zugriff nicht ohne weiteres möglich. Es kann nicht garantiert werden, dass das erwartete Ergebnis eintritt, wenn mehrere Clients gleichzeitig auf die Zelle zugreifen. Cassandra definiert speziell für diesen Fall einen Counter, also einen Zähler-Datentyp. Das ist ein vorzeichenbehafteter 64-Bit-Integer, auf den nicht direkt zugegriffen wird. Der Wert wird also nicht mit "=" gesetzt. Er unterstützt Addition und Subtraktion und die Besonderheit dabei ist, dass er synchronisiert ist. Cassandra stellt also auch bei parallelen Zugriffen sicher, dass die Additionen und Subtraktionen auf diesen Zellen keiner "Race Condition" unterliegen. Ein Counter kann kein Primärschlüssel sein, andererseits darf in einer Tabelle, in der Counters verwendet werden, kein anderer Datentyp außerhalb des Schlüssels verwendet werden. Des Weiteren kann bei einem Update nicht manuell der Timestamp oder eine "Time to Live" gesetzt werden. Sehen wir uns einmal die Syntax für Counter an. Dazu gehen wir in die "cqlsh" auf der lokalen Node in den Keyspace "training" und dort legen wir eine neue Tabelle an: "CREATE TABLE" namens "kunden" damit wollen wir die Anzahl der Kunden in unserer Filiale messen. Das heißt, wir brauchen eine Spalte "filiale", das wird die Filialnummer sein als Primärschlüssel und unseren Counter, die "kunden_zahl" vom Typ "counter". Das können wir jetzt abschließen, da wir, wie gerade erwähnt, Counter nicht direkt manuell setzen dürfen, sondern formal gesehen, nur updaten dürfen, kommt auch hier schon die Besonderheit. Wenn wir jetzt einen Datensatz einfügen möchten, müssen wir ein UPDATE-Statement durchführen und zwar ein "UPDATE" auf "kunden" und was wir jetzt tun wollen, ist, den Counter zu modifizieren, indem wir "kunden_zahl" setzen, mit "kunden_zahl = kunden_zahl +2" beispielsweise. Das heißt, eine Zeile wird mit einem Counter gleich null initialisiert. Was wir mit dieser Zeile tun, ist, den Counter gleich mal auf zwei zu setzen. Und zwar müssen wir hier noch eine Filiale angeben, beispielsweise die Filialnummer 20. Einmal ausführen und jetzt können wir uns einmal ansehen, was wir hier gerade getan haben: "SELECT * FROM kunden". Wir haben für die Filiale 20 die "kunden_zahl" auf zwei gesetzt, Was wir jetzt tun können, ist, diesen Counter noch einmal um zwei zu inkrementieren Wir haben gerade noch zwei Kunden in unserer Filiale gesichtet. Jetzt können wir wieder "SELECT * FROM kunden" durchführen und wir sehen, die "kunden_zahl" wurde tatsächlich um zwei erhöht. In diesem Video haben Sie gesehen, wie Sie Counters einsetzen können, um durch Cassandra synchronisierte Zugriffe auf Zählvariablen umzusetzen. Sie wissen nun, dass Sie den Wert eines Counters nicht selber setzen können, sondern Cassandra nur die Änderung am Wert mitteilen können.

Apache Cassandra Grundkurs

Lernen Sie, wie Sie Apache Cassandra als hoch verfügbare und skalierbare Datenbank einsetzen können.

2 Std. 11 min (26 Videos)
Derzeit sind keine Feedbacks vorhanden...
 
Exklusiv für Abo-Kunden
Erscheinungsdatum:24.02.2017

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!