Cassandra Query Language (CQL)



Ähnliche Dokumente
Datenbanken SQL Einführung Datenbank in MySQL einrichten mit PhpMyAdmin

Mengenvergleiche: Alle Konten außer das, mit dem größten Saldo.

SQL für Trolle. mag.e. Dienstag, Qt-Seminar

DATENBANKEN SQL UND SQLITE VON MELANIE SCHLIEBENER

Apache HBase. A BigTable Column Store on top of Hadoop

SQL und MySQL. Kristian Köhntopp

7. Datenbank-Zugriff. Vorlesung und Übung Dr. Peter Pfahler Institut für Informatik Universität Paderborn. Zum Beispiel aus PHP-Skripten: Client 7-2

IV. Datenbankmanagement

SQL structured query language

Informatik 12 Datenbanken SQL-Einführung

Labor 3 - Datenbank mit MySQL

SQL (Structured Query Language) Schemata Datentypen

Übung Datenbanken in der Praxis. Datenmodifikation mit SQL

desk.modul : WaWi- Export

Oracle: Abstrakte Datentypen:

Dynamisches SQL. Folien zum Datenbankpraktikum Wintersemester 2009/10 LMU München

Datenbanktechnologie mit praktischen Übungen in MySQL und PHP

Einführung in SQL. 1. Grundlagen SQL. Structured Query Language. Viele Dialekte. Unterteilung: i. DDL (Data Definition Language)

Universität Augsburg, Institut für Informatik WS 2006/2007 Dr. W.-T. Balke 27. Nov M. Endres, A. Huhn, T. Preisinger Lösungsblatt 5

Einführung in SQL. Sprachumfang: Indizes. Datensätzen. Zugriffsrechten

Nachtrag: Farben. Farbblindheit. (Light und Bartlein 2004)

DBS ::: SERIE 5. Join Right Semi- Join Left Semi-Join Projektion Selektion Fremdschlüssel. Kreuzprodukt

Universität Duisburg-Essen Informationssysteme Prof. Dr.-Ing. N. Fuhr. Praktikum Datenbanken / DB2 Woche 8: Trigger, SQL-PL

SQL Tutorial. SQL - Tutorial SS 06. Hubert Baumgartner. INSO - Industrial Software

Fachhochschule Kaiserslautern Labor Datenbanken mit MySQL SS2006 Versuch 1

Übersicht über Datenbanken

MySQL: Einfaches Rechnen.

Urs Meier Art der Info Technical Info (Februar 2002) Aus unserer Projekterfahrung und Forschung

Java Einführung Collections

SQL. Fortgeschrittene Konzepte Auszug

SQL: statische Integrität

Die bisher bereits bekannten Aggregatsfunktionen MIN, MAX, SUM, AVG, COUNT, VARIANCE und STDDEV wurden um FIRST und LAST erweitert.

Kapitel 33. Der xml-datentyp. In diesem Kapitel: Der xml-datentyp 996 Abfragen aus xml-datentypen 1001 XML-Indizierung 1017 Zusammenfassung 1023

Kurzanleitung für Umsteiger von DataEase.

Üben von DDL und DML. Ergebnis:

Beispiel 1: Filmdatenbank

OPERATIONEN AUF EINER DATENBANK

XAMPP-Systeme. Teil 3: My SQL. PGP II/05 MySQL

Dipl. Inf. Dipl. Math. Y. Orkunoglu Datum:

Reservierungs-Assistent

Whitepaper. Produkt: combit Relationship Manager. Datensatzhistorie mit dem SQL Server 2000 und combit GmbH Untere Laube Konstanz

MySQL Installation. AnPr

SQL Performance - Tips Do's & Don'ts

Indexing und Performance Tuning

Fakultät für Informatik & Wirtschaftsinformatik DB & IS II - SS Metadaten

MIN oder MAX Bildung per B*Tree Index Hint

Fachhochschule Deggendorf Platzziffer:...

MySQL, phpmyadmin & SQL. Kurzübersicht

Würfelt man dabei je genau 10 - mal eine 1, 2, 3, 4, 5 und 6, so beträgt die Anzahl. der verschiedenen Reihenfolgen, in denen man dies tun kann, 60!.

-Inhalte an cobra übergeben

Unterabfragen (Subqueries)

HP Software Patch- und Version-Notification

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom b

Hochschule Karlsruhe Technik und Wirtschaft Anhänge: Fakultät für Informatik und Wirtschaftsinformatik SS 2013 Prof. Schmidt.

DB2 Codepage Umstellung

PostgreSQL unter Debian Linux

Oracle 9i Einführung Performance Tuning

Was ist PDF? Portable Document Format, von Adobe Systems entwickelt Multiplattformfähigkeit,

OP-LOG

PostgreSQL in großen Installationen

Carl-Engler-Schule Karlsruhe Datenbank 1 (5)

Ein Ausflug zu ACCESS

