SlideShare ist ein Scribd-Unternehmen logo
Warum ‘ne Datenbank, wenn wir
Elasticsearch haben?

@jodok #dchh
@jodok
@cratedb
@lovelysystems
Was macht ‘ne Datenbank?

1. Dokumente speichern
2. Binäre Objekte speichern
3. … wieder finden/lesen
4. … analysieren
5. … wieder verändern
Wie macht man das
bei einer großen
Datenmenge?
MongoDB (1., 3., 4., 5.?) + Elasticsearch
(3.) + GridFS (2)
!

Riak (1., 3., 4.?, 5.?) + Solr (3.) + Rados (2)
!

CouchDB (1., 4) + Elasticsearch (3.) +
HDFS (2.) + Hadoop (4., 5.)
Einfach
zu benutzen, zu skalieren, zu betreiben
Elasticsearch
einfach geil
Einfach toll… (nicht nur search)
•

Echtzeit-Suche

•

Volltext Suche

•

Verteilt

•

•

Hoch verfügbar

Versions Konfliktbehebung

•

Restful API

•

Mandantenfähig
Und nu’?
•
•
•
•
•
•

Sicherheitsmodell?
Transaktionen?
Datensicherheit?
Reifegrad der Werkzeuge?
Große Berechnungen?
Verfügbarkeit der Daten?
Was macht die Datenhaltung?

… but also inspired by
Nathan Marz
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
Jeder, der große Applikationen
baut, setzt auf CAP und BASE.
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
Genau!
Wir brauchen einen
Key/Value store!
PUT
GET
Nicht ganz…
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
Strukturierte Daten?
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
Genau!
Lass uns eine schemalose NoSQL
Datenbank benutzen!
Das ist eine Überreaktion
Bitte folgert nicht von der
!

schlechten Umsetzung!
!

von Schemas auf den
!

Zusatzwert,
!

den Schemas erzeugen!
Funktion(Datenmenge)
Wenn man eine Schema so betrachtet, dann
kann man rausfinden, ob Daten valide sind oder
nicht.
Das ist hilfreich!
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
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)
You know, for search
querying 24 000 000 000 Records in 900ms

14502 views

@jodok
Warum 'ne Datenbank, wenn wir Elasticsearch haben?
Warum 'ne Datenbank, wenn wir Elasticsearch haben?
• 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
Speicher

Netzwerk
•

Die täglichen Spitzen liegen bei 

600MByte/s
Antwortzeit
Lasst uns den Kurs weiterfahren
Warum 'ne Datenbank, wenn wir Elasticsearch haben?
Warum 'ne Datenbank, wenn wir Elasticsearch haben?
STORM

?
Warum 'ne Datenbank, wenn wir Elasticsearch haben?
Die Komponenten
Das hört sich ja gut an,
•

aber was funktioniert denn schon alles?
Table creation
cr> create table my_table1 (!
...
first_column integer primary key,!
...
second_column string!
... ) clustered into 10 shards!
CREATE OK (... sec)!
!

+
+
+
-

routing!
replicas!
fulltext indizes, analyzers!
ALTER!
Schema for object fields
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)
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)
Clients
•

CRasH: Crate shell for command line (python)

•

Python (BLOB, DB-API, SQLAlchemy)

•

Java (JDBC planned)

•

SQL over HTTP always possible
Funktioniert das wirklich?
Warum 'ne Datenbank, wenn wir Elasticsearch haben?
Was passiert auf der Hardware?
•
•
•
•

4 Server: Supermicro SuperServer SYS-5017C-MTF
CPU: Intel Xeon E3-1240 - 3,3GHz (8 Cores)
Memory: 4x Samsung Memory M391B1G73BH0-CH9 8GB
Disks:1x Intel 320 Series 300GB 63,5mm Flash SSD

          1x Western Digital WD RE4 WD1003FBYX 1000 GB
!

•
•
•

