10. Was macht die Datenhaltung?
… but also inspired by
Nathan Marz
11. ACID
•
Atomicity - alles oder nichts
•
Das ist zuuu vieeel, speziell
bei verteilten Knoten.
•
Consistency - nur gültige/valide
Daten werden gespeichert
•
Ausfälle? Zuverlässigkeit?
Mehrere Server!
•
Hohe Anzahl von parallelen
Lese- und Schreibzugriffe?
•
Diese Algorithmen sind nicht
für verteile Umgebungen
gemacht und zu langsam.
•
•
Isolation - sich so verhalten, als
ob alle Transaktionen seriell
passieren und die Daten
korrekt sind
Durability - ich lese genau das,
was ich geschrieben habe
13. BASE & CAP
•
Basically Available - das
System gibt immer eine
Antwort
•
Soft State - es muss nicht
jederzeit konsistent sein.
•
Eventually Consistent zu einem späteren
Zeitpunk wird es
konsistent
http://bigdatanerd.files.wordpress.com/2011/12/cap-theorem.jpg
16. Anfrage =
Funktion(Alle Daten)
•
Manchmal geht es darum, gespeicherte Informationen wieder
abzurufen
•
Meistens werden jedoch Transformationen, Aggregationen und
andere Funktionen benötigt.
•
z.B. die Anzahl von Seitenaufrufen einer speziellen URL über einen
gewissen Zeitraum
18. Schemas
•
Schwierig zu ändern
•
“Sind im weg”, stören
•
Generieren Zusatzaufwand für den Entwickler
•
Es nervt, im Voraus Informationen festzulegen
Nathan Marz:
http://www.slideshare.net/nathanmarz/runaway-complexity-in-big-data-and-a-plan-to-stop-it
23. Der Wert von Schemas
•
Strukturelle Integrität
•
Garantie, was gespeichert und
gelesen werden kann
•
Korrupte Daten beim lesen?
•
Verhindert Datenkorruption
•
Fehler viel später?
•
Fehler wird zu dem Zeitpunkt
geworfen, an dem er gemacht
wurde
•
Was sind die Umstände der
Datenkorruption?
•
spart Zeit
24. Also, was wollen wir?
•
•
•
Linear skalierende
Storage
sharded, massiv
paralleles Cluster
Semi-strukturierte
Datensätze, inklusive
Binärendateien
•
Real-time queries mit SQL
•
Erweiterte SQL Abfragen
möglich (und UDFs).
•
Open Source
•
Standard-Hardware
(Betriebsystem
unabhängig)
25. You know, for search
querying 24 000 000 000 Records in 900ms
14502 views
@jodok
28. • Map/Reduce to push
to Elasticsearch
distcp
• via NFS to HDFS
storage
S3
HDFS
HDFS
ES
• no dedicated nodes
transform
MAPRED
https://github.com/lovelysystems/ls-hive
https://github.com/lovelysystems/ls-thrift-py-hadoop
39. Insert/Update Data
cr> insert into locations values
('2013-09-12T21:43:59.000Z', 'Blagulon Kappa is the
planet to which the police are native.', 'Planet',
'Blagulon Kappa', 7)!
INSERT OK, 1 row affected (... sec)
cr> update locations set race['name'] = 'Human' where
name = 'Bartledan'!
UPDATE OK, 1 row affected (... sec)
40. Queries
cr> select name, race['name'] from locations where race['name'] = 'Bartledannians'
+-----------+----------------+!
| name
| race['name']
|!
+-----------+----------------+!
| Bartledan | Bartledannians |!
+-----------+----------------+!
SELECT 1 row in set (... sec)!
!
cr> select count(*), kind from locations group by kind order by count(*) desc,
kind asc!
+----------+-------------+!
| COUNT(*) | kind
|!
+----------+-------------+!
| 5
| Planet
|!
| 4
| Star System |!
+----------+-------------+!
SELECT 3 rows in set (... sec)
41. Clients
•
CRasH: Crate shell for command line (python)
•
Python (BLOB, DB-API, SQLAlchemy)
•
Java (JDBC planned)
•
SQL over HTTP always possible