SlideShare ist ein Scribd-Unternehmen logo
1 von 35
Downloaden Sie, um offline zu lesen
Was ist eine Datenbank &
was hat Blockchain damit zu tun?
Meetup #30
Was ist eine Datenbank &
was hat Blockchain damit zu tun?
Stefan Adolf Nhan Vu Krystian Gaus
Agenda
1. Was sind Daten?
2. Zentralisierte Datenbanken
3. Verteilte Datenbanken
4. Dezentralisierung
5. Wie geht es weiter?
1. Was sind Daten?
2. Zentralisierte Datenbanken
3. Verteilte Datenbanken
4. Dezentralisierung
5. Wie geht es weiter?
Was sind “Daten”
Informationen, die den Zustand eines Systems bestimmen
● Strukturiert
● Abfragbar
● Erweiterbar
● Veränderlich
● (Relational)
Was ist eine Datenbank?
A database is an organized collection of data, generally stored and
accessed electronically from a computer system. Where databases
are more complex they are often developed using formal design and
modeling techniques.
Eine kleine Datenbankgeschichte
1960: Navigations- / Hierarchische Datenbanken (b-trees, linked lists)
CODASYL, IBM IMS (Apollo), IBM System R
Identität = Position auf dem Speicherband
jeder Datensatz kann jeden anderen Datensatz verlinken
worst case: man muss alle Daten einer Entität lesen, um eine Information zu finden
1970: relationale Datenbanken
(IBM / Edgar Codd): in CODASYL kann man nicht suchen!
flexible Links zwischen Daten-Entitäten, Definitionen der Entitätsstruktur
Tabelle -> Zeile -> Spalte bzw. Relation -> Tupel -> Domäne
Identität = Primärschlüssel einer Relation
1978/79: SQL -> IBM DB/2, Larry Ellison’s Oracle, INGRES (Postgres)
Entity-Relationships
1980 Desktop-Datenbanken dBASE, Access
1990 Objektrelationale Datenbanken
SQL-Erweiterungen, ORM, Inheritance und Diskriminierung
2000 NoSQL / NewSQL
XML: Traversierung / Queries auf Entitäts-Dokumenten
NoSQL: Daten-Denormalisierung = horizontale Skalierbarkeit
NewSQL: NoSQL mit SQL und ACID
Graph-Datenbanken
DBMS
System, das 3 Konzepte der Datenspeicherung kombiniert
- Externe APIs: wie greifen Endnutzer auf Daten zu?
- “SQL”, “MS Access”, MongoDB API
- Konzeptionell: wie definiert sich der “globale” Zustand aller Daten in dem System?
- “WiredTiger”, “MyISAM”, “Binlog”
- Intern: wie sind die Daten physisch in dem System organisiert?
- Index-Tabellen, Materialisierte Views, Sharding
Separating the external, conceptual and internal levels was a major feature of the
relational database model implementations that dominate 21st century databases.
Stefan, was ist eine Datenbank?
Ein System, mit dem man aus alten Informationen neue Information macht und
das dafür sorgt, dass man sich als Anwender keine Gedanken über die
Funktionalität des Managements machen muss.
1. Was sind Daten?
2. Zentralisierte Datenbanken
3. Verteilte Datenbanken
4. Dezentralisierung
5. Wie geht es weiter?
Konsistenz & Integrität
- Aus dem DBMS geht der aktuelle Zustand des Systems hervor
- Konsistenz ist die Konsequenz der Ausführung von Operationen auf Daten
- ACID-Transaktionalität
- Atomicity: Alle Operationen einer Transaktion können nur gemeinsam ausgeführt werden
- Consistency: Transaktionen müssen gegen Modell-Constraints validieren
- Isolation: Gleichzeitige Transaktionen führen zum selben Ergebnis als würden sie
nacheinander ausgeführt (-> gefühlte concurrency / internes ordering)
- Durability: eine atomische Transaktionen gilt erst als ausgeführt, wenn sie auf der Platte steht
Skalierbarkeit & Verteilung
“zentrale” ACID-DBMS lassen sich horizontal skalieren
Sie werden dann nur langsamer
Trennung von “schreibenden” und “lesenden” Zugriffen
“Master”-”Slave” Replikation (bzw Leaders -> Followers / Primary -> Replica)
geteilte Transaktionslogs
Für Geschwindigkeit: BASE <-> ACID
- Basically Available
- Soft state
- Eventually consistent
Das CAP Theorem: wähle 2.
Consistency: Jeder Lesezugriff erhält den
selben, zuletzt geschriebenen Zustand
Availability: Jede Anfrage wird unverzüglich
beantwortet, ohne zu garantieren, dass sie dem
letzten Write entspricht
Partition tolerance: Das System funktioniert
weiter, auch wenn Informationen noch nicht bei
allen Beteiligten angekommen sind.
Verteilung
Response-Zeit
Garantierte Aktualität
1. Was sind Daten?
2. Zentralisierte Datenbanken
3. Verteilte Datenbanken
4. Dezentralisierung
5. Wie geht es weiter?
Eventlogs
Jeder Write wird als Log-Item auf die Platte
geschrieben
Anschließend wird der Zustand verändert
“Tabellen” und “Indizes” sind nur eine Projektion der
Änderungshistorie.
=> Das Eventlog ist die ursprünglichste
Repräsentation des aktuellen Datenbankzustands.
Eventlogs sind Implementierungsdetails aller
verteilten DBMS
PostgreSQL transaction log
State Machines
Wenn zwei identische deterministische Prozesse den
gleichen Zustand haben und “Eingaben” in derselben
Reihenfolge erhalten, erzeugen sie identische
Ausgaben und befinden sich anschließend im selben
Zustand.
- Die Eingaben müssen für jede State Machine in derselben Reihenfolge stehen.
- Der Zustand einer Instanz lässt sich über den “höchsten” Log-Eintrag
beschreiben
Dualismus: Event Log <-> Tabellen
Tabellen: “Ruhe”-Daten <-> Logs: Daten-”Veränderungen”
Tabelle == Anwendung des vollständigen Logs in der “korrekten” Reihenfolge
Event-Log == “Backup” jedes vergangenen Tabellenzustands
Analogie zu VCS/Git:
- patches / commits: Atomische Sammlung von Zustandsänderungen
- branches: Snapshots von angewendeten Patches
- concurrency: Man kann Patches in beliebiger Reihenfolge applizieren
Es gibt keine gemeinsame Uhrzeit
In verteilten Systemen kann “Zustand” davon abhängen, wen man wann fragt.
there is no shared clock according to which we can decide ordering
- Einstein.
- Ein Ereignis hat erst stattgefunden, wenn wir es wahrnehmen können
- Netzwerklatenz
- Gleichzeitigkeit
- Nachlässigkeit
- Betrug
“Logische” (Counter) vs. “physische” (Timestamp) Uhren
Konsens für Log-getriebene State Machines
Log-Writes bewirken replizierte Statusänderungen
Nodes benötigen Konsens über die Reihenfolge
eingehender Logs
-> Paxos / Raft (asymmetrischer Konsens)
- Quorum-basiert: alle Teilnehmer “kennen” sich
- Alle Teilnehmer halten sich an die Regeln
- Leadership Elections (“Master” fällt aus)
- Leader Heartbeat
- Candidate Mode
https://www.youtube.com/watch?v=JEpsBg0AO6o
https://www.youtube.com/watch?v=YbZ3zDzDnrw
https://medium.com/@spsingh559/detail-analysis-of-raft-its-implementation
-in-hyperledger-fabric-d269367a79c0
1. Was sind Daten?
2. Zentralisierte Datenbanken
3. Verteilte Datenbanken
4. Dezentralisierung
5. Wie geht es weiter?
Dezentral > Distributed
- Niemand kennt alle Teilnehmer / jeder kann Teilnehmer werden
- Teilnehmer können absichtlich gegen die Regeln spielen
- Keine Autorität kontrolliert das Netzwerk
- => Unautorisierte Multi-Master-Replikation
- mehrere Zustände existieren gleichzeitig
- globaler Konsens führt zu einem
temporär finalen Systemzustand
Dezentral & Konsenslos
OrbitDB
IPFS als Storage Layer
IPFS Pubsub für Sync / Replikation
CRDTs für konfliktfreie Daten-Merges
Ceramic Documents
Unveränderliche Dokument-IDs
Change Records
IPFS Pubsub-Notifications
Blockchain Anchor-Documents (Batch Proofs)
Byzantine Fault Tolerance
BFT (symmetrischer Konsens)
- Mehrheit aller Nodes entscheidet über
die Ordnung des Event-Logs
- z.B. Tendermint (BFT) -> Cosmos (PoS)
- Kann ⅓ byzantinische Nodes korrigieren
- Inzentivierung korrekten Verhaltens
- Block Awards, Transaktionsgebühren
- Bzw. starke Disinzentivierung
fehlerhaften Verhaltens
- PoW / PoS-Slashing
Bitcoin: UTXOs
- Unspent Transaction Outputs
- Bitcoin speichert keinen Zustand
(“Kontostand”) eines Accounts
- Nutzer speichern die private keys von
offenen UTXOs in ihren Wallets
- Jede Transaktion erzeugt eine neue UTXO
== “Geld”, das ein Nutzer noch ausgeben
kann
=> “Bitcoin ist keine Datenbank”
Ethereum
- Transaktionsgetriebene State Machine
- ∑ Transaktionen = “World” State
- Transaction Trie
- Transaktionen eines Blocks
- permanent
- Root -> Block Header
- Globaler State Trie
- Account => {nonce, balance, storageRoot, codeHash}
- ephemeral
- Storage Trie
- Contract data pro Account
- Root -> globaler State trie
There is one, and one only, global state trie in Ethereum.
Ist eine Blockchain eine Datenbank?
● Eine Blockchain ist ein verteilter BFT-Konsensmechanismus zur Ordnung von
Transaktionen
● Nacheinander ausgeführt führen die Transaktionen zu einem Systemstatus
● Der aktuelle Status wird in der Regel neben den Transaktionen geführt
= eine Blockchain ist keine Datenbank im eigentlichen Sinne…
… aber sie lässt sich (fast) wie eine Datenbank benutzen ;)
1. Was sind Daten?
2. Zentralisierte Datenbanken
3. Verteilte Datenbanken
4. Dezentralisierung
5. Wie geht es weiter?
Sharding
SSI
DeFiEthereum 2.0
Off-Chain workers
Skalierung
Oracles
Ethereum-Bridges
2nd Layer Solutions
Non-Fungible Tokens
Directed Acyclic Graphs
Interoperability Proof of X
Tokenisierung
Crypto Games

