Am 14. September 2017 haben wir eine überarbeitete Fassung unserer Datenschutzrichtlinie veröffentlicht. Wenn Sie video2brain.com weiterhin nutzen, erklären Sie sich mit diesem überarbeiteten Dokument einverstanden. Bitte lesen Sie es deshalb sorgfältig durch.

Apache Cassandra Grundkurs

Materialized Views

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Lassen Sie sich von Andreas Gerö zeigen, wie Sie "materialized Views" einsetzen können, um Optimierungen an der Performance Ihrer Abfragen durchführen zu können.
05:40

Transkript

Sekundäre Indizes können das Filtern auf Spalten, die sich nicht im Primärschlüssel befinden, beschleunigen. Sehen Sie in diesem Video, wie Sie Materialized Views einsetzen können, um Ihre Anfragen auf andere Art und Weise zu beschleunigen. Indizes haben beispielsweise bei Spalten mit hoher Kardinalität ihre Schwächen. Des Weiteren werden sie verteilt gespeichert, was zu hohem Kommunikationsaufwand führen kann. Eine Materialized View ist eine vorkonfigurierte Ansicht auf eine Tabelle. Ein Sekundärindex wird zwar intern auch als Tabelle gespeichert, aber im Gegensatz zu Materialized View oder zur regulär angelegten Tabelle, werden dessen Partitionen nicht mit Hilfe des Partitioners über das Clusters verteilt, sondern lokal bei den Quelldaten gehalten. Man kann einen neuen Primärschlüssel definieren, indem man weitere Spalten dazunimmt, muss man aber mindestens die Spalten aus der Quelltabelle verwenden, damit keine Aggregationen entstehen. Materialized Views werden von der Datenbank verwaltet und synchron gehalten. Das heißt, sie müssen nur ein Mal definiert werden. Die Erhaltung der Konsistenz ist dabei relativ günstig. Intern werden Materialized Views über Batches synchronisiert. Sehen wir uns ein Mal Materialized Views in der CQL-Shell an. Dazu erstellen wir uns eine Tabelle: "CREATE TABLE transaktionen" Diese Tabelle soll Transaktionen in einem Geschäft darstellen. Wir verwenden eine Transaktions-ID vom Typ "timeuuid". Da ist also auch die Zeit mit reincodiert. Wir brauchen eine Artikelnummer, um zu wissen, was wir verkauft haben, vom Typ "int". Wir wollen eine Filialnummer definieren. Unser Geschäft ist natürlich so groß, dass wir verschiedene Filialen haben. Wir brauchen außerdem eine Anzahl. Also, wie viele Artikel wir von einem bestimmten Typ verkauft haben und den Preis, den wir eingenommen haben. Schließlich müssen wir noch einen Primary Key definieren. Primary Key ist in diesem Fall die ID und die Tabelle noch abschließen. Perfekt. Jetzt können wir einige Transaktionen einfügen, die habe ich hier schon vorbereitet. Wir haben hier fünf Transaktionen. Wir haben entweder einen oder zwei Artikel verkauft. Artikelnummer 1001 oder 1000 und wir haben die Filialen 460 und 520. Unser Ziel ist es, anhand dieser Tabelle herauszufinden, wie viel wir heute in Filiale 460 verkauft haben, Also, was sind die Einnahmen heute in Filiale 460. Das heißt, wir müssen zunächst auf die Filialnummer filtern, die nicht Teil des Primärschlüssels unserer Tabelle ist. Wir können uns dazu also eine Materialized View erstellen: "CREATE MATERIALIZED VIEW". Die nennen wir: "transaktionen_by_filiale". Und wir benötigen für unser Vorhaben erst einmal nur die Filialnummer. Auf die möchten wir dann filtern können. Die ID der Transaktion und den entsprechenden Preis. Die Informationen nehmen wir aus der Tabelle "Transaktionen" und wir stellen folgende Bedingungen dafür auf: Die Filialnummer soll nicht "NULL" sein, sonst kriegen wir ein Problem mit dem Primärschlüssel und das gleiche gilt auch für die ID: "id IS NOT NULL". Außerdem müssen wir einen Primärschlüssel definieren. Primary Key ist in diesem Fall zusammengesetzt aus der Filialnummer und aus der Transaktions-ID. Jetzt können wir uns das Datum der Transaktion zeigen lassen. Das können wir aus der ID berechnen. Das ist ja eine "timeuuid". Und wir möchten auch den Preis sehen und zwar "FROM" unserer neuen Materialized View, "transaktionen_by_filiale". Und das möchten wir, wie vorhin angekündigt nur an der Stelle, an der "filial_nr = 460" ist. Und perfekt. Alles, wie erwartet. Wir sehen die drei Transaktionen, die in der Filialnummer 460 stattgefunden haben. Und jetzt können wir noch den letzten Schritt gehen und uns die Summe anzeigen lassen. Dazu können wir das Statement von vorhin nehmen. Wir wollen jetzt aber sehen: "sum(preis)". Ein Mal abschicken und wir sehen, wir haben heute 1050 Euro eingenommen in der Filiale 460. Jetzt können wir noch aufräumen. "DROP MATERIALIZED VIEW transaktionen_by_filiale;" und "DROP TABLE transaktionen;" Sie haben gesehen, wie Sie eine Materialized View erstellen, um eine performante Filterung auf eine Spalte zu ermöglichen, die sich nicht im Primärschlüssel der Quelltabelle befindet. Sie haben gelernt, dass Sie mit Materialized Views Performanceprobleme von Indizes auf Kosten von Speicherplatz optimieren können und wissen nun, dass sich Cassandra um die Synchronisierung von Materialized Views kümmert.

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!