ca. 10 Tabellen für die Applikationen (davon 8 mit < 50k Datensätze, 2 mit
insgesamt 250M.
Reine Datenmenge: 25GB
1 Replika
!

•

Applikation erzeugt ca. 750 queries pro Sekunde (davon ca. 300 INSERT)
Warum 'ne Datenbank, wenn wir Elasticsearch haben?
Und dann gibt’s ein Release:
Servus und bis bald!
github.com/crate

@cratedb
@jodok

Weitere ähnliche Inhalte

Was ist angesagt?

Setting-up Elasticsearch, Logstash, Kibana für agile Datenanalyse
Setting-up Elasticsearch, Logstash, Kibana für agile DatenanalyseSetting-up Elasticsearch, Logstash, Kibana für agile Datenanalyse
Setting-up Elasticsearch, Logstash, Kibana für agile Datenanalyse
SHI Search | Analytics | Big Data
 
Einführung in Elasticsearch
Einführung in ElasticsearchEinführung in Elasticsearch
Einführung in Elasticsearch
Florian Hopf
 
Volltextsuchen in RDBMS (2004)
Volltextsuchen in RDBMS (2004)Volltextsuchen in RDBMS (2004)
Volltextsuchen in RDBMS (2004)
Gerrit Beine
 
Einfuehrung in Elasticsearch
Einfuehrung in ElasticsearchEinfuehrung in Elasticsearch
Einfuehrung in Elasticsearch
Florian Hopf
 
Relevantes schneller finden – mit-Lucene und Solr
Relevantes schneller finden – mit-Lucene und SolrRelevantes schneller finden – mit-Lucene und Solr
Relevantes schneller finden – mit-Lucene und Solr
SHI Search | Analytics | Big Data
 
MongoDB-Skalierung auf echter Hardware vs. Amazon EC2
MongoDB-Skalierung auf echter Hardware vs. Amazon EC2MongoDB-Skalierung auf echter Hardware vs. Amazon EC2
MongoDB-Skalierung auf echter Hardware vs. Amazon EC2
Team Internet
 
Oracle und Docker
Oracle und DockerOracle und Docker
Oracle und Docker
Stefan Oehrli
 
20160310_ModernApplicationDevelopment_NoSQL_KPatenge
20160310_ModernApplicationDevelopment_NoSQL_KPatenge20160310_ModernApplicationDevelopment_NoSQL_KPatenge
20160310_ModernApplicationDevelopment_NoSQL_KPatenge
Karin Patenge
 
Oracle Engineered Systems - Chance oder Risiko?
Oracle Engineered Systems - Chance oder Risiko?Oracle Engineered Systems - Chance oder Risiko?
Oracle Engineered Systems - Chance oder Risiko?
Trivadis
 

Was ist angesagt? (9)

Setting-up Elasticsearch, Logstash, Kibana für agile Datenanalyse
Setting-up Elasticsearch, Logstash, Kibana für agile DatenanalyseSetting-up Elasticsearch, Logstash, Kibana für agile Datenanalyse
Setting-up Elasticsearch, Logstash, Kibana für agile Datenanalyse
 
Einführung in Elasticsearch
Einführung in ElasticsearchEinführung in Elasticsearch
Einführung in Elasticsearch
 
Volltextsuchen in RDBMS (2004)
Volltextsuchen in RDBMS (2004)Volltextsuchen in RDBMS (2004)
Volltextsuchen in RDBMS (2004)
 
Einfuehrung in Elasticsearch
Einfuehrung in ElasticsearchEinfuehrung in Elasticsearch
Einfuehrung in Elasticsearch
 
Relevantes schneller finden – mit-Lucene und Solr
Relevantes schneller finden – mit-Lucene und SolrRelevantes schneller finden – mit-Lucene und Solr
Relevantes schneller finden – mit-Lucene und Solr
 
MongoDB-Skalierung auf echter Hardware vs. Amazon EC2
MongoDB-Skalierung auf echter Hardware vs. Amazon EC2MongoDB-Skalierung auf echter Hardware vs. Amazon EC2
MongoDB-Skalierung auf echter Hardware vs. Amazon EC2
 
Oracle und Docker
Oracle und DockerOracle und Docker
Oracle und Docker
 
20160310_ModernApplicationDevelopment_NoSQL_KPatenge
20160310_ModernApplicationDevelopment_NoSQL_KPatenge20160310_ModernApplicationDevelopment_NoSQL_KPatenge
20160310_ModernApplicationDevelopment_NoSQL_KPatenge
 
Oracle Engineered Systems - Chance oder Risiko?
Oracle Engineered Systems - Chance oder Risiko?Oracle Engineered Systems - Chance oder Risiko?
Oracle Engineered Systems - Chance oder Risiko?
 

Andere mochten auch

Einführung in Elasticsearch - August 2014
Einführung in Elasticsearch - August 2014Einführung in Elasticsearch - August 2014
Einführung in Elasticsearch - August 2014
inovex GmbH
 
NoSQL im E-Commerce Präsentation Shopware Community Day 2013
NoSQL im E-Commerce Präsentation Shopware Community Day 2013NoSQL im E-Commerce Präsentation Shopware Community Day 2013
NoSQL im E-Commerce Präsentation Shopware Community Day 2013
marmalade GmbH
 
Serving Images with GridFS
Serving Images with GridFSServing Images with GridFS
Serving Images with GridFS
Mark Smalley
 
Alles was-sie-ueber-suche-wissen-wollten
Alles was-sie-ueber-suche-wissen-wolltenAlles was-sie-ueber-suche-wissen-wollten
Alles was-sie-ueber-suche-wissen-wollten
Olivier Dobberkau
 
The Seven Deadly Sins of Solr - By Jay Hill
The Seven Deadly Sins of Solr - By Jay Hill The Seven Deadly Sins of Solr - By Jay Hill
The Seven Deadly Sins of Solr - By Jay Hill
lucenerevolution
 
Battle of the Giants Round 2 - Apache Solr vs. Elasticsearch
Battle of the Giants Round 2 - Apache Solr vs. ElasticsearchBattle of the Giants Round 2 - Apache Solr vs. Elasticsearch
Battle of the Giants Round 2 - Apache Solr vs. Elasticsearch
Sematext Group, Inc.
 
Grouping and Joining in Lucene/Solr
Grouping and Joining in Lucene/SolrGrouping and Joining in Lucene/Solr
Grouping and Joining in Lucene/Solr
lucenerevolution
 
State of Solr Security 2016: Presented by Ishan Chattopadhyaya, Lucidworks
State of Solr Security 2016: Presented by Ishan Chattopadhyaya, LucidworksState of Solr Security 2016: Presented by Ishan Chattopadhyaya, Lucidworks
State of Solr Security 2016: Presented by Ishan Chattopadhyaya, Lucidworks
Lucidworks
 
Working with deeply nested documents in Apache Solr
Working with deeply nested documents in Apache SolrWorking with deeply nested documents in Apache Solr
Working with deeply nested documents in Apache Solr
Anshum Gupta
 
The Evolution of Lucene & Solr Numerics from Strings to Points: Presented by ...
The Evolution of Lucene & Solr Numerics from Strings to Points: Presented by ...The Evolution of Lucene & Solr Numerics from Strings to Points: Presented by ...
The Evolution of Lucene & Solr Numerics from Strings to Points: Presented by ...
Lucidworks
 
Building and Running Solr-as-a-Service: Presented by Shai Erera, IBM
Building and Running Solr-as-a-Service: Presented by Shai Erera, IBMBuilding and Running Solr-as-a-Service: Presented by Shai Erera, IBM
Building and Running Solr-as-a-Service: Presented by Shai Erera, IBM
Lucidworks
 
Working with deeply nested documents in Apache Solr
Working with deeply nested documents in Apache SolrWorking with deeply nested documents in Apache Solr
Working with deeply nested documents in Apache Solr
Anshum Gupta
 
Gridfs and MongoDB
Gridfs and MongoDBGridfs and MongoDB
Gridfs and MongoDB
Mitch Pirtle
 
2014 spark with elastic search
2014   spark with elastic search2014   spark with elastic search
2014 spark with elastic search
Henry Saputra
 
Real Time Fuzzy Matching with Spark and Elastic Search-(Sonal Goyal, Nube)
Real Time Fuzzy Matching with Spark and Elastic Search-(Sonal Goyal, Nube)Real Time Fuzzy Matching with Spark and Elastic Search-(Sonal Goyal, Nube)
Real Time Fuzzy Matching with Spark and Elastic Search-(Sonal Goyal, Nube)
Spark Summit
 
Real Time search using Spark and Elasticsearch
Real Time search using Spark and ElasticsearchReal Time search using Spark and Elasticsearch
Real Time search using Spark and Elasticsearch
Sigmoid
 
ElasticSearch in Production: lessons learned
ElasticSearch in Production: lessons learnedElasticSearch in Production: lessons learned
ElasticSearch in Production: lessons learned
BeyondTrees
 
NoSQL databases
NoSQL databasesNoSQL databases
NoSQL databases
Marin Dimitrov
 
Webinar: Building Conversational Search with Fusion
Webinar: Building Conversational Search with FusionWebinar: Building Conversational Search with Fusion
Webinar: Building Conversational Search with Fusion
Lucidworks
 
Solr facets and custom indices
Solr facets and custom indicesSolr facets and custom indices
Solr facets and custom indices
cgmonroe
 

Andere mochten auch (20)

Einführung in Elasticsearch - August 2014
Einführung in Elasticsearch - August 2014Einführung in Elasticsearch - August 2014
Einführung in Elasticsearch - August 2014
 
NoSQL im E-Commerce Präsentation Shopware Community Day 2013
NoSQL im E-Commerce Präsentation Shopware Community Day 2013NoSQL im E-Commerce Präsentation Shopware Community Day 2013
NoSQL im E-Commerce Präsentation Shopware Community Day 2013
 
Serving Images with GridFS
Serving Images with GridFSServing Images with GridFS
Serving Images with GridFS
 
Alles was-sie-ueber-suche-wissen-wollten
Alles was-sie-ueber-suche-wissen-wolltenAlles was-sie-ueber-suche-wissen-wollten
Alles was-sie-ueber-suche-wissen-wollten
 
The Seven Deadly Sins of Solr - By Jay Hill
The Seven Deadly Sins of Solr - By Jay Hill The Seven Deadly Sins of Solr - By Jay Hill
The Seven Deadly Sins of Solr - By Jay Hill
 
Battle of the Giants Round 2 - Apache Solr vs. Elasticsearch
Battle of the Giants Round 2 - Apache Solr vs. ElasticsearchBattle of the Giants Round 2 - Apache Solr vs. Elasticsearch
Battle of the Giants Round 2 - Apache Solr vs. Elasticsearch
 
Grouping and Joining in Lucene/Solr
Grouping and Joining in Lucene/SolrGrouping and Joining in Lucene/Solr
Grouping and Joining in Lucene/Solr
 
State of Solr Security 2016: Presented by Ishan Chattopadhyaya, Lucidworks
State of Solr Security 2016: Presented by Ishan Chattopadhyaya, LucidworksState of Solr Security 2016: Presented by Ishan Chattopadhyaya, Lucidworks
State of Solr Security 2016: Presented by Ishan Chattopadhyaya, Lucidworks
 
Working with deeply nested documents in Apache Solr
Working with deeply nested documents in Apache SolrWorking with deeply nested documents in Apache Solr
Working with deeply nested documents in Apache Solr
 
The Evolution of Lucene & Solr Numerics from Strings to Points: Presented by ...
The Evolution of Lucene & Solr Numerics from Strings to Points: Presented by ...The Evolution of Lucene & Solr Numerics from Strings to Points: Presented by ...
The Evolution of Lucene & Solr Numerics from Strings to Points: Presented by ...
 
Building and Running Solr-as-a-Service: Presented by Shai Erera, IBM
Building and Running Solr-as-a-Service: Presented by Shai Erera, IBMBuilding and Running Solr-as-a-Service: Presented by Shai Erera, IBM
Building and Running Solr-as-a-Service: Presented by Shai Erera, IBM
 
Working with deeply nested documents in Apache Solr
Working with deeply nested documents in Apache SolrWorking with deeply nested documents in Apache Solr
Working with deeply nested documents in Apache Solr
 
Gridfs and MongoDB
Gridfs and MongoDBGridfs and MongoDB
Gridfs and MongoDB
 
2014 spark with elastic search
2014   spark with elastic search2014   spark with elastic search
2014 spark with elastic search
 
Real Time Fuzzy Matching with Spark and Elastic Search-(Sonal Goyal, Nube)
Real Time Fuzzy Matching with Spark and Elastic Search-(Sonal Goyal, Nube)Real Time Fuzzy Matching with Spark and Elastic Search-(Sonal Goyal, Nube)
Real Time Fuzzy Matching with Spark and Elastic Search-(Sonal Goyal, Nube)
 
Real Time search using Spark and Elasticsearch
Real Time search using Spark and ElasticsearchReal Time search using Spark and Elasticsearch
Real Time search using Spark and Elasticsearch
 
ElasticSearch in Production: lessons learned
ElasticSearch in Production: lessons learnedElasticSearch in Production: lessons learned
ElasticSearch in Production: lessons learned
 
NoSQL databases
NoSQL databasesNoSQL databases
NoSQL databases
 
Webinar: Building Conversational Search with Fusion
Webinar: Building Conversational Search with FusionWebinar: Building Conversational Search with Fusion
Webinar: Building Conversational Search with Fusion
 
Solr facets and custom indices
Solr facets and custom indicesSolr facets and custom indices
Solr facets and custom indices
 

Ähnlich wie Warum 'ne Datenbank, wenn wir Elasticsearch haben?

Cloud-native and Enterprise Java? Hold my beer!
Cloud-native and Enterprise Java? Hold my beer!Cloud-native and Enterprise Java? Hold my beer!
Cloud-native and Enterprise Java? Hold my beer!
OPEN KNOWLEDGE GmbH
 
Production-ready Infrastruktur in 3 Wochen
Production-ready Infrastruktur in 3 WochenProduction-ready Infrastruktur in 3 Wochen
Production-ready Infrastruktur in 3 Wochen
André Goliath
 
OOP 2014 SQL oder NoSQL - die Auswahl der richtigen Datenbankplattform für di...
OOP 2014 SQL oder NoSQL - die Auswahl der richtigen Datenbankplattform für di...OOP 2014 SQL oder NoSQL - die Auswahl der richtigen Datenbankplattform für di...
OOP 2014 SQL oder NoSQL - die Auswahl der richtigen Datenbankplattform für di...
AWS Germany
 
mongoDB im Einsatz - Grundlagen
mongoDB im Einsatz - GrundlagenmongoDB im Einsatz - Grundlagen
mongoDB im Einsatz - Grundlagen
inovex GmbH
 
Ready for the Future: Jakarta EE in Zeiten von Cloud Native & Co
Ready for the Future: Jakarta EE in Zeiten von Cloud Native & CoReady for the Future: Jakarta EE in Zeiten von Cloud Native & Co
Ready for the Future: Jakarta EE in Zeiten von Cloud Native & Co
OPEN KNOWLEDGE GmbH
 
Drupal 7 auf Amazon Web Services
Drupal 7 auf Amazon Web ServicesDrupal 7 auf Amazon Web Services
Drupal 7 auf Amazon Web Services
Sven Paulus
 
Supersonic Java für die Cloud: Quarkus
Supersonic Java für die Cloud: QuarkusSupersonic Java für die Cloud: Quarkus
Supersonic Java für die Cloud: Quarkus
OPEN KNOWLEDGE GmbH
 
Amazon Redshift
Amazon RedshiftAmazon Redshift
Amazon Redshift
AWS Germany
 
Heterogene Daten(-strukturen) in der Oracle Datenbank
Heterogene Daten(-strukturen) in der Oracle DatenbankHeterogene Daten(-strukturen) in der Oracle Datenbank
Heterogene Daten(-strukturen) in der Oracle Datenbank
Ulrike Schwinn
 
Das Repository-Pattern und der O/R-Mapper: Geniale Kombination oder vergebene...
Das Repository-Pattern und der O/R-Mapper: Geniale Kombination oder vergebene...Das Repository-Pattern und der O/R-Mapper: Geniale Kombination oder vergebene...
Das Repository-Pattern und der O/R-Mapper: Geniale Kombination oder vergebene...
André Krämer
 
Schnell, schneller, Quarkus!!
Schnell, schneller, Quarkus!!Schnell, schneller, Quarkus!!
Schnell, schneller, Quarkus!!
gedoplan
 
Ceph Object Store
Ceph Object StoreCeph Object Store
Ceph Object Store
Daniel Schneller
 
Azure SQL Database vs. Azure SQL Data Warehouse
Azure SQL Database vs. Azure SQL Data WarehouseAzure SQL Database vs. Azure SQL Data Warehouse
Azure SQL Database vs. Azure SQL Data Warehouse
pmOne Analytics GmbH
 
Oracle vs. PostgreSQL - Unterschiede in 45 Minuten
Oracle vs. PostgreSQL - Unterschiede in 45 MinutenOracle vs. PostgreSQL - Unterschiede in 45 Minuten
Oracle vs. PostgreSQL - Unterschiede in 45 Minuten
Markus Flechtner
 
Webapplikationen mit Node.js
Webapplikationen mit Node.jsWebapplikationen mit Node.js
Webapplikationen mit Node.js
Sebastian Springer
 
MongoDB für Java-Programmierer
MongoDB für Java-ProgrammiererMongoDB für Java-Programmierer
MongoDB für Java-Programmierer
Uwe Printz
 
Oracle12c für Entwickler
Oracle12c für EntwicklerOracle12c für Entwickler
Oracle12c für Entwickler
oraclebudb
 
Oracle TEXT
Oracle TEXTOracle TEXT
Oracle TEXT
Carsten Czarski
 
Schweine latein-vortrag
Schweine latein-vortragSchweine latein-vortrag
Schweine latein-vortrag
Ramon Wartala
 
20171121_DOAGKonferenz_JSON_OracleNoSQL_KPatenge
20171121_DOAGKonferenz_JSON_OracleNoSQL_KPatenge20171121_DOAGKonferenz_JSON_OracleNoSQL_KPatenge
20171121_DOAGKonferenz_JSON_OracleNoSQL_KPatenge
Karin Patenge
 

Ähnlich wie Warum 'ne Datenbank, wenn wir Elasticsearch haben? (20)

Cloud-native and Enterprise Java? Hold my beer!
Cloud-native and Enterprise Java? Hold my beer!Cloud-native and Enterprise Java? Hold my beer!
Cloud-native and Enterprise Java? Hold my beer!
 
Production-ready Infrastruktur in 3 Wochen
Production-ready Infrastruktur in 3 WochenProduction-ready Infrastruktur in 3 Wochen
Production-ready Infrastruktur in 3 Wochen
 
OOP 2014 SQL oder NoSQL - die Auswahl der richtigen Datenbankplattform für di...
OOP 2014 SQL oder NoSQL - die Auswahl der richtigen Datenbankplattform für di...OOP 2014 SQL oder NoSQL - die Auswahl der richtigen Datenbankplattform für di...
OOP 2014 SQL oder NoSQL - die Auswahl der richtigen Datenbankplattform für di...
 
mongoDB im Einsatz - Grundlagen
mongoDB im Einsatz - GrundlagenmongoDB im Einsatz - Grundlagen
mongoDB im Einsatz - Grundlagen
 
Ready for the Future: Jakarta EE in Zeiten von Cloud Native & Co
Ready for the Future: Jakarta EE in Zeiten von Cloud Native & CoReady for the Future: Jakarta EE in Zeiten von Cloud Native & Co
Ready for the Future: Jakarta EE in Zeiten von Cloud Native & Co
 
Drupal 7 auf Amazon Web Services
Drupal 7 auf Amazon Web ServicesDrupal 7 auf Amazon Web Services
Drupal 7 auf Amazon Web Services
 
Supersonic Java für die Cloud: Quarkus
Supersonic Java für die Cloud: QuarkusSupersonic Java für die Cloud: Quarkus
Supersonic Java für die Cloud: Quarkus
 
Amazon Redshift
Amazon RedshiftAmazon Redshift
Amazon Redshift
 
Heterogene Daten(-strukturen) in der Oracle Datenbank
Heterogene Daten(-strukturen) in der Oracle DatenbankHeterogene Daten(-strukturen) in der Oracle Datenbank
Heterogene Daten(-strukturen) in der Oracle Datenbank
 
Das Repository-Pattern und der O/R-Mapper: Geniale Kombination oder vergebene...
Das Repository-Pattern und der O/R-Mapper: Geniale Kombination oder vergebene...Das Repository-Pattern und der O/R-Mapper: Geniale Kombination oder vergebene...
Das Repository-Pattern und der O/R-Mapper: Geniale Kombination oder vergebene...
 
Schnell, schneller, Quarkus!!
Schnell, schneller, Quarkus!!Schnell, schneller, Quarkus!!
Schnell, schneller, Quarkus!!
 
Ceph Object Store
Ceph Object StoreCeph Object Store
Ceph Object Store
 
Azure SQL Database vs. Azure SQL Data Warehouse
Azure SQL Database vs. Azure SQL Data WarehouseAzure SQL Database vs. Azure SQL Data Warehouse
Azure SQL Database vs. Azure SQL Data Warehouse
 
Oracle vs. PostgreSQL - Unterschiede in 45 Minuten
Oracle vs. PostgreSQL - Unterschiede in 45 MinutenOracle vs. PostgreSQL - Unterschiede in 45 Minuten
Oracle vs. PostgreSQL - Unterschiede in 45 Minuten
 
Webapplikationen mit Node.js
Webapplikationen mit Node.jsWebapplikationen mit Node.js
Webapplikationen mit Node.js
 
MongoDB für Java-Programmierer
MongoDB für Java-ProgrammiererMongoDB für Java-Programmierer
MongoDB für Java-Programmierer
 
Oracle12c für Entwickler
Oracle12c für EntwicklerOracle12c für Entwickler
Oracle12c für Entwickler
 
Oracle TEXT
Oracle TEXTOracle TEXT
Oracle TEXT
 
Schweine latein-vortrag
Schweine latein-vortragSchweine latein-vortrag
Schweine latein-vortrag
 
20171121_DOAGKonferenz_JSON_OracleNoSQL_KPatenge
20171121_DOAGKonferenz_JSON_OracleNoSQL_KPatenge20171121_DOAGKonferenz_JSON_OracleNoSQL_KPatenge
20171121_DOAGKonferenz_JSON_OracleNoSQL_KPatenge
 

Warum 'ne Datenbank, wenn wir Elasticsearch haben?

  • 1. Warum ‘ne Datenbank, wenn wir Elasticsearch haben? @jodok #dchh
  • 3. Was macht ‘ne Datenbank? 1. Dokumente speichern 2. Binäre Objekte speichern 3. … wieder finden/lesen 4. … analysieren 5. … wieder verändern
  • 4. Wie macht man das bei einer großen Datenmenge? MongoDB (1., 3., 4., 5.?) + Elasticsearch (3.) + GridFS (2) ! Riak (1., 3., 4.?, 5.?) + Solr (3.) + Rados (2) ! CouchDB (1., 4) + Elasticsearch (3.) + HDFS (2.) + Hadoop (4., 5.)
  • 5. Einfach zu benutzen, zu skalieren, zu betreiben
  • 7. Einfach toll… (nicht nur search) • Echtzeit-Suche • Volltext Suche • Verteilt • • Hoch verfügbar Versions Konfliktbehebung • Restful API • Mandantenfähig
  • 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
  • 12. Jeder, der große Applikationen baut, setzt auf CAP und BASE.
  • 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
  • 19. Genau! Lass uns eine schemalose NoSQL Datenbank benutzen!
  • 20. Das ist eine Überreaktion
  • 21. Bitte folgert nicht von der ! schlechten Umsetzung! ! von Schemas auf den ! Zusatzwert, ! den Schemas erzeugen!
  • 22. Funktion(Datenmenge) Wenn man eine Schema so betrachtet, dann kann man rausfinden, ob Daten valide sind oder nicht. Das ist hilfreich!
  • 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
  • 29. Speicher Netzwerk • Die täglichen Spitzen liegen bei 
 600MByte/s
  • 31. Lasst uns den Kurs weiterfahren
  • 37. Das hört sich ja gut an, • aber was funktioniert denn schon alles?
  • 38. Table creation cr> create table my_table1 (! ... first_column integer primary key,! ... second_column string! ... ) clustered into 10 shards! CREATE OK (... sec)! ! + + + - routing! replicas! fulltext indizes, analyzers! ALTER! Schema for object fields
  • 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
  • 44. Was passiert auf der Hardware? • • • • 4 Server: Supermicro SuperServer SYS-5017C-MTF CPU: Intel Xeon E3-1240 - 3,3GHz (8 Cores) Memory: 4x Samsung Memory M391B1G73BH0-CH9 8GB Disks:1x Intel 320 Series 300GB 63,5mm Flash SSD
           1x Western Digital WD RE4 WD1003FBYX 1000 GB ! • • • ca. 10 Tabellen für die Applikationen (davon 8 mit < 50k Datensätze, 2 mit insgesamt 250M. Reine Datenmenge: 25GB 1 Replika ! • Applikation erzeugt ca. 750 queries pro Sekunde (davon ca. 300 INSERT)
  • 46. Und dann gibt’s ein Release:
  • 47. Servus und bis bald! github.com/crate @cratedb @jodok