Weitere ähnliche Inhalte

Ähnlich wie Was ist eine Datenbank - und was hat Blockchain damit zu tun?

Exchange Server 2019 MetaCache Database und BigFunnel
Exchange Server 2019 MetaCache Database und BigFunnelExchange Server 2019 MetaCache Database und BigFunnel
Exchange Server 2019 MetaCache Database und BigFunnelThomas Stensitzki
 
MongoDB - Riesige Datenmengen schemafrei verwalten
MongoDB - Riesige Datenmengen schemafrei verwaltenMongoDB - Riesige Datenmengen schemafrei verwalten
MongoDB - Riesige Datenmengen schemafrei verwaltenTobias Trelle
 
Marek Adar – IT-Tage 2015 – Oracle 12c Multitenant
Marek Adar – IT-Tage 2015 – Oracle 12c MultitenantMarek Adar – IT-Tage 2015 – Oracle 12c Multitenant
Marek Adar – IT-Tage 2015 – Oracle 12c MultitenantInformatik Aktuell
 
SOA Suite 11g Deep Dive
SOA Suite 11g Deep DiveSOA Suite 11g Deep Dive
SOA Suite 11g Deep Diveesentri AG
 
Sql Server GrundlagenfüR Share Point Admins
Sql Server GrundlagenfüR Share Point AdminsSql Server GrundlagenfüR Share Point Admins
Sql Server GrundlagenfüR Share Point AdminsSharepointUGDD
 
