• Keine Ergebnisse gefunden

Wide Column Stores

N/A
N/A
Protected

Academic year: 2021

Aktie "Wide Column Stores"

Copied!
32
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Wide Column Stores

Felix Bruckner

Mannheim, 15.06.2012

(2)

Agenda

• Einführung

– Motivation

– Grundlagen NoSQL

• Grundlagen Wide Column Stores

– Anwendungsfälle – Datenmodell

– Technik

– Wide Column Stores & Cloud Computing

• API & Queries

• Anwendungsbeispiel

15.06.2012 Felix Bruckner | Wide Column Stores 2

(3)

Einleitung – Motivation

• Das Datenaufkommen in allen Bereichen steigt stetig

– Web 2.0 (“User created content”) wird immer wichtiger

• Relationale Datenbanken skalieren schlecht

– Vorallem in bei hoher Schreiblast (Disk I/O)

15.06.2012 Felix Bruckner | Wide Column Stores 3

(4)

Einleitung – Motivation

• Wie geht man mit den sich ändernden Rahmenbedingungen um?

– Einsatz verteilter Datenbanken

– Auflockerung der “relationalen Denkweise”

– ACID-Konformität sekundär für einige Anwendungsgebiete:

• Beispiele: Datei-Uploads von Benutzern, Messdaten oder Logdaten

15.06.2012 Felix Bruckner | Wide Column Stores 4

(5)

NoSQL vs SQL

15.06.2012 Felix Bruckner | Wide Column Stores 6

(6)

Definition

Wide Column Store

“a sparse, distributed multi-dimensional sorted map”

Google Bigtable Paper (Kap 2: Data Model), ACM 2006

15.06.2012 Felix Bruckner | Wide Column Stores 7

(7)

Geschichte & Anwendungsfälle

BigTable 2006

AppEngine

15.06.2012 Felix Bruckner | Wide Column Stores 8

BigTable:

• Entwickelt von Google

• Beschrieben 2006 in einem Paper

• Besteht aus zwei Teilen:

• Verteiltes Dateisystem (GFS)

• Verteilte Datenbank auf GFS

• Proprietär

(8)

Geschichte & Anwendungsfälle

BigTable

2007 SimpleDB 2007 Dynamo (DFS)

15.06.2012 Felix Bruckner | Wide Column Stores 9

SimpleDB:

• Entwickelt von Amazon

• Verteilte Datenbank

• Proprietär

Dynamo:

• Verteiltes Dateisystem

• P2P-Prinzip für Ausfallsicherheit

• Hochskalierbar

• Backend für alle Amazon-Webseiten

• Seit 2012: DynamoDB verfügbar

• DFS mit Datenbank on top

• Proprietär

(9)

Geschichte & Anwendungsfälle

BigTable

2007 SimpleDB

2008 2007 Dynamo (DFS)

Cassandra:

• Entwickelt von Facebook

• Open Source seit 2008

• Vereint BigTable und Amazon Dynamo

• Vorallem für hohe Schreiblast geeignet

15.06.2012 Felix Bruckner | Wide Column Stores 10

(10)

Geschichte & Anwendungsfälle

BigTable

[1] http://en.wikipedia.org/wiki/BigTable

HyperTable 2009

Dynamo (DFS)

HBase 2008

Open Source BigTable Klone

15.06.2012 Felix Bruckner | Wide Column Stores 11

SimpleDB

(11)

Anwendungsfälle

• Speicherung sehr großer Datenmengen (> 1 Petabyte)

• Auswertung von Webstatistiken (Werbung)

• Echtzeit-Verarbeitung großer Datenmengen

• Hohe Schreiblast (> 1 Mio / Sekunde)

• Komplexe Abfragen über große Datenmengen

• Social Media Analysen

15.06.2012 Felix Bruckner | Wide Column Stores 12

(12)

Anforderungen

“[...]even if disks are failing, network routes are flapping, or data centers are being destroyed by tornados. ”

