Wide-Column Datenmodell nach BigTable

Ähnliche Dokumente
BigTable Else

Big Data Management Thema 14: Cassandra

Cassandra Query Language (CQL)

NoSQL Datenbanken am Beispiel von HBase. Daniel Georg

NoSQL Deep Dive mit Cassandra. Kai Spichale

NoSQL. Einblick in die Welt nicht-relationaler Datenbanken. Christoph Föhrdes. UnFUG, SS

Weather forecast in Accra

FEBE Die Frontend-Backend-Lösung für Excel

Google's BigTable: Ein verteiltes Speichersystem für strukturierte Daten. von Florian Eiteljörge

Accelerating Information Technology Innovation

Wide Column Stores. Felix Bruckner Mannheim,

Magic Figures. We note that in the example magic square the numbers 1 9 are used. All three rows (columns) have equal sum, called the magic number.

Apache HBase. A BigTable Column Store on top of Hadoop

Transaktionen in Praxis. Dr. Karsten Tolle Vorl

Isolationsstufen für Transaktionen. Dr. Karsten Tolle

Stefan de Lorenzo Sommer Semester 2015

Wide column-stores für Architekten

Rein relationale DB in Prod? Datenbanken in produktiven Einsatz? SQL + NoSQL DB in Prod? (MongoDB, Redis, CouchDB, Cassandra)

Level 2 German, 2013

Level 2 German, 2015

Algorithmen und Datenstrukturen Musterlösung 5

Change log - Version history English: Page 4-5

Transaktionen in Praxis. Dr. Karsten Tolle Vorl

Skalierbare Webanwendungen

SELF-STUDY DIARY (or Lerntagebuch) GER102

Algorithmen. Consistent Hashing Bloom Filter MapReduce. Distributed Hash Tables. Einführung 1

Informatik II, SS 2018

Programmier-Befehle - Woche 10

Verteilte Systeme: Web Services

RavenDB, schnell und skalierbar

NoSQL für Anwendungen

Schneller als Hadoop?

Exercise (Part II) Anastasia Mochalova, Lehrstuhl für ABWL und Wirtschaftsinformatik, Kath. Universität Eichstätt-Ingolstadt 1

3 Query Language (QL) Einfachste Abfrage Ordnen Gruppieren... 7

Level 1 German, 2013

Level 1 German, 2012