Sql Server Grundlagen für Sharepoint Administratoren
Sql Server Grundlagen für Sharepoint AdministratorenSql Server Grundlagen für Sharepoint Administratoren
Sql Server Grundlagen für Sharepoint AdministratorenCommunardo GmbH
 
Dokumentenorientiere Datenbanken am Beispiel CouchDB
Dokumentenorientiere Datenbanken am Beispiel CouchDBDokumentenorientiere Datenbanken am Beispiel CouchDB
Dokumentenorientiere Datenbanken am Beispiel CouchDBMario Müller
 
Whitepaper sones GraphDB (ger)
Whitepaper sones GraphDB (ger)Whitepaper sones GraphDB (ger)
Whitepaper sones GraphDB (ger)sones GmbH
 
Private Cloud mit Open Source
Private Cloud mit Open SourcePrivate Cloud mit Open Source
Private Cloud mit Open SourceDaniel Schneller
 
DA Abschlußpräsentation 2006
DA Abschlußpräsentation 2006DA Abschlußpräsentation 2006
DA Abschlußpräsentation 2006derDoc
 
Nosql Hintergründe und Anwendungen
Nosql Hintergründe und AnwendungenNosql Hintergründe und Anwendungen
Nosql Hintergründe und AnwendungenAndy Whole
 
Data Mining und OLAP
Data Mining und OLAPData Mining und OLAP
Data Mining und OLAPmurat9393
 
Nagios Conference 2007 | Aufbau eines hochverfügbaren Nagios Clusters by Mart...
Nagios Conference 2007 | Aufbau eines hochverfügbaren Nagios Clusters by Mart...Nagios Conference 2007 | Aufbau eines hochverfügbaren Nagios Clusters by Mart...
Nagios Conference 2007 | Aufbau eines hochverfügbaren Nagios Clusters by Mart...NETWAYS
 