„[...]selbst wenn Festplatten versagen, Netzwerkverbindungen verrückt spielen oder Rechenzentren von Tornados zerstört werden.“

– W

ERNER

V

OGELS

,

AMAZON

.

COM

: Amazon's Dynamo

• Skalierbarkeit

• Hochverfügbarkeit

• Ausfallsicherheit

15.06.2012 Felix Bruckner | Wide Column Stores 13

(13)

Datenmodell

Row

15.06.2012 Felix Bruckner | Wide Column Stores 14

(14)

Datemodell - Beispiel

15.06.2012 Felix Bruckner | Wide Column Stores 15

(15)

Datemodell - Beispiel

15.06.2012 Felix Bruckner | Wide Column Stores 16

(16)

Datenmodell

• Zeile (Row) mit Schlüssel

• Beliebige Anzahl Spalten pro Zeile

– Spalte besteht aus: Key, Value, Timestamp

• Zeilen werden in “Column Families”

zusammengefasst

• Column Families werden in Keyspaces zusammengefasst

• Denomarlisierung relationaler Daten

• Zeilen wachsen stetig in der Breite

– Tendenz: Eher viele Spalten, dafür weniger Zeilen

15.06.2012 Felix Bruckner | Wide Column Stores 17

(17)

Aufbau (Cassandra)

• Beispiel: Cassandra

Verteiltes Dateisystem (CassandraFS)

Peer-to-Peer “Core Layer “ (Messaging, Replikation, Ausfallerkennung)

Commit Logs, Memtable, SSTables, Indizes API, Monitoring, Admin tools

15.06.2012 Felix Bruckner | Wide Column Stores 18

(18)

• Knoten sind in einem logischen Ring angeordnet

• P2P-Protokoll (Gossip)

– Kommunikation unter den Knoten – Ausfallbenachrichtigungen

• Redundanz

– Redundanz durch Replikation

– Mehr Festplattenspeicher für Daten – Kein RAID nötig

• Ausfallsicherheit

– alle Knoten gleichberechtigt (keine Masterserver)

Aufbau (Cassandra)

15.06.2012 Felix Bruckner | Wide Column Stores 19

(19)

Skalierbarkeit

• Verteilte Datenbanken skalieren horizontal

• Standardhardware anstelle teurer Datenbank- Rechner

• Hinzufügen von Knoten ist denkbar einfach

– Integration in logischen Ring mithilfe von Token

15.06.2012 Felix Bruckner | Wide Column Stores 20

(20)

Wide Column Stores & Cloud

• Vorteil: Wide Column Stores sind skalierbar

„on demand“

• Bsp. DynamoDB von Amazon WS

15.06.2012 Felix Bruckner | Wide Column Stores 21

(21)

15.06.2012 Felix Bruckner | Wide Column Stores 22

(22)

API

• Datenzugriff & Manipulation

– API (Java, C++, …)

– Binärprotokoll/RPC (Thrift, Protocol Buffers) – High-Level API Wrapper (Astyanax / Hector)

• Beschränkter Funktionsumfang

– Keine Joins

– Keine Aggregationen

• Wenn Abfragesprache vorhanden:

– Nicht standarisert

– Stellt nur ein Subset aus SQL dar

– Ändert sich bei teilweise bei neuen Releases

15.06.2012 Felix Bruckner | Wide Column Stores 23

(23)

Queries – Cassandra Insert (Java)

15.06.2012 Felix Bruckner | Wide Column Stores 24

(24)

Einschub: Map/Reduce

• Parallele Abarbeitung eines Problems (Anfrage)

– Problem muss zerlegbar sein (“Splits” von ~64MB) – Mapper: Filtert & Transformiert Splits

– Reducer: Aggregiert Mapper-Ausgabe

15.06.2012 Felix Bruckner | Wide Column Stores 25

(25)

Einschub: Hive

• Map/Reduce:

– Queries bzw. Jobs werden programmiert – APIs für Java, C++, Erlang, u.v.m

• Hive:

– abstrahiert Map/Reduce Jobs mithilfe einer Querysprache (HiveQL):

15.06.2012 Felix Bruckner | Wide Column Stores 26

SELECT pv.*, u.gender, u.age, f.friends FROM page_view pv

JOIN user u ON (pv.userid = u.id) JOIN friend_list f ON (u.id = f.uid) WHERE pv.date = '2008-03-03';

(26)

Anwendungsbeispiel

• Cassandra-Datenbank

– Kleines Subset aus Facebook nachbauen (spybook)

• Benutzer

• Pages

• Pageviews

• Map/Reduce Job:

– Demographische Analyse über Pageviews – Abfrage wird mit Hive gestellt

15.06.2012 Felix Bruckner | Wide Column Stores 27

(27)

User ID

Anwendungsbeispiel

• Datenmodell:

Keyspace: Spybook

Column Family: users

username email age gender

PageID Column Family: page

pagename owner content

Date

Column Family: pageviews

userid userid … …

15.06.2012 Felix Bruckner | Wide Column Stores 28

String String Integer String

String String Integer

pageid pageid pageid pageid

(28)

Anwendungsbeispiel

• Vorgehen:

– Daten mit Java-Tool generiert

• 3000 Benutzer

• 100.000 Pageviews auf 10 Seiten

– Daten werden in Cassandra geschrieben – Mapping von Cassandra nach Hive

– Abfrage ausführen (Map/Reduce)

15.06.2012 Felix Bruckner | Wide Column Stores 29

(29)

Live Demo

15.06.2012 Felix Bruckner | Wide Column Stores 30

(30)

Anwendungsbeispiel: Infrastruktur

Amazon Web Service Open-Source Substitut

Amazon EC2 -- (lokal: Virtual Box)

Amazon DynamoDB Cassandra

Amazon S3 / Dynamo Hadoop / CassandraFS

Amazon ElasticMapReduce Hadoop mit Hive

15.06.2012 Felix Bruckner | Wide Column Stores 31

(31)

Vielen Dank für die Aufmerksamkeit.

Fragen?

15.06.2012 Felix Bruckner | Wide Column Stores 32

(32)

Quellen & Links

• http://www.slideshare.net/royans/facebooks-petabyte- scale-data-warehouse-using-hive-and-hadoop

• http://www.slideshare.net/hurrycane/nosql-in-the-context- of-social-web-4348152

• http://en.wikipedia.org/wiki/CAP_theorem

• http://de.wikipedia.org/wiki/MapReduce

• Papers:

– BigTable:

http://static.googleusercontent.com/external_content/untruste d_dlcp/research.google.com/de//archive/bigtable-osdi06.pdf – Dynamo: http://w.lifeisagraph.com/p2p/dynamo.pdf

15.06.2012 Felix Bruckner | Wide Column Stores 33

Referenzen

ÄHNLICHE DOKUMENTE

However, data confidentiality can still be achieved by using encryption before outsourcing the data, but that limits the options for interaction, since the encrypted data

[r]

The data and index storage structures that we have implemented in the existing ECOS prototype implementation are sorted array, sorted list (of sorted arrays), B+-Tree (with

tems, (ii) it identifies the special requirements of NoSQL WCSs regarding OPE encryption and (iii) it conducts a practical performance comparison of [BCO11, KS14] in combination

Bei einer spaltenorientierten Datenbank wird späte Materialisierung angestrebt, da die benötigten Attribute erst so spät wie möglich hinzu geladen werden. Nicht nur

Die Wide-Column-Store Datenbank Apache Cassandra wurde von Facebook entwickelt um den riesigen Daten- mengen dieses sozialen Netzwerkes gerecht zu werden.. Der Ausl¨ oser

Tabellen sind in Partitionen unterteilt, jede Partition kann auf einer anderen Node liegen und kann maximal 2 Milliarden Zellen (Spalten * Zeilen) besitzen.. In Cassandra

Ich mach mir die Welt wide wide wie sie