Sructred Query Language

5.3 Datenänderung/-zugriff mit SQL (DML)

7. Übung - Datenbanken

Steffen Hofmann Freie Universität Berlin ZEDAT Identity and Customer Management (ICM) Aktueller Stand Shibboleth IdP3

seit Java 1.1 Bestandteil der API: packages java.sql, javax.sql

Bedienungsanleitung. Stand: Copyright 2011 by GEVITAS GmbH

Die Rückgabe kann über folgende, von uns getestete Programme / Apps vorgenommen werden: Adobe Digital Editions Sony Reader for PC Bluefire Reader

Relationales Modell: SQL-DDL. SQL als Definitionssprache. 7. Datenbankdefinitionssprachen. Anforderungen an eine relationale DDL

SQL. strukturierte Datenbankabfragesprache eine Datenbanksprache zur. Structured Query Language:

PostgreSQL und memcached

Datumsangaben, enthält mindestens Jahr, Monat, Tag

Übungsblatt 8- Lösungsvorschlag

Mobile-Szenario in der Integrationskomponente einrichten

Options- und Freitext-Modul Update-Anleitung

Synchronisation von redundanten Datenbeständen

Arbeiten mit einem lokalen PostgreSQL-Server

Michaela Weiss 01. April Lerneinheit 4: Relationale Datenbanken am Beispiel von MySQL

Aufgaben zu XPath und XQuery

Benutzerhandbuch - Elterliche Kontrolle

Uni Duisburg-Essen Fachgebiet Informationssysteme Prof. Dr. N. Fuhr

SEMINAR Modifikation für die Nutzung des Community Builders

Datenbanken für Online Untersuchungen

Data Quality Management: Abgleich großer, redundanter Datenmengen

Installations- und Bedienungsanleitung für Macro Excel_Table Version 10

Aktuelle Entwicklungen

Kleines Handbuch zur Fotogalerie der Pixel AG

Whitepaper. Produkt: combit Relationship Manager / address manager. Integration der Ansicht "Adressen" in eigene Solution

Updatehinweise für die Version forma 5.5.5

Interaktive Webseiten mit PHP und MySQL

Wichtige Hinweise zu den neuen Orientierungshilfen der Architekten-/Objektplanerverträge

ORM & OLAP. Object-oriented Enterprise Application Programming Model for In-Memory Databases. Sebastian Oergel

Oracle APEX Installer

Referenzielle Integrität SQL

Outlook. sysplus.ch outlook - mail-grundlagen Seite 1/8. Mail-Grundlagen. Posteingang

Programmieren für mobile Endgeräte SS 2013/2014. Dozenten: Patrick Förster, Michael Hasseler

Transkript:

Cassandra Query Language (CQL) Seminar: NoSQL Wintersemester 2013/2014 Cassandra Zwischenpräsentation 1

Gliederung Basic facts Datentypen DDL/DML ähnlich zu SQL Besonderheiten

Basic facts CQL kurz für Cassandra Query Language Ähnliche Aussprache zu SQL (Missverständnisse möglich) Aktuell CQL 3 Ersetzt Apache Thrift API Almost SQL : SQL-konform, wo es möglich ist Denormalized SQL : Denormalisierung hat Auswirkung auf die Art der Anfragen Seite 1 / 16

Datentypen ascii, bigint, blob, boolean, counter, double, map,set,list uuid Universally Unique Identifier (Identifier Standard) [Version Time Raw bytes] practically unique Werte in verteilten Systemen Beispielwert: 550e8400-e29b-41d4-a716-446655440000 timeuuid (Type-1 uuid) Uuid Type-1 [Time Raw bytes], nützlich für zeitliche Sortierungen Falls mehrere Timestamps gleich sein können, nützliche Funktionen: dateof() Seite 2 / 16

Collection types (Datentypen) Set: Sammlung von unique values in ihrer natürlichen Sortierreihenfolge CREATE TABLE users ( emails set<text> ); INSERT INTO users (, emails) VALUES (, { user1@gmx.de, user2@gmx.de }); UPDATE users SET emails = emails + ( user1@gmx.de ) WHERE UPDATE users SET emails = emails - ( user1@gmx.de ) WHERE Seite 3 / 16

Collection types (Datentypen) List: Mehrfachwerte, Sortierreihenfolge nach Listenindex CREATE TABLE users ( places list<text> ); UPDATE users SET places = places + [ city3 ] WHERE INSERT INTO users (, places) VALUES (, [ city1, city2 ]); UPDATE users SET places = [ city3 ] + places WHERE UPDATE users SET places[2] = [ city3 ] WHERE Seite 4 / 16

Collection types (Datentypen) Map: Key-Value Pairs, intern als Columns gespeichert CREATE TABLE users ( todo map<timestamp, text> ); INSERT INTO users (, todo) VALUES (, { 2010-08-09 10:00 : activity1, 2011-09-01 11:00 : activity2 }); UPDATE users SET todo[ 2012-01-01 01:00 ] = activity3 WHERE Seite 5 / 16