Roadshow Oracle Database 12c: News & Features
Roadshow Oracle Database 12c: News & FeaturesRoadshow Oracle Database 12c: News & Features
Roadshow Oracle Database 12c: News & FeaturesDigicomp Academy AG
 
Cloud-native Applikationen
Cloud-native ApplikationenCloud-native Applikationen
Cloud-native ApplikationenQAware GmbH
 
Virtualized Exadata - the first 4 "productive" years...
Virtualized Exadata - the first 4 "productive" years...Virtualized Exadata - the first 4 "productive" years...
Virtualized Exadata - the first 4 "productive" years...Daniele Massimi
 

Ähnlich wie Was ist eine Datenbank - und was hat Blockchain damit zu tun? (20)

NTFS oder ReFS
NTFS oder ReFSNTFS oder ReFS
NTFS oder ReFS
 
Daos
DaosDaos
Daos
 
Exchange Server 2019 MetaCache Database und BigFunnel
Exchange Server 2019 MetaCache Database und BigFunnelExchange Server 2019 MetaCache Database und BigFunnel
Exchange Server 2019 MetaCache Database und BigFunnel
 
MongoDB - Riesige Datenmengen schemafrei verwalten
MongoDB - Riesige Datenmengen schemafrei verwaltenMongoDB - Riesige Datenmengen schemafrei verwalten
MongoDB - Riesige Datenmengen schemafrei verwalten
 
Marek Adar – IT-Tage 2015 – Oracle 12c Multitenant
Marek Adar – IT-Tage 2015 – Oracle 12c MultitenantMarek Adar – IT-Tage 2015 – Oracle 12c Multitenant
Marek Adar – IT-Tage 2015 – Oracle 12c Multitenant
 
SOA Suite 11g Deep Dive
SOA Suite 11g Deep DiveSOA Suite 11g Deep Dive
SOA Suite 11g Deep Dive
 
Sql Server GrundlagenfüR Share Point Admins
Sql Server GrundlagenfüR Share Point AdminsSql Server GrundlagenfüR Share Point Admins
Sql Server GrundlagenfüR Share Point Admins
 
Sql Server Grundlagen für Sharepoint Administratoren
Sql Server Grundlagen für Sharepoint AdministratorenSql Server Grundlagen für Sharepoint Administratoren
Sql Server Grundlagen für Sharepoint Administratoren
 
Dokumentenorientiere Datenbanken am Beispiel CouchDB
Dokumentenorientiere Datenbanken am Beispiel CouchDBDokumentenorientiere Datenbanken am Beispiel CouchDB
Dokumentenorientiere Datenbanken am Beispiel CouchDB
 
Whitepaper sones GraphDB (ger)
Whitepaper sones GraphDB (ger)Whitepaper sones GraphDB (ger)
Whitepaper sones GraphDB (ger)
 
Private Cloud mit Open Source
Private Cloud mit Open SourcePrivate Cloud mit Open Source
Private Cloud mit Open Source
 
DA Abschlußpräsentation 2006
DA Abschlußpräsentation 2006DA Abschlußpräsentation 2006
DA Abschlußpräsentation 2006
 
Transaktionssysteme
TransaktionssystemeTransaktionssysteme
Transaktionssysteme
 
Nosql Hintergründe und Anwendungen
Nosql Hintergründe und AnwendungenNosql Hintergründe und Anwendungen
Nosql Hintergründe und Anwendungen
 
Data Mining und OLAP
Data Mining und OLAPData Mining und OLAP
Data Mining und OLAP
 
Nagios Conference 2007 | Aufbau eines hochverfügbaren Nagios Clusters by Mart...
Nagios Conference 2007 | Aufbau eines hochverfügbaren Nagios Clusters by Mart...Nagios Conference 2007 | Aufbau eines hochverfügbaren Nagios Clusters by Mart...
Nagios Conference 2007 | Aufbau eines hochverfügbaren Nagios Clusters by Mart...
 
Roadshow Oracle Database 12c: News & Features
Roadshow Oracle Database 12c: News & FeaturesRoadshow Oracle Database 12c: News & Features
Roadshow Oracle Database 12c: News & Features
 
Überblick über die Suchplattform LucidWorks Search 2.1
Überblick über die Suchplattform LucidWorks Search 2.1Überblick über die Suchplattform LucidWorks Search 2.1
Überblick über die Suchplattform LucidWorks Search 2.1
 
Cloud-native Applikationen
Cloud-native ApplikationenCloud-native Applikationen
Cloud-native Applikationen
 
Virtualized Exadata - the first 4 "productive" years...
Virtualized Exadata - the first 4 "productive" years...Virtualized Exadata - the first 4 "productive" years...
Virtualized Exadata - the first 4 "productive" years...
 

Mehr von Stefan Adolf