p^db=`oj===pìééçêíáåñçêã~íáçå=

SODA. Die Datenbank als Document Store. Rainer Willems. Master Principal Sales Consultant Oracle Deutschland B.V. & Co. KG

Context-adaptation based on Ontologies and Spreading Activation

Informatik II Übung 7 Gruppe 7

Snom 3xx/7xx Serie. Manuelle Neukonfiguration. Dokumentenversion 1.0

Level 1 German, 2012

MySQL Cluster und MySQL Proxy

Level 2 German, 2016

Web-basierte Geoinformation im Planungsprozess , VU, 2013W; TU Wien, IFIP

Eclipse und EclipseLink

Zu + Infinitiv Constructions

Level 1 German, 2014

Fachübersetzen - Ein Lehrbuch für Theorie und Praxis

ZWISCHEN TRADITION UND REBELLION - FRAUENBILDER IM AKTUELLEN BOLLYWOODFILM (GERMAN EDITION) BY CHRISTINE STöCKEL

E-BOOK ANLEITUNG/PATTERN. Donut. Simone Helmig, Dahlienweg 56, Gütersloh

Nameserver check New release 2005

DAS ZUFRIEDENE GEHIRN: FREI VON DEPRESSIONEN, TRAUMATA, ADHS, SUCHT UND ANGST. MIT DER BRAIN-STATE-TECHNOLOGIE DAS LEBEN AUSBALANCIEREN (GE

Unified-E Standard WebHttp Adapter

Programmier-Befehle - Woche 08

Kapitel zu bearbeitende Aufgaben: 6.1 bis :

J RG IMMENDORFF STANDORT F R KRITIK MALEREI UND INSPIRATION ERSCHEINT ZUR AUSSTELLUNG IM MUSEUM LU

PostgreSQL im praktischen Einsatz. Stefan Schumacher

Informatik 1 Kurzprüfung 2 LÖSUNG

VORANSICHT. Halloween zählt zu den beliebtesten. A spooky and special holiday Eine Lerntheke zu Halloween auf zwei Niveaus (Klassen 8/9)

Fast Analytics on Fast Data

SETUP TOOL. Bedienungsanleitung User s Manual

Erweiterung des verteilten Datenspeichersystems Cassandra um eine Indexunterstützung

Symbio system requirements. Version 5.1

SAMPLE EXAMINATION BOOKLET

Technische Information

The process runs automatically and the user is guided through it. Data acquisition and the evaluation are done automatically.

Überblick und Vergleich von NoSQL. Datenbanksystemen

PeakTech Zeitprogramm erstellen über Excel - Beispiel / Timed programs with Excel Example

Modern Foreign Languages

39 Object Request Brokers. 40 Components of an ORB Stubs and Skeletons Stub

CNC ZUR STEUERUNG VON WERKZEUGMASCHINEN (GERMAN EDITION) BY TIM ROHR

B I N G O DIE SCHULE. Bingo card: Classroom Items abcteach.com

OO Programmiersprache vs relationales Model. DBIS/Dr. Karsten Tolle

Finite Difference Method (FDM)

Rätsel 1: Buchstabensalat klassisch, 5 5, A C (10 Punkte) Puzzle 1: Standard As Easy As, 5 5, A C (10 points)

Wortstellung. Rule 1. The verb is the second unit of language in a sentence. The first unit of language in a sentence can be:

PONS DIE DREI??? FRAGEZEICHEN, ARCTIC ADVENTURE: ENGLISCH LERNEN MIT JUSTUS, PETER UND BOB

NoSQL mit Postgres 15. Juni 2015

Datenstrukturen. Ziele

C++ kurz & gut (German Edition)

Ziffer 3 bis 12 codieren Händler und Ware.

Schnellübersichten. SQL Grundlagen und Datenbankdesign

Java Forum Stuttgart 2013 twitter.com/kspichale spichale.blogspot.de

Selfhosting: Server aufsetzen und betreiben (German Edition)

25 teams will compete in the ECSG Ghent 2017 Senior Class Badminton.

Hochschule für Technik, Wirtschaft und Kultur Leipzig Fakultät Informatik, Mathematik und Naturwissenschaften. Abstract. Wide Column Stores: Cassandra

schnelle Herringbone-Kette

Querying Data with Transact-SQL MOC 20761

GEAR INDICATOR FOR DUCATI ONLY GI PNP D

Die UN-Kinderrechtskonvention. Darstellung der Bedeutung (German Edition)

Level 1 German, 2016

Die Datenmanipulationssprache SQL

PONS DIE DREI??? FRAGEZEICHEN, ARCTIC ADVENTURE: ENGLISCH LERNEN MIT JUSTUS, PETER UND BOB

Diabetes zu heilen natürlich: German Edition( Best Seller)

German translation: technology

RECORDING TRANSCRIPT LEVEL 1 GERMAN (90883), 2016

CHECK-IN-ANLEITUNG MIT RESERVIERUNG. Check-in-instruction with reservation

Transkript:

Wide-Column Datenmodell nach BigTable Cassandra

Gliederung Wide-Column Datenmodell nach BigTable Einführung Datenmodell nach BigTable Rows Columns Timestamps Thrift RPC API Fazit Einführung Wichtigsten Methoden Consistency Level Beispiel in Java Gliederung Seite 2

Einführung Seit 2004 in der Entwicklung von Google Ab 2005 bei Google im produktiven Einsatz Paper zu BigTable wurde 2006 veröffentlicht Wird unter anderem bei Google Maps, Google Book Search, YouTube und Gmail eingesetzt Ziele der Entwicklung waren möglichst großer Einsatzbereich, Skalierbarkeit, hohe Performance und hohe Verfügbarkeit Wide-Column Datenmodell Seite 3

Datenmodell nach BigTable Eine BigTable Cluster ist eine Menge von Knoten, die die BigTable Software benutzen Jeder cluster bedient dabei eine Menge von tables Eine table ist eine dünnbesetzte, verteilte, persistente, multidimensionale und sortierte Map Jede Map wird durch Row-Key, Column-Key und Zeitstempel indiziert und bietet damit den Zugriff auf einzelne Cells Jeder Eintrag ist ein nicht interpretiertes Feld von Bytes Wide-Column Datenmodell Seite 4

Rows Row-Keys können beliebige Strings bis zur Größe von 64KB sein (10-100Byte Standard) Jede Lese- und Schreiboperation auf einer Row ist atomar Row-Bereiche werden automatisch zu sogenannten Tablets partioniert Tablets dienen als Einheit der Verteilung und des Lastenausgleichs Abfragen über kleine Row-Bereiche effizienter, da nur wenige Knoten involviert Rows werden nach lexikographischer Ordnung der Row-Keys gespeichert Kann ausgenutzt werden um Daten lokal zu gruppieren Für die Google WebTable werden als Row-Keys die URLs mit invertierter Reihenfolge des Hostnamens benutzt maps.google.com/index.html wird zu com.google.maps/index.html Wide-Column Datenmodell Seite 5

Columns Mengen von Column-Keys werden zu Column-Families gruppiert Bevor ein Column-Key benutzt werden kann, muss er einer Column-Family angehören Basiseinheit der Zugriffkontrolle und des Memoryaccountings Es sollten nicht zu viele Column-Familien erstellt werden(in den Hunderten) Ein Column-Key setzt sich aus family:qualifier zusammen Alle Daten innerhalb einer Column-Family sollten ähnlich sein, da sie zusammen komprimiert werden Mengen von Column-Families können in Cassandra zusätzlich zu Super-Column-Families gruppiert werden Wide-Column Datenmodell Seite 6

Timestamps Mehrere Versionen der selben Daten können mit unterschiedlichen Zeitstempeln gespeichert werden Zeitstempel sind 64bit-Integer Können automatisch von BigTable gesetzt werden Real Time in Millisekunden Clients können sie auch manuell erstellen Anwendungen die Kollisionen verhindern müssen, sind gezwungen selbst eindeutige Timestamps zu erstellen Automatische Garbage-Collection auf Basis der Timestamps möglich Behalte letzte n Versionen Behalte alle Versionen jünger als bestimmter Timestamp Wide-Column Datenmodell Seite 7

Wide-Column Datenmodell Kein relationales Datenmodell Keine Joins von Tables möglich Queries über Row-Key Denormalisierung muss deswegen Queryspezifisch eingeführt werden Redundanz zur Readperformancesteigerung gewollt Wide-Column Datenmodell Seite 8

Thrift RPC API - Einführung In Cassandra Version 0.8(08.01.2011) durch die Cassandra Query Language(CQL) ergänzt und später ersetzt Die Benutzung wird nicht mehr empfohlen, sowohl für Cassandra 1.2 als auch Cassandra 2.x Basiert sehr stark auf Apache Thrift einer Schnittstellenbeschreibungssprache Wird zum definieren und erstellen von Services für zahlreiche Sprachen eingesetzt Ist ein Remote Procedure Call Framework und wurde bei Facebook entwickelt Ermöglicht die Ansprache von Cassandra unter anderem in PHP, Java, Python, Perl, C# und C++ Thrift RPC API Seite 9

Wichtigsten Methoden Get ColumnOrSuperColumn get(binary key, ColumnPath column_path, Cons istencylevel consistency_level Zum holen einzelner werte Get_slice list<columnorsupercolumn> get_slice(binary key, ColumnParent colu mn_parent, SlicePredicate predicate, ConsistencyLevel consistency_lev el) Zum holen eines Bereichwertes Insert insert(binary key, ColumnParent column_parent, Column column, Consi stencylevel consistency_level) Zum einfügen eines neuen Wertes Remove remove(binary key, ColumnPath column_path, i64 timestamp, Consiste ncylevel consistency_level) Zum entfernen eines Wertes Thrift RPC API Seite 10

Wichtigsten Methoden Truncate truncate(string column_family) Entfernt alle Rows einer Column-Family Set_keyspace void set_keyspace(string keyspace) Setzt den keyspace(vergleichbar Datenbank) auf dem gearbeitet werden soll system_add_column_family string system_add_column_family(cfdef cf_def) Fügt eine neue Column-Family in den Keyspace ein system_drop_column_family string system_drop_column_family(columnfamily column_family) Entfernt eine Column-Family aus dem Keyspace Thrift RPC API Seite 11

Consistency Level Muss explizit bei jeder Transaktion angeben werden Write Any Ensure that the write has been written to at least 1 node, including HintedHandoff recipients. ONE Ensure that the write has been written to at least 1 replica's commit log and memory table before responding to the client. TWO Ensure that the write has been written to at least 2 replica's before responding to the client. THREE Ensure that the write has been written to at least 3 replica's before responding to the client. QUORUM Ensure that the write has been written to N / 2 + 1 replicas before responding to the client. LOCAL_QUORUM Ensure that the write has been written to <ReplicationFactor> / 2 + 1 nodes, within the local datacenter (requires NetworkTopologyStrategy) EACH_QUORUM Ensure that the write has been written to <ReplicationFactor> / 2 + 1 nodes in each datacenter (requires NetworkTopologyStrategy) Thrift ALL RPC API Seite 12

Consistency Level Read ANY Not supported. You probably want ONE instead. ONE Will return the record returned by the first replica to respond. A consistency check is always done in a background thread to fix any consistency issues when ConsistencyLevel.ONE is used. This means subsequent calls will have correct data even if the initial read gets an older value. (This is called ReadRepair) TWO Will query 2 replicas and return the record with the most recent timestamp. Again, the remaining replicas will be checked in the background. THREE Will query 3 replicas and return the record with the most recent timestamp. QUORUM Will query all replicas and return the record with the most recent timestamp once it has at least a majority of replicas (N / 2 + 1) reported. Again, the remaining replicas will be checked in the background. LOCAL_QUORUM Returns the record with the most recent timestamp once a majority of replicas within the local datacenter have replied. EACH_QUORUM Returns the record with the most recent timestamp once a majority of replicas within each datacenter have replied. ALL Will query all replicas and return the record with the most recent timestamp once all replicas have replied. Any unresponsive replicas will fail the operation. Thrift RPC API Seite 13

Beispiel in Java - Vorbereitung Thrift RPC API Seite 14

Beispiel in Java - Insert Thrift RPC API Seite 15

Beispiel in Java - Read Thrift RPC API Seite 16

Thrift RPC API Seite 17

Fazit Das Wide-Column Model ermöglicht sehr breite Einsatzmöglichkeiten, hohe Performance und sehr gute Skalierbarkeit Dünnbesetzte, verteilte, persistente, multidimensionale und sortierte Map Kein relationales Datenmodell Row-Keys, Column-Key und Timestamps indizieren die Daten Redundanz und Denormalisierung erwünscht Thrift RPC API ist veraltet und die Nutzung wird nicht mehr empfohlen Im Vergleich zu CQL sehr umständliche Nutzung Fazit Seite 18