Keyspace (DDL) CQL Pendant zu database Auf Clustern werden Mengen von Keyspaces verwaltet Ein Cluster hat einen Keyspace / Anwendung Keyspaces werden mit einer Replikationsstrategie angelegt SimpleStrategy = ausreichend für 1 Cluster NetworkTopologyStrategy = für mehr als 1 Cluster (production use) CREATE KEYSPACE demodb WITH REPLICATION = { class : SimpleStrategy, replication_factor : 3 }); DROP KEYSPACE demodb; Seite 6 / 16

Tables (DDL) Wie in SQL: CREATE TABLE employee ( empid int, deptid int, firstname varchar, lastname varchar, PRIMARY KEY(empId, deptid) ); DROP TABLE employee; Seite 7 / 16

Alter Table (DDL) Column hinzufügen: ALTER TABLE employee ADD attr17 varchar; Datentyp einer column ändern: ALTER TABLE employee ALTER attr17 TYPE int; Column löschen (auf Rowbasis): DELETE attr17 FROM employee WHERE empid = 104; Seite 8 / 16

SELECT Wie in SQL: SELECT * FROM employee WHERE empid IN (130, 104) ORDER BY deptid DESC; Vorsicht bei * -> Wide Columns Seite 9 / 16

Insert into (DML) Wie in SQL: INSERT INTO employee (empid, deptid, firstname, lastname) VALUES (104, 15, Peter, Parker ); DELETE FROM employee WHERE empid = 104; Seite 10 / 16

Upsert INSERT INTO / UPDATE sind semantisch identisch, zunächst nur Update Beide Operationen erzeugen, wenn nicht vorhanden und ändern, wenn vorhanden Keine Fehlermeldung (Erzeugen existiert schon) bzw. (Ändern existiert nicht) Wahrscheinlich gefährlichstes Missverständnis SQL / CQL Vor einem write wird kein read gemacht (Verteilung) Empfehlung: Nutzung wie in SQL um die Intention auszudrücken INSERT INTO employee.. IF NOT EXISTS Seite 11 / 16

Denormalisierung Relationale Datenmodellierung: Nicht redundante, konsistente Daten Beliebig komplizierte, flexible queries um bestimmte Sichten zu erzeugen Indizes entsprechend anpassbar Datenmodellierung in Cassandra: Datenmodellierung den Sichten angepasst Hauptziel: Schnelle queries, d.h. 1 query to 1 node Keine joins, aggregations, eingeschränktes ORDER BY, usw.. Datenmodellierung muss all dies berücksichtigen! Seite 12 / 16

Columns Columns werden intern mit Timestamp gespeichert Sortierung der Columns ist typisch Columns enthalten oft values im columnkey, sogar valueless columns möglich! Composite columns erlauben mehrere Werte im columnkey z.b: nach dem Muster <Timeuuid Eventtype Event> SELECT FIRST 3 REVERSED timestamp200 timestamp100 FROM adventures; Seite 13 / 16

PRIMARY KEY () Statement: CREATE TABLE employee ( empid int, deptid int, PRIMARY KEY(empId, deptid)); identifiziert einen Datensatz eindeutig anhand der Kombination (empid, deptid) ABER: empid wird gleichzeitig zum PARTITION KEY -> Speicherung auf Node xy deptid und folgende columns werden zu CLUSTERING COLUMNS absteigender Prio Bedeutung des Statements: Alle rows werden auf Node für Keyspace empid geordnet nach der deptid gespeichert -> Auswahl des PRIMARY KEYS passend zu Anwendungsfall / typischen queries -> Auch ein SELECT-Statement mit attr1, attr3 ohne attr3 wird nicht funktionieren! Seite 14 / 16

Indizes Das funktioniert nicht: SELECT * FROM employee WHERE fullname= parker ; es sei denn fullname wurde explizit indiziert Standardfall: Queries nur über den Rowkey Wenn query über non-rowkey sein muss: CREATE INDEX ON employee(fullname); Erstellt einen secondary index, keinen zweiten rowkey oder ähnliches Seite 15 / 16

Time To Live Columns können eine TTL bekommen INSERT INTO employee (empid, deptid, firstname, lastname) VALUES (104, 15, Peter, Parker ) USING TTL 60; Nach 30 Sekunden die verbleibende Zeit überprüfen: SELECT TTL(empId) FROM employee WHERE ttl(empid) ------------ 30 Seite 16 / 16

Time To Live Columns können eine TTL bekommen That s it INSERT INTO employee (empid, deptid, firstname, lastname) VALUES (104, 15, Peter, Parker ) USING TTL 60; Nach 30 Sekunden die verbleibende Zeit überprüfen: SELECT TTL(empId) FROM employee WHERE ttl(empid) ------------ 30 Seite 16 / 16