Blockchains - Technical foundations
Blockchains - Technical foundationsBlockchains - Technical foundations
Blockchains - Technical foundationsStefan Adolf
 
HOW TO SURVIVE A 2DAY HACKATHON?
HOW TO SURVIVE A 2DAY HACKATHON?HOW TO SURVIVE A 2DAY HACKATHON?
HOW TO SURVIVE A 2DAY HACKATHON?Stefan Adolf
 
Digitale Selbstbestimmung mit Hilfe dezentraler Technologien
Digitale Selbstbestimmung mit Hilfe dezentraler TechnologienDigitale Selbstbestimmung mit Hilfe dezentraler Technologien
Digitale Selbstbestimmung mit Hilfe dezentraler TechnologienStefan Adolf
 
Digitale Selbstbestimmung | Anwendungsfälle der Dezentralität
Digitale Selbstbestimmung | Anwendungsfälle der DezentralitätDigitale Selbstbestimmung | Anwendungsfälle der Dezentralität
Digitale Selbstbestimmung | Anwendungsfälle der DezentralitätStefan Adolf
 
Decentralized technology: a (short) survey
Decentralized technology: a (short) surveyDecentralized technology: a (short) survey
Decentralized technology: a (short) surveyStefan Adolf
 
Productive web applications that run only on the frontend
Productive web applications that run only on the frontendProductive web applications that run only on the frontend
Productive web applications that run only on the frontendStefan Adolf
 
DePA - die dezentrale Patientenakte (29.1. FU Berlin)
DePA - die dezentrale Patientenakte (29.1. FU Berlin)DePA - die dezentrale Patientenakte (29.1. FU Berlin)
DePA - die dezentrale Patientenakte (29.1. FU Berlin)Stefan Adolf
 
DePA - die dezentrale Patientenakte
DePA - die dezentrale PatientenakteDePA - die dezentrale Patientenakte
DePA - die dezentrale PatientenakteStefan Adolf
 
Never Code Alone: Von Symfony Forms zu einer SPA auf APIs
Never Code Alone: Von Symfony Forms zu einer SPA auf APIsNever Code Alone: Von Symfony Forms zu einer SPA auf APIs
Never Code Alone: Von Symfony Forms zu einer SPA auf APIsStefan Adolf
 
Decentralize all the things
Decentralize all the thingsDecentralize all the things
Decentralize all the thingsStefan Adolf
 
Indexing Decentralized Data with Ethereum, IPFS & The Graph
Indexing Decentralized Data with Ethereum, IPFS & The GraphIndexing Decentralized Data with Ethereum, IPFS & The Graph
Indexing Decentralized Data with Ethereum, IPFS & The GraphStefan Adolf
 
Gatsby (Code.Talks) 2019
Gatsby (Code.Talks) 2019Gatsby (Code.Talks) 2019
Gatsby (Code.Talks) 2019Stefan Adolf
 
A micro service story
 A micro service story A micro service story
A micro service storyStefan Adolf
 
Api Platform: the ultimate API Platform
Api Platform: the ultimate API PlatformApi Platform: the ultimate API Platform
Api Platform: the ultimate API PlatformStefan Adolf
 
Pump up the JAM with Gatsby (2019)
Pump up the JAM with Gatsby (2019)Pump up the JAM with Gatsby (2019)
Pump up the JAM with Gatsby (2019)Stefan Adolf
 
Testing API platform with Behat BDD tests
Testing API platform with Behat BDD testsTesting API platform with Behat BDD tests
Testing API platform with Behat BDD testsStefan Adolf
 
Hack it like its hot!
Hack it like its hot!Hack it like its hot!
Hack it like its hot!Stefan Adolf
 
api-platform: the ultimate API platform
api-platform: the ultimate API platformapi-platform: the ultimate API platform
api-platform: the ultimate API platformStefan Adolf
 
Webpack Encore - Asset Management for the rest of us
Webpack Encore - Asset Management for the rest of usWebpack Encore - Asset Management for the rest of us
Webpack Encore - Asset Management for the rest of usStefan Adolf
 
(2018) Webpack Encore - Asset Management for the rest of us
(2018) Webpack Encore - Asset Management for the rest of us(2018) Webpack Encore - Asset Management for the rest of us
(2018) Webpack Encore - Asset Management for the rest of usStefan Adolf
 

Mehr von Stefan Adolf (20)

Blockchains - Technical foundations
Blockchains - Technical foundationsBlockchains - Technical foundations
Blockchains - Technical foundations
 
HOW TO SURVIVE A 2DAY HACKATHON?
HOW TO SURVIVE A 2DAY HACKATHON?HOW TO SURVIVE A 2DAY HACKATHON?
HOW TO SURVIVE A 2DAY HACKATHON?
 
