Cassandra SQL Batches and Maps

Cassandra SQL Batches and Maps

  • Orchestrierung
6 Minuten Lesezeit Aktualisiert Dec 12, 2018

Auf einen Blick: Cassandra SQL Batches and Maps erklärt SQL-Befehle und Datentypen in Cassandra und betont dessen Ähnlichkeiten mit traditionellem SQL. Es behandelt die Cassandra SQL-Shell, komplexe Datentypen wie Sammlungen und Karten sowie die Verwendung von Batches für atomare Transaktionen.

  • Führt Cassandra-SQL-Shell-Befehle und Beispiele ein.
  • Erklärt komplexe Datentypen: Sammlungen, Karten und Mengen.
  • Beschreibt die Verwendung von Batchs für atomare Operationen in Anwendungen.

Es gibt zu viele SQL-Befehle und Datentypen, um alle in einem Blogbeitrag zu betrachten, daher werden wir uns hier einige anschauen.

Um die untenstehenden Beispiele zu verstehen, solltest du ein gewisses Verständnis von regulärem, also Oracle oder anderem RDBMS, SQL haben, da Cassandra SQL fast dasselbe ist. Und um mit Cassandra zu beginnen, kannst du hier lesen, was geschrieben wurde. Schau dir das an, selbst wenn du Cassandra bereits kennst und installiert hast, sodass du SQL von dort aus nutzen kannst, um eine Tabelle und einen Index einzurichten, mit dem wir hier beginnen.

Cassandra SQL Shell

Erster Schritt, um die Cassandra-SQL-Befehlszeile zu öffnen: cqlsh.

Füge unten das SQL ein. Wenn du dir diesen anderen Blogbeitrag angesehen hast, findest du hier einige Daten.

    select * from Library.book;

Hier ist eine weitere Frage.

(Beachte, dass Cassandra die Verwendung von einfachen und nicht doppelten Anführungszeichen erfordert, sonst erhält man bei der Eingabe den Fehler "keine sinnvolle Alternative.")

    select ssn from Library.patron where checkedOut contains '1234';

Sammlungen, Karten und Sets

Cassandra unterstützt komplexe Datentypen, darunter benutzerdefinierte Objekte, Sammlungen, Karten und Mengen.

Zum Beispiel. Wenn wir Folgendes eingeben:

Karten

    describe library.patron;

Wir können sehen, dass Befehle verwendet wurden, um die Tabelle zu erstellen. Unten ist eine abgekürzte Ansicht davon, da die vollständige Ansicht viele Systemadministrationsoptionen zeigt, die wir in einem anderen Beitrag betrachten werden.

Unten sehen Sie, dass die ausgecheckte Spalte eine Menge von Typtext ist. Eine Menge ist eine Sammlung eindeutiger Werte.

    CREATE TABLE library.patron (
ssn int PRIMARY KEY,
checkedout set
)

Maps speichern Werte im {key->value}-Format.

Erstelle zuerst diesen Schlüsselraum.

    CREATE KEYSPACE shopping
WITH REPLICATION = { 'class' : 'SimpleStrategy', 'replication_factor' : 3 };

Dann erstellen Sie einen Einkaufswagen für eine E-Commerce-App, bei der die gekauften Artikel eine Karte sind. Das erste Feld ist die Bestellnummer des Kunden. Das zweite ist die Kombination dessen, was sie gekauft haben und wie viel, z. B. {"Schuhe", 1}.

    CREATE TABLE shopping.cart (
customerOrder int PRIMARY KEY,
items map
);

Fügen Sie einige Daten hinzu, z. B. machen Sie einen Verkauf:

Und listen Sie es auf:

    INSERT INTO shopping.cart (customerOrder, items) 
VALUES (
  1,
 {'toys' : 12, 'socks': 5});

Und listen Sie es auf:

    select * from shopping.cart;
customerorder | items
---------------+--------------------------
1 | {'socks': 5, 'toys': 12}

Chargen

Bei einer E-Commerce-Anwendung möchtest du Batches verwenden.

Batches gewährleisten Atomizität, was RDBMS-Programmierer als referenzielle Integrität ansprechen würden. Dies stellt sicher, dass, wenn eine der SQL-Anweisungen in einem Batch einen Fehler aufweist, keine der Anweisungen angewendet wird.

Das ist zum Beispiel ein Import für eine Einkaufswagen-App. Wir würden den Bestand nur aktualisieren wollen, wenn die Verkaufstransaktion funktioniert.

Um das zu veranschaulichen: Erstellen Sie zunächst eine Inventartabelle und legen Sie einen Artikel hinein:

    CREATE TABLE shopping.inventory (
      item text PRIMARY KEY,
      quantity int
);

INSERT INTO shopping.inventory (item, quantity) VALUES ('eggs', 48);

Jetzt verkaufe 4 Eier in einer CHARGE:

    BEGIN BATCH

INSERT INTO shopping.cart (customerOrder, items) 
VALUES (
2,
{'eggs' : 4}
);

UPDATE shopping.inventory
SET quantity = 44
where item = 'eggs';

APPLY BATCH;

Diese Beiträge sind meine eigenen und spiegeln nicht unbedingt die Position, Strategien oder Meinung von BMC wider.

Mehr aus Orchestrierung

Interessieren Sie sich für mehr von BMC?

The Brief ist unsere monatliche E-Mail zum Mainframe und zur Enterprise-Orchestrierung: Recherchen, Kundenberichte, Produktnachrichten, Events.

Mit der Registrierung für dieses Angebot bestätigen Sie, dass Sie die Datenschutzrichtlinie von BMC gelesen und zugestimmt haben.

Sie haben The Brief abonniert

Das Briefing umfasst die Mainframe- und Enterprise-Orchestrierung – BMC AMI und Control-M – sowie die Analystenforschung, Kundeneinsätze und Events in beiden Bereichen.