Apache Cassandra Grundkurs

Datenabfrage und Datenänderung

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Üben Sie gemeinsam mit Andreas Gerö das Abfragen und Ändern von Daten und sehen Sie, wie sich per TTL einzelne Werte zeitgesteuert löschen lassen.
05:46

Transkript

In diesem Video üben Sie den Umgang mit Daten und erfahren, wie Sie Zellen zeitgesteuert löschen können. Wir gehen also in die CQL-Shell, dort verwenden wir den Keyspace "USE training" und erstellen zunächst eine Tabelle "CREATE TABLE personal". Dort möchten wir eine "id int" haben. Das soll dann auch der Primärschlüssel werden. Und wir möchten einen "name text" haben. Und jetzt fügen wir mal einige Personen ein und lassen uns diese zur Prüfung einmal ausgeben. "SELECT * FROM personal;". Wir sehen, alle fünf Personen sind angekommen. Jetzt wollen wir aber beispielsweise nur die ersten beiden Personen sehen, beziehungsweise überhaupt zwei Personen. "SELECT * FROM personal", können mit dem "LIMIT"-Befehl das Resultat auf zwei Ergebnisse begrenzen. Jetzt haben wir nur "Michel" und "Thomas" zurückbekommen. Was können wir in einem "SELECT" noch machen? Jetzt wollen wir uns beispielsweise die Spalte "id" ausgeben lassen. Wir wollen auch den Namen sehen, aber den wollen wir umbenennen. Den wollen wir nämlich mit großgeschriebenem N haben, und wir wollen zusätzlich sehen, wann die Namen geschrieben worden sind. Das können wir mit der "writetime"-Funktion machen. Und wir sehen hier einen Zeitstempel, wann jede einzelne Zelle geschrieben worden war. Cassandra loggt für jede Zelle eine Schreibzeit mit, also einen Zeitstempel mit. Das liegt alleine schon daran, dass bei Lesezugriffen in Kombination mit Replikas überprüft werden muss, welcher Datensatz der neueste ist, beziehungsweise, welches Datum das neueste ist. Jetzt wollen wir mal eine neue Person hinzufügen, also "INSERT INTO personal (id, name). Folgende Werte: Wir nehmen die ID "3" und da soll jetzt die "Hermine" rein. Und wenn wir das gleiche SELECT-Statement, wie gerade eben, noch einmal ausführen, fallen uns zwei Dinge auf. Wie sehen erstens, natürlich, dass die "writetime" vom Datensatz mit ID "3" sich geändert hat, wir sehen aber auch gleichzeitig, dass einfach die "Sabine" in "Hermine" umbenannt wurde. Das heißt, wir hatten hier keinen Konflikt weil die ID bereits vergeben ist, also der Primärschlüssel bereits vergeben ist, sondern, dass INSERT-Statement hat tatsächlich als UPDATE-Statement fungiert. Also, eigentlich ist das INSERT-Statement ein UPSERT-Statement, genauso wie UPDATE. Das können wir dadurch überprüfen, indem wir jetzt mal ein UPDATE-Statement durchführen. Wir möchten die Tabelle "personal" updaten, und was wir setzen möchten ist der Name. Und zwar den setzen wir auf "Hermine". Diesmal verwenden wir aber den Datensatz "WHERE id = 10", der noch gar nicht existiert. Aber das machen wir mal, und wir führen wieder SELECT aus. Und wir sehen, obwohl wir eigentlich ein UPDATE-Statement geschrieben haben, wurde tatsächlich ein INSERT ausgeführt. Also INSERT und UPDATE sind beide UPSERT-Statements. Jetzt lassen Sie uns doch mal die Datensätze mit der ID "1", "2", "3" löschen. Das heißt, wir schreiben "DELETE FROM personal" und zwar "WHERE id IN () -- mit der Klammer ist der Operator, um eine Menge anzugeben, wo die ID also "id IN (1, 2, 3)" ist. Und wenn wir noch einmal SELECT ausführen sehen wir, "1", "2" und "3" sind aus der Tabelle verschwunden. Als nächstes wollen wir den "Michel" umbenennen. Wir möchten aber, dass diese Änderung nicht lange sichtbar ist. Wir wollen, dass sie nur 20 Sekunden lang sichtbar ist. Was können wir da also machen? Da gibt es einen Mechanismus, den Cassandra von Hause aus schon mitbringt. Wir können jetzt nämlich schreiben: "UPDATE personal USING TTL", also USING TIME TO LIVE, in Sekunden, 20 Sekunden, und was wir tun wollen, ist den Namen setzen: "SET name = Schnell Weg", und zwar an der Stelle, "WHERE id = 5;". Einmal ausführen, und das Ganze wollen wir jetzt schnell überprüfen, indem wir: "SELECT id, name," und jetzt die eingebaute Funkion "ttl(name) FROM personal". Und wir sehen "Schnell Weg" ist tatsächlich an der Stelle mit ID "5", das heißt, "Michel" ist nicht mehr da, und wir sehen, jetzt auch mit der neuen Spalte TTL, wie lange die Restlaufzeit von diesem Wert noch ist. Wenn wir jetzt SELECT noch einmal durchführen: und wir sehen, "Schnell Weg" wurde tatsächlich gelöscht, und die TTLs wurden alle auf "NULL" resetet. In diesem Video haben Sie gesehen, wie Sie Spalten umbenennen können, Ergebnisse vom SELECT-Statement eingrenzen können, und dass ein INSERT-Statement wie ein UPDATE fungieren kann, beziehungsweise dass beide Statements ein UPSERT sind. Sie wissen außerdem, dass Sie eine TIME TO LIVE auf einzelne Zellen setzen können, um so ihren Inhalt automatisch zu löschen.

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!