Digitale Selbstbestimmung mit Hilfe dezentraler Technologien
Digitale Selbstbestimmung mit Hilfe dezentraler TechnologienDigitale Selbstbestimmung mit Hilfe dezentraler Technologien
Digitale Selbstbestimmung mit Hilfe dezentraler Technologien
 
Digitale Selbstbestimmung | Anwendungsfälle der Dezentralität
Digitale Selbstbestimmung | Anwendungsfälle der DezentralitätDigitale Selbstbestimmung | Anwendungsfälle der Dezentralität
Digitale Selbstbestimmung | Anwendungsfälle der Dezentralität
 
Decentralized technology: a (short) survey
Decentralized technology: a (short) surveyDecentralized technology: a (short) survey
Decentralized technology: a (short) survey
 
Productive web applications that run only on the frontend
Productive web applications that run only on the frontendProductive web applications that run only on the frontend
Productive web applications that run only on the frontend
 
DePA - die dezentrale Patientenakte (29.1. FU Berlin)
DePA - die dezentrale Patientenakte (29.1. FU Berlin)DePA - die dezentrale Patientenakte (29.1. FU Berlin)
DePA - die dezentrale Patientenakte (29.1. FU Berlin)
 
DePA - die dezentrale Patientenakte
DePA - die dezentrale PatientenakteDePA - die dezentrale Patientenakte
DePA - die dezentrale Patientenakte
 
Never Code Alone: Von Symfony Forms zu einer SPA auf APIs
Never Code Alone: Von Symfony Forms zu einer SPA auf APIsNever Code Alone: Von Symfony Forms zu einer SPA auf APIs
Never Code Alone: Von Symfony Forms zu einer SPA auf APIs
 
Decentralize all the things
Decentralize all the thingsDecentralize all the things
Decentralize all the things
 
Indexing Decentralized Data with Ethereum, IPFS & The Graph
Indexing Decentralized Data with Ethereum, IPFS & The GraphIndexing Decentralized Data with Ethereum, IPFS & The Graph
Indexing Decentralized Data with Ethereum, IPFS & The Graph
 
Gatsby (Code.Talks) 2019
Gatsby (Code.Talks) 2019Gatsby (Code.Talks) 2019
Gatsby (Code.Talks) 2019
 
A micro service story
 A micro service story A micro service story
A micro service story
 
Api Platform: the ultimate API Platform
Api Platform: the ultimate API PlatformApi Platform: the ultimate API Platform
Api Platform: the ultimate API Platform
 
Pump up the JAM with Gatsby (2019)
Pump up the JAM with Gatsby (2019)Pump up the JAM with Gatsby (2019)
Pump up the JAM with Gatsby (2019)
 
Testing API platform with Behat BDD tests
Testing API platform with Behat BDD testsTesting API platform with Behat BDD tests
Testing API platform with Behat BDD tests
 
Hack it like its hot!
Hack it like its hot!Hack it like its hot!
Hack it like its hot!
 
api-platform: the ultimate API platform
api-platform: the ultimate API platformapi-platform: the ultimate API platform
api-platform: the ultimate API platform
 
Webpack Encore - Asset Management for the rest of us
Webpack Encore - Asset Management for the rest of usWebpack Encore - Asset Management for the rest of us
Webpack Encore - Asset Management for the rest of us
 
(2018) Webpack Encore - Asset Management for the rest of us
(2018) Webpack Encore - Asset Management for the rest of us(2018) Webpack Encore - Asset Management for the rest of us
(2018) Webpack Encore - Asset Management for the rest of us
 

Was ist eine Datenbank - und was hat Blockchain damit zu tun?

  • 1. Was ist eine Datenbank & was hat Blockchain damit zu tun? Meetup #30
  • 2. Was ist eine Datenbank & was hat Blockchain damit zu tun? Stefan Adolf Nhan Vu Krystian Gaus
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10. Agenda 1. Was sind Daten? 2. Zentralisierte Datenbanken 3. Verteilte Datenbanken 4. Dezentralisierung 5. Wie geht es weiter?
  • 11. 1. Was sind Daten? 2. Zentralisierte Datenbanken 3. Verteilte Datenbanken 4. Dezentralisierung 5. Wie geht es weiter?
  • 12. Was sind “Daten” Informationen, die den Zustand eines Systems bestimmen ● Strukturiert ● Abfragbar ● Erweiterbar ● Veränderlich ● (Relational)
  • 13. Was ist eine Datenbank? A database is an organized collection of data, generally stored and accessed electronically from a computer system. Where databases are more complex they are often developed using formal design and modeling techniques.
  • 14. Eine kleine Datenbankgeschichte 1960: Navigations- / Hierarchische Datenbanken (b-trees, linked lists) CODASYL, IBM IMS (Apollo), IBM System R Identität = Position auf dem Speicherband jeder Datensatz kann jeden anderen Datensatz verlinken worst case: man muss alle Daten einer Entität lesen, um eine Information zu finden 1970: relationale Datenbanken (IBM / Edgar Codd): in CODASYL kann man nicht suchen! flexible Links zwischen Daten-Entitäten, Definitionen der Entitätsstruktur Tabelle -> Zeile -> Spalte bzw. Relation -> Tupel -> Domäne Identität = Primärschlüssel einer Relation 1978/79: SQL -> IBM DB/2, Larry Ellison’s Oracle, INGRES (Postgres) Entity-Relationships 1980 Desktop-Datenbanken dBASE, Access 1990 Objektrelationale Datenbanken SQL-Erweiterungen, ORM, Inheritance und Diskriminierung 2000 NoSQL / NewSQL XML: Traversierung / Queries auf Entitäts-Dokumenten NoSQL: Daten-Denormalisierung = horizontale Skalierbarkeit NewSQL: NoSQL mit SQL und ACID Graph-Datenbanken
  • 15. DBMS System, das 3 Konzepte der Datenspeicherung kombiniert - Externe APIs: wie greifen Endnutzer auf Daten zu? - “SQL”, “MS Access”, MongoDB API - Konzeptionell: wie definiert sich der “globale” Zustand aller Daten in dem System? - “WiredTiger”, “MyISAM”, “Binlog” - Intern: wie sind die Daten physisch in dem System organisiert? - Index-Tabellen, Materialisierte Views, Sharding Separating the external, conceptual and internal levels was a major feature of the relational database model implementations that dominate 21st century databases.
  • 16. Stefan, was ist eine Datenbank? Ein System, mit dem man aus alten Informationen neue Information macht und das dafür sorgt, dass man sich als Anwender keine Gedanken über die Funktionalität des Managements machen muss.
  • 17. 1. Was sind Daten? 2. Zentralisierte Datenbanken 3. Verteilte Datenbanken 4. Dezentralisierung 5. Wie geht es weiter?
  • 18. Konsistenz & Integrität - Aus dem DBMS geht der aktuelle Zustand des Systems hervor - Konsistenz ist die Konsequenz der Ausführung von Operationen auf Daten - ACID-Transaktionalität - Atomicity: Alle Operationen einer Transaktion können nur gemeinsam ausgeführt werden - Consistency: Transaktionen müssen gegen Modell-Constraints validieren - Isolation: Gleichzeitige Transaktionen führen zum selben Ergebnis als würden sie nacheinander ausgeführt (-> gefühlte concurrency / internes ordering) - Durability: eine atomische Transaktionen gilt erst als ausgeführt, wenn sie auf der Platte steht
  • 19. Skalierbarkeit & Verteilung “zentrale” ACID-DBMS lassen sich horizontal skalieren Sie werden dann nur langsamer Trennung von “schreibenden” und “lesenden” Zugriffen “Master”-”Slave” Replikation (bzw Leaders -> Followers / Primary -> Replica) geteilte Transaktionslogs Für Geschwindigkeit: BASE <-> ACID - Basically Available - Soft state - Eventually consistent
  • 20. Das CAP Theorem: wähle 2. Consistency: Jeder Lesezugriff erhält den selben, zuletzt geschriebenen Zustand Availability: Jede Anfrage wird unverzüglich beantwortet, ohne zu garantieren, dass sie dem letzten Write entspricht Partition tolerance: Das System funktioniert weiter, auch wenn Informationen noch nicht bei allen Beteiligten angekommen sind. Verteilung Response-Zeit Garantierte Aktualität
  • 21. 1. Was sind Daten? 2. Zentralisierte Datenbanken 3. Verteilte Datenbanken 4. Dezentralisierung 5. Wie geht es weiter?
  • 22. Eventlogs Jeder Write wird als Log-Item auf die Platte geschrieben Anschließend wird der Zustand verändert “Tabellen” und “Indizes” sind nur eine Projektion der Änderungshistorie. => Das Eventlog ist die ursprünglichste Repräsentation des aktuellen Datenbankzustands. Eventlogs sind Implementierungsdetails aller verteilten DBMS PostgreSQL transaction log
  • 23. State Machines Wenn zwei identische deterministische Prozesse den gleichen Zustand haben und “Eingaben” in derselben Reihenfolge erhalten, erzeugen sie identische Ausgaben und befinden sich anschließend im selben Zustand. - Die Eingaben müssen für jede State Machine in derselben Reihenfolge stehen. - Der Zustand einer Instanz lässt sich über den “höchsten” Log-Eintrag beschreiben
  • 24. Dualismus: Event Log <-> Tabellen Tabellen: “Ruhe”-Daten <-> Logs: Daten-”Veränderungen” Tabelle == Anwendung des vollständigen Logs in der “korrekten” Reihenfolge Event-Log == “Backup” jedes vergangenen Tabellenzustands Analogie zu VCS/Git: - patches / commits: Atomische Sammlung von Zustandsänderungen - branches: Snapshots von angewendeten Patches - concurrency: Man kann Patches in beliebiger Reihenfolge applizieren
  • 25. Es gibt keine gemeinsame Uhrzeit In verteilten Systemen kann “Zustand” davon abhängen, wen man wann fragt. there is no shared clock according to which we can decide ordering - Einstein. - Ein Ereignis hat erst stattgefunden, wenn wir es wahrnehmen können - Netzwerklatenz - Gleichzeitigkeit - Nachlässigkeit - Betrug “Logische” (Counter) vs. “physische” (Timestamp) Uhren
  • 26. Konsens für Log-getriebene State Machines Log-Writes bewirken replizierte Statusänderungen Nodes benötigen Konsens über die Reihenfolge eingehender Logs -> Paxos / Raft (asymmetrischer Konsens) - Quorum-basiert: alle Teilnehmer “kennen” sich - Alle Teilnehmer halten sich an die Regeln - Leadership Elections (“Master” fällt aus) - Leader Heartbeat - Candidate Mode https://www.youtube.com/watch?v=JEpsBg0AO6o https://www.youtube.com/watch?v=YbZ3zDzDnrw https://medium.com/@spsingh559/detail-analysis-of-raft-its-implementation -in-hyperledger-fabric-d269367a79c0
  • 27. 1. Was sind Daten? 2. Zentralisierte Datenbanken 3. Verteilte Datenbanken 4. Dezentralisierung 5. Wie geht es weiter?
  • 28. Dezentral > Distributed - Niemand kennt alle Teilnehmer / jeder kann Teilnehmer werden - Teilnehmer können absichtlich gegen die Regeln spielen - Keine Autorität kontrolliert das Netzwerk - => Unautorisierte Multi-Master-Replikation - mehrere Zustände existieren gleichzeitig - globaler Konsens führt zu einem temporär finalen Systemzustand
  • 29. Dezentral & Konsenslos OrbitDB IPFS als Storage Layer IPFS Pubsub für Sync / Replikation CRDTs für konfliktfreie Daten-Merges Ceramic Documents Unveränderliche Dokument-IDs Change Records IPFS Pubsub-Notifications Blockchain Anchor-Documents (Batch Proofs)
  • 30. Byzantine Fault Tolerance BFT (symmetrischer Konsens) - Mehrheit aller Nodes entscheidet über die Ordnung des Event-Logs - z.B. Tendermint (BFT) -> Cosmos (PoS) - Kann ⅓ byzantinische Nodes korrigieren - Inzentivierung korrekten Verhaltens - Block Awards, Transaktionsgebühren - Bzw. starke Disinzentivierung fehlerhaften Verhaltens - PoW / PoS-Slashing
  • 31. Bitcoin: UTXOs - Unspent Transaction Outputs - Bitcoin speichert keinen Zustand (“Kontostand”) eines Accounts - Nutzer speichern die private keys von offenen UTXOs in ihren Wallets - Jede Transaktion erzeugt eine neue UTXO == “Geld”, das ein Nutzer noch ausgeben kann => “Bitcoin ist keine Datenbank”
  • 32. Ethereum - Transaktionsgetriebene State Machine - ∑ Transaktionen = “World” State - Transaction Trie - Transaktionen eines Blocks - permanent - Root -> Block Header - Globaler State Trie - Account => {nonce, balance, storageRoot, codeHash} - ephemeral - Storage Trie - Contract data pro Account - Root -> globaler State trie There is one, and one only, global state trie in Ethereum.
  • 33. Ist eine Blockchain eine Datenbank? ● Eine Blockchain ist ein verteilter BFT-Konsensmechanismus zur Ordnung von Transaktionen ● Nacheinander ausgeführt führen die Transaktionen zu einem Systemstatus ● Der aktuelle Status wird in der Regel neben den Transaktionen geführt = eine Blockchain ist keine Datenbank im eigentlichen Sinne… … aber sie lässt sich (fast) wie eine Datenbank benutzen ;)
  • 34. 1. Was sind Daten? 2. Zentralisierte Datenbanken 3. Verteilte Datenbanken 4. Dezentralisierung 5. Wie geht es weiter?
  • 35. Sharding SSI DeFiEthereum 2.0 Off-Chain workers Skalierung Oracles Ethereum-Bridges 2nd Layer Solutions Non-Fungible Tokens Directed Acyclic Graphs Interoperability Proof of X Tokenisierung Crypto Games