WEBVTT

00:00:00.000 --> 00:00:04.100
Ja, hallo liebe Hörer und Hörer. Herzlich willkommen beim Python Podcast Episode 43.

00:00:05.020 --> 00:00:09.960
Heute reden wir ein bisschen über Mimaria und Max und vielleicht ein bisschen über Postgres SQL.

00:00:11.260 --> 00:00:14.360
Und wir haben natürlich wieder den Jochen da. Hallo Jochen.

00:00:15.000 --> 00:00:15.860
Hallo Dominik.

00:00:16.040 --> 00:00:16.780
Ich bin der Dominik.

00:00:17.200 --> 00:00:18.340
Und die Susanne ist heute dabei.

00:00:18.600 --> 00:00:19.860
Hallo Dominik. Hallo Jochen.

00:00:20.200 --> 00:00:20.720
Hallo Susanne.

00:00:21.720 --> 00:00:23.120
Ja, haben wir News?

00:00:23.620 --> 00:00:25.980
Wir starten immer mit ein bisschen News.

00:00:25.980 --> 00:00:30.420
und ja, es war nicht so wahnsinnig viel.

00:00:30.980 --> 00:00:32.700
Ich weiß nicht, ich kann ja einfach mal so erzählen,

00:00:32.760 --> 00:00:34.860
was ich irgendwie für bemerkenswert halte irgendwie,

00:00:35.660 --> 00:00:37.960
was in der letzten Zeit so passiert ist.

00:00:39.420 --> 00:00:40.620
Ja, Jochen im Hintergrund, tippen.

00:00:40.960 --> 00:00:42.760
Ja, ich mache hier schon mal die Kapitelmarken,

00:00:42.900 --> 00:00:43.780
dann spare ich mir ein bisschen Zeit,

00:00:43.900 --> 00:00:44.880
aber das hilft wahrscheinlich auch nicht.

00:00:46.060 --> 00:00:48.520
Genau, ja, also was ist alles so irgendwie passiert?

00:00:49.780 --> 00:00:53.120
Zum Beispiel, es gibt jetzt irgendwie PyTorch für Apple,

00:00:53.120 --> 00:00:55.480
für M1 optimiert.

00:00:55.480 --> 00:00:57.640
also es ist halt noch nicht so schnell, also es ist auch noch nicht wirklich

00:00:57.640 --> 00:00:58.160
vergleichbar

00:00:58.160 --> 00:01:00.320
mit Nvidia

00:01:00.320 --> 00:01:03.520
aber tatsächlich

00:01:03.520 --> 00:01:05.520
geht da so ein bisschen was in die Richtung, also vorher konnte man schon ein bisschen

00:01:05.520 --> 00:01:07.560
was machen mit PlateML, aber

00:01:07.560 --> 00:01:09.660
jetzt gibt es halt auch tatsächlich direkt

00:01:09.660 --> 00:01:10.920
Unterstützung von PyTorch aus

00:01:10.920 --> 00:01:13.540
und ja, das sah eigentlich schon mal ganz

00:01:13.540 --> 00:01:15.480
interessant aus und da geht bestimmt noch mehr in Zukunft

00:01:15.480 --> 00:01:17.500
das ist auf jeden Fall jetzt gut zu sehen

00:01:17.500 --> 00:01:19.660
dass das mal so ein bisschen in die Gänge kommt, das war jetzt ganz lange Zeit

00:01:19.660 --> 00:01:21.420
also es ist jetzt auch, ich glaube

00:01:21.420 --> 00:01:23.300
2020 oder so sind die rausgekommen, das ist jetzt

00:01:23.300 --> 00:01:24.940
schon zweieinhalb Jahre her

00:01:24.940 --> 00:01:27.260
Ja, genau.

00:01:29.480 --> 00:01:30.680
Das ist aber jetzt eher so eine

00:01:30.680 --> 00:01:31.240
Minor-News.

00:01:32.180 --> 00:01:33.500
Ja, außer man hat

00:01:33.500 --> 00:01:36.220
fast ausschließlich Apple-Hardware, so wie ich dann.

00:01:37.040 --> 00:01:38.380
Das ist natürlich super wichtig, ja.

00:01:38.620 --> 00:01:38.840
Ja.

00:01:41.380 --> 00:01:42.540
Ansonsten, ich meine, wenn ihr mal

00:01:42.540 --> 00:01:44.840
dieses ganze Machine-Learning-Thema

00:01:44.840 --> 00:01:46.100
und so interessant findet,

00:01:46.740 --> 00:01:48.640
letztens kann ich

00:01:48.640 --> 00:01:50.540
den Robot Brains Podcast empfehlen von

00:01:50.540 --> 00:01:52.500
Peter Abiel und da war

00:01:52.500 --> 00:01:54.560
letzte Woche war da irgendwie Jeffrey Hinton

00:01:54.560 --> 00:01:56.660
zu Gast. Es gibt ja zwei Episoden.

00:01:57.200 --> 00:01:58.840
Das war sehr interessant.

00:01:59.200 --> 00:02:00.020
Also irgendwie quasi

00:02:00.020 --> 00:02:02.400
derjenige, der so die ganzen, oder

00:02:02.400 --> 00:02:04.420
einer von denen, die diesen Deep Learning

00:02:04.420 --> 00:02:08.400
Hype irgendwie so mit losgetreten haben.

00:02:08.560 --> 00:02:10.720
Oder was heißt Hype? Eigentlich ist er ja schon

00:02:10.720 --> 00:02:11.560
durchaus was hinter.

00:02:12.660 --> 00:02:14.420
Und ja,

00:02:14.500 --> 00:02:15.960
der erzählte so ganz interessante Dinge.

00:02:17.420 --> 00:02:18.720
Also ja, kann man sich ja mal

00:02:18.720 --> 00:02:19.880
vielleicht irgendwie anhören.

00:02:20.980 --> 00:02:22.460
Ja, es gab,

00:02:22.460 --> 00:02:24.080
das ist jetzt schon ein bisschen länger her. Ich habe jetzt

00:02:24.080 --> 00:02:26.260
eigenartigerweise erst davon erfahren, oder vielleicht haben wir das ja auch schon

00:02:26.260 --> 00:02:28.180
erzählt, das weiß ich nicht so genau. Es gab ein Paper

00:02:28.180 --> 00:02:30.300
in Nature, NumPy ist jetzt

00:02:30.300 --> 00:02:31.160
tatsächlich als

00:02:31.160 --> 00:02:34.120
quasi Artikel irgendwie in einem renommierten

00:02:34.120 --> 00:02:35.960
Magazin erschienen. Damals

00:02:35.960 --> 00:02:38.200
Travis Olyphant hat da ja seine Doktorarbeit

00:02:38.200 --> 00:02:40.140
für abgebrochen, weil die haben alle gesagt, so bist du

00:02:40.140 --> 00:02:42.080
verrückt, irgendwie sowas komisches

00:02:42.080 --> 00:02:44.180
zu machen, NumPy, das interessiert doch niemanden.

00:02:44.780 --> 00:02:46.200
Und ja, jetzt hat

00:02:46.200 --> 00:02:48.240
das doch nochmal auch akademische Weinen irgendwie

00:02:48.240 --> 00:02:50.520
gezeitigt,

00:02:50.640 --> 00:02:52.240
was dann gar nicht so schlecht spät

00:02:52.240 --> 00:02:52.440
war.

00:02:54.080 --> 00:02:56.600
Ja, genau.

00:02:57.580 --> 00:02:59.360
Sonst habe ich auch eigentlich nicht so wirklich was.

00:02:59.500 --> 00:03:00.340
Wir wollten noch mal vielleicht

00:03:00.340 --> 00:03:02.000
Büropeisen haben wir ja schon ein paar Mal eingeladen.

00:03:02.520 --> 00:03:03.140
Bist du eigentlich da?

00:03:04.320 --> 00:03:06.620
Ich habe keine Unterkunft

00:03:06.620 --> 00:03:08.040
gefunden, jedenfalls nicht,

00:03:08.360 --> 00:03:09.500
sodass wir da alle hinfahren könnten.

00:03:10.280 --> 00:03:12.320
Wenn, dann bin ich alleine da.

00:03:12.700 --> 00:03:13.240
Kurzfristig, okay.

00:03:15.420 --> 00:03:16.420
Könnte sein, dass das klappt,

00:03:16.540 --> 00:03:17.960
aber man muss halt nochmal gucken, weil

00:03:17.960 --> 00:03:19.580
Urlaubsplanungen

00:03:19.580 --> 00:03:22.080
andere Weitige...

00:03:22.080 --> 00:03:24.080
und der

00:03:52.080 --> 00:03:52.520
Überleitung.

00:03:52.660 --> 00:03:52.820
Oh.

00:03:56.900 --> 00:03:59.100
Was ist denn in der Postgres 15 Beta drin?

00:03:59.640 --> 00:04:00.040
Weißt du das?

00:04:00.040 --> 00:04:00.660
Das weiß ich nicht.

00:04:01.640 --> 00:04:05.100
Das weiß ich jetzt auch nicht auswendig.

00:04:05.200 --> 00:04:08.580
Da müsste ich auch nachgucken, was jetzt wirklich drin ist in der Beta und was nicht.

00:04:09.320 --> 00:04:13.640
Ich könnte da jetzt zählen, wie das immer so funktioniert bei Postgres mit den Beta

00:04:13.640 --> 00:04:14.420
und den Releases.

00:04:15.100 --> 00:04:15.820
Ja, dann machen wir doch das.

00:04:15.940 --> 00:04:16.720
Dann gehen wir da direkt über.

00:04:16.820 --> 00:04:17.720
Dann machen wir doch das hier.

00:04:17.920 --> 00:04:18.480
Ja, also.

00:04:19.820 --> 00:04:20.220
Hauptthema.

00:04:20.220 --> 00:04:21.700
und zum Postgres.

00:04:21.700 --> 00:04:23.960
Hier steht ja bei Postgres, steht Developer Experience

00:04:23.960 --> 00:04:25.320
and Performance. Ja,

00:04:26.120 --> 00:04:27.900
also es gibt immer, bei Postgres musst du einen

00:04:27.900 --> 00:04:29.580
Patch einreichen, wenn du ihn geschrieben hast,

00:04:29.700 --> 00:04:31.340
einschließlich Dokumentation, ganz wichtig.

00:04:32.080 --> 00:04:34.000
Und dann gibt es halt ein paar Reviewer, die da drüber

00:04:34.000 --> 00:04:35.820
gucken, das machen dann andere

00:04:35.820 --> 00:04:37.940
Entwickler. Und dann kriegst du den

00:04:37.940 --> 00:04:39.720
Patch entweder, ich sage immer, du kriegst ihn zurück,

00:04:39.940 --> 00:04:41.760
also da kriegst du dann eine E-Mail, was mit dem Patch ist,

00:04:41.820 --> 00:04:43.600
ob der so in Kiki ist oder nicht okay ist.

00:04:44.680 --> 00:04:45.860
Wenn du da eine Klammer

00:04:45.860 --> 00:04:47.880
ans Ende gesetzt hast, das sind die

00:04:47.880 --> 00:04:49.920
neue Zeile, kriegst du den Patch

00:04:49.920 --> 00:04:53.700
zurück, weil da wird massiv drauf geachtet, auf solche Sachen.

00:04:54.560 --> 00:04:57.380
Und wenn dann noch irgendwie eine Ausnahme ist, dass

00:04:57.380 --> 00:05:01.020
auf dem Mars ein Vulkan ausbricht, dann wird der Patch halt auch nicht angenommen.

00:05:01.360 --> 00:05:05.820
Also wenn da irgendwas passieren könnte, was du nicht bedacht hast. Und da Postgres ja

00:05:05.820 --> 00:05:09.780
überhaupt keine Kunden dahinter hat, die jetzt irgendwo Druck machen könnten,

00:05:09.780 --> 00:05:13.900
weil es ist ja eine kostenfreie Software, können wir natürlich

00:05:13.900 --> 00:05:17.600
auch recht früh sagen, also wenn wir sagen, okay, wir releasen und da ist jetzt noch

00:05:17.600 --> 00:05:19.600
irgendein neues Feature drin oder irgendein

00:05:19.600 --> 00:05:21.440
Patch drin, der noch nicht

00:05:21.440 --> 00:05:23.460
hundertprozentig ist, können wir

00:05:23.460 --> 00:05:24.400
einfach zurückstellen.

00:05:25.340 --> 00:05:27.380
Also wir haben da nicht den Druck, dass da jetzt irgendwelche

00:05:27.380 --> 00:05:29.480
Kunden sagen, der Patch muss

00:05:29.480 --> 00:05:31.420
jetzt aber unbedingt in die nächste Version, sondern das

00:05:31.420 --> 00:05:33.440
passiert auch schon mal, dass die so kurz vor knapp noch mal

00:05:33.440 --> 00:05:35.380
zurückgestellt werden und dann erst ins nächste

00:05:35.380 --> 00:05:37.420
Release kommen. Das ist gar nicht so

00:05:37.420 --> 00:05:38.720
selten, das passiert, ja.

00:05:39.440 --> 00:05:41.020
Mittlerweile schaffen wir es immerhin

00:05:41.020 --> 00:05:43.440
rechtzeitig zu releasen, das war auch schon

00:05:43.440 --> 00:05:44.440
mal eine Zeit lang nicht so.

00:05:45.400 --> 00:05:47.580
Eigentlich wird immer ein neues Release rausgebracht,

00:05:47.600 --> 00:05:51.380
zu auskommen, glaube ich, also zu irgendeiner amerikanischen Konferenz, in der Regel im Oktober.

00:05:52.600 --> 00:05:55.120
Also ich hatte das schon, dass ich im Linux Hotel gesagt habe,

00:05:55.740 --> 00:05:59.500
es müsste bald, wir haben Oktober, es müsste bald ein neues Release rauskommen und in den zwei Tagen

00:05:59.500 --> 00:06:02.300
später, noch während der Schulung, kommt das neue Release raus.

00:06:03.360 --> 00:06:07.380
Aber was genau drin ist, sieht man auch erst immer. Also man sieht natürlich, was alles

00:06:07.380 --> 00:06:11.440
entwickelt wird, aber was da jetzt davon jetzt in das nächste Release kommt

00:06:11.440 --> 00:06:15.480
und was nicht, das sieht man dann tatsächlich erst

00:06:15.480 --> 00:06:17.520
am Ende, weil da werden natürlich auch riesige

00:06:17.520 --> 00:06:18.300
Tests gefahren.

00:06:19.560 --> 00:06:21.340
Und es gibt auch absichtlich dann,

00:06:21.580 --> 00:06:23.360
dass nicht angekündigt wird, was drin ist.

00:06:24.020 --> 00:06:25.560
Eben damit man nochmal sagen kann,

00:06:25.980 --> 00:06:27.380
wir stellen das eine oder andere nochmal

00:06:27.380 --> 00:06:29.400
zurück. Deswegen wird das auch

00:06:29.400 --> 00:06:31.140
nicht so groß publiziert, was da jetzt...

00:06:31.140 --> 00:06:33.240
Also wir publizieren jetzt nicht ein halbes Jahr vorher im nächsten

00:06:33.240 --> 00:06:34.260
Release kommt das und das.

00:06:35.080 --> 00:06:37.400
Sondern das sieht man erst immer mit der

00:06:37.400 --> 00:06:39.140
neuen Version, mit den Release Notes,

00:06:39.260 --> 00:06:40.500
was da passiert ist und was nicht.

00:06:41.600 --> 00:06:43.420
Auf alle Fälle ab Version 13

00:06:43.420 --> 00:06:45.380
ist Postgres nochmal wahnsinnig

00:06:45.380 --> 00:06:47.420
viel schneller geworden. Also ich kann

00:06:47.420 --> 00:06:49.500
allen empfehlen, zumindest auf 13

00:06:49.500 --> 00:06:51.420
abzugraben, wer noch

00:06:51.420 --> 00:06:53.400
auf 9.6 ist. 9.6

00:06:53.400 --> 00:06:54.260
müsste auslaufen.

00:06:54.940 --> 00:06:56.900
Nicht richtig gerechnet habe ich jetzt gerade.

00:06:58.100 --> 00:06:58.560
Ah, okay.

00:06:59.360 --> 00:07:00.980
Ja, also ich würde sagen, jetzt haben wir die

00:07:00.980 --> 00:07:02.440
News auf jeden Fall durch.

00:07:03.660 --> 00:07:05.320
Und wir können noch anfangen

00:07:05.320 --> 00:07:06.100
mit unserem Thema.

00:07:06.900 --> 00:07:08.920
Und das Thema ist ja tatsächlich irgendwie so ein bisschen

00:07:08.920 --> 00:07:10.780
Datenpacken.

00:07:11.320 --> 00:07:12.880
Speziell im Allgemeinen oder auch

00:07:12.880 --> 00:07:14.180
noch ein bisschen im Detail.

00:07:15.380 --> 00:07:45.360
und Python-Programmierung.

00:07:45.380 --> 00:07:46.180
gehört zu IBM.

00:07:47.540 --> 00:07:47.900
Und

00:07:47.900 --> 00:07:51.600
ich hatte mir dann überlegt,

00:07:51.660 --> 00:07:52.560
ich war ja faul,

00:07:53.200 --> 00:07:55.460
wollte nicht immer ins Rechenzentrum, wie gesagt, SSH gab es schon,

00:07:55.900 --> 00:07:57.200
und habe dann geguckt, wie ich zu Hause

00:07:57.200 --> 00:07:58.000
programmieren kann.

00:07:59.520 --> 00:08:01.120
Und welches Datenbanksystem ich dann nehme,

00:08:01.280 --> 00:08:02.760
und es gab dann damals schon MySQL

00:08:02.760 --> 00:08:05.040
so ein bisschen, und es gab ein bisschen PostgreSQL,

00:08:05.920 --> 00:08:06.780
und PostgreSQL

00:08:06.780 --> 00:08:09.480
hatte mehr Ähnlichkeit,

00:08:09.600 --> 00:08:11.300
also da gab es schon irgendwelche Features, die gab es

00:08:11.300 --> 00:08:13.420
bei MySQL noch nicht. Ich weiß nicht mehr genau, was es war.

00:08:13.580 --> 00:08:15.320
Ich habe dann PostgreSQL genommen,

00:08:15.380 --> 00:08:18.980
und es war damals wirklich noch ziemlich identisch.

00:08:19.320 --> 00:08:24.880
Ich habe später erfahren, PostgreSQL und Informix hatten denselben Urquart.

00:08:24.980 --> 00:08:27.780
Das war beides irgendwie an der Universität Barclay entwickelt.

00:08:27.780 --> 00:08:30.860
Nein, das heißt, es gab einen, der das an der Universität Barclay,

00:08:30.940 --> 00:08:32.480
dieses Datenbanksystem entwickelt hat.

00:08:33.840 --> 00:08:37.580
Ich weiß nicht, ob das auch schon Michael Stonebreaker war.

00:08:37.620 --> 00:08:38.800
Ja, das war Michael Stonebreaker.

00:08:39.800 --> 00:08:40.980
Ingress heißt es.

00:08:41.180 --> 00:08:42.680
Ich kam jetzt gerade zu schnell nicht auf den Namen.

00:08:42.680 --> 00:09:04.360
Also Michael Stolbrecker hatte dieses Projekt mit Ingress. Michael Stolbrecker hat dann die Universität zweimal verlassen. Ich weiß jetzt nicht, bei welchem Mal und mit dem Code zusammen und er hatte dann den Code irgendwie verkauft. Deswegen hieß es dann, ist dann wieder zurück zur Uni. Da er das nicht mehr Ingress nennen konnte, musste es jetzt Postgres heißen, also nach Ingress, Post für nach Ingress.

00:09:04.360 --> 00:09:10.380
und aus dem einen Mal, wo er es verlassen hat, samt Code ist dann später Informix entstanden.

00:09:11.040 --> 00:09:14.080
Also die basieren wirklich beide auf dem uralten Ingress-Code

00:09:14.080 --> 00:09:19.840
und deswegen war das zu der Zeit noch so 2099, 2000 war das noch ziemlich identisch.

00:09:20.300 --> 00:09:23.520
Das heißt, du konntest auch so den Dampf vom einen nehmen in den anderen einspülen und so weiter.

00:09:23.640 --> 00:09:26.860
Das war noch relativ, so unterschiedliche Features hatten sie nicht.

00:09:26.860 --> 00:09:30.200
Ist heute natürlich nicht mehr so nach 20 Jahren Weiterentwicklung.

00:09:30.200 --> 00:09:37.440
und so bin ich irgendwie da reingekommen in diese Postgres-Geschichte.

00:09:38.240 --> 00:09:45.120
Dann hatte ich einen Job in PostgresQL und ich hatte festgestellt, PostgresQL kann was nicht.

00:09:45.580 --> 00:09:49.520
Ich hatte im Studium gelernt, dass irgendeine Update-Syntax, eine spezielle wäre Standard,

00:09:50.240 --> 00:09:54.900
aber Postgres konnte das nicht und dann hieß es, ja, entwickle doch.

00:09:54.900 --> 00:09:57.580
und ich hatte dann einen Mentor dazu,

00:09:57.880 --> 00:10:00.000
einen der großen Entwickler von PostgreSQL,

00:10:00.200 --> 00:10:01.460
mit dem habe ich mir ein Büro geteilt.

00:10:03.500 --> 00:10:04.100
Das stimmt gar nicht,

00:10:04.160 --> 00:10:06.060
der war im Nachbarbüro, aber wir haben zusammen in derselben Firma

00:10:06.060 --> 00:10:08.140
gearbeitet und

00:10:08.140 --> 00:10:10.240
dann habe ich angefangen an PostgreSQL

00:10:10.240 --> 00:10:11.080
mitzuentwickeln

00:10:11.080 --> 00:10:14.360
und das fand PostgreSQL ganz toll,

00:10:14.820 --> 00:10:16.020
weil da hatte eine Susanne

00:10:16.020 --> 00:10:17.900
einen Patch eingereicht, ein weiblicher

00:10:17.900 --> 00:10:20.060
Vorname und dann haben die

00:10:20.060 --> 00:10:21.980
also wirklich ganz große E-Mails geschrieben,

00:10:22.220 --> 00:10:23.520
ob es noch eine zweite Frau gibt

00:10:23.520 --> 00:10:25.400
oder ob ich die Erste wäre.

00:10:25.660 --> 00:10:27.620
Dann haben sie festgestellt, ich war die erste Entwicklerin,

00:10:27.820 --> 00:10:29.440
die ein Patch dann committed bekommen hat

00:10:29.440 --> 00:10:30.720
und in den Post-Restore-Code.

00:10:31.380 --> 00:10:33.800
Da waren die so stolz,

00:10:33.920 --> 00:10:35.480
so juhu, wir haben endlich eine Frau.

00:10:36.200 --> 00:10:37.520
Das hat so ein bisschen Welle

00:10:37.520 --> 00:10:39.480
geschlagen. Und dann habe ich aber

00:10:39.480 --> 00:10:41.080
irgendwie diesen Job.

00:10:41.780 --> 00:10:42.880
Leider ist was passiert.

00:10:43.740 --> 00:10:45.760
Ich brauchte einen neuen Job

00:10:45.760 --> 00:10:47.300
und ich kriegte dann

00:10:47.300 --> 00:10:48.320
per ICQ

00:10:48.320 --> 00:10:51.140
schrieb mich dann jemand an.

00:10:51.660 --> 00:10:52.560
Wie war das nochmal? Oh oh.

00:10:52.560 --> 00:10:54.520
oder so. Ich weiß es

00:10:54.520 --> 00:10:56.600
nicht mehr, aber es war der

00:10:56.600 --> 00:10:58.360
CEO von MySQL.

00:10:59.620 --> 00:11:00.600
Der schrieb mich bei ICQ

00:11:00.600 --> 00:11:02.160
an, ich habe gehört, was passiert ist,

00:11:02.760 --> 00:11:04.440
du suchst doch bestimmt einen neuen Job, du kannst

00:11:04.440 --> 00:11:06.480
morgen bei uns anfangen. Und ich

00:11:06.480 --> 00:11:08.200
stand da, ich habe von MySQL überhaupt keine Ahnung.

00:11:09.080 --> 00:11:09.440
Hallo?

00:11:10.360 --> 00:11:12.400
Ja, das lernst du. Und dann musste ich dann

00:11:12.400 --> 00:11:13.840
natürlich ein bisschen durch diesen ganzen,

00:11:14.280 --> 00:11:16.520
wir wissen noch nicht in welcher Abteilung, aber wir nehmen dich an

00:11:16.520 --> 00:11:18.400
und dann, wie kannst du bei uns anfangen?

00:11:18.960 --> 00:11:20.480
Ich habe mir das dann natürlich erstmal überlegt

00:11:20.480 --> 00:11:22.300
und musste dann durch diese, so ein bisschen

00:11:22.300 --> 00:11:24.040
durch diesen Bewerbungsprozess durch mit

00:11:24.040 --> 00:11:26.020
erstes Interview auf Englisch

00:11:26.020 --> 00:11:28.340
einer Frau aus Maine, die ich

00:11:28.340 --> 00:11:30.600
überhaupt nicht verstanden habe. Mein späterer

00:11:30.600 --> 00:11:32.540
Chef sagte, das ist auch schwierig, diesen Dialekt

00:11:32.540 --> 00:11:33.260
zu verstehen,

00:11:34.300 --> 00:11:36.540
weil sie hatte mich nach irgendwas

00:11:36.540 --> 00:11:38.460
gefragt und ich habe ihr was völlig anderes erklärt,

00:11:38.560 --> 00:11:40.580
weil ich es Englisch nicht verstanden habe.

00:11:41.140 --> 00:11:42.560
Naja, und...

00:11:42.560 --> 00:11:43.120
Hat sie das gemerkt?

00:11:44.300 --> 00:11:46.400
Sie hat mich einfach erklären lassen. Natürlich.

00:11:46.700 --> 00:11:48.260
Ich weiß gar nicht mehr, wonach sie mich

00:11:48.260 --> 00:11:48.840
gefragt hat.

00:11:50.220 --> 00:11:51.780
Ich habe, glaube ich, Point-and-Time-Recovery

00:11:51.780 --> 00:11:53.500
erklärt und sie wollte

00:11:53.500 --> 00:11:55.920
irgendwas anderes wissen, aber sie hat mich einfach erklären lassen.

00:11:57.140 --> 00:11:57.720
Irgendwann hast du irgendwas

00:11:57.720 --> 00:11:59.480
Schönes doch gewusst.

00:11:59.600 --> 00:12:01.760
Und ja, natürlich, sie wollte glaube ich nur so

00:12:01.760 --> 00:12:03.080
generell so ein bisschen abprüfen.

00:12:04.220 --> 00:12:05.680
Und ja, dann war ich jahrelang

00:12:05.680 --> 00:12:07.780
bei MySQL, bis die dann standen wurden.

00:12:07.900 --> 00:12:09.700
Da habe ich auch noch mitgemacht und dann wurden sie

00:12:09.700 --> 00:12:09.980
Oracle.

00:12:11.580 --> 00:12:13.460
Und dann bin ich mit vielen

00:12:13.460 --> 00:12:14.940
anderen Kollegen gegangen.

00:12:15.740 --> 00:12:16.640
Das musst du nochmal genau erklären.

00:12:17.640 --> 00:12:19.060
Ja, also MySQL

00:12:19.060 --> 00:12:23.100
ist sehr, sehr schnell gewachsen.

00:12:23.280 --> 00:12:24.780
Wir waren zum Schluss,

00:12:24.980 --> 00:12:27.320
als wir noch MySQL, also MySQL ist in Schweden gegründet,

00:12:27.380 --> 00:12:29.020
war ein schwedisches Unternehmen, weltweit

00:12:29.020 --> 00:12:30.960
alle im Homeoffice. MySQL

00:12:30.960 --> 00:12:32.840
ist tatsächlich auch einer der Vorreiter, was

00:12:32.840 --> 00:12:34.920
Homeoffice angeht, also echtes Homeoffice

00:12:34.920 --> 00:12:36.860
mit eigenen Büros und was man da alles beachten

00:12:36.860 --> 00:12:38.160
muss, ist nämlich gar nicht so einfach.

00:12:39.260 --> 00:12:39.620
Und

00:12:39.620 --> 00:12:43.020
wir hatten, glaube ich, zum Schluss 400

00:12:43.020 --> 00:12:44.960
Mitarbeiter, 200 Techniker, 200

00:12:44.960 --> 00:12:46.940
Sales oder irgendwie so, so Pi mal Daumen und

00:12:46.940 --> 00:12:48.940
Auge. Und im

00:12:48.940 --> 00:13:18.920
und Jochen unterhalten sich über die Programmiersprache Python

00:13:18.940 --> 00:13:21.000
beschlossen, sie verkaufen es. Die Aktionäre

00:13:21.000 --> 00:13:24.460
haben dann

00:13:24.460 --> 00:13:26.740
beschlossen, sie verkaufen es an Sun Microsystems

00:13:26.740 --> 00:13:27.460
für 2 Milliarden.

00:13:28.120 --> 00:13:29.920
2 Milliarden finde ich schon eine ganze Menge.

00:13:30.260 --> 00:13:31.360
Initial Public Offering.

00:13:32.500 --> 00:13:34.340
Initial Public Offering, genau.

00:13:34.900 --> 00:13:35.280
Und dann

00:13:35.280 --> 00:13:38.820
haben sie es verkauft an Sun Microsystems

00:13:38.820 --> 00:13:41.320
und ein Jahr später ist Sun Microsystems

00:13:41.320 --> 00:13:42.720
von Oracle gekauft worden.

00:13:47.140 --> 00:13:48.820
Könnt ihr euch vorstellen, dass wir mit Oracle

00:13:48.820 --> 00:14:18.800
und Python.

00:14:18.820 --> 00:14:28.380
und irgendwie den Code aber geforgt von MySQL, den er forgen konnte legal und hat dann MariaDB gegründet.

00:14:29.760 --> 00:14:37.380
MariaDB, weil er hat drei Kinder, My, also M-Y, aus Englisch My, Schwedisch eigentlich My.

00:14:38.100 --> 00:14:41.120
Die jüngste Tochter heißt Maria und er hat auch einen Sohn, der heißt Max.

00:14:41.120 --> 00:14:49.780
Es gibt auch ein MaxDB, ich weiß nicht, ob es das noch gibt, aber das war eine Datenbank, die unter SAP oder im SAP-Unfeld mit war.

00:14:49.920 --> 00:14:55.600
Ich glaube aber, die war schon fast eingestompft, als ich bei MySQL war.

00:14:56.280 --> 00:15:00.860
Und also hat er gesagt, okay, das nächste System heißt dann Maria, nach meiner jüngsten Tochter.

00:15:01.380 --> 00:15:03.440
So ist das dann mit MariaDB gekommen.

00:15:03.680 --> 00:15:11.100
Und auch die anderen Chefs, was ja immer häufig so ist, wenn eine Firma aufgekauft wird, wer gehen muss, sind die ganzen Geschäftsführer, hätte ich gesagt.

00:15:11.120 --> 00:15:15.780
oder die ganz, ganz hohen Chefs, so auch der von den ganzen Services,

00:15:16.040 --> 00:15:17.960
also Training, Consulting, Support.

00:15:19.000 --> 00:15:22.400
Und der hatte dann damals eine Consulting-Firma gegründet, SkySQL,

00:15:22.660 --> 00:15:25.460
weil sie hatten sich überlegt, sie wollten nicht mehr Entwicklung

00:15:25.460 --> 00:15:27.880
und die Dienstleistung in einer Firma haben.

00:15:28.340 --> 00:15:31.780
Mittlerweile ist das wieder alles MariaDB, die haben dann das wieder zusammengelegt,

00:15:31.880 --> 00:15:33.880
aber sie wollten ja ein bisschen aus Erfahrung lernen.

00:15:34.760 --> 00:15:39.180
Das ist so, dass MariaDB, es sind ganz, ganz viele Kollegen,

00:15:39.180 --> 00:15:41.460
damals von den Entwicklern

00:15:41.460 --> 00:15:42.680
zu MariaDB gegangen.

00:15:43.780 --> 00:15:45.400
Also ich weiß nicht,

00:15:45.460 --> 00:15:46.940
wer da noch bei Oracle heute ist.

00:15:47.780 --> 00:15:49.380
Ich wüsste jetzt keinen, aber es

00:15:49.380 --> 00:15:50.740
heißt nicht, dass da keiner mehr ist.

00:15:53.600 --> 00:15:55.180
Also quasi komplett einfach

00:15:55.180 --> 00:15:57.440
alle gekündigt. Ja, das war ganz viel

00:15:57.440 --> 00:15:59.240
bei diesem Sun Microsystems.

00:15:59.560 --> 00:16:01.600
Oracle kauft Sun Microsystems.

00:16:01.600 --> 00:16:03.560
Ich weiß nicht, ob ihr das gehört habt. Java zum Beispiel.

00:16:03.660 --> 00:16:05.860
Die Java-Leute haben auch fast alle gekündigt.

00:16:06.240 --> 00:16:07.400
Die Open Office-Leute

00:16:07.400 --> 00:16:11.080
haben fast alle gekündigt und MySQL halt entsprechend auch.

00:16:11.180 --> 00:16:12.720
Wo sind die Java-Leute alle hingekommen?

00:16:12.880 --> 00:16:13.680
Das weiß ich nicht.

00:16:13.940 --> 00:16:14.660
Keine Ahnung.

00:16:15.020 --> 00:16:15.400
Keine Ahnung.

00:16:16.620 --> 00:16:19.400
Also wenn ihr es wisst, schreibt mal an hallo-at-python-podcast.de.

00:16:19.580 --> 00:16:20.140
Ja, genau.

00:16:21.020 --> 00:16:22.160
Und ja, so war das.

00:16:22.220 --> 00:16:25.040
Und ich bin dann zurück zu meinen Nürzeln.

00:16:25.180 --> 00:16:27.840
Ich habe mich dann mit einem Franzosen, mit einem Engländer,

00:16:28.540 --> 00:16:32.760
mit noch einem zweiten Deutschen und einem aus den USA

00:16:32.760 --> 00:16:35.840
und einem Italiener zusammengetan.

00:16:35.840 --> 00:16:38.900
und wir haben dann PostgreSQL erstmal.

00:16:40.040 --> 00:16:41.460
Es war so ein bisschen gemischt.

00:16:41.680 --> 00:16:43.220
Die Firma heißt Second Quadrant,

00:16:43.740 --> 00:16:45.040
ist jetzt EnterpriseDB

00:16:45.040 --> 00:16:46.700
und

00:16:46.700 --> 00:16:51.260
ich habe hauptsächlich Consulting gemacht,

00:16:51.480 --> 00:16:52.340
weltweit,

00:16:52.920 --> 00:16:54.780
für PostgreSQL. Also ich bin ganz viel

00:16:54.780 --> 00:16:56.880
in die Gegend gefahren, geflogen

00:16:56.880 --> 00:16:58.780
mit dem Amerikaner zusammen

00:16:58.780 --> 00:17:00.500
und irgendwann wurde uns das zu viel,

00:17:00.620 --> 00:17:03.040
mir zumindest, weil wenn du ganz viel unterwegs bist,

00:17:03.040 --> 00:17:04.360
irgendwann machst du das nicht mehr.

00:17:04.360 --> 00:17:07.440
und dann habe ich gesagt, okay, ich muss kürzer treten,

00:17:08.500 --> 00:17:10.300
habe dann erst noch so ein bisschen promoviert

00:17:10.300 --> 00:17:13.660
und dann am Ende gesagt, eigentlich liebst du das Ganze

00:17:13.660 --> 00:17:17.400
und mach bis heute im Grunde Postgreskel und MariaDB

00:17:17.400 --> 00:17:20.100
als Consultant und Trainer,

00:17:20.520 --> 00:17:23.180
aber hauptsächlich halt, wo man gut hinkommt.

00:17:23.440 --> 00:17:24.720
Also keine Langstreckenflüge mehr.

00:17:25.260 --> 00:17:27.360
Ich brauche das nicht heute Amerika, morgen Japan.

00:17:28.640 --> 00:17:30.400
Also wo man gut hinkommt.

00:17:30.720 --> 00:17:33.400
Das ist dann auch zum Beispiel Amsterdam ist näher

00:17:33.400 --> 00:17:35.020
als Bayern.

00:17:35.880 --> 00:17:37.420
Nein, ich fahre natürlich auch

00:17:37.420 --> 00:17:38.980
nach Bayern, so ist das nicht, aber

00:17:38.980 --> 00:17:41.040
es ist halt nicht so.

00:17:42.260 --> 00:17:43.260
Das ist so das,

00:17:43.740 --> 00:17:45.400
was ich mache. Ich war dann zwischendurch noch

00:17:45.400 --> 00:17:46.720
Sun Microsystems, hatte noch

00:17:46.720 --> 00:17:49.400
die Idee, nein, die hatten

00:17:49.400 --> 00:17:51.520
das Angebot gekriegt von ANSI, von dem

00:17:51.520 --> 00:17:53.380
American National

00:17:53.380 --> 00:17:55.060
Standard Institute.

00:17:55.780 --> 00:17:57.540
Genau, du wolltest nämlich erzählen, du hast nämlich doch mal

00:17:57.540 --> 00:17:59.400
diese ganze Reisetätigkeit vorher im

00:18:00.120 --> 00:18:01.460
Zusammenhang

00:18:01.460 --> 00:18:03.520
da mit dem SQL-Standard

00:18:03.520 --> 00:18:04.920
gemacht. Ja, Ansi

00:18:04.920 --> 00:18:08.100
ist

00:18:08.100 --> 00:18:09.600
an Microsystem

00:18:09.600 --> 00:18:11.460
herangetreten und hat gefragt,

00:18:13.460 --> 00:18:13.680
ob

00:18:13.680 --> 00:18:15.300
sie jetzt nicht

00:18:15.300 --> 00:18:17.520
jemanden,

00:18:17.520 --> 00:18:19.500
da sie jetzt ja MySQL aufgekauft

00:18:19.500 --> 00:18:21.380
haben, ob sie nicht jemanden im

00:18:21.380 --> 00:18:22.720
Standardgremium haben wollen.

00:18:23.240 --> 00:18:25.560
Ob wir nicht jemanden ins Standardgremium stellen können.

00:18:26.660 --> 00:18:27.380
Und bei Postgres

00:18:27.380 --> 00:18:29.500
war immer das Problem, das wollte der Standard

00:18:29.500 --> 00:18:31.380
nicht, weil das ja keine Legal Entity hat.

00:18:31.460 --> 00:18:33.120
Also, das macht ja kein Geld.

00:18:33.480 --> 00:18:35.600
Irgendwie Open Source. Da war etwas komisch.

00:18:36.360 --> 00:18:37.720
Und dann hatte Sun auch noch

00:18:37.720 --> 00:18:39.720
JavaDB und ich weiß nicht was.

00:18:40.040 --> 00:18:41.060
Die hatten noch ein paar mehr

00:18:41.060 --> 00:18:42.860
Datenbanksysteme.

00:18:43.740 --> 00:18:45.100
Und dann gab es

00:18:45.100 --> 00:18:48.080
irgendwo auf einer Konferenz

00:18:48.080 --> 00:18:50.200
ein Meeting. Ich war nur per Skype

00:18:50.200 --> 00:18:51.000
zugeschaltet.

00:18:52.780 --> 00:18:53.180
Und

00:18:53.180 --> 00:18:55.800
ich wusste auch gar nicht genau,

00:18:55.900 --> 00:18:58.380
aber wenn man in so einem Meeting per Skype zugeschaltet ist,

00:18:58.400 --> 00:19:00.140
du kriegst nicht wirklich mit, wenn die alle durcheinander

00:19:00.140 --> 00:19:01.260
reden, um was es da geht.

00:19:01.460 --> 00:19:02.940
und ich hatte dann irgendwie so meinen

00:19:02.940 --> 00:19:05.040
einen Kollegen, Sergey, den hatte ich im IAC

00:19:05.040 --> 00:19:07.420
also ich hatte Sergey dann gefragt

00:19:07.420 --> 00:19:09.300
um was geht es und dann sagte er

00:19:09.300 --> 00:19:11.340
erzählte er mir groß, ja die suchen jetzt jemanden

00:19:12.020 --> 00:19:13.420
der uns da

00:19:13.420 --> 00:19:15.040
im Standardgremium vertreten kann

00:19:15.040 --> 00:19:16.820
und irgendwie so in der Minute

00:19:16.820 --> 00:19:19.180
hast du Lust? Und ich sagte ja.

00:19:20.200 --> 00:19:21.600
Und dann hörte ich, dann hörte

00:19:21.600 --> 00:19:23.320
ich, dass Sergey sagte

00:19:23.320 --> 00:19:25.020
ich hab da jemanden

00:19:25.020 --> 00:19:27.340
also es muss so gesehen sein,

00:19:27.420 --> 00:19:29.400
dass Peter dann wohl von PostgreSQL

00:19:29.780 --> 00:19:31.100
den hatten wir mittlerweile

00:19:31.100 --> 00:19:32.700
zusammengeholt. Das war auch lustig.

00:19:32.840 --> 00:19:34.780
Mein alter Kollege Peter Eisentraut,

00:19:34.840 --> 00:19:36.760
mein uralter Mentor, der ist mir mehrfach gefolgt

00:19:36.760 --> 00:19:38.360
in mehrere Firmen. Das ist ganz lustig.

00:19:38.840 --> 00:19:40.600
Peter muss wohl auf den Monitor. Auf alle Fälle

00:19:40.600 --> 00:19:42.660
hörte ich nur wie Peter stimmen. Oh ja, das ist

00:19:42.660 --> 00:19:44.720
eine coole Idee. Da bin ich mit einverstanden.

00:19:45.780 --> 00:19:47.020
Und dann

00:19:47.020 --> 00:19:48.640
war wieder Stille und dann hörte ich

00:19:48.640 --> 00:19:49.720
meinen Chef sagen,

00:19:51.420 --> 00:19:52.740
auch ohne, dass mein Name

00:19:52.740 --> 00:19:54.180
bis dahin gefallen war,

00:19:55.620 --> 00:19:56.440
ja, genau,

00:19:57.740 --> 00:19:58.720
das ist perfekt.

00:19:59.340 --> 00:20:00.560
Und dann hörte ich alle anderen

00:20:00.560 --> 00:20:04.560
fragen, wer meint ihr denn jetzt? Und dann kam raus, ja Susanne. Und so bin ich

00:20:04.560 --> 00:20:07.080
dann erstmal in diesem Anziehgremium gelandet.

00:20:10.080 --> 00:20:12.740
Was sehr lustig ist in Amerika, weil

00:20:12.740 --> 00:20:16.740
man muss bei ISO sagen, so ein ISO-Standard funktioniert oder so ein Standard

00:20:16.740 --> 00:20:19.460
funktioniert so, du brauchst immer drei verschiedene Parteien.

00:20:21.000 --> 00:20:24.880
Also ich sag mal, du brauchst einen Hersteller, du brauchst irgendwie eine Universität

00:20:24.880 --> 00:20:27.060
und noch was Drittes oder zwei Hersteller.

00:20:27.060 --> 00:20:57.040
und Jochen unterhalten sich über die Programmiersprache Python

00:20:57.060 --> 00:20:57.820
und das ist...

00:20:57.820 --> 00:20:59.060
So.

00:21:00.540 --> 00:21:02.380
Jetzt das amerikanische Gremium.

00:21:02.680 --> 00:21:05.520
In Amerika saßen natürlich sämtliche Datenbankhersteller.

00:21:05.660 --> 00:21:07.040
Das ist eine riesengroße Gruppe gewesen.

00:21:07.500 --> 00:21:08.780
Da saß auch Microsoft drin.

00:21:08.860 --> 00:21:10.240
Die haben kaum was gesagt.

00:21:10.640 --> 00:21:13.420
Im Grunde haben sich immer nur IBM versus Oracle

00:21:13.420 --> 00:21:15.120
die beiden da

00:21:15.120 --> 00:21:16.760
ausgemacht.

00:21:16.820 --> 00:21:18.960
Und Oracle hat natürlich auch Leute, die nichts anderes

00:21:18.960 --> 00:21:21.080
den ganzen Tag machen, als sich neue Ideen für den Standard

00:21:21.080 --> 00:21:23.080
ausdenken, so ungefähr. Oder versuchen dann

00:21:23.080 --> 00:21:24.800
die Features, die Oracle sich ausgedacht hat,

00:21:24.800 --> 00:21:26.820
in den Standard reinzubringen. So muss ich das mal höflich

00:21:26.820 --> 00:21:28.700
sagen. Und IBM und Oracle

00:21:28.700 --> 00:21:29.980
saßen auch fast in jedem Land.

00:21:31.820 --> 00:21:32.980
Google hat mein Geld, da kann man

00:21:32.980 --> 00:21:34.060
mir einfach was aus der Stunde sagen.

00:21:34.060 --> 00:21:36.540
Aber wenn du bei ANSI bist, vertrittst du natürlich in dem

00:21:36.540 --> 00:21:37.880
ISO-Gremium auch die USA.

00:21:39.480 --> 00:21:40.700
Und dann war ich dann auf diesem

00:21:40.700 --> 00:21:42.520
ersten internationalen ISO-Meeting.

00:21:43.540 --> 00:21:44.720
Dann kam Deutschland auf mich zu

00:21:44.720 --> 00:21:46.520
und sagt, warum zur Hölle vertrittst du

00:21:46.520 --> 00:21:47.320
die USA?

00:21:48.600 --> 00:21:50.660
Und dann haben die mich zu DIN geholt

00:21:50.660 --> 00:21:52.080
und dann habe ich halt ganz lange

00:21:52.080 --> 00:21:53.920
bei DIN mitgemacht.

00:21:54.780 --> 00:21:56.780
Weil die Länder machen immer die Vorschläge

00:21:56.780 --> 00:21:58.440
im ISO-Gremium. Das kommt auch noch dazu.

00:21:58.540 --> 00:22:00.220
Also, wenn du eine Idee hast,

00:22:00.440 --> 00:22:02.680
dann macht das Land

00:22:02.680 --> 00:22:04.620
einen Vorschlag und im ISO-Gremium wird dann

00:22:04.620 --> 00:22:06.560
abgestimmt, ob das genommen wird oder nicht.

00:22:07.580 --> 00:22:09.020
Und das ist extremst

00:22:09.020 --> 00:22:10.140
politisch auch teilweise.

00:22:11.080 --> 00:22:12.760
Das ist nicht so einfach. Da kann es dir

00:22:12.760 --> 00:22:14.620
passieren, dass es

00:22:14.620 --> 00:22:16.200
uns mal passiert tatsächlich,

00:22:17.100 --> 00:22:18.880
dass dann ein asiatisches Land

00:22:18.880 --> 00:22:20.640
gegen den Vorschlag von Deutschland

00:22:20.640 --> 00:22:22.980
gestimmt hat und dann fragt der Kanadier

00:22:22.980 --> 00:22:24.780
oder der Engländer, irgendwer fragte nach,

00:22:25.480 --> 00:22:25.840
warum?

00:22:26.780 --> 00:22:28.800
und dann kam ja, weil Deutschland in irgendeiner

00:22:28.800 --> 00:22:30.720
Schrauben-Norm gegen Japan

00:22:30.720 --> 00:22:32.740
gestinkt hat oder gegen das asiatische Land, ich weiß

00:22:32.740 --> 00:22:34.640
nicht mehr, welches genau. Also so

00:22:34.640 --> 00:22:37.040
wir standen da, wir kannten diese Schrauben-Norm

00:22:37.040 --> 00:22:37.540
nicht mal.

00:22:39.360 --> 00:22:40.440
Vielleicht nochmal genau

00:22:40.440 --> 00:22:42.700
erklären, worum es eigentlich geht

00:22:42.700 --> 00:22:44.480
bei so einem Standard. Da geht es halt darum, welche

00:22:44.480 --> 00:22:46.860
Features so eine Datenbank haben muss,

00:22:46.880 --> 00:22:48.040
damit sie sich so nennen darf?

00:22:48.320 --> 00:22:50.780
Nee, es geht darum, so ein bisschen Einigkeit

00:22:50.780 --> 00:22:52.480
zu haben. Also zum Beispiel, dass

00:22:52.480 --> 00:22:54.660
du egal, welches

00:22:54.660 --> 00:22:56.420
Datenbank-System du hast,

00:22:56.420 --> 00:23:03.840
vor dem SQL-Standard hatte jedes Datenbanksystem seine eigene Sprache.

00:23:06.180 --> 00:23:11.400
Und da hieß dann auch nicht immer alles Select, wenn du jetzt was raussuchst,

00:23:11.400 --> 00:23:13.760
das konnte auch ein Feind sein, ich habe keine Ahnung, wie es hieß.

00:23:14.860 --> 00:23:19.300
Und die hatten halt, es gab ja schon Oracle und die IBM und Postgres,

00:23:19.360 --> 00:23:21.240
das gibt es ja alles schon seit den 70ern.

00:23:21.240 --> 00:23:23.740
und dann hat sich Oracle

00:23:23.740 --> 00:23:25.520
und der Stonebreaker

00:23:25.520 --> 00:23:27.840
und einer von IBM,

00:23:28.040 --> 00:23:29.820
wenn ich das richtig weiß, die haben sich dann damals

00:23:29.820 --> 00:23:31.800
mal Ende der 70er zusammengesetzt und haben

00:23:31.800 --> 00:23:33.780
gesagt, okay, wir entwickeln dann mal eine

00:23:33.780 --> 00:23:35.700
gemeinsame Sprache, damit

00:23:35.700 --> 00:23:37.840
wir nicht auf jedem System wieder

00:23:37.840 --> 00:23:39.440
das komplett umprogrammieren müssen.

00:23:40.480 --> 00:23:41.720
Und so ist dann

00:23:41.720 --> 00:23:43.640
der SQL-Standard entstanden

00:23:43.640 --> 00:23:45.800
und ich sag mal, so ein Select

00:23:45.800 --> 00:23:47.420
ist ja zum Glück auf allen

00:23:47.420 --> 00:23:49.580
Datenbankensystemen

00:23:49.580 --> 00:23:51.800
funktioniert es und Insert funktioniert auch meistens noch,

00:23:52.380 --> 00:23:53.580
dass das Grund-SQL

00:23:53.580 --> 00:23:55.460
funktioniert meistens noch auf allen

00:23:55.460 --> 00:23:56.100
gleich.

00:23:58.300 --> 00:23:58.320
Und

00:23:58.320 --> 00:24:01.220
in den Dialekten wird es dann, weicht das dann

00:24:01.220 --> 00:24:03.460
ab? Ja, genau, in den Dialekten wird es anders

00:24:03.460 --> 00:24:05.620
und das kommt daher, weil natürlich

00:24:05.620 --> 00:24:07.580
diese Gremien, da wird dann ein Vorschlag

00:24:07.580 --> 00:24:09.540
gemacht und

00:24:09.540 --> 00:24:11.540
du machst keinen Vorschlag, wenn du das

00:24:11.540 --> 00:24:12.700
nicht schon implementiert hast.

00:24:13.840 --> 00:24:15.260
Also ich kann zum Beispiel sagen,

00:24:15.460 --> 00:24:17.720
die Limit-Geschichte ist ganz witzig.

00:24:17.720 --> 00:24:18.720
MySQL hat

00:24:18.720 --> 00:24:20.720
Limit erfunden.

00:24:21.760 --> 00:24:22.600
Also Limit heißt,

00:24:22.820 --> 00:24:25.020
wenn ich was raussuche und ich mache am Ende

00:24:25.020 --> 00:24:27.100
Limit 1, dann kriege ich nur den ersten Wert

00:24:27.100 --> 00:24:29.580
raus. Wenn ich mache 1,3,

00:24:29.740 --> 00:24:31.080
dann kriege ich, wirft er die

00:24:31.080 --> 00:24:33.060
ersten drei weg und er gibt mir den vierten Wert.

00:24:33.720 --> 00:24:35.240
Weil der Offset dann 3 ist.

00:24:37.620 --> 00:24:38.880
Super so ein Tag.

00:24:39.640 --> 00:24:41.120
Postgres fand Limit total

00:24:41.120 --> 00:24:43.320
cool und hat gesagt, das implementieren

00:24:43.320 --> 00:24:45.180
wir auch. Aber diese Limit

00:24:45.180 --> 00:24:47.140
1,3, also x,y,

00:24:47.140 --> 00:24:49.680
das ist jetzt ein bisschen arg kryptisch

00:24:49.680 --> 00:24:51.240
und die haben es dann schon implementiert

00:24:51.240 --> 00:24:52.960
mit Limit X

00:24:52.960 --> 00:24:53.920
Offset Y

00:24:53.920 --> 00:24:57.280
und dann hieß es, bring das mal in den

00:24:57.280 --> 00:24:59.140
Standard, dann haben wir dafür einen Vorschlag

00:24:59.140 --> 00:24:59.500
gemacht

00:24:59.500 --> 00:25:03.040
und das ist auch durchgegangen

00:25:03.040 --> 00:25:04.760
am Ende und

00:25:04.760 --> 00:25:07.400
allerdings war dann in dem internationalen

00:25:07.400 --> 00:25:08.980
Gremium, kam dann

00:25:08.980 --> 00:25:11.140
zu bedenken, ja das wäre aber immer noch nicht die

00:25:11.140 --> 00:25:13.200
Syntax, wie SQL eigentlich aussehen würde

00:25:13.200 --> 00:25:15.100
und die offizielle Syntax heißt

00:25:15.100 --> 00:25:16.080
jetzt glaube ich Fetch

00:25:16.080 --> 00:25:21.160
x-next-rows-offset-y.

00:25:21.400 --> 00:25:21.480
Okay.

00:25:22.080 --> 00:25:22.220
Ja.

00:25:22.640 --> 00:25:27.360
Ich glaube, MySQL oder MariaDB

00:25:27.360 --> 00:25:28.640
hat mittlerweile die Limit

00:25:28.640 --> 00:25:31.420
x, y gibt es glaube ich auch nicht mehr.

00:25:31.480 --> 00:25:33.260
Die haben das glaube ich auch auf Offset geändert,

00:25:33.420 --> 00:25:35.040
weil das zu kryptisch war. Da bin ich mir aber nicht

00:25:35.040 --> 00:25:37.220
hundertprozentig sicher. Im Moment müsste ich ausprobieren.

00:25:38.100 --> 00:25:39.300
Aber so funktioniert

00:25:39.300 --> 00:25:40.940
halt das Standard. Und was halt,

00:25:41.160 --> 00:25:43.120
wo man das halt merkt, wo alle

00:25:43.120 --> 00:25:44.680
schon was hatten, war bei sämtlichen

00:25:44.680 --> 00:25:46.240
Zeitgeschichten.

00:25:46.980 --> 00:25:48.840
Wenn man ein Date bei Oracle eingibt, ist das

00:25:48.840 --> 00:25:50.240
immer mit Uhrzeit zum Beispiel.

00:25:51.060 --> 00:25:52.680
Da merkt man schon, okay, das hatten sie

00:25:52.680 --> 00:25:54.860
vorher schon. Und dann kann man natürlich

00:25:54.860 --> 00:25:56.780
als Datenbanksystem sagen, wir implementieren das

00:25:56.780 --> 00:25:58.940
nach, machen dann Alias draus

00:25:58.940 --> 00:26:00.520
oder ähnliches. Aber zumindest

00:26:00.520 --> 00:26:02.140
das Uhr, das Grund ist erstmal

00:26:02.140 --> 00:26:04.520
dasselbe. Ich sage ja, so ein Insights-Statement,

00:26:04.640 --> 00:26:06.460
so ein normales Update-Statement, das funktioniert

00:26:06.460 --> 00:26:08.640
bei allen ziemlich gleich. Und dann hast du irgendwann

00:26:08.640 --> 00:26:10.380
die Dialekte, wie du es so schön gesagt hast.

00:26:11.140 --> 00:26:12.500
Aber Standard ist halt

00:26:12.500 --> 00:26:13.820
eine politische Geschichte.

00:26:13.820 --> 00:26:16.360
und die treffen sich dann auch zweimal im Jahr.

00:26:16.980 --> 00:26:18.380
Immer ein Land lädt ein

00:26:18.380 --> 00:26:20.280
und je nachdem welches Land

00:26:20.280 --> 00:26:22.160
einlädt, will sich dann auch

00:26:22.160 --> 00:26:23.520
hervorheben.

00:26:24.100 --> 00:26:25.860
Dann hast du dann so Meetings auf Hawaii.

00:26:26.500 --> 00:26:27.940
Oh nein. Auf Kreta.

00:26:29.480 --> 00:26:30.320
Ja, das sagst du so.

00:26:30.340 --> 00:26:30.880
Welche in Sylt?

00:26:31.400 --> 00:26:34.140
In Deutschland hatten wir mal überlegt, das auf Sylt

00:26:34.140 --> 00:26:36.120
zu machen. Kommst du natürlich

00:26:36.120 --> 00:26:38.080
super hin. Wir waren dann am Ende doch

00:26:38.080 --> 00:26:40.100
in Berlin, weil das DIN-Gebäude in Berlin

00:26:40.100 --> 00:26:41.960
bot sich an. Wir waren auch in London,

00:26:41.960 --> 00:26:44.320
weil auch da haben die gesagt

00:26:44.320 --> 00:26:45.380
das bietet sich an

00:26:45.380 --> 00:26:47.780
das ist schon ganz schön, das ist natürlich teuer

00:26:47.780 --> 00:26:50.800
weil die Reisen musst du ja auch irgendwo bezahlen

00:26:50.800 --> 00:26:52.540
und

00:26:52.540 --> 00:26:54.240
Standardisierung

00:26:54.240 --> 00:26:55.500
ist ein spannendes Thema

00:26:55.500 --> 00:26:57.020
ist halt, ja

00:26:57.020 --> 00:26:59.400
wenn man weiß wie es funktioniert

00:26:59.400 --> 00:27:01.940
und Amerika kam immer mit 15 Leuten

00:27:01.940 --> 00:27:03.600
auf diese internationalen Meetings

00:27:03.600 --> 00:27:06.680
weil es konnte ja passieren, dass bei den Diskussionen

00:27:06.680 --> 00:27:08.100
irgendwas dann

00:27:08.100 --> 00:27:09.860
entschieden werden musste, wo das Land

00:27:09.860 --> 00:27:11.820
eine Stimme abgibt und damit die dann überhaupt

00:27:11.820 --> 00:27:12.720
Mehrheit hatten.

00:27:14.020 --> 00:27:15.660
Deutschland, wir waren damals zu zweit,

00:27:15.760 --> 00:27:16.720
es war noch die Uni Aachen,

00:27:16.900 --> 00:27:19.980
die haben gesagt, wenn ihr

00:27:19.980 --> 00:27:22.060
beide euch einig seid, einer von Eureka und ich,

00:27:22.180 --> 00:27:23.760
dann passt das schon so ungefähr.

00:27:24.500 --> 00:27:25.840
Und auch die anderen Länder waren

00:27:25.840 --> 00:27:28.020
kleiner, aber wie gesagt, IBM und Eureka,

00:27:28.060 --> 00:27:29.380
die saßen fast in jedem Land.

00:27:30.760 --> 00:27:32.120
Das war schon sehr spannend.

00:27:32.880 --> 00:27:34.000
Und Postgres wollten sie immer

00:27:34.000 --> 00:27:35.920
nicht haben oder nicht annehmen, weil es

00:27:35.920 --> 00:27:37.720
war ja rein Open Source, da gab es keine

00:27:37.720 --> 00:27:39.900
Legal Entity und so weiter und so fort.

00:27:39.900 --> 00:27:42.240
mittlerweile sitzt der Peter

00:27:42.240 --> 00:27:44.000
tatsächlich im Standardgremium

00:27:44.000 --> 00:27:45.300
in Deutschland glaube ich auch

00:27:45.300 --> 00:27:47.900
wir haben den Peter sowieso schon mit dazu geholt

00:27:47.900 --> 00:27:49.820
von PostgresQL, der hat mit seiner

00:27:49.820 --> 00:27:51.760
in Finnland gelebt und den haben wir aber immer

00:27:51.760 --> 00:27:53.780
beraten und mit dazu gehabt, weil wir Deutschen

00:27:53.780 --> 00:27:56.080
hatten eigentlich nichts dagegen, wenn Postgres mit drin ist

00:27:56.080 --> 00:27:57.820
weil ich habe offiziell ja

00:27:57.820 --> 00:28:00.140
MySQL vertreten oder MariaDB

00:28:00.140 --> 00:28:01.880
ne MySQL

00:28:01.880 --> 00:28:03.840
tatsächlich nicht MariaDB, weil es

00:28:03.840 --> 00:28:05.380
wurde ja von Auric bezahlt und

00:28:05.380 --> 00:28:08.200
natürlich

00:28:08.200 --> 00:28:38.180
und Jochen unterhalten sich über die Programmiersprache Python

00:28:38.200 --> 00:28:40.600
und wenn MariaDB da jemanden drin haben möchte,

00:28:40.960 --> 00:28:42.360
dann, da ich nicht

00:28:42.360 --> 00:28:44.140
bei MariaDB arbeite, ich weiß nicht, ob

00:28:44.140 --> 00:28:46.240
einer von MariaDB irgendwo im Gremium sitzt,

00:28:46.600 --> 00:28:48.240
weiß ich jetzt nicht. Aber das

00:28:48.240 --> 00:28:50.140
war eine spannende Geschichte, mal zu sehen,

00:28:50.280 --> 00:28:52.380
wieso Standardisierung funktioniert.

00:28:52.820 --> 00:28:54.260
Und ich finde es dann ganz lustig,

00:28:54.360 --> 00:28:56.140
weil SQL heißt

00:28:56.140 --> 00:28:57.160
nämlich nur SQL.

00:28:58.660 --> 00:29:00.340
Das ist auch eine sehr lustige Geschichte,

00:29:00.480 --> 00:29:02.020
die ist bei Wikipedia ganz spannend.

00:29:03.540 --> 00:29:04.200
Die hatten, ich hatte

00:29:04.200 --> 00:29:06.300
vorhin gesagt, vor dem Standard hatten die alle eigene

00:29:06.300 --> 00:29:09.320
Sprachen. Und die von IBM hieß Sequel.

00:29:11.940 --> 00:29:12.420
Und

00:29:12.420 --> 00:29:16.660
das Gremium hat dann beschlossen, sie nennen diese neue Sprache,

00:29:16.720 --> 00:29:19.520
die sie da entwickeln, SQL. War natürlich

00:29:19.520 --> 00:29:22.840
ein bisschen angelehnt an das IBM Sequel, aber war es nicht.

00:29:22.880 --> 00:29:25.060
Was heißt das? Sequence Query Language? Gar nicht.

00:29:25.200 --> 00:29:26.360
Das heißt einfach nur SQL.

00:29:27.060 --> 00:29:30.140
Es steht immer bei Wikipedia Standard Query Language,

00:29:31.260 --> 00:29:33.120
Structured Query Language, irgendwie sowas.

00:29:33.120 --> 00:29:42.660
und es wird dann, wir schreiben dann immer schon, im Englischen ist das lustig, wir schreiben dann in die Diskussion immer schon rein und ändern das und schreiben dann rein, passt nicht und so, hier, siehe Standard, heißt nur SQL.

00:29:43.680 --> 00:29:46.420
Dann steht es drei Tage auch richtig drin und dann ändert es wieder einer.

00:29:47.600 --> 00:29:50.280
Im deutschen Wikipedia steht es glaube ich mittlerweile richtig drin.

00:29:50.760 --> 00:29:53.740
Also das ist auch so von wegen, wie funktioniert Wikipedia.

00:29:55.440 --> 00:30:07.763
Wenn man dann da steht und denkt so ich habe es erfunden Ich glaube ich habe auch irgendjemand anderes mal passiert irgendeiner ber Person Die hat dann irgendwas ge zu sich selbst

00:30:08.503 --> 00:30:12.383
Das hat Wikipedia wieder zurückgeändert, weil sie meinten, sie kennen ihn besser als er selbst.

00:30:12.602 --> 00:30:15.602
Das ist ein kniffliges Problem.

00:30:16.043 --> 00:30:18.123
Genau, wer ist da autorisiert?

00:30:18.962 --> 00:30:22.763
Deswegen ist Wikipedia auch, ich erkläre das immer bei Studierenden,

00:30:22.763 --> 00:30:24.722
Deswegen ist Wikipedia auch keine

00:30:24.722 --> 00:30:26.903
zitierwürdige Quelle, wenn die so

00:30:26.903 --> 00:30:28.802
wissenschaftliche Arbeiten schreiben müssen

00:30:28.802 --> 00:30:31.043
weil das jeder ändern kann

00:30:31.043 --> 00:30:32.763
und weil du dann auch solche Phänomene hast

00:30:32.763 --> 00:30:33.543
teilweise

00:30:33.543 --> 00:30:37.043
Ja, ganz viel dazu

00:30:37.043 --> 00:30:38.942
Spannend mal

00:30:38.942 --> 00:30:40.562
die Geschichte vom Datenbanksystem

00:30:40.562 --> 00:30:43.043
Ja, wir können natürlich sowohl

00:30:43.043 --> 00:30:44.942
Postgres als auch Maria, also ich mache

00:30:44.942 --> 00:30:46.903
überwiegend heute MariaDB

00:30:46.903 --> 00:30:49.123
und PostgresQL, selten noch

00:30:49.123 --> 00:30:50.663
das Original MySQL

00:30:50.663 --> 00:30:53.422
weil das Original MySQL gibt es natürlich bei Oracle immer noch.

00:30:54.702 --> 00:30:56.062
Ich habe aber das Gefühl,

00:30:56.263 --> 00:30:58.222
irgendwo ist meine Kundenwolke die,

00:30:58.322 --> 00:31:00.903
die dann in dem Bereich MariaDB einsetzt.

00:31:01.102 --> 00:31:03.802
Also weniger das echte MySQL.

00:31:05.243 --> 00:31:06.862
Weil MariaDB ist immer noch,

00:31:07.602 --> 00:31:08.903
die Lizenz ist Open Source.

00:31:09.623 --> 00:31:11.182
Hat sich da in der Lizenz,

00:31:11.283 --> 00:31:13.302
weil MySQL hatte ja so ein bisschen früher

00:31:13.302 --> 00:31:14.702
eine etwas komische Lizenz.

00:31:16.023 --> 00:31:17.322
Oder im Vergleich zu anderen,

00:31:17.482 --> 00:31:18.743
also jedenfalls im Vergleich zu Postgres.

00:31:18.743 --> 00:31:19.602
Postgres ist ja sehr liberal.

00:31:19.602 --> 00:31:21.623
Postgres hat eigentlich ja nicht.

00:31:21.623 --> 00:31:22.143
Super Lizenz.

00:31:22.623 --> 00:31:25.062
Die BSD-Lizenz, das heißt, du kannst es einfach nutzen

00:31:25.062 --> 00:31:27.623
und gut, deswegen ist ja auch

00:31:27.623 --> 00:31:28.682
Postgres

00:31:28.682 --> 00:31:31.403
findest du ja auch

00:31:31.403 --> 00:31:32.962
manchmal an ganz lustigen Stellen.

00:31:34.082 --> 00:31:35.883
Das findest du dann in irgendwelchen Autos,

00:31:36.123 --> 00:31:37.263
in irgendwelchen Waschmaschinen

00:31:37.263 --> 00:31:39.342
oder in irgendwelchen Geräten. Ich weiß jetzt nicht

00:31:39.342 --> 00:31:40.602
auf einer Waschmaschine jetzt wirklich,

00:31:41.503 --> 00:31:43.342
aber da ist dann häufig,

00:31:43.403 --> 00:31:45.243
häufig ist auf solchen Geräten dann abgesprengt

00:31:45.243 --> 00:31:47.582
SnapBSD drauf, wegen der BSD-Lizenz.

00:31:48.003 --> 00:31:49.582
Und dann, wenn so ein Datenbank

00:31:49.582 --> 00:31:51.682
System wirklich brauchen, dann eine Postgres auch

00:31:51.682 --> 00:31:53.283
wegen der Lizenz.

00:31:53.383 --> 00:31:55.263
Auf der Apple Watch ist SQLite, wird auch

00:31:55.263 --> 00:31:57.542
gern verwendet. Also wenn

00:31:57.542 --> 00:31:59.562
die Schritte gezählt werden, auf der Apple Watch

00:31:59.562 --> 00:32:01.222
macht das eine SQLite.

00:32:01.862 --> 00:32:03.643
Aber ja, Postgres auf einer

00:32:03.643 --> 00:32:04.923
Uhr ist vielleicht auch ein bisschen übertrieben.

00:32:05.163 --> 00:32:07.423
Ich darf nicht unbedingt über Referenzen reden, aber

00:32:07.423 --> 00:32:09.362
es ist schon spannend, wo Postgres da

00:32:09.362 --> 00:32:10.722
überall drin sitzt.

00:32:11.403 --> 00:32:12.923
Deswegen MySQL, MariaDB,

00:32:13.062 --> 00:32:15.842
MySQL hat sich damit immer gebrüstet,

00:32:15.942 --> 00:32:17.202
vor allen Dingen Oracle und MySQL,

00:32:17.202 --> 00:32:19.482
die weltverbreitetste

00:32:19.482 --> 00:32:49.302
Datenbank. Ich weiß das gar nicht, weil Postgres, ich würde das nicht unterschätzen, was da so auf den Geräten ist, wo du nicht als Mensch dran bist. Natürlich, MySQL, MariaDB ist unter Webseiten nicht wegzudenken. Und du hast ja heute auch in den großen Firmen, du hast ja alles im Einsatz. Also wenn ich mir mal meinen lieben alten Kollegen Christian Köhnthopp anhöre, was der da an Datenbanken, wie viele Systeme der bei seiner Firma, wo er heute arbeitet, im Einsatz hat, das ist ja ganz viel auch von den NoSQL-Systemen, das wird ja alles gemischt.

00:32:49.482 --> 00:33:19.462
ganz viel auch mit den Adobe, Apache, HBase und wie sie alle heißen und Neo4j und weiß ich nicht, das wird ja tatsächlich auch sinnvoll eingesetzt, nimm das Datenbanksystem oder mach nicht alles im Relationalen, mach das im Relationalen, was du im Relationalen abbilden kannst und wenn du was graf, was du besser in Grafen abbilden kannst, bilde es in Grafen ab, sowas wie Kunden, die auch X, die X gekauft haben,

00:33:19.482 --> 00:33:21.503
haben auch XY gekauft. Das ist eher

00:33:21.503 --> 00:33:23.362
in so einer grafischen Datenbank aufgehoben,

00:33:23.503 --> 00:33:25.883
als in einer relationalen.

00:33:25.883 --> 00:33:27.503
Ich würde auf diese beiden Punkte gleich nochmal irgendwie

00:33:27.503 --> 00:33:29.062
eingehen. Ja, aber

00:33:29.062 --> 00:33:30.682
genau, also da

00:33:30.682 --> 00:33:33.702
ich finde

00:33:33.702 --> 00:33:35.102
Postgres ist eigentlich immer ganz schön, oder sagen wir so,

00:33:35.562 --> 00:33:37.302
weil es halt so ein bisschen ähnlich ist,

00:33:37.403 --> 00:33:39.342
ich meine, ich mache ja so, wenn ich

00:33:39.342 --> 00:33:41.143
Webentwicklung mache, meistens ja sowas

00:33:41.143 --> 00:33:43.562
Django-mäßiges, oder halt

00:33:43.562 --> 00:33:45.702
ich mag diesen Batteries-included-Ansatz

00:33:45.702 --> 00:33:47.003
eigentlich da sehr gerne.

00:33:47.003 --> 00:33:49.862
und ich finde, Postgres ist das so ein bisschen für die Datenbankwelt,

00:33:50.042 --> 00:33:52.923
was so Django für die Webwelt oder Ruby on Rails für die Webwelt ist.

00:33:52.923 --> 00:33:57.702
Es ist zwar jetzt vielleicht nicht in allen Sachen spitze,

00:33:58.243 --> 00:34:01.403
aber fast alles, was man so braucht, ist da schon mal drin

00:34:01.403 --> 00:34:03.523
und man kann das einfach so verwenden.

00:34:05.942 --> 00:34:07.503
Für viele Sachen ist es halt auch gut genug.

00:34:10.663 --> 00:34:11.022
Vorsicht!

00:34:12.002 --> 00:34:14.943
Tatsächlich, wenn ich so objektiv, ich kann ja objektiv sein,

00:34:14.943 --> 00:34:17.383
weil mir ist das ja ganz egal, was du einsetzt

00:34:17.383 --> 00:34:19.143
und ich kenne ja

00:34:19.143 --> 00:34:20.843
jetzt beide, also ob jetzt Maria

00:34:20.843 --> 00:34:23.243
oder Poskis einsetzt, ich kenne ja beide Systeme

00:34:23.243 --> 00:34:24.343
sehr, sehr gut und

00:34:24.343 --> 00:34:26.943
ich gucke mir tatsächlich, wenn mich jemand fragt,

00:34:27.002 --> 00:34:28.982
ich gucke mir an, was wollen die machen,

00:34:29.582 --> 00:34:30.582
was ist das für ein Kunde,

00:34:31.282 --> 00:34:33.062
natürlich erstmal, da gibt es ganz

00:34:33.062 --> 00:34:35.002
viel, da ist es völlig wurscht, ob du Poskis

00:34:35.002 --> 00:34:36.943
oder MariaDB nimmst, es gibt da so

00:34:36.943 --> 00:34:38.943
Eckpunkte, wo man dann sagt,

00:34:39.042 --> 00:34:41.042
okay, das ist vielleicht eher da besser

00:34:41.042 --> 00:34:42.982
und das ist das besser, aber was ich

00:34:42.982 --> 00:35:12.963
und die Programmiersprache Python.

00:35:12.982 --> 00:35:19.703
DB2, Informix, im IBM-Ecke kommst, ist Postgres häufig für dich intuitiver.

00:35:21.022 --> 00:35:26.102
Wenn du aus der Oracle-Ecke kommst, möchtest du vielleicht auch Postgres,

00:35:26.223 --> 00:35:30.362
aber nicht, weil es intuitiver ist, sondern weil die Migration einfacher ist.

00:35:31.102 --> 00:35:35.683
Wobei ich das heutzutage auch mal dahingestellt lasse, du kannst auch zu MariaDB migrieren.

00:35:36.322 --> 00:35:39.203
Wenn du jetzt wirklich aus der Webentwicklung kommst,

00:35:39.203 --> 00:35:41.302
Alter Lampstick oder?

00:35:41.782 --> 00:35:43.403
So PHP, was weiß ich.

00:35:43.582 --> 00:35:44.302
Ja, Lamp.

00:35:45.322 --> 00:35:47.703
Ist vielleicht MariaDB für dich

00:35:47.703 --> 00:35:48.403
intuitiver?

00:35:50.582 --> 00:35:51.703
Also es kommt ein bisschen

00:35:51.703 --> 00:35:53.723
drauf an, wie Hardcore hast du SQL

00:35:53.723 --> 00:35:55.362
gelernt? Auch.

00:35:56.423 --> 00:35:57.883
So sage ich jetzt mal

00:35:57.883 --> 00:35:59.542
ganz trocken. Oder auch

00:35:59.542 --> 00:36:01.403
an welcher Uni hast du SQL gelernt?

00:36:01.582 --> 00:36:03.663
Weil die SQL-Kurse sind ja häufig

00:36:03.663 --> 00:36:05.663
auch schräg.

00:36:06.802 --> 00:36:07.683
Also wenn ich mal so

00:36:07.683 --> 00:36:37.663
und Python.

00:36:37.683 --> 00:36:47.542
Ich erzähle dir auch erstmal nicht, dass es im Postgres einen Datentyp Text gibt oder ähnliches, sondern ich mache wirklich erstmal Standard-SQL und mache wirklich die Standardsachen, weil die funktionieren wirklich bei allen.

00:36:49.683 --> 00:36:52.223
Kennst du da irgendwelche besonderen Tools, die man vielleicht noch verlinken könnte?

00:36:52.522 --> 00:36:56.123
Achso, du meinst jetzt für Leute, die das grafisch machen wollen?

00:36:56.562 --> 00:37:01.943
Ja, oder nicht unbedingt grafisch, aber einfach so als Kontext drumherum.

00:37:02.163 --> 00:37:05.582
Wenn du bei mir SQL lernst, dann musst du das natürlich selbst runterschreiben.

00:37:05.582 --> 00:37:18.203
Ja, das finde ich super. Aber genau das ist ja vielleicht, ich habe zwei tolle Sachen entdeckt im Netz, die mir da sehr geholfen haben. Und zwar eins, ein Detektivspiel, wo man irgendwie einen Mordfall aufklären musste, geführt mit SQL. Das war ein SQL-Tutorial.

00:37:18.203 --> 00:37:38.223
Das will ich sehen, genau das finde ich cool, weil ich finde Gamification ganz toll. Wenn du bei mir die Schulung buchst, dann kriegst du dann Bindfaden und darfst dann an der Pinnwand mit Bindfaden und Moderationskarten rumspielen, damit das ein bisschen lustiger wird in der Gruppe oder so, aber ich erkläre auch Normalisierung. Das ist ja auch so ein Thema, was immer noch ist.

00:37:38.782 --> 00:37:43.082
Das müssen wir auch gleich nochmal machen, das finde ich nämlich auch interessant, das machen wir aber auch gleich, glaube ich, nochmal extra, Normalisierung.

00:37:43.082 --> 00:38:10.443
und das ist halt nur, wenn du so teilweise die ganz jungen Menschen, wenn die so SQL in der Uni oder wo auch immer in der Ausbildung bei der IHK oder so, teilweise, wenn du da reinguckst, ich werde ja dann häufiger auch mal nach Hilfe gefragt von jungen Menschen, so ganz unabhängig und was ich da teilweise sehe, wo ich dann denke, okay, wir schlucken mal, das ist jetzt aber ganz stark Eureka-Lastik oder ganz stark MySQL-Lastik hast du auch.

00:38:10.443 --> 00:38:12.203
häufig.

00:38:12.982 --> 00:38:15.223
Was ich traurig finde in der heutigen

00:38:15.223 --> 00:38:16.502
Datenbankausbildung ist,

00:38:17.782 --> 00:38:18.423
also ich weiß jetzt nicht,

00:38:19.022 --> 00:38:21.042
wie jetzt in der Pandemie kann sich das ja

00:38:21.042 --> 00:38:22.782
geändert haben, ich glaube das aber nicht.

00:38:23.463 --> 00:38:25.403
Also die letzten Datenbankvorlesungen,

00:38:25.542 --> 00:38:26.522
die ich gegeben habe,

00:38:27.822 --> 00:38:29.062
ich habe dann tatsächlich

00:38:29.062 --> 00:38:30.842
mich da mal reingekniet und mir auch die

00:38:30.842 --> 00:38:33.022
anderen angeguckt, weil die sind seit 2007

00:38:33.022 --> 00:38:34.962
auf dem Markt und ich kann

00:38:34.962 --> 00:38:36.903
nicht mehr nur relationale Datenbanken

00:38:36.903 --> 00:38:38.962
machen, wenn ich es lerne, sondern ich sollte vielleicht auch mal

00:38:38.962 --> 00:38:40.802
sagen, was ist eine grafenbasierte Datenbank

00:38:40.802 --> 00:38:42.183
oder eine dokumentenbasierte,

00:38:42.802 --> 00:38:44.962
dass man das zumindest mal vorstellt

00:38:44.962 --> 00:38:46.743
und mit reinmacht.

00:38:46.822 --> 00:38:48.602
Du musst jetzt kein GQL und SQL,

00:38:48.883 --> 00:38:50.663
ich glaube, das ist für so ein Informatikstudium,

00:38:50.802 --> 00:38:52.423
wenn du es hinterher nicht brauchst,

00:38:52.502 --> 00:38:53.842
Datenbank ist ein Pflichtfach.

00:38:54.482 --> 00:38:56.623
Das ist ja sowas. Nur, dass du es zumindest

00:38:56.623 --> 00:38:58.703
mal gehört hast, das finde ich halt

00:38:58.703 --> 00:39:00.623
sehr wichtig, dass man nicht nur immer

00:39:00.623 --> 00:39:02.683
auf die Relationalen eingeht.

00:39:03.243 --> 00:39:03.923
In der Ausbildung.

00:39:04.643 --> 00:39:06.703
Ich mache natürlich hauptsächlich Relationale,

00:39:06.842 --> 00:39:07.923
weil das ist mein Thema.

00:39:07.923 --> 00:39:11.183
Zum Anfang, ich habe es rausgefunden, und zwar ist das SQL-Mörder-Mystery.

00:39:11.582 --> 00:39:11.943
Ah ja.

00:39:11.943 --> 00:39:15.522
Das ist das Erste, da geht es halt darum, den Mordfall, also Mörder in SQL City,

00:39:16.602 --> 00:39:19.643
die muss man aufklären und dafür lernt man halt die ersten Queries zu machen,

00:39:19.743 --> 00:39:21.223
wer war denn in welcher Straße, wann, wie, wo.

00:39:21.383 --> 00:39:23.923
Und dann, das ist sehr interessant, das muss man halt auch schreiben dann,

00:39:24.123 --> 00:39:25.143
denn die Queries selber.

00:39:25.923 --> 00:39:28.022
Ich habe eine Zeit lang auch mal irgendwie sowas gemacht, stell dir vor,

00:39:28.082 --> 00:39:30.502
du bist in deiner Küche und dann duftest du deine eigene Küche.

00:39:31.342 --> 00:39:32.602
Wo sind die Teller und so weiter.

00:39:32.923 --> 00:39:34.502
Das habe ich auch schon mal gemacht, ja.

00:39:34.763 --> 00:39:36.042
Aber das finde ich cool, ja.

00:39:36.042 --> 00:39:49.643
Und ich habe noch ein zweites Story mal gemacht, das ist auch sehr schön, das ist ein bisschen ein traurigeres Thema, aber die Gefängnisinsassen in Texas, die zum Tode verurteilt waren, auszuwerten, was denn deren letzten Worte waren und warum und so.

00:39:51.763 --> 00:39:53.782
Ja, aber da gab es dann auch einen...

00:39:53.782 --> 00:40:17.582
Ich habe gerade bei den Psychologen, die Psychologenstatistik, sollten dann irgendwelche BWL-Statistiken machen, Umsatzstatistiken und so weiter, wo die Psychologen dann da standen, was ist das eigentlich alles? Also weil das so BWL-lastig war. Und dann habe ich auch, ich hatte denen halt im Tutorium geholfen und dann habe ich dann einfach die eine Aufgabe gegeben, ich glaube es war eine Umsatzstatistik, habe ich die Sterbestatistik draus gemacht.

00:40:17.582 --> 00:40:19.383
und es war dann auch zwar makaber,

00:40:19.582 --> 00:40:21.163
aber es war für die leichter

00:40:21.163 --> 00:40:23.042
Nachfolge zu vollziehen, als irgendwas

00:40:23.042 --> 00:40:24.203
BWL-lastiges.

00:40:25.163 --> 00:40:27.123
Was passiert jetzt? Wie viele Menschen sterben

00:40:27.123 --> 00:40:27.822
da jetzt von?

00:40:29.102 --> 00:40:31.263
Deswegen, da muss man immer gucken, was man

00:40:31.263 --> 00:40:33.123
für ein Publikum hat und das ist

00:40:33.123 --> 00:40:35.102
in der Ausbildung halt sehr, sehr schwierig, weil

00:40:35.102 --> 00:40:37.403
am besten findest du natürlich Beispiele,

00:40:37.763 --> 00:40:39.062
die auch alle kennen. Deswegen

00:40:39.062 --> 00:40:41.223
nehme ich immer gerne, ich habe es aufgegeben,

00:40:41.282 --> 00:40:42.962
das Kochbuch zu nehmen, weil so ein Kochbuch,

00:40:43.002 --> 00:40:44.883
so eine Kochbuch-Datenbank ist recht komplex.

00:40:45.403 --> 00:40:46.923
Vor allen Dingen heutzutage, also

00:40:46.923 --> 00:41:16.903
und Jochen unterhalten sich über die Programmiersprache Python

00:41:16.923 --> 00:41:22.582
Tasse oder was man immer eine Prise, ich gebe mir alle Rezepte mit einer Prise drin, wo man das einheißt.

00:41:22.602 --> 00:41:23.482
Ein Quäntchen Glück.

00:41:24.163 --> 00:41:30.443
Ja, aber Kochbuch ist schon eine recht aufwendige Datenbank, das kannst du dann so als Prüfung mal verkaufen,

00:41:30.962 --> 00:41:33.862
aber dann willst du meistens auch noch irgendwas, du hast hier noch ein View oder ähnliches,

00:41:33.903 --> 00:41:35.263
dann ist ein Kochbuch wieder auch zu viel.

00:41:36.383 --> 00:41:39.623
Ich glaube, wenn du so eine volle Datenbank hast, mit der interessant ist,

00:41:40.062 --> 00:41:43.322
dann ist du lernen vielleicht besser, also wenn das nicht so trockene BWL-Daten sind,

00:41:43.322 --> 00:41:45.322
weil man dann vielleicht selber Neugier bekommt,

00:41:45.443 --> 00:41:46.923
auch mal in andere Datensätze reinzuschauen

00:41:46.923 --> 00:41:48.862
und dadurch, dass man das dann selber eintippen muss,

00:41:48.962 --> 00:41:51.302
dann halt lernt, wie die Syntax ist, um die Sachen so zu

00:41:51.302 --> 00:41:53.042
füllen, wie man das mag. Genau, du nimmst halt irgendwas

00:41:53.042 --> 00:41:55.022
Kleines als Beispiel und

00:41:55.022 --> 00:41:57.282
machst dann aber mittlerweile

00:41:57.282 --> 00:41:59.183
auch schon sowas wie Datensicherheit mit rein

00:41:59.183 --> 00:42:00.903
oder Datenschutz. Du musst ja heute,

00:42:00.903 --> 00:42:03.223
hast ja auch sowas wie Transparenz und du musst

00:42:03.223 --> 00:42:05.282
ja wer hat was wann wie geändert und so weiter

00:42:05.282 --> 00:42:06.302
auch noch mit festhalten.

00:42:07.383 --> 00:42:09.203
Ja, aber gut, wenn ich SQL

00:42:09.203 --> 00:42:11.163
schreibe, ist das eigentlich nicht mit drin. Das muss ja

00:42:11.163 --> 00:42:12.203
mit einem Meter

00:42:12.203 --> 00:42:13.982
Nö, das kannst du ja mit,

00:42:14.302 --> 00:42:15.982
wann du die Zeile geendet hast, du

00:42:15.982 --> 00:42:18.062
on update, da machst du noch

00:42:18.062 --> 00:42:19.462
eine Spalte mehr dran und dann

00:42:19.462 --> 00:42:21.723
hältst du das dann fest last update.

00:42:21.802 --> 00:42:23.943
Genau, aber das muss ja ein Modell mit drin stehen haben.

00:42:24.203 --> 00:42:25.903
Ja, ja, eben, deswegen, das sind dann aber so Sachen,

00:42:26.002 --> 00:42:28.022
da gehst du dann vielleicht nochmal drauf ein, wenn du

00:42:28.022 --> 00:42:29.962
so, also dass du ein bisschen mehr auf Datenschutz

00:42:29.962 --> 00:42:31.782
eingehst. Du machst immer dieses Beispiel,

00:42:31.903 --> 00:42:33.663
was sind Transaktionen, stell dir vor,

00:42:34.342 --> 00:42:36.123
du willst dem jetzt 100 Euro

00:42:36.123 --> 00:42:38.123
überweisen und das muss natürlich

00:42:38.123 --> 00:42:40.183
auf beiden Konten sein oder auf gar keinem.

00:42:40.183 --> 00:42:42.183
Ich kann nicht sagen, bei dir sind 100 abgezogen,

00:42:42.203 --> 00:42:45.302
und bei dir sind sie nicht angekommen, wenn das in der Zwischenzeit...

00:42:45.302 --> 00:42:48.802
Das erklärst du immer noch, aber das weiß auch jeder, dass du das in der Praxis nicht machst.

00:42:48.802 --> 00:42:50.403
Noch so ein Thema, das müssen wir gleich nochmal kurz...

00:42:50.403 --> 00:42:52.403
Transaktionen, das müssen wir gleich alles nochmal aufmachen,

00:42:52.502 --> 00:42:53.703
da können wir uns die Reihenfolge überlegen.

00:42:54.322 --> 00:42:57.403
Aber ja, zum Einstieg, Jochen, ist dir noch was eingefallen,

00:42:57.443 --> 00:42:59.243
wie man das am besten lernen kann oder was du denkst?

00:43:00.022 --> 00:43:01.923
Tja, ich weiß es nicht genau.

00:43:01.923 --> 00:43:06.782
Ich habe vielleicht eine etwas pessimistische Ansicht dazu.

00:43:07.223 --> 00:43:09.883
Ich glaube, ich weiß nicht, ob man das so trocken lernen kann.

00:43:09.883 --> 00:43:12.203
oder vielleicht bin ich einfach nicht der Typ dafür,

00:43:12.763 --> 00:43:14.322
ich kann das nur lernen, wenn ich das

00:43:14.322 --> 00:43:16.423
tatsächlich brauche und es dauert

00:43:16.423 --> 00:43:17.022
auch lange.

00:43:18.562 --> 00:43:20.302
Ich habe angefangen,

00:43:20.383 --> 00:43:21.443
mich mit diesem Thema zu beschäftigen,

00:43:21.763 --> 00:43:23.102
ich fühle mich einigermaßen sicher,

00:43:23.223 --> 00:43:26.022
bei relationalen Daten machen wir das eher so Jahre

00:43:26.022 --> 00:43:27.263
und das waren,

00:43:28.962 --> 00:43:30.562
wenn man jetzt eine Vorlesung hört

00:43:30.562 --> 00:43:31.243
und eine Prüfung schreibt,

00:43:31.903 --> 00:43:33.862
das ist aus meiner Sicht nicht so richtig gut möglich.

00:43:33.883 --> 00:43:35.822
Ihr müsst jetzt aber wieder verstehen, dass wenn Jochen meint,

00:43:35.903 --> 00:43:38.123
dass er sich einigermaßen nicht wohl fühlt, ist er derjenige,

00:43:38.183 --> 00:43:39.282
der es richtig aus dem Schlaf dann...

00:43:39.282 --> 00:43:42.362
Nein, einfach so, dass man halt ungefähr weiß, was man da tut.

00:43:43.163 --> 00:43:45.243
Das ist natürlich ein guter Prof.

00:43:45.403 --> 00:43:46.723
Also ich habe es relativ schnell.

00:43:47.243 --> 00:43:52.102
Aber tatsächlich merke ich, dass das Spannende an SQL ist,

00:43:52.302 --> 00:43:56.383
das Spannende an Mengenlehre ist.

00:43:56.542 --> 00:43:58.602
Ich hatte ja in der ersten Klasse noch Mengenlehre.

00:44:00.223 --> 00:44:02.042
Du musst ja sofort erklären, was ist Mengenlehre.

00:44:02.562 --> 00:44:06.183
Mengenlehre war in der ersten Klasse,

00:44:06.183 --> 00:44:36.163
und Jochen unterhalten sich über die Programmiersprache Python

00:44:36.183 --> 00:44:38.703
und die dreieckigen waren halt die Schnittmenge.

00:44:39.502 --> 00:44:40.322
Das ist Mengenlehre.

00:44:40.462 --> 00:44:41.723
Das nennt man auch so,

00:44:42.022 --> 00:44:44.362
wie heißt das, Kombinatorik

00:44:44.362 --> 00:44:46.443
heißt das dann im Studium oder

00:44:46.443 --> 00:44:49.002
Bucce Algebra, nee, Kombinatorik

00:44:49.002 --> 00:44:50.203
ist es mit

00:44:50.203 --> 00:44:52.782
A und B und nicht A

00:44:52.782 --> 00:44:54.723
oder B und solche Geschichten.

00:44:55.183 --> 00:44:56.883
Und ich sage immer, SQL

00:44:56.883 --> 00:44:59.183
besteht ja fast nur aus Mengenlehre.

00:45:00.342 --> 00:45:01.062
Entweder hast du

00:45:01.062 --> 00:45:02.982
die Schnittmenge Join, ein einfacher Join

00:45:02.982 --> 00:45:04.802
ist ja ein innerer Join, ist ja nichts anderes als

00:45:04.802 --> 00:45:07.123
die Schnittmenge. Und OuterJoin

00:45:07.123 --> 00:45:08.822
ist immer irgendwie eine Menge plus

00:45:08.822 --> 00:45:10.923
der Schnittmenge. Oder halt

00:45:10.923 --> 00:45:12.723
irgendwie, je nachdem, wenn du das

00:45:12.723 --> 00:45:14.383
natürlich negierst. Oder

00:45:14.383 --> 00:45:16.602
gib mir nur das eine oder das andere.

00:45:17.062 --> 00:45:18.462
Gib mir alle Werte, die

00:45:18.462 --> 00:45:20.763
aus Tabelle A, die nicht

00:45:20.763 --> 00:45:22.723
in Tabelle B stehen. Das wäre jetzt auch ein

00:45:22.723 --> 00:45:24.923
OuterJoin mit einem Nicht drin und so weiter.

00:45:25.223 --> 00:45:25.383
Also

00:45:25.383 --> 00:45:28.763
es basiert immer irgendwie, kommst

00:45:28.763 --> 00:45:30.903
du am Ende immer auf Mengenlehre. Also SQL

00:45:30.903 --> 00:45:32.143
ist ganz viel Mengenlehre.

00:45:33.342 --> 00:45:34.763
Und jetzt habe

00:45:34.763 --> 00:45:36.462
durch den Faden verloren. Was war deine Frage?

00:45:37.123 --> 00:45:38.443
Ja, ich wollte kurz, dass du über die Mengenlehre

00:45:38.443 --> 00:45:40.062
sprichst, weil du gesagt hast, dass die Mengenlehre

00:45:40.062 --> 00:45:42.342
drunter liegt. Ja, aber du hast vorher was

00:45:42.342 --> 00:45:43.862
gefragt zur SQL.

00:45:44.802 --> 00:45:45.862
Achso, ja genau.

00:45:46.462 --> 00:45:49.183
Ich habe halt im Studium

00:45:49.183 --> 00:45:50.542
und auch später, wenn ich mal

00:45:50.542 --> 00:45:52.183
junge Menschen ausgebildet habe,

00:45:53.022 --> 00:45:54.342
es gab, du hast

00:45:54.342 --> 00:45:56.502
entweder dieses

00:45:56.502 --> 00:45:58.203
logische Verständnis

00:45:58.203 --> 00:45:59.842
für diese Kombinatorik

00:45:59.842 --> 00:46:01.802
oder du hast sie nicht.

00:46:03.123 --> 00:46:04.243
Also ich hatte immer bei

00:46:04.243 --> 00:46:34.223
und Jochen unterhalten sich über die Programmiersprache Python

00:46:34.243 --> 00:46:37.123
Ich weiß nicht, ob das

00:46:37.123 --> 00:46:39.203
angeboren ist oder wie auch immer.

00:46:39.443 --> 00:46:41.183
Vielleicht wäre es interessant, vielleicht Leute, die in der

00:46:41.183 --> 00:46:42.663
ersten Klasse sowas wie Mengenlehre hatten.

00:46:42.663 --> 00:46:45.183
Das war in meinem Studium, ich habe ja Informatik

00:46:45.183 --> 00:46:46.962
erst angefangen zu studieren, da war ich schon 28

00:46:46.962 --> 00:46:48.443
und

00:46:48.443 --> 00:46:51.143
da gab es dann natürlich

00:46:51.143 --> 00:46:52.903
auch schon Menschen, weil das wurde nur

00:46:52.903 --> 00:46:55.123
in den 70ern in der

00:46:55.123 --> 00:46:56.763
Grundschule in der ersten Klasse unterrichtet.

00:46:57.462 --> 00:46:59.163
Das war eigentlich keine schlechte Idee,

00:46:59.442 --> 00:47:01.082
muss ich sagen, aber da haben sich

00:47:01.082 --> 00:47:03.123
so viele Eltern, also man hat sie in Niedersachsen

00:47:03.123 --> 00:47:05.302
und in NRW unterrichtet. Ich weiß nicht, wo noch.

00:47:06.203 --> 00:47:07.383
Da haben sich so viele Eltern,

00:47:07.442 --> 00:47:09.183
da waren die Eltern so massiv dagegen, weil sie

00:47:09.183 --> 00:47:10.703
das nicht verstanden haben, weil sie es ja nicht kannten.

00:47:11.342 --> 00:47:13.143
Und dann hat man es wieder aufgegeben und

00:47:13.143 --> 00:47:14.302
jetzt fängt man dann wieder mit Zellen.

00:47:15.042 --> 00:47:17.123
Zellen kam das nach der Mengenlehre so ungefähr.

00:47:17.362 --> 00:47:19.022
Oder was man heute in der ersten Klasse

00:47:19.022 --> 00:47:20.243
Mathe macht, ich weiß es nicht.

00:47:20.862 --> 00:47:23.062
Oder in Rechnen heißt das ja. Aber wir hatten

00:47:23.062 --> 00:47:25.123
halt Mengenlehre. Und im Studium habe ich

00:47:25.123 --> 00:47:27.223
dann festgestellt, also es gab ja

00:47:27.223 --> 00:47:29.143
die, die das nicht mehr

00:47:29.143 --> 00:47:31.022
in der Schule hatten, in der ersten Klasse.

00:47:31.022 --> 00:47:33.522
und es gab auch noch einen Teil,

00:47:33.623 --> 00:47:35.243
der das in der ersten Klasse hatte und mir war

00:47:35.243 --> 00:47:36.582
im Studium aufgefallen,

00:47:37.283 --> 00:47:39.123
dass mit der Kombinatorik, die ist natürlich

00:47:39.123 --> 00:47:40.602
viel umfangreicher.

00:47:41.062 --> 00:47:43.223
Mit diesen ganzen A und B

00:47:43.223 --> 00:47:45.383
und oder B und so weiter, die machst du ja

00:47:45.383 --> 00:47:47.002
in Mathe im Studium

00:47:47.002 --> 00:47:49.102
und brauchst sie auch dann später zum Beispiel

00:47:49.102 --> 00:47:50.883
für SQL-Kombinatorik

00:47:50.883 --> 00:47:53.383
und die hatten weniger Schwierigkeiten

00:47:53.383 --> 00:47:55.143
damit. Das ist ja wie

00:47:55.143 --> 00:47:56.703
Mengenlehre, so ungefähr.

00:47:57.703 --> 00:47:58.842
Dass du nicht mehr nur

00:47:58.842 --> 00:48:00.862
rote und blaue und bunte Plättchen hast,

00:48:00.862 --> 00:48:14.163
und Dreiecke und Vierecke, sondern dann auch mal komplett mehrere Sachen da hast, aber im Grunde, während die anderen, die Jüngeren, hatten damit mehr Probleme, weil sie das halt nicht schon aus der ersten Klasse kannten. Das war mir so aufgefallen in der Mengenlehre.

00:48:16.203 --> 00:48:28.623
Ich frage deswegen, weil vielleicht könnte man sich ja vorbereiten zu sowas, indem man nochmal sich so diese Basismengenlehre, wie du sagtest, mit den unterschiedlichen Schlittmengenkreisen vor Augen führt, um dann zu überlegen, wie das in SQL ausfällt.

00:48:28.623 --> 00:48:35.883
so ein, jemand der sowas noch nie gesehen hat, der irgendwie einen komplexeren Outer-Droiden ein bisschen klatschen sieht, der ist vielleicht erstmal gefordert.

00:48:35.883 --> 00:48:48.942
Ich habe da auch eine Folie für, wo ich wirklich das wie in der Schule mit den Ovalen, ich nenne das immer Eier, mit den Ovalen und Schnittmenge und was ist A und B, A oder B oder A und nicht B und solche Geschichten.

00:48:48.942 --> 00:48:56.962
ist sehr lustig, ist immer, dass das funktioniert bei MariaDB nicht so ohne weiteres, gibt mir dann

00:48:56.962 --> 00:49:00.703
alles aus A und B, nur nicht die Schnittmenge.

00:49:01.883 --> 00:49:03.322
Das ist dann ein lustiges Query.

00:49:03.743 --> 00:49:08.763
Wenn man das in der Anwendung braucht, ist dann was anderes, aber nur, damit man dann mal die Logik dahinter versteht.

00:49:09.002 --> 00:49:15.643
Aber es gibt halt, ich weiß nicht, ob das eingeboren ist oder woher, es gibt ja auch beim Programmieren,

00:49:15.643 --> 00:49:17.002
wenn ihr so Algorithmen habt

00:49:17.002 --> 00:49:18.922
in der Programmiersprache

00:49:18.922 --> 00:49:21.223
da ist mir auch schon aufgefallen

00:49:21.223 --> 00:49:22.502
dass es da Menschen gibt

00:49:22.502 --> 00:49:25.403
die können der Logik

00:49:25.403 --> 00:49:26.322
nicht folgen

00:49:26.322 --> 00:49:29.703
wir haben aber dann ganz ganz

00:49:29.703 --> 00:49:30.942
tolle andere Fähigkeiten

00:49:30.942 --> 00:49:31.922
die ich nicht habe

00:49:31.922 --> 00:49:35.183
aber das ist dann

00:49:35.183 --> 00:49:36.263
naja

00:49:36.263 --> 00:49:39.403
aber bei SQL ist es wirklich so

00:49:39.403 --> 00:49:40.723
du kannst da nicht so viel falsch machen

00:49:40.723 --> 00:49:42.663
also wenn du es verstanden hast, hast du es verstanden

00:49:42.663 --> 00:49:45.542
und was du dann vielleicht machen

00:49:45.542 --> 00:49:47.763
kannst, ist diese Normalisierung,

00:49:47.862 --> 00:49:48.783
was du vorhin dann sagtest,

00:49:49.822 --> 00:49:51.362
aber auch das, wenn du das einmal

00:49:51.362 --> 00:49:53.342
verstanden hast, dann ist es auch nicht so schwer.

00:49:53.342 --> 00:49:55.283
Vielleicht ist es jetzt Zeit, nochmal darauf einzugehen, also was

00:49:55.283 --> 00:49:56.763
denn Normalisierung überhaupt ist.

00:49:57.203 --> 00:49:59.102
Da gibt es ja, glaube ich, verschiedene Ebenen von oder

00:49:59.102 --> 00:50:00.743
Stufen, wie man die machen kann.

00:50:01.223 --> 00:50:03.223
Also wenn ich das so laienhaft richtig

00:50:03.223 --> 00:50:05.082
verstanden habe, ist das das Aufbrechen einer

00:50:05.082 --> 00:50:07.322
ganz komischen Tabelle

00:50:07.322 --> 00:50:08.703
in die richtige Form,

00:50:09.243 --> 00:50:11.403
wo halt die einzelnen

00:50:11.403 --> 00:50:13.183
Tabellen voneinander getrennt werden, wenn

00:50:13.183 --> 00:50:15.683
Informationen redundant vorhanden sind.

00:50:16.982 --> 00:50:17.223
Und die

00:50:17.223 --> 00:50:19.283
verbindet man dann halt über Foreign Keys oder sowas.

00:50:19.522 --> 00:50:20.522
Also es gibt,

00:50:21.723 --> 00:50:22.703
ich kann dir das jetzt erstmal,

00:50:23.163 --> 00:50:25.042
ich will es jetzt nicht so ganz mathematisch

00:50:25.042 --> 00:50:26.163
erklären, du hast

00:50:26.163 --> 00:50:31.842
ja, es gibt

00:50:31.842 --> 00:50:33.082
verschiedene

00:50:33.082 --> 00:50:36.002
Grade von Normalisierung.

00:50:36.163 --> 00:50:37.842
Es gibt die erste Normalform, die zweite

00:50:37.842 --> 00:50:39.362
Normalform, es gibt die dritte

00:50:39.362 --> 00:50:41.123
und noch folgende.

00:50:41.123 --> 00:50:43.763
4., 5., 6., ich habe keine Ahnung.

00:50:45.022 --> 00:50:45.462
Normalerweise

00:50:45.462 --> 00:50:47.802
normalisierst du nach der dritten Normalform.

00:50:48.422 --> 00:50:49.802
Das ist so das Übliche.

00:50:50.362 --> 00:50:51.763
Ich kann dir jetzt auswendig

00:50:51.763 --> 00:50:53.143
nicht aus

00:50:53.143 --> 00:50:55.223
nicht sagen, was die erste und die zweite sind.

00:50:55.283 --> 00:50:57.522
Ich muss das jedes Mal nachgucken, wenn ich es schule.

00:50:58.042 --> 00:50:59.723
Weil du brauchst immer nur am Ende die dritte.

00:50:59.982 --> 00:51:01.342
Im Grunde geht es darum,

00:51:01.442 --> 00:51:02.562
das ist eigentlich ganz simpel,

00:51:03.442 --> 00:51:05.462
du möchtest zum einen keine Doppelten.

00:51:06.383 --> 00:51:07.203
Also wenn ich jetzt...

00:51:07.203 --> 00:51:09.203
Wenn in zwei Spalten irgendwo eine Adresse steht,

00:51:09.302 --> 00:51:10.942
dann möchte ich die nicht dreimal drin haben, sondern

00:51:10.942 --> 00:51:13.082
eine eigene Tabelle mit Adressen.

00:51:13.123 --> 00:51:14.123
Ich hätte jetzt gesagt Stadt.

00:51:14.602 --> 00:51:16.643
Ich hätte es noch weiter runter gebrauchen.

00:51:16.862 --> 00:51:18.802
So Postleitzahl Stadt, das Klassische,

00:51:19.022 --> 00:51:20.723
was so in der Tabelle ist. Aber wir nehmen mal nur den

00:51:20.723 --> 00:51:21.482
Städtennamen.

00:51:22.582 --> 00:51:24.883
Ich komme jetzt aus Bielefeld und ich habe vorher mal

00:51:24.883 --> 00:51:26.082
in Osnabrück studiert.

00:51:28.442 --> 00:51:29.163
Ich habe mittlerweile

00:51:29.163 --> 00:51:30.883
einen Anschlag von, haben sie erst

00:51:30.883 --> 00:51:32.623
vor zwei Wochen in China getestet,

00:51:32.663 --> 00:51:33.862
von 675.

00:51:35.542 --> 00:51:36.962
Osnabrück schaffe ich nie richtig zu

00:51:36.962 --> 00:51:38.322
schreiben. Ich schreibe immer Osanbrücke.

00:51:38.723 --> 00:51:40.102
675 ist ja Rekord, finde ich.

00:51:40.102 --> 00:52:00.022
Ja, und Bielefeld schreibe ich auch immer falsch. Und wenn ich jetzt aber irgendwie eine Tabelle habe, wo ich jetzt eine Adresse drin habe, also ich habe dann irgendwo die Adresse und ich will jetzt alle Leute suchen, die in Bielefeld wohnen. Und ich habe da Bielefeld fünfmal falsch geschrieben. Dann finde ich die natürlich nicht, die ich falsch geschrieben habe.

00:52:00.022 --> 00:52:03.283
und um das zu vermeiden,

00:52:04.002 --> 00:52:06.082
macht man halt eine Tabelle Städte, da hat man

00:52:06.082 --> 00:52:08.982
nun das Wort Bielefeld einmal drinstehen und dann

00:52:08.982 --> 00:52:12.102
hat Bielefeld vielleicht die ID 33615,

00:52:12.102 --> 00:52:14.362
weil das die Posterzahl ist und

00:52:14.362 --> 00:52:17.602
oder wonach man das auch immer bei

00:52:17.602 --> 00:52:21.082
Städten wäre, die Posterzahl wäre eine super ID, kann auch eine andere

00:52:21.082 --> 00:52:23.942
Nummer nehmen, die 67 und dann steht halt bei der

00:52:23.942 --> 00:52:26.842
Tabelle mit der Person unter Stadt nur

00:52:26.842 --> 00:52:29.143
67 und dann kann man das verlinken

00:52:29.143 --> 00:52:31.203
und sieht dann, ah, die 67 ist Bielefeld.

00:52:32.383 --> 00:52:33.163
Das ist einfach,

00:52:33.302 --> 00:52:35.002
das ist eine Sache, damit man sich

00:52:35.002 --> 00:52:36.663
nicht verschreibt, damit man es nicht irgendwo

00:52:36.663 --> 00:52:39.102
dann nicht wiederfindet, dass man halt immer

00:52:39.102 --> 00:52:40.903
dasselbe hat. Und wenn man dann in der

00:52:40.903 --> 00:52:42.582
Städtetabelle nicht Bielefeld, sondern

00:52:42.582 --> 00:52:44.403
Bieleflät geschrieben hat,

00:52:45.002 --> 00:52:46.883
dann ist das halt überall

00:52:46.883 --> 00:52:48.582
Bieleflät. Also

00:52:48.582 --> 00:52:49.743
das ist das.

00:52:50.683 --> 00:52:51.442
Einfach zu ändern.

00:52:52.422 --> 00:52:54.703
Wenn man es löscht, dann gibt es Bielefeld plötzlich nicht mehr.

00:52:55.123 --> 00:52:55.623
So ungefähr.

00:52:56.842 --> 00:53:26.822
Wie kann das denn sein?

00:53:26.842 --> 00:53:29.022
Dann nehme ich jetzt den Küchenschrank.

00:53:30.223 --> 00:53:34.042
Du hast in deinem Küchenschrank vielleicht eine Schublade, wo die Teller drin sind.

00:53:35.723 --> 00:53:37.903
Oh, da drauf ist noch die Küchenwaage.

00:53:38.223 --> 00:53:42.442
Die Küchenwaage ist umgedreht und in die Schale von der Küchenwaage war es noch ein Messbecher.

00:53:44.362 --> 00:53:46.542
Du hast einen Ort, wo deine Teller sind.

00:53:46.663 --> 00:53:48.562
Du hast einen Ort, wo deine Gläser sind.

00:53:49.263 --> 00:53:54.243
Ich hatte mal eine Mitarbeiterin, die hat tatsächlich beim Ausräumen der Spülmaschine...

00:53:54.243 --> 00:54:24.223
und Jochen unterhalten sich über die Programmiersprache Python

00:54:24.243 --> 00:54:26.322
Weingläser drin, Biergläser drin und so weiter.

00:54:27.663 --> 00:54:29.903
Aber das ist der Schrank, wo nur die Gläser drin sind.

00:54:29.982 --> 00:54:32.082
Und dann hast du einen Schrank, dann nimm mal die ganze Wohnung,

00:54:32.203 --> 00:54:33.422
da sind nur deine Unterhosen drin.

00:54:34.143 --> 00:54:35.362
Die mischst du nicht.

00:54:37.862 --> 00:54:40.822
Wenn du das mischen würdest, wäre das ganz lustig.

00:54:41.283 --> 00:54:45.703
Aber das ist erstmal so, dass du das so weit runterbringst,

00:54:45.783 --> 00:54:48.522
dass du das, was zusammengehört, diese Einheit,

00:54:48.663 --> 00:54:51.763
mal die Einheit Teller oder was in diesem Küchenschrank ist.

00:54:51.763 --> 00:55:21.743
und Jochen unterhalten sich über die Programmiersprache Python

00:55:21.763 --> 00:55:23.022
und macht da halt zwei Tabellen.

00:55:23.542 --> 00:55:25.842
Aber woher weiß ich denn jetzt, ob Wasser ein Weinglas, ein Bierglas

00:55:25.842 --> 00:55:27.982
oder ein... Das hast du ja irgendwo

00:55:27.982 --> 00:55:29.862
definiert. Ja.

00:55:30.802 --> 00:55:31.962
Also, du kannst

00:55:31.962 --> 00:55:33.042
es auch anders machen.

00:55:35.403 --> 00:55:35.982
Wir nehmen

00:55:35.982 --> 00:55:36.822
mal Autos.

00:55:38.602 --> 00:55:39.703
Autos haben eine Farbe.

00:55:42.783 --> 00:55:43.842
Autos haben eine Marke.

00:55:44.042 --> 00:55:45.883
Autos haben einen Typ. Und so weiter.

00:55:45.883 --> 00:55:46.203
So.

00:55:49.022 --> 00:55:50.062
Und die haben einen Preis.

00:55:50.062 --> 00:55:54.542
Du willst jetzt so eine Autowebseite machen, wo du dein Auto verkaufen kannst.

00:55:55.982 --> 00:56:01.342
Jetzt stell dir vor, du packst alles, alle Informationen des Autos in eine Tabelle.

00:56:04.183 --> 00:56:10.703
So, und jetzt will ein Käufer danach versuchen.

00:56:12.942 --> 00:56:16.403
Er möchte jetzt nur, nennen wir eine Automarke, nur Mercedes haben.

00:56:17.403 --> 00:56:19.822
Ein bestimmter Typ noch ein bestimmtes Baujahr.

00:56:20.062 --> 00:56:22.942
und dann überlegt sich der Käufer,

00:56:23.163 --> 00:56:24.602
okay, also du musst dann alles aus dieser

00:56:24.602 --> 00:56:25.862
einen Tabelle raussuchen.

00:56:27.143 --> 00:56:28.903
Dann überlegt sich der Käufer,

00:56:29.022 --> 00:56:29.422
naja,

00:56:30.663 --> 00:56:32.623
eigentlich möchte ich nur diesen Typen haben

00:56:32.623 --> 00:56:34.683
von dem Auto.

00:56:35.663 --> 00:56:36.723
Jetzt steht der Typ da

00:56:36.723 --> 00:56:38.263
immer wieder in dieser Tabelle drin.

00:56:38.322 --> 00:56:40.703
Du hast ja keine zweite Tabelle, wo der Typ drin steht

00:56:40.703 --> 00:56:41.743
und hast dann nur die Nummern drin.

00:56:41.743 --> 00:56:43.263
Auch noch fünfmal falsch geschrieben.

00:56:43.562 --> 00:56:43.862
Wahrscheinlich.

00:56:44.223 --> 00:56:47.663
Du hast alles

00:56:47.663 --> 00:56:48.663
in einer Tabelle.

00:56:48.663 --> 00:57:18.643
und Jochen unterhalten sich über die Programmiersprache Python

00:57:18.663 --> 00:57:21.042
es hat vielleicht noch die Reifentypen und so weiter

00:57:21.042 --> 00:57:23.542
und die Reifengröße

00:57:23.542 --> 00:57:24.763
und weiß weiß ich was

00:57:24.763 --> 00:57:26.422
man da Baujahr und wie alt

00:57:26.422 --> 00:57:29.263
Tacho stand und alles mögliche

00:57:29.263 --> 00:57:30.703
aber das ist alles in eine Tabelle

00:57:30.703 --> 00:57:32.203
und dann sucht jemand

00:57:32.203 --> 00:57:34.643
möchtest du einen Käufer haben, der jetzt bestimmte

00:57:34.643 --> 00:57:35.982
Eigenschaften daraus sucht

00:57:35.982 --> 00:57:38.982
ich kann dir sagen, das wird sehr sehr groß

00:57:38.982 --> 00:57:41.143
es gab in der Vergangenheit

00:57:41.143 --> 00:57:42.223
eine Plattform

00:57:42.223 --> 00:57:45.022
die was ähnliches gemacht hat

00:57:45.022 --> 00:57:46.982
und die

00:57:46.982 --> 00:57:48.283
hatten wirklich nur eine Tabelle

00:57:48.283 --> 00:57:52.283
und die haben mit Hardware skaliert,

00:57:53.703 --> 00:57:55.522
weil sie das nicht mehr anders skaliert haben

00:57:55.522 --> 00:57:59.783
und die sind auch dann ein wenig in finanzielle Not geraten,

00:57:59.903 --> 00:58:02.223
weil die Hardware dann irgendwann nicht mehr bezahlbar war.

00:58:04.223 --> 00:58:07.862
In der Zwischenzeit waren aber ein paar Kollegen von mir da,

00:58:07.903 --> 00:58:09.783
die hatten erst, glaube ich, eine Oracle-Datenbank.

00:58:12.183 --> 00:58:13.842
Ich wusste davon nichts.

00:58:13.842 --> 00:58:31.602
Als ich dazu kam, waren sie dann mittlerweile, weil sie Konkurs gegangen waren, von einem großen IT-Unternehmen aufgekauft worden, das ganz viele dieser Plattformen aufgekauft hat.

00:58:32.123 --> 00:58:43.763
Und ich durfte dann nach London zu diesem großen IT-Unternehmen und dann wollten sie, sie wollten damals von MySQL nach PostgreSQL migrieren und sie hatten immer noch diese eine große Tabelle.

00:58:43.842 --> 00:58:48.422
und ich habe dann gesagt, naja, das liegt nicht an dem Datenbanksystem, was ihr da drunter habt,

00:58:48.522 --> 00:58:52.342
das liegt an dem Design eurer Datenbank. Das solltet ihr mal ändern.

00:58:52.962 --> 00:58:56.422
Ihr werdet mit Postgres genau das gleiche Problem kriegen wie mit MariaDB.

00:58:57.403 --> 00:58:58.703
Der MySQL war es damals noch.

00:58:59.842 --> 00:59:05.243
Und ich bin dann nach Hause gefahren und dann kriegte mein britischer Kollege

00:59:05.243 --> 00:59:08.502
einen Anruf, der konnte die Konsulten verscheißen.

00:59:08.783 --> 00:59:11.623
Ich habe ja nicht das gesagt, was ich hören wollte, so ungefähr.

00:59:11.623 --> 00:59:13.663
schick mal einen anderen

00:59:13.663 --> 00:59:15.522
und mein

00:59:15.522 --> 00:59:17.663
britischer Kollege hat dann einen ganz

00:59:17.663 --> 00:59:19.502
jungen dahin geschickt, weil er meinte, naja,

00:59:19.582 --> 00:59:21.203
ich werde auch nichts anderes sagen als du

00:59:21.203 --> 00:59:23.643
und ich habe mich

00:59:23.643 --> 00:59:25.623
dann ohne überhaupt irgendwie einen Namen

00:59:25.623 --> 00:59:27.663
zu nennen, weil das ist ja auch immer

00:59:27.663 --> 00:59:29.602
gefährlich so zu Hause, man hat ja auch

00:59:29.602 --> 00:59:30.822
Geschäftsgeheimnis und so weiter,

00:59:31.163 --> 00:59:33.723
ich habe das dann zu Hause, ich habe mich mit meinem Mann

00:59:33.723 --> 00:59:35.562
darüber aufgeregt, über

00:59:35.562 --> 00:59:37.763
diesen Kunden, ohne ihn zu benennen.

00:59:39.383 --> 00:59:39.822
Ich weiß

00:59:39.822 --> 00:59:41.482
jetzt nicht, ob mein Mann wusste,

00:59:41.623 --> 00:59:43.562
bei welchem großen Kunden ich war.

00:59:44.403 --> 00:59:45.542
Also er wusste

00:59:45.542 --> 00:59:47.442
jedenfalls nichts von dieser Plattform.

00:59:49.362 --> 00:59:49.723
Und

00:59:49.723 --> 00:59:51.462
ohne dass ich das jemals erwähnt hatte,

00:59:51.562 --> 00:59:52.683
sagte mein Mann dann,

00:59:54.082 --> 01:00:06.725
das war die Plattform Ich so woher wei denn du das Und dann hat er mir das erz dass zwei sehr bekannte MySQL Consultants da damals schon mal waren da wollten die von Oracle nach MySQL migrieren

01:00:06.725 --> 01:00:08.545
und die beiden hatten auch, der erste

01:00:08.545 --> 01:00:10.705
hatte gesagt, naja, das liegt

01:00:10.705 --> 01:00:11.565
nicht an

01:00:11.565 --> 01:00:14.965
Oracle, das liegt an eurem System

01:00:14.965 --> 01:00:16.685
und dann war der, aber hatte dann

01:00:16.685 --> 01:00:18.745
bei MySQL dann auch, Consultant ist

01:00:18.745 --> 01:00:20.665
scheiße, dann ist der andere hingefahren,

01:00:21.285 --> 01:00:22.745
auch sehr namhaft und bekannt,

01:00:23.505 --> 01:00:24.765
der hat das dann auch nochmal gesagt,

01:00:24.765 --> 01:00:26.445
und ich glaube ein dritter war dann auch nochmal da.

01:00:27.005 --> 01:00:28.945
Hat er gehört, was sie vorher beraten hat

01:00:28.945 --> 01:00:29.805
und hat gesagt, oh ja, ja.

01:00:29.925 --> 01:00:33.305
Das brauchst du gar nicht, das war so offensichtlich.

01:00:34.525 --> 01:00:34.765
Und

01:00:34.765 --> 01:00:37.025
naja, okay. Und dann hatten die

01:00:37.025 --> 01:00:39.185
nie wieder was davon gehört, bis ich dann da war.

01:00:39.765 --> 01:00:41.045
Und ich kriegte dann am Ende

01:00:41.045 --> 01:00:43.005
einen Anruf von dem großen

01:00:43.005 --> 01:00:44.965
Unternehmen und wurde dann gefragt,

01:00:45.205 --> 01:00:46.885
nur so irgendwie eine Stufe höher,

01:00:47.405 --> 01:00:48.625
was denn da los war.

01:00:48.745 --> 01:00:51.205
Und dann habe ich das erzählt und dann haben die wirklich diese Plattform

01:00:51.205 --> 01:00:53.085
ein halbes Jahr aus dem Netz genommen und komplett neu

01:00:53.085 --> 01:00:53.625
programmiert.

01:00:53.625 --> 01:01:11.365
Die Plattform gibt es heute noch, ist aber komplett anders, aber das passiert, wenn du alles in einer Tabelle hast und wenn du da so viele Informationen drin hast, wenn du dann 250 Spalten hast in einer Tabelle, das macht auch nicht mehr wirklich Spaß, die Informationen daraus zu suchen, die willst du auch nicht mehr lesen und nicht mehr warten.

01:01:12.185 --> 01:01:12.625
Ja.

01:01:14.205 --> 01:01:22.065
MariaDB hat irgendwo ein Spaltenlimit bei, ich weiß nicht wo, 256 oder so. Wenn du das erreichst, ich habe so Tabellen gesehen.

01:01:23.625 --> 01:01:25.665
Wenn das dann nur noch hochscrollt

01:01:25.665 --> 01:01:27.705
an Spalten, das ist überhaupt nicht mehr

01:01:27.705 --> 01:01:29.245
erwartbar. Also

01:01:29.245 --> 01:01:31.825
mal abgesehen davon, dass da ganz komische Artefakte

01:01:31.825 --> 01:01:32.745
passieren, aber

01:01:32.745 --> 01:01:35.705
irgendwann denkst du dir schon von

01:01:35.705 --> 01:01:37.485
dir aus, okay, es ist vielleicht sinnvoll,

01:01:37.565 --> 01:01:39.305
diese Tabelle mal mehrere aufzuteilen.

01:01:39.365 --> 01:01:41.325
Ja, das vielleicht unter Kategorien zu fassen.

01:01:41.585 --> 01:01:43.685
Ja, genau. Und das Normalisierende ist

01:01:43.685 --> 01:01:45.625
einfach, du fasst das irgendwo so zu Kategorien

01:01:45.625 --> 01:01:47.525
zusammen oder das zusammen, was

01:01:47.525 --> 01:01:49.465
zusammengehört. Wenn du jetzt das

01:01:49.465 --> 01:01:51.945
klassische Wikipedia-Beispiel zur dritten Normalform

01:01:51.945 --> 01:01:53.605
oder überhaupt zu den Normalformen

01:01:53.605 --> 01:02:02.025
ist immer Musik. Die haben dann immer Interpreten, Alben und Songtitel. Kann man jetzt den

01:02:02.025 --> 01:02:07.405
Lieblingsinterpreten draus machen, was auch immer. Wenn du jetzt natürlich eine Tabelle hast, da steht

01:02:07.405 --> 01:02:16.525
dann fünfmal Helene Fischer, fünfmal die Ärzte, kenn ich mehr Titel. Da steht dann 127 Mal, wer

01:02:16.525 --> 01:02:22.525
weiß, wie viele Songs die Ärzte gemacht haben, da drin. 127 Mal die Ärzte und daneben steht dann,

01:02:22.525 --> 01:02:30.405
und sagen wir erstmal, wie viele Songs sind auf so einem Album, 30 mal das eine Album,

01:02:30.605 --> 01:02:32.665
dann das andere Album und dann die Songtitel nochmal.

01:02:33.685 --> 01:02:38.185
Dann hast du erst schon 127 Zeilen, wo du die ersten doppelt zigfach drin hast

01:02:38.185 --> 01:02:43.285
und dann, das machst du ja nicht nur mit einem, das machst du dann ja mit deiner ganzen Plattensammlung

01:02:43.285 --> 01:02:47.205
oder deiner ganzen Songsammlung und dann hast du eine riesige Tabelle.

01:02:47.205 --> 01:03:17.185
und Jochen unterhalten sich über die Programmiersprache Python

01:03:17.205 --> 01:03:19.665
haben die halt so, was weiß ich,

01:03:19.725 --> 01:03:20.625
die Ärzte ist vielleicht

01:03:20.625 --> 01:03:23.565
Nummer 1 und dann steht in

01:03:23.565 --> 01:03:25.465
deiner Songtabelle nur noch die 1 drin

01:03:25.465 --> 01:03:27.365
für die Ärzte und die 2 für Rammstein

01:03:27.365 --> 01:03:29.665
und die 3 für irgendwas.

01:03:30.665 --> 01:03:31.385
Und die 27

01:03:31.385 --> 01:03:33.665
für Helene Fischer oder sowas in der Richtung.

01:03:33.985 --> 01:03:35.365
Also hast du danach die Nummer

01:03:35.365 --> 01:03:37.525
und du kannst danach gucken, wenn du dann in der Tabelle

01:03:37.525 --> 01:03:38.885
bist, okay, interpretest Nummer,

01:03:39.365 --> 01:03:41.325
was hatte ich vorhin, 3 und dann guckst du in der anderen

01:03:41.325 --> 01:03:43.245
Tabelle nach, Nummer 3 ist

01:03:43.245 --> 01:03:45.425
habe ich vergessen.

01:03:47.205 --> 01:03:49.205
Hatte ich überhaupt eine 3? Weiß ich nicht mehr.

01:03:49.325 --> 01:03:51.305
Aber eine 2 bei Rammstein, das weiß ich noch.

01:03:51.305 --> 01:03:52.965
Und die 3 sind von Sepultura, irgendeine Metalband.

01:03:53.065 --> 01:03:54.485
Ja, egal. Nur,

01:03:55.065 --> 01:03:57.445
dass du dann halt nur noch über die Zahlen

01:03:57.445 --> 01:03:59.565
das machst. Und dasselbe machst du mit den Alben.

01:04:00.405 --> 01:04:01.305
Weil ja auf so einem Album,

01:04:01.385 --> 01:04:02.865
du willst ja den Titel haben am Ende,

01:04:03.045 --> 01:04:04.585
wir sind ja bei dem Titel im Grunde,

01:04:05.085 --> 01:04:07.145
aber die Alben, auf so einem Album ist ja immer

01:04:07.145 --> 01:04:08.585
auch mehr als ein Song drauf.

01:04:09.925 --> 01:04:11.485
Also lagerst du die Alben

01:04:11.485 --> 01:04:12.105
auch aus.

01:04:13.305 --> 01:04:15.365
Da kannst du noch eine Verknüpfung machen, Album und

01:04:15.365 --> 01:04:17.505
Band, so eine Zwischentabelle,

01:04:17.925 --> 01:04:19.325
dass du das Album und die Band noch

01:04:19.325 --> 01:04:21.405
zusammenlegst, dann hast du auch noch das,

01:04:22.305 --> 01:04:23.545
hast du nicht bei dem Album

01:04:23.545 --> 01:04:25.305
immer noch die Band stehen, sondern du machst

01:04:25.305 --> 01:04:27.385
eine Zwischentabelle, wo du das Album

01:04:27.385 --> 01:04:29.205
und die Band reinpackst und dann hast du dann

01:04:29.205 --> 01:04:31.285
ab 18 ist

01:04:31.285 --> 01:04:33.345
vielleicht bei den Ärzten, das erste Album

01:04:33.345 --> 01:04:35.325
hat die ID 1, ist

01:04:35.325 --> 01:04:37.625
von den Ärzten und dann steht in der Zwischentabelle

01:04:37.625 --> 01:04:39.465
nur noch 1 1 drin, Album 1,

01:04:40.005 --> 01:04:40.845
Interpret 1.

01:04:41.445 --> 01:04:42.965
Dann kannst du das so zusammenfügen.

01:04:44.445 --> 01:04:45.065
Siehst du halt,

01:04:45.065 --> 01:04:47.185
ein bisschen auseinander und dann hast du halt nur noch die

01:04:47.185 --> 01:04:49.305
Tabelle mit dem Titel, wo dann draufsteht

01:04:49.305 --> 01:04:51.185
Album 1, Band 1,

01:04:51.545 --> 01:04:53.225
also da hättest du es sowieso drin, dann brauchst

01:04:53.225 --> 01:04:55.285
du es gar nicht. Oder nur Album 1 und dann kannst

01:04:55.285 --> 01:04:56.785
du es dann nochmal weiter verlinken.

01:04:57.565 --> 01:04:59.105
Wenn du da jetzt nochmal hättest, wäre das

01:04:59.105 --> 01:05:01.005
doppelt, aber das macht man schon, dann

01:05:01.005 --> 01:05:03.325
das Deonomie sieht man dann schon mal leicht.

01:05:03.505 --> 01:05:05.185
Aber das wäre so, dass

01:05:05.185 --> 01:05:07.185
du es ein bisschen sortierst, dass du es

01:05:07.185 --> 01:05:09.065
halt kleiner machst. Wenn du es aber

01:05:09.065 --> 01:05:10.325
zu klein machst,

01:05:11.525 --> 01:05:13.225
es macht keinen Spaß, Kombinationen

01:05:13.225 --> 01:05:15.445
aus Datenbanken zu suchen,

01:05:15.525 --> 01:05:17.145
wenn du dabei weißt, wie viele Tabellen hast.

01:05:18.245 --> 01:05:19.425
Also bei über

01:05:19.425 --> 01:05:21.185
acht wird das irgendwo spannend.

01:05:22.285 --> 01:05:23.425
Es macht dann auch nicht mehr wirklich

01:05:23.425 --> 01:05:24.845
Spaß, die alle zu verjoinen.

01:05:25.245 --> 01:05:27.105
Dann fängst du dann an, gezielt zu

01:05:27.105 --> 01:05:29.525
denormalisieren. Ich hatte das jetzt gerade schon gemacht,

01:05:30.285 --> 01:05:31.485
indem ich dann halt

01:05:31.485 --> 01:05:33.365
gesagt habe beim Titel, okay, das

01:05:33.365 --> 01:05:35.605
ist auf Album 1 und auf dem Interpreten

01:05:35.605 --> 01:05:37.545
1. Es hätte ja gereicht,

01:05:37.625 --> 01:05:39.225
der Interpret steht ja schon mal beim Album.

01:05:39.845 --> 01:05:41.605
Den hätte ich gar nicht so doppelt

01:05:41.605 --> 01:05:43.685
drin gehabt, aber das wäre so eine leichte

01:05:43.685 --> 01:05:45.605
Denormalisierung schon und das

01:05:45.605 --> 01:05:47.565
erklärt man auch immer gerne, beim Kochbuch habe ich das

01:05:47.565 --> 01:05:49.905
früher erzählt, niemand sucht nach Teelöffel.

01:05:50.665 --> 01:05:51.745
Das heißt, du kannst bei der Menge

01:05:51.745 --> 01:05:54.145
auch sagen, 200 Teelöffel,

01:05:54.265 --> 01:05:55.085
200 Gramm oder so.

01:05:55.425 --> 01:05:57.725
Da ist es auch egal, ob du Gramm groß, klein oder nur

01:05:57.725 --> 01:05:59.725
GR schreibst oder wie du Teelöffel

01:05:59.725 --> 01:06:01.705
abkürzt, ist auch völlig egal, weil da

01:06:01.705 --> 01:06:02.625
sucht keiner nach.

01:06:04.305 --> 01:06:05.145
Heutzutage ist es

01:06:05.145 --> 01:06:07.485
aber nicht mehr so, dass du in die Menge beim

01:06:07.485 --> 01:06:09.645
Kochbuch einschreiben kannst, 300 Gramm

01:06:09.645 --> 01:06:39.625
und Jochen unterhalten sich über die Programmiersprache Python

01:06:39.645 --> 01:07:09.625
und Jochen unterhalten sich über die Programmiersprache Python

01:07:09.645 --> 01:07:12.145
Ich sag's dir, den Datensatz hast du den fünfmal erfasst.

01:07:13.365 --> 01:07:15.225
Er sieht aber identisch aus, komplett.

01:07:16.205 --> 01:07:16.605
Fünfmal.

01:07:17.985 --> 01:07:20.165
Du willst ihn eigentlich nur einmal haben.

01:07:20.285 --> 01:07:21.805
Du musst ja jetzt die vier da rauskriegen.

01:07:21.905 --> 01:07:22.885
Wie kriegst du die da raus?

01:07:23.905 --> 01:07:25.485
Das ist schon eine lustige Aufgabe.

01:07:25.765 --> 01:07:26.425
Passiert manchmal.

01:07:26.805 --> 01:07:28.005
Ich weiß, wie man es rauskriegt.

01:07:28.625 --> 01:07:30.685
Aber alleine schon deswegen ist es sinnvoll,

01:07:30.805 --> 01:07:32.905
dem Ganzen auch noch eine Kennung zu geben,

01:07:33.085 --> 01:07:36.725
irgendeine Eindeutigkeit.

01:07:36.725 --> 01:07:38.545
Und deswegen hast du meistens dann,

01:07:38.545 --> 01:07:40.505
meistens heißt die Spalte dann auch ID,

01:07:40.605 --> 01:07:42.125
in den meisten Datenbanken heißt sie dann ID,

01:07:42.485 --> 01:07:44.705
dass so eine Spalte davor sitzt, wo du dann eine Kennung

01:07:44.705 --> 01:07:45.785
rein hast und dann hast du dann

01:07:45.785 --> 01:07:48.665
Nummer 1 ist Klaus Mayer, Nummer 2 ist

01:07:48.665 --> 01:07:50.385
Klaus Mayer, 3 ist Klaus Mayer, 4 ist Klaus Mayer,

01:07:50.485 --> 01:07:52.765
5 ist Klaus Mayer und dann kannst du dann sagen, delete alle,

01:07:53.545 --> 01:07:54.745
wo Name Klaus Mayer

01:07:54.745 --> 01:07:56.605
ist oder alle mit ID 2

01:07:56.605 --> 01:07:58.585
bis 4, dann kannst du ja auch so machen

01:07:58.585 --> 01:08:00.425
und dann hast du da eine Eindeutigkeit,

01:08:00.605 --> 01:08:02.825
jede Spalte sollte eine Eindeutigkeit haben.

01:08:03.505 --> 01:08:04.685
Jeder Datensatz sollte

01:08:04.685 --> 01:08:06.745
zumindest in einer Spalte

01:08:06.745 --> 01:08:08.445
eindeutig identifizierbar sein,

01:08:08.545 --> 01:08:10.725
und das ist dann meistens der primäre Schlüssel,

01:08:10.885 --> 01:08:12.885
über den du die auch finden kannst

01:08:12.885 --> 01:08:15.285
und über den du diesen Datensatz auch bearbeiten kannst,

01:08:15.525 --> 01:08:16.445
diesen alleinigen.

01:08:17.125 --> 01:08:19.665
Das ist das noch, was dazukommt.

01:08:20.045 --> 01:08:21.485
Und dann hast du die dritte Normalform.

01:08:21.585 --> 01:08:23.465
Du brauchst ein Primärkey und du musst,

01:08:23.805 --> 01:08:25.985
Primarykey, Primärkey heißt das auf Deutsch,

01:08:26.325 --> 01:08:28.085
Primärschlüssel heißt das so.

01:08:28.685 --> 01:08:32.585
Und du solltest es halt so ein bisschen ordentlich sortieren,

01:08:32.965 --> 01:08:34.885
dass du nicht alles in einer Tabelle hast.

01:08:34.885 --> 01:08:39.545
und wenn man dann davon weggeht, dann

01:08:39.545 --> 01:08:40.365
spreit man halt alles rein.

01:08:41.925 --> 01:08:43.685
Was? Ich würde sagen, Normalisierung haben wir

01:08:43.685 --> 01:08:44.765
glaube ich soweit verstanden, oder?

01:08:46.525 --> 01:08:47.265
Ja, also

01:08:47.265 --> 01:08:49.025
genau, also ich meine, irgendwann

01:08:49.025 --> 01:08:51.705
ich habe dann irgendwie meistens

01:08:51.705 --> 01:08:53.405
bei irgendeinem neuen Problem oder so

01:08:53.405 --> 01:08:55.825
oft dann angefangen, so ein Entity-Relationship-Diagramm

01:08:55.825 --> 01:08:56.765
hinzumalen oder so

01:08:56.765 --> 01:08:58.905
und das, genau, das

01:08:58.905 --> 01:09:01.585
macht man dann eigentlich meistens, irgendwann hat man das dann so ein Gefühl,

01:09:01.685 --> 01:09:03.205
wie das dann aussehen kann.

01:09:03.205 --> 01:09:04.605
tatsächlich auf. Also,

01:09:04.885 --> 01:09:07.125
dass ich mir das grob auf irgendeinem

01:09:07.125 --> 01:09:08.725
Schmierzettel aufmale

01:09:08.725 --> 01:09:11.025
und wenn ich es nicht,

01:09:11.225 --> 01:09:13.045
wenn es nicht nur drei Tabellen sind, das kriege ich

01:09:13.045 --> 01:09:15.265
im Kopf und den Körper. Tatsächlich

01:09:15.265 --> 01:09:17.165
mache ich das auch tatsächlich, dass ich mir das

01:09:17.165 --> 01:09:18.745
dann teilweise mal auf dem Schmierzettel überlege.

01:09:19.225 --> 01:09:21.025
Wie ich da eigentlich immer dran gehe, ist,

01:09:21.085 --> 01:09:22.885
wenn ich eine Datenbank neu aufsetze, ist, ich

01:09:22.885 --> 01:09:24.825
gucke erstmal nach, was Musikgub alles an

01:09:24.825 --> 01:09:27.365
Informationen in dieser Datenbank speichern.

01:09:27.365 --> 01:09:29.185
Also wirklich so als

01:09:29.185 --> 01:09:31.265
reines Sammelsurium, das ist natürlich

01:09:31.265 --> 01:09:33.125
für andere Firmenprogrammierste das so,

01:09:33.205 --> 01:09:34.625
und muss das erstmal aus den ganzen

01:09:34.625 --> 01:09:36.545
Besprechungen raushaben, was brauchen die überhaupt

01:09:36.545 --> 01:09:38.685
alles in der Datenbank, dann muss

01:09:38.685 --> 01:09:40.445
man noch gucken, meistens führt die Firma mit,

01:09:40.505 --> 01:09:42.605
was ist überhaupt erlaubt, abzuspeichern.

01:09:43.585 --> 01:09:44.385
Gibt es ja auch sowas,

01:09:44.425 --> 01:09:45.465
sowas wie diesen,

01:09:46.845 --> 01:09:47.825
bei der Kreditkarte,

01:09:48.065 --> 01:09:50.625
bei der EC-Karte hinten die Nummer, die darfst du glaube ich gar nicht

01:09:50.625 --> 01:09:51.425
mit abspeichern.

01:09:52.005 --> 01:09:53.505
Oder solchen Sachen.

01:09:54.385 --> 01:09:56.605
Dass man da nochmal guckt und man muss

01:09:56.605 --> 01:09:58.565
ja immer versuchen, man hat ja in der Regel nicht mit

01:09:58.565 --> 01:10:00.625
IT-Lern zu tun oder mit technischen

01:10:00.625 --> 01:10:02.145
Menschen, sondern mit anderen.

01:10:03.205 --> 01:10:09.245
aus deren Sprachgebrauch rauszufinden, was davon kann ich denn überhaupt als Daten abspeichern, als Information.

01:10:09.725 --> 01:10:14.005
Und das sammle ich dann einfach auch immer erstmal ganz wild durcheinander und sortiere das dann.

01:10:14.525 --> 01:10:18.805
Und dann überlege ich mir, wo könnte ich jetzt was davon hinpacken und was gehört da wie zusammen.

01:10:19.605 --> 01:10:23.185
Und so baue ich das Ganze auf und dann gucke ich, wie kann ich das dann vernetzen.

01:10:23.285 --> 01:10:27.505
Und auch ich mache es so, ich mache auch immer erstmal die dritte Normalform und gucke dann,

01:10:27.985 --> 01:10:31.145
gut, manchmal sieht man dann schon auf Anfang an, okay, da kannst du ein Bottleneck haben,

01:10:31.145 --> 01:10:32.065
da kannst du was reinhaben.

01:10:32.065 --> 01:10:57.245
Ich kann mal ein Beispiel nennen für ein Bottleneck. Eine Spielefirma mit Online-Spielen, die haben mehrere Online-Spiele und natürlich hat der Nutzer nur einen Account und dann hat er auch Nick, der Nutzer, aber die sind hinterher dazu übergekommen, weil jetzt von diesen mehreren Millionen Nutzern

01:10:57.245 --> 01:11:01.265
musste natürlich immer die Account-Tabelle

01:11:01.265 --> 01:11:02.725
aufgerufen werden,

01:11:03.745 --> 01:11:03.905
um

01:11:03.905 --> 01:11:07.525
dann irgendwas

01:11:07.525 --> 01:11:08.885
über den Nutzer rauszufinden.

01:11:10.045 --> 01:11:10.705
Bei den Spielen,

01:11:11.005 --> 01:11:13.505
wie weit ist der Spielstand oder so weiter.

01:11:14.185 --> 01:11:15.245
Und die mussten dann immer

01:11:15.245 --> 01:11:17.145
den Nutzer und wenn da auf eine

01:11:17.145 --> 01:11:18.805
Tabelle immer laufen,

01:11:18.945 --> 01:11:21.285
zwei Millionen Sachen raufkommen oder noch mehr Spieler,

01:11:21.885 --> 01:11:23.305
ist das natürlich etwas schwierig.

01:11:24.205 --> 01:11:25.165
Und dann sind die hingegangen

01:11:25.165 --> 01:11:26.185
und haben die nix

01:11:26.185 --> 01:11:29.805
der Spieler dann nochmal in den Spielen

01:11:29.805 --> 01:11:31.965
hinterlegt, dass die nicht immer

01:11:31.965 --> 01:11:33.965
auf die eine Tabelle zugreifen

01:11:33.965 --> 01:11:36.065
konnten. Deswegen ist das

01:11:36.065 --> 01:11:37.425
ganz häufig so,

01:11:37.845 --> 01:11:39.385
Passworte ändern ist meistens

01:11:39.385 --> 01:11:41.025
einfach

01:11:41.025 --> 01:11:44.025
und ganz viele, ich weiß nicht, ob es immer noch

01:11:44.025 --> 01:11:45.805
so ist, ich spiele so selten, aber

01:11:45.805 --> 01:11:47.885
den Nick ändern ist immer etwas schwieriger und

01:11:47.885 --> 01:11:49.845
aufwendiger. Das liegt daran, dass das dann nicht mehr

01:11:49.845 --> 01:11:51.725
in der einen Tabelle, sondern weil die den nochmal

01:11:51.725 --> 01:11:53.705
denormalisiert haben und zwar

01:11:53.705 --> 01:11:55.885
aus Absicht, weil das einfach sonst zu

01:11:55.885 --> 01:11:57.205
viel wird auf einer Tabelle.

01:11:57.405 --> 01:11:59.425
Ja, da muss man dann tatsächlich zurückgehen auf diese Tabelle und gucken.

01:11:59.565 --> 01:12:01.885
Ja, ja, und dann deswegen ist so ein Nick ändern

01:12:01.885 --> 01:12:03.825
bei so Spielen häufiger

01:12:03.825 --> 01:12:05.145
mal so ein Problem gewesen.

01:12:05.765 --> 01:12:07.005
Ich weiß nicht, ob es immer noch so ist.

01:12:07.725 --> 01:12:09.465
Aber das wäre so ein Beispiel für

01:12:09.465 --> 01:12:11.905
eine gezielte Denormalisierung.

01:12:12.425 --> 01:12:14.145
Aber das ist halt das.

01:12:14.725 --> 01:12:15.665
Ja, also dann, wenn

01:12:15.665 --> 01:12:17.685
ganz viele Zugriffe auf einer Tabelle sind, dann muss man

01:12:17.685 --> 01:12:18.365
vielleicht drüber nachdenken.

01:12:18.845 --> 01:12:21.745
Was ich auch mal aus Versehen denormalisiert hatte, war so eine

01:12:21.745 --> 01:12:22.865
Stempeluhr-Datenbank.

01:12:24.125 --> 01:12:25.285
Da habe ich einen Start und einen Stopp.

01:12:25.285 --> 01:12:28.325
Stempeluhr ist ganz einfach. Ich habe eine Startzeit, ich habe eine Stoppzeit.

01:12:29.305 --> 01:12:33.445
Und ich habe dann noch clevererweise die Differenz mit abgespeichert, weil das war dann einfach okay,

01:12:33.545 --> 01:12:38.405
wenn ich Stopp sage, kann ich auch gleich nochmal eben schnell die Differenz Stopp minus Start ausrechnen

01:12:38.405 --> 01:12:43.325
und das auch mit abspeichern. Das war dann auch meine Riesenrettung, weil ich habe dann als Admin

01:12:43.325 --> 01:12:51.685
tatsächlich mal irgendwo ganz schnell wollte ich, obwohl es da Skripte für gab, noch irgendeine Stoppzeit nachtragen

01:12:51.685 --> 01:12:54.045
und habe die Werkklausel

01:12:54.045 --> 01:12:54.545
vergessen.

01:12:55.245 --> 01:12:56.385
Und dann alle geupdatet.

01:12:57.045 --> 01:12:57.385
Genau.

01:12:58.745 --> 01:13:00.365
Komisch, warum dauert das Update denn so lang?

01:13:00.565 --> 01:13:02.365
Das ging relativ schnell,

01:13:02.525 --> 01:13:04.485
es war ein guter Server, so viele Mitarbeiter

01:13:04.485 --> 01:13:06.345
waren das nicht, aber dann so, ja,

01:13:06.845 --> 01:13:08.265
die Stellplatte lief auch erst irgendwie so

01:13:08.265 --> 01:13:10.125
zwei Jahre, also es war nicht so schlimm.

01:13:12.825 --> 01:13:14.345
Ja, aber zum Glück

01:13:14.345 --> 01:13:16.305
gab es die Differenz noch,

01:13:16.425 --> 01:13:17.945
also konnte ich dann ganz schnell mal

01:13:17.945 --> 01:13:19.665
ein Update fahren, mach mal Start,

01:13:19.665 --> 01:13:22.145
plus Differenz und dann hatte ich wieder die richtige Stoppzeit

01:13:22.145 --> 01:13:23.365
drin. Also

01:13:23.365 --> 01:13:25.365
das kann auch mal passieren.

01:13:26.345 --> 01:13:28.045
Wobei ich da auch dachte, okay, eigentlich

01:13:28.045 --> 01:13:29.385
ist das ja eine Hitze, die

01:13:29.385 --> 01:13:31.905
Differenz ja gar nicht gebraucht, aber ich fand

01:13:31.905 --> 01:13:33.805
das damals sinnvoll, sie mit abzuschleichen und ich

01:13:33.805 --> 01:13:35.785
rate das Hauptbandbestimmungen jeden

01:13:35.785 --> 01:13:36.625
Style-Mit zu machen.

01:13:37.565 --> 01:13:38.565
Doppelt hält besser dann, ja?

01:13:38.765 --> 01:13:40.885
Ne, das ist auch teilweise wie du es in der Anwendung

01:13:40.885 --> 01:13:41.745
brauchst. Wenn du immer

01:13:41.745 --> 01:13:44.665
Differenz brauchst, dann brauchst du auch nur

01:13:44.665 --> 01:13:46.605
die Differenz abfragen und musst nicht immer

01:13:46.605 --> 01:13:48.725
Start- und Stopp abfragen später in der Anwendung.

01:13:48.725 --> 01:13:50.785
zu machen. Das ist dann auch noch was,

01:13:50.845 --> 01:13:52.485
das musst du ja auch noch wieder ein bisschen mit dazu

01:13:52.485 --> 01:13:54.645
tanken. Und du musst natürlich

01:13:54.645 --> 01:13:56.185
heutzutage auch so ein bisschen Sicherheit

01:13:56.185 --> 01:13:58.145
da in Zukunft, was weiß ich, was mit berücksichtigen.

01:13:58.585 --> 01:14:00.305
Deswegen hast du auch ganz viel in den Tabellen,

01:14:00.425 --> 01:14:02.305
fast jeden Abteil noch

01:14:02.305 --> 01:14:04.605
last updated und so

01:14:04.605 --> 01:14:05.825
weiter mit in jeder Spalte.

01:14:05.985 --> 01:14:07.325
Update 3, update...

01:14:07.325 --> 01:14:09.985
Irgendwie sowas, oder hast du noch eine History-Tabelle,

01:14:10.185 --> 01:14:12.665
wo die alten Werte reinkommen oder ähnliches.

01:14:13.325 --> 01:14:14.105
Das hast du ja auch noch.

01:14:14.165 --> 01:14:15.345
Ein Model History Tracker.

01:14:16.045 --> 01:14:18.705
Ja, das hast du ja auch bei Preisen.

01:14:18.725 --> 01:14:23.805
und wenn du jetzt ganz normal so eine Verkaufstabelle machst, dann hast du ja auch bei Preisen häufig,

01:14:24.085 --> 01:14:27.925
wie wenn du einen Preis änderst, solltest du ja den alten Preis ja auch nochmal irgendwo...

01:14:27.925 --> 01:14:30.745
Ja, schon praktisch, dann kann man dann das auch in die Entwicklung gucken.

01:14:31.605 --> 01:14:37.625
Ja, nicht nur das, weil du änderst vielleicht heute den Preis, aber es haben noch nicht alle die Rechnungen bezahlt

01:14:37.625 --> 01:14:40.105
und dann brauchst du ja noch in allen Rechnungen solche Geschichten.

01:14:40.125 --> 01:14:41.425
Ich habe zu welchen Plätzen gekauft worden.

01:14:41.705 --> 01:14:45.205
Das ist lustig, es gibt auch Unternehmen, da wird dann der Preis bezahlt, der jetzt gerade aktuell gilt.

01:14:45.205 --> 01:14:50.405
und das ist auch lustig, was auch immer mal wieder passiert ist,

01:14:51.045 --> 01:14:54.585
so ja, für die Schlüssel, dass dann die Namen genannt werden.

01:14:55.785 --> 01:14:58.405
Ich hatte mal eine Firma, die hatte wirklich

01:14:58.405 --> 01:15:01.005
bei den Mitarbeitern als Schlüssel die Namen.

01:15:02.565 --> 01:15:05.145
Ich so, was macht ihr denn, wenn ihr Mitarbeiter habt, die gleich heißen?

01:15:05.145 --> 01:15:06.285
Das ist ja minus zwei.

01:15:07.085 --> 01:15:08.925
Haben wir nicht, stellen wir nicht ein.

01:15:10.005 --> 01:15:10.365
Ja, sehr gut.

01:15:11.065 --> 01:15:13.585
Also das sollte man natürlich nicht machen,

01:15:13.585 --> 01:15:15.665
sondern, weil bei Mitarbeitern,

01:15:15.785 --> 01:15:17.505
also bei sowas nimmt man meistens auch die Kennung.

01:15:17.585 --> 01:15:19.145
Es gibt natürlich auch natürliche Schlüsse.

01:15:19.925 --> 01:15:21.025
Ich weiß nicht, ob Autos jetzt

01:15:21.025 --> 01:15:23.265
Kfz-Zeichen unbedingt sinnvoll ist,

01:15:23.265 --> 01:15:24.545
als Kennung zu nehmen, aber

01:15:24.545 --> 01:15:27.785
es gibt halt so Schlüsse, so ISBN-Nummern

01:15:27.785 --> 01:15:29.445
oder sowas, die könnte man auch als

01:15:29.445 --> 01:15:31.305
Schlüssel nehmen. Oder wenn man

01:15:31.305 --> 01:15:33.145
jetzt die Postleitzahlen hat,

01:15:33.565 --> 01:15:35.645
Postleitzahlen sind auch super Schlüssel bei Städten.

01:15:36.185 --> 01:15:36.625
Ist das sinnvoll?

01:15:36.625 --> 01:15:39.205
Ja, nee, das ist schon sehr sinnvoll,

01:15:39.285 --> 01:15:41.245
wenn das so eine ganze Zahl ist.

01:15:41.245 --> 01:15:45.325
irgendwie. Jedenfalls, je nachdem, was man für einen Index verwenden will, vielleicht auch drauf.

01:15:45.605 --> 01:15:49.265
Aber zum Normalfall denke ich schon, dass es vielleicht nicht so unpraktisch ist.

01:15:50.025 --> 01:15:52.745
Ja, das ist halt so eine Frage. Das wäre eine interessante Frage.

01:15:53.325 --> 01:15:56.405
Also irgendwie sehe ich in letzter Zeit sehr häufig, dass Leute UUID-IDs verwenden.

01:15:57.125 --> 01:15:59.125
Dann können wir ja vielleicht den Hash nehmen von dem Content.

01:15:59.805 --> 01:16:03.825
Ich nehme gerne auch den Unix-Timestamp.

01:16:03.825 --> 01:16:10.145
Ja, also irgendwie in der JavaScript-Welt

01:16:10.145 --> 01:16:19.965
ist das halt so total super, was ich in gewisser Weise verstehen kann, weil da hat man ja oft irgendwie nur das, wenn man jetzt eigentlich das erzeugen möchte, dann will man ja, dass sie eindeutig sind, hat aber keine zentrale Datenbank möglicherweise.

01:16:21.905 --> 01:16:37.205
Es gibt halt diese Sache bei Postgres, bei MariaDB und so weiter, sogar im Standard gibt es den Datentypisch Serial, der soll einfach immer einen hochzählen und das kann man natürlich machen und wenn das völlig egal ist, was du für eine Nummer hinterher hast,

01:16:37.205 --> 01:16:39.225
nimmst du den

01:16:39.225 --> 01:16:41.565
und zählt es dann einfach mal, dann zählt der

01:16:41.565 --> 01:16:43.765
automatisch beim Einfügen einen hoch und dann hat das

01:16:43.765 --> 01:16:45.165
Ding eine eindeutige ID.

01:16:45.385 --> 01:16:47.805
Auto-Increment heißt das

01:16:47.805 --> 01:16:49.345
bei MySQL, bei PostgreSQL.

01:16:49.845 --> 01:16:51.365
Nimmst du den Datentyp Serial oder

01:16:51.365 --> 01:16:54.005
genau, dann macht er das automatisch.

01:16:55.505 --> 01:16:55.725
Ja,

01:16:55.925 --> 01:16:57.685
also ich weiß nicht, ich habe dann

01:16:57.685 --> 01:16:59.645
irgendwann mal Benchmarks gesehen, also ich meine, das macht es halt,

01:16:59.925 --> 01:17:01.725
weil einfach UUID ist halt so riesig.

01:17:01.885 --> 01:17:02.565
Das heißt, wenn du

01:17:02.565 --> 01:17:05.605
das dann tatsächlich als Primary Key hast, dann

01:17:05.605 --> 01:17:09.605
macht das halt Joins bei Postgres, das letzte, was ich gesehen habe, so viermal langsamer

01:17:09.605 --> 01:17:13.045
oder sowas. Bei den meisten ist das halt wurscht, weil irgendwie

01:17:13.045 --> 01:17:17.505
Datenbank ist vielleicht da eh nicht das Wartelnack, aber ich meine, es kostet halt viel mehr

01:17:17.505 --> 01:17:21.465
Speicher und es macht Dinge langsamer, daher tendiere ich immer dazu zu sagen, hey, lieber

01:17:21.465 --> 01:17:25.445
eine Zahl nehmen. Und dann, wenn man

01:17:25.445 --> 01:17:28.825
sowas haben will, wie so eine Eigenschaft will man ja oft haben, dass man nicht sehen kann,

01:17:29.505 --> 01:17:32.725
wann ein Datensatz eingefügt worden ist, weil an der Zahl kann man das natürlich sehen,

01:17:32.725 --> 01:17:34.865
oder welche miteinander zusammenhängen

01:17:34.865 --> 01:17:36.965
oder so, dann kann man sowas wie Hash-IDs

01:17:36.965 --> 01:17:38.685
im Frontend verwenden, wo man die

01:17:38.685 --> 01:17:40.765
IDs hasht. Aber sozusagen den

01:17:40.765 --> 01:17:42.225
Hash in der Datenbank zu verwenden,

01:17:42.445 --> 01:17:43.845
weiß ich nicht.

01:17:44.585 --> 01:17:46.585
Ich tatsächlich häufiger mal als

01:17:46.585 --> 01:17:48.165
Kundennummern oder so auch Timestamps

01:17:48.165 --> 01:17:49.465
gesehen habe.

01:17:49.845 --> 01:17:52.625
Das ist natürlich, wenn du dann so

01:17:52.625 --> 01:17:54.425
einen Support am Telefon nennst, nennen sie mir mal ihre

01:17:54.425 --> 01:17:55.925
Kunden-ID und dann fängt der da an,

01:17:55.985 --> 01:17:57.645
Unix-Timestamps zu lesen.

01:17:58.865 --> 01:18:00.605
Gut, du erkennst es als

01:18:00.605 --> 01:18:01.905
Laie nicht als Timestamp?

01:18:02.725 --> 01:18:17.585
Also da muss dir schon freak zu sein, dass du rastet, dass es ein Timestamp ist, von wegen Eindeutigkeit und schwer zu raten, aber es ist halt auch eindeutig, dass du dann irgendwie so in derselben Sekunde mehrere Kunden anlegst, das ist dann doch schon schwierig.

01:18:17.585 --> 01:18:44.185
und wie gesagt Postleitzahlen sind recht eindeutig.

01:18:44.185 --> 01:18:45.945
Oh, aber das ist so eine interessante Sache, weil

01:18:45.945 --> 01:18:50.625
Was mache ich denn jetzt, wenn ich die Postleitzahleneingabe nicht kontrollieren kann, weil ich die irgendwo herbekomme?

01:18:50.965 --> 01:18:54.025
Und dann hat irgendjemand dann D-Postleitzahl eingegeben oder sowas.

01:18:54.885 --> 01:18:58.945
Und dann habe ich ja das Problem, dass ich dann Doppelte habe quasi.

01:18:59.605 --> 01:19:03.105
Naja, das kommt darauf an, wie du die Postleitzahl in der Datenbank abgelegt hast.

01:19:03.185 --> 01:19:05.385
Ja, also in Maler-Adventure 6 Zeichen.

01:19:05.565 --> 01:19:07.065
Ja, nein, dann geht es halt kaputt.

01:19:07.845 --> 01:19:13.265
Also ich würde sowas ja prüfen in der Software, bevor ich es an die Datenbank schicke und die Datenbank prüft es und wirft es dir zurück,

01:19:13.265 --> 01:19:43.085
weil, das ist einfach, weil ich muss ja erstmal, also ich nehme die Daten entgegen, also die Software, jetzt in eurem Fall Python, in Python geschrieben, die nimmt die Daten entgegen, so, jetzt nimmt sie die Daten so wie sie sind und schmeißt sie in die Datenbank, die Datenbank, äh, kann ich nicht einfügen, falscher Datentyp oder was auch immer, gibt dann, erstmal habt ihr eine Verbindung drauf gemacht, die sind bei Postgres relativ teuer, da rein, die gibt es dann zurück, kann ich nicht,

01:19:43.085 --> 01:19:45.125
ihr kriegt den Fehler, behandelt den Fehler

01:19:45.125 --> 01:19:46.725
wieder in Python.

01:19:46.885 --> 01:19:49.425
Das ist doch dann sinnvoller bei sowas wie Postleitzahlen

01:19:49.425 --> 01:19:50.785
das gleiche in Python zu prüfen.

01:19:50.945 --> 01:19:52.485
Oder auch beim Geschlecht oder sowas.

01:19:52.505 --> 01:19:54.765
Das Problem ist halt die Frage, ob ich jetzt wirklich alle

01:19:54.765 --> 01:19:57.085
Ausnahmen irgendwie abfangen kann, die ich irgendwie ausdenken kann

01:19:57.085 --> 01:19:58.845
oder es halt alles runterbreche

01:19:58.845 --> 01:20:01.005
oder ob ich sage, ich mache da einfach ein Textfeld draus und es ist mir egal

01:20:01.005 --> 01:20:02.245
und dann ist halt dann die Eigentätigkeit weg.

01:20:02.245 --> 01:20:04.625
Was ich bei Postleitzahlen machen würde, die gibt es ja

01:20:04.625 --> 01:20:06.985
als CSV, die würde ich einmal importieren

01:20:06.985 --> 01:20:09.205
und dann würde ich mir die als Liste, dann kann er die auswählen.

01:20:09.465 --> 01:20:11.045
Also es gibt, ja, okay, TriSuite, ja, gut,

01:20:11.045 --> 01:20:11.265
aber

01:20:11.265 --> 01:20:13.745
Ja

01:20:13.745 --> 01:20:15.325
Ja, aber

01:20:15.325 --> 01:20:16.305
Also ich meine, wenn das

01:20:16.305 --> 01:20:19.465
Oder die Stadt anfangen

01:20:19.465 --> 01:20:21.465
einzugeben und dann zeichnet der automatisch

01:20:21.465 --> 01:20:23.205
das. Ja gut, aber da muss ich ja das Formular schon

01:20:23.205 --> 01:20:24.545
in der Hand haben quasi

01:20:24.545 --> 01:20:27.225
Ja, aber da gibt es halt unterschiedliche

01:20:27.225 --> 01:20:29.165
Sichten, also ich meine, aber ich finde das Problem deswegen schön, weil

01:20:29.165 --> 01:20:31.165
das halt vielleicht klar macht, dass

01:20:31.165 --> 01:20:32.565
das alles nicht so ganz einfach ist, also

01:20:32.565 --> 01:20:34.985
aus einer Datenbank-Sicht kann ich mir vielleicht eine ideale

01:20:34.985 --> 01:20:37.225
Ich habe auch, das hat wahrscheinlich jeder schon ein paar

01:20:37.225 --> 01:20:39.045
Mal gemacht, aber irgendwie so versucht, normalisiert

01:20:39.045 --> 01:20:40.985
Adressen zu speichern und

01:20:40.985 --> 01:20:45.985
und dann, wenn man das aber dann benutzt, dann stellt man fest, so, oh, das gibt aber ganz viele Fälle, die passen dann halt nicht.

01:20:46.345 --> 01:20:47.185
In Mannheim.

01:20:48.125 --> 01:20:53.005
Irgendwelche halligen Dinge, die halt irgendwie nicht so richtig da reinpassen wollen.

01:20:53.425 --> 01:20:57.365
Also dann, wenn man sich mit Leuten unterhält, die dann aus dem Web-Dings da drauf gucken,

01:20:57.465 --> 01:21:01.205
die sagen dann eher so, ja, okay, du kannst das ja vielleicht in der Datenbank so speichern,

01:21:01.265 --> 01:21:04.725
aber wenn du es zum Beispiel dann hinterher irgendwie Leuten anzeigen oder ausdrucken oder sonst irgendwie,

01:21:04.805 --> 01:21:08.685
dann nimm halt immer irgendwas, was reiner Text ist, weil alles andere geht eh nicht.

01:21:08.685 --> 01:21:38.665
und Jochen unterhalten sich über die Programmiersprache Python

01:21:38.685 --> 01:21:39.785
zu importieren.

01:21:40.125 --> 01:21:41.245
Für Deutschland ja.

01:21:41.685 --> 01:21:43.185
Hast du natürlich, wenn du international bist,

01:21:43.185 --> 01:21:43.805
dann auch wieder.

01:21:44.605 --> 01:21:46.905
Aber ich sag mal so, Straßen, Mannheim hat ja die

01:21:46.905 --> 01:21:49.045
Quadrate T633, habe ich mal drin

01:21:49.045 --> 01:21:49.925
gewohnt, glaube ich.

01:21:51.565 --> 01:21:52.945
Aber das geht halt auch nur dann,

01:21:53.005 --> 01:21:55.105
wenn ich halt den Input wirklich kontrollieren kann.

01:21:55.205 --> 01:21:56.905
Wenn ich halt irgendwas bekomme und das muss halt

01:21:56.905 --> 01:21:58.745
dann da ins Postleitzahlenfeld rein, dann ist das

01:21:58.745 --> 01:21:59.345
natürlich schwierig.

01:21:59.585 --> 01:22:00.685
Die Frage ist, wofür brauchst du das?

01:22:00.685 --> 01:22:03.005
Wofür willst du das unbedingt in das Postleitzahlen?

01:22:03.145 --> 01:22:05.005
Warum willst du da unbedingt irgendwas reintun,

01:22:05.065 --> 01:22:05.945
was keine Postleitzahlen ist?

01:22:06.085 --> 01:22:08.625
Weil ich die Adresse anlegen muss, um eine Bestellung anlegen zu können.

01:22:08.685 --> 01:22:10.505
zu finden oder sowas. Ja, aber dann legt das doch, tu doch die Adresse

01:22:10.505 --> 01:22:11.985
in das Textfeld. Ja, genau.

01:22:12.565 --> 01:22:14.885
Dann kannst du ja versuchen,

01:22:14.945 --> 01:22:16.385
eine Postleitzahl zu extrahieren oder so.

01:22:16.405 --> 01:22:18.705
Ja, oder die Postleitzahl kommt direkt ins Textfeld.

01:22:19.325 --> 01:22:20.685
Die Frage ist ja, woher

01:22:20.685 --> 01:22:22.505
brauchst du diese Adresse? Genau.

01:22:23.885 --> 01:22:24.805
Ja, also die Frage,

01:22:24.885 --> 01:22:26.425
was halt noch schwieriger wird hinterher, ist halt Filtern

01:22:26.425 --> 01:22:28.385
von Adressen. Also wenn du

01:22:28.385 --> 01:22:29.785
ein Verkäufer bist,

01:22:30.545 --> 01:22:32.405
der etwas

01:22:32.405 --> 01:22:33.605
online verkauft

01:22:33.605 --> 01:22:36.285
und du brauchst jetzt die Lieferadresse, um das

01:22:36.285 --> 01:22:38.345
dem Kunden zu liefern, da hat der Kunde ja schon

01:22:38.345 --> 01:22:39.625
ein gewisses Interesse dran.

01:22:40.625 --> 01:22:42.965
Dann nehme ich halt das Textfeld, dann kommt das halt auch an.

01:22:43.025 --> 01:22:44.665
Aber wenn ich jetzt dann hinterher in die Analyse hingehen will,

01:22:45.045 --> 01:22:47.285
in welchem Postleitzahlengebiet habe ich denn jetzt wie viel geliefert

01:22:47.285 --> 01:22:49.425
beispielsweise, dann ist halt dann das Problem, dass die Textwelle

01:22:49.425 --> 01:22:49.865
halt nicht mehr angezeigt wird.

01:22:49.865 --> 01:22:52.165
Ja, aber dann ist halt die Frage, wie wichtig ist es,

01:22:52.685 --> 01:22:54.645
bis auf die letzte Adresse stimmt und dann...

01:22:54.645 --> 01:22:56.405
Genau, dann muss ich mir halt dann halt die Filter überlegen,

01:22:56.485 --> 01:22:57.245
wie ich das dann wieder rausnehme.

01:22:57.265 --> 01:23:00.225
Dann ist auch die Frage, ob du diese Analyse überhaupt fahren darfst

01:23:00.225 --> 01:23:02.325
oder ob das gegen die Datenschutzrichtlinien verpflichtet ist.

01:23:02.345 --> 01:23:03.425
Na gut, aber das ist ja ein anderes Problem.

01:23:03.805 --> 01:23:04.025
Naja.

01:23:04.125 --> 01:23:06.665
Also im Zweifel hat man ja berechtigte Interessen und dafür eine jeweilige

01:23:06.665 --> 01:23:07.565
Datenschutzvereinbarung.

01:23:07.565 --> 01:23:08.005
Ja, noch nicht.

01:23:08.165 --> 01:23:10.665
Ja, das ja.

01:23:12.785 --> 01:23:13.105
Aber,

01:23:13.565 --> 01:23:15.205
ich habe die hier gleich aufgegessen.

01:23:15.305 --> 01:23:15.965
Das ist ja lecker.

01:23:17.005 --> 01:23:19.085
Nein, aber das ist so dieses,

01:23:21.565 --> 01:23:22.505
nee, aber tatsächlich,

01:23:22.905 --> 01:23:23.945
ich habe das auch schon mehrfach,

01:23:24.305 --> 01:23:26.365
ich war dann einmal faul, ich habe dann mal angeguckt,

01:23:26.445 --> 01:23:27.725
was passt denn auf einen Briefkopf,

01:23:28.165 --> 01:23:29.825
ich glaube, du hast sechs Zeilen, hast du fünf?

01:23:30.925 --> 01:23:32.605
Also ein normaler Briefkopf hat immer fünf,

01:23:32.785 --> 01:23:33.465
oder da habe ich einmal,

01:23:33.465 --> 01:23:34.625
wie heißt die?

01:23:34.625 --> 01:23:36.705
Adresse 1, Adresse 2 oder ADR

01:23:36.705 --> 01:23:38.325
1, 2, 3, 4, 5, 6, weil

01:23:38.325 --> 01:23:40.185
mir ist das doch auch völlig egal,

01:23:40.645 --> 01:23:42.385
ob der Name der Kunde jetzt ganz oben steht

01:23:42.385 --> 01:23:43.905
oder in der zweiten Zeile.

01:23:44.325 --> 01:23:45.565
Der Kunde wird ja wissen,

01:23:46.205 --> 01:23:48.105
wie seine Rechnung ist, beziehungsweise

01:23:48.105 --> 01:23:49.465
wie seine Adresse ist.

01:23:51.205 --> 01:23:52.725
Und wenn der was geliefert haben

01:23:52.725 --> 01:23:54.385
will, hat der auch ein entsprechend großes

01:23:54.385 --> 01:23:56.305
Interesse, dass das ankommt, dass er seine Adresse

01:23:56.305 --> 01:23:57.825
schon richtig da eintippt.

01:24:00.025 --> 01:24:00.425
Und

01:24:00.425 --> 01:24:02.465
dann schickst du ihm ja auch nochmal

01:24:02.465 --> 01:24:04.405
eine E-Mail, bevor du das lieferst und so weiter.

01:24:04.625 --> 01:24:06.625
sofort. Bei Rechnungsadressen,

01:24:07.925 --> 01:24:08.985
ja.

01:24:09.385 --> 01:24:10.445
Ja, ich glaube, ihr redet nicht.

01:24:10.465 --> 01:24:12.865
Das ist wurscht. Also da ist das ja,

01:24:13.505 --> 01:24:14.985
die schickst du ja auch selten noch mit der Post.

01:24:15.285 --> 01:24:16.785
Ich glaube, das Normalisierungsthema würde ich

01:24:16.785 --> 01:24:18.625
dann damit auch abschließen wollen. Und ich würde

01:24:18.625 --> 01:24:20.165
gerne noch zu was anderem überkommen. Und zwar,

01:24:20.625 --> 01:24:22.645
könnt ihr euch jetzt aussuchen, ob ihr erst Transaktionen sprechen wollt

01:24:22.645 --> 01:24:24.565
oder Verbindungen oder über NoSQL

01:24:24.565 --> 01:24:25.105
vs. SQL.

01:24:27.305 --> 01:24:28.465
Und am Ende wollen wir nochmal

01:24:28.465 --> 01:24:29.605
Maria gegen Postgres.

01:24:30.105 --> 01:24:30.325
Okay.

01:24:30.325 --> 01:24:31.345
Das würde ich auch schon.

01:24:32.885 --> 01:24:34.605
Was wolltest du zu Transaktionen

01:24:34.605 --> 01:24:37.705
müssen. Vielleicht erstmal, was ist das überhaupt? Also ich muss ja

01:24:37.705 --> 01:24:42.685
davon ausgehen. Also eine Transaktion ist, der Dominik möchte

01:24:42.685 --> 01:24:45.465
dem Jochen 100 Euro überreisen.

01:24:47.905 --> 01:24:50.505
Jetzt zieht die Bank, stell dir vor, du bist eine Bank,

01:24:50.765 --> 01:24:54.705
jetzt zieht die Bank die 100 Euro von Dominiks Konto ab und die Datenbank

01:24:54.705 --> 01:24:57.185
bricht zusammen. Oder das System bricht zusammen.

01:24:58.545 --> 01:25:02.845
Es ist halt beim Jochen nichts angekommen, aber beim Dominik sind die 100 Euro auch weg.

01:25:02.845 --> 01:25:05.065
Das wäre nicht gut.

01:25:05.525 --> 01:25:07.005
Ist in einem schwarzen Loch versunken.

01:25:07.685 --> 01:25:07.945
So.

01:25:08.805 --> 01:25:10.965
Also macht man das

01:25:10.965 --> 01:25:12.965
Ganze in einer sogenannten Transaktion.

01:25:13.105 --> 01:25:13.625
Das heißt,

01:25:15.005 --> 01:25:16.885
beim Dominik werden die 100 Euro abgezogen

01:25:16.885 --> 01:25:18.265
und beim

01:25:18.265 --> 01:25:21.225
Jochen draufgepackt

01:25:21.225 --> 01:25:23.185
und erst wenn beides passiert ist,

01:25:23.885 --> 01:25:25.205
ist der Prozess abgeschlossen.

01:25:25.325 --> 01:25:26.285
Das macht man mit einem Commit.

01:25:27.125 --> 01:25:28.025
So heißt der Befehl.

01:25:28.825 --> 01:25:31.205
Wenn jetzt zwischendurch das Datenbanksystem abfällt,

01:25:31.205 --> 01:26:01.185
und Jochen unterhalten sich über die Programmiersprache Python

01:26:01.205 --> 01:26:16.365
jedes schreibende Zugriff, also jeder, ne, ne, ne, Transaktion ist eigentlich jeder Befehl, aber jede schreibende Transaktion, das heißt, du machst ein Insert oder ein Update, wenn du das mal so früher in C gemacht hast, musstest du immer ein Commit hinten dran werfen.

01:26:19.865 --> 01:26:26.165
Warum jetzt unbedingt in C, die Programmiersprache war eigentlich egal, aber du musstest immer ein Commit hinten dran werfen.

01:26:26.165 --> 01:26:29.305
Du musst immer einfach mal Insert sagen und dann darunter Commit.

01:26:30.725 --> 01:26:33.105
Mittlerweile machen die Datenbanksysteme alle Autocommit.

01:26:35.165 --> 01:26:38.185
Das heißt, wenn du ein Insert-Befehl abfeuerst, dann wird er automatisch committed.

01:26:38.745 --> 01:26:40.525
Aber das Commit ist natürlich intern immer noch da.

01:26:41.685 --> 01:26:46.505
Aber es wird automatisch da hinten dran gefeuert, dass du das nicht mehr machen musst,

01:26:46.565 --> 01:26:47.925
dass du da immer noch ein Commit einzeln hinterher machst.

01:26:47.945 --> 01:26:48.705
Das kann man auch ausstellen.

01:26:49.025 --> 01:26:51.945
Und das kannst du ausfallen, dafür gibt es den SQL-Befehl.

01:26:52.665 --> 01:26:54.985
Im Standard-SQL heißt das Start-Transaction.

01:26:54.985 --> 01:26:56.545
damit stellst du das Autocommit aus

01:26:56.545 --> 01:26:58.845
dann machst du deine ganzen Schreibungen und Transaktionen

01:26:58.845 --> 01:26:59.825
und du sagst am Ende Commit

01:26:59.825 --> 01:27:02.705
das wäre jetzt das mit dem

01:27:02.705 --> 01:27:04.785
Kontoüberweis. Also das würde man zum Beispiel machen

01:27:04.785 --> 01:27:06.945
in der Businesslogik von so einer Applikation

01:27:06.945 --> 01:27:08.505
wo man zwischendurch noch andere Dinge abfragen muss

01:27:08.505 --> 01:27:10.905
wo man Verbindungen aufbauen muss, wo man nicht weiß, ob die klappen

01:27:10.905 --> 01:27:11.225
oder so

01:27:11.225 --> 01:27:13.965
Ja, also bei allem

01:27:13.965 --> 01:27:16.465
wo du mehrere Schritte hast und die halt entweder

01:27:16.465 --> 01:27:17.845
alle funktionieren sollen oder keine

01:27:17.845 --> 01:27:20.625
Genau, also das mit der Bank ist immer so

01:27:20.625 --> 01:27:22.685
das macht, die Banken funktionieren natürlich

01:27:22.685 --> 01:27:24.585
noch viel komplexer, aber das ist immer so ein schönes

01:27:24.585 --> 01:27:26.565
Beispiel, weil das ist so schön

01:27:26.565 --> 01:27:27.445
anschaulich.

01:27:29.325 --> 01:27:29.965
Genau, und

01:27:29.965 --> 01:27:32.385
Postgres und MariaDB haben aber eine

01:27:32.385 --> 01:27:34.145
Abkürzung für StartTransaction, das ist

01:27:34.145 --> 01:27:36.125
Beginn, also da kann man auch Beginn sagen,

01:27:36.305 --> 01:27:38.045
statt StartTransaction, das ist weniger

01:27:38.045 --> 01:27:38.685
Tipparbeit.

01:27:39.785 --> 01:27:41.805
Und das

01:27:41.805 --> 01:27:44.345
ist halt so ein schönes Beispiel, aber man hat tatsächlich

01:27:44.345 --> 01:27:45.705
immer mal wieder solche Fälle

01:27:45.705 --> 01:27:48.205
in Anwendungen,

01:27:48.525 --> 01:27:50.085
wo du das brauchst tatsächlich,

01:27:50.225 --> 01:27:51.185
dass du das in einem Jahr

01:27:51.185 --> 01:27:54.025
oder dass du wirklich so

01:27:54.025 --> 01:27:55.465
entweder alles oder nichts.

01:27:55.785 --> 01:27:56.745
Das ist im Grunde.

01:27:57.045 --> 01:27:59.545
Dann macht man erst mal so ein Letter und dann muss man die einzelnen Transaktionen

01:27:59.545 --> 01:28:00.425
dann kommitten und dann gucken.

01:28:00.745 --> 01:28:03.885
Sehr schön, auch wenn du jetzt mal ganz große Sachen...

01:28:03.885 --> 01:28:05.665
Ich sag mal, ich hatte vorhin schon ein paar Mal gesagt,

01:28:05.745 --> 01:28:07.645
du willst jetzt aus dem CSV die ganzen

01:28:07.645 --> 01:28:09.225
Postleitzahlen Deutschlands importieren.

01:28:10.785 --> 01:28:11.705
Ja, aus dem CSV,

01:28:11.965 --> 01:28:13.505
okay, das ist eh nur eine Transaktion,

01:28:13.585 --> 01:28:15.365
aber du würdest das mit einem Insert-Statement machen.

01:28:16.245 --> 01:28:17.825
Dann möchtest du auch entweder alle drin haben

01:28:17.825 --> 01:28:18.505
oder keine.

01:28:19.125 --> 01:28:21.285
Du willst nicht irgendwo, dass nach der Hälfte

01:28:21.285 --> 01:28:23.065
irgendwie, dann hast du die halben Postleitzahlen drin

01:28:23.065 --> 01:28:24.305
und die andere Hälfte nicht. Du würdest

01:28:24.305 --> 01:28:26.905
auch mit einer Transaktion machen,

01:28:26.985 --> 01:28:29.305
wie gesagt, wenn du das CSV hochlädst,

01:28:29.345 --> 01:28:30.725
ist es nur eine, aber

01:28:30.725 --> 01:28:33.265
du könntest das auch anders lösen. Das war jetzt zum Beispiel

01:28:33.265 --> 01:28:35.165
was mir einfällt. Also es gibt da aber

01:28:35.165 --> 01:28:37.285
durchaus ganz viele, kriegt da wahrscheinlich

01:28:37.285 --> 01:28:39.125
jetzt ganz viele Zuschriften, was da die

01:28:39.125 --> 01:28:41.325
Leute als Beispiel schon haben für Transaktionen.

01:28:42.205 --> 01:28:43.085
Aber das ist so das

01:28:43.085 --> 01:28:44.865
Transaktion und das wird mitgelockt.

01:28:44.985 --> 01:28:47.085
Tatsächlich, das Transaktionslog ist ja das wichtigste

01:28:47.085 --> 01:28:48.185
überhaupt bei Postgres,

01:28:48.545 --> 01:28:51.085
bei Datenmarken. Und das wird

01:28:51.085 --> 01:28:53.025
halt mitgelockt, damit du dann, wenn

01:28:53.025 --> 01:29:02.825
deine Datenbank abstürzt, hast du immer noch das Transaktionslogs und aus dem Bestand, den du auf der Festplatte in deinem Datenverzeichnis hast und den Transaktionslogs kann die Datenbank wiederhergestellt werden.

01:29:03.205 --> 01:29:04.305
Das ist in den Backups so wichtig.

01:29:05.885 --> 01:29:09.265
Naja, aber die Datenbank muss es halt schon irgendwann mal geschrieben haben auf die Platte.

01:29:09.925 --> 01:29:13.765
Ja, das Transaktionslog schreibt halt immer auf die Platte, das ist das Wichtige daran.

01:29:14.225 --> 01:29:16.225
Es sei denn, da muss man immer aufpassen.

01:29:16.545 --> 01:29:19.265
Aber man kann es auch abschalten, macht Tests unter Umständen schneller.

01:29:19.265 --> 01:29:22.105
Man kann das abschalten, ja

01:29:22.105 --> 01:29:24.385
das kann man machen, ganz viel fieser

01:29:24.385 --> 01:29:26.325
ist aber, dass Festplatten nicht unbedingt permanent

01:29:26.325 --> 01:29:28.405
speichern, dass auch

01:29:28.405 --> 01:29:30.165
Festplatten mittlerweile irgendwelche Caches

01:29:30.165 --> 01:29:32.405
haben und wenn dann wirklich mal so richtig

01:29:32.405 --> 01:29:33.545
heftig was ausfällt

01:29:33.545 --> 01:29:36.425
ist in Deutschland seltener, also in Amerika

01:29:36.425 --> 01:29:38.485
mit Stromausfällen haben wir jetzt nicht ganz so

01:29:38.485 --> 01:29:40.365
viel hier zu tun, in Amerika fällt ja ganz häufig

01:29:40.365 --> 01:29:42.365
der Strom aus und so weiter, dass dann

01:29:42.365 --> 01:29:44.285
das nur in dem Cache der Festplatte war und

01:29:44.285 --> 01:29:46.345
noch gar nicht richtig auf der Festplatte und dann weg ist

01:29:46.345 --> 01:29:48.165
da wird dann immer geraten, man soll den

01:29:48.165 --> 01:29:51.145
Plattencache ausstellen und solche Geschichten, damit das dann...

01:29:51.145 --> 01:29:53.205
Ah, okay. Ja gut, ich weiß es nicht genau.

01:29:53.325 --> 01:30:05.547
Ich glaube man kann Ich brauche bei VMs dann sagt die VM es ist fest auf der Platte es ist aber erst ein Cache des Hoses oder so Das ist auch was da habe ich bei VMs keinen Einfluss drauf

01:30:05.887 --> 01:30:10.668
Also bei den Datenbanken, so Hardware-Datenbanken, die ich mal so irgendwie in Rex gesehen habe,

01:30:10.707 --> 01:30:13.387
die hatten meistens dann halt so RAID-Controller mit Batterien drauf.

01:30:13.387 --> 01:30:14.087
Ja, natürlich.

01:30:16.847 --> 01:30:20.447
Ansonsten, ich glaube, Postgres-Verbände, irgendwie F-Sync und F-Sync kann man auch irgendwie sagen,

01:30:20.587 --> 01:30:24.907
so sag mir, werde erst fertig, wenn du es wirklich, wirklich auf der Platte geschrieben hast.

01:30:24.947 --> 01:30:27.148
Das ist halt, das macht es langsamer,

01:30:27.307 --> 01:30:29.087
aber ja. Nein, F-Sync ist

01:30:29.087 --> 01:30:30.807
das, was wir immer in den Opus

01:30:30.807 --> 01:30:32.567
gibt, weil man sagen stellt, das ausschaut, wenn sie wieder

01:30:32.567 --> 01:30:34.867
ganz NRW oder die halbe Welt hochladen wollen,

01:30:34.967 --> 01:30:37.007
weil das geht schnell. Und da kannst du auch

01:30:37.007 --> 01:30:38.707
mal sagen, entweder du hast alles oder gar nichts,

01:30:38.847 --> 01:30:40.827
du willst ja die ganze Welt hochladen. F-Sync sollte man nie

01:30:40.827 --> 01:30:42.847
abschalten. Es gibt Synchronos Commit bei

01:30:42.847 --> 01:30:45.107
PostgreSQL und bei MariaDB

01:30:45.107 --> 01:30:47.247
heißt das Ganze...

01:30:47.247 --> 01:30:48.947
Ein Kollege von mir sagte mal, es ist die längste

01:30:48.947 --> 01:30:50.067
Variable, die es gibt.

01:30:54.207 --> 01:30:54.807
Es gibt

01:30:54.807 --> 01:30:58.027
die Variable mit selber, also die heißt nur anders.

01:31:00.807 --> 01:31:05.807
Das kannst du ausstellen, dann würde es schon das ACK, das OK zurückgeben,

01:31:07.007 --> 01:31:11.787
wenn die Transaktion im Cache liegt und nicht auf der Platte.

01:31:12.627 --> 01:31:16.148
Ansonsten kriegst du immer erst das, wenn du ein Statement abfeuerst,

01:31:16.207 --> 01:31:19.648
kriegst du erst das ACK, das Acknowledgement oder das OK zurück.

01:31:20.307 --> 01:31:23.287
Wenn wirklich das von der Transaktion, wenn das System sagt,

01:31:23.287 --> 01:31:53.267
und Jochen unterhalten sich über die Programmiersprache Python

01:31:53.287 --> 01:31:54.727
und irgendwie so ähnlich.

01:31:54.847 --> 01:31:56.467
Ist eine ganz lange Variable bei

01:31:56.467 --> 01:31:58.447
MariaDB.

01:31:58.527 --> 01:32:00.467
Ich weiß immer nicht, wie sie heißt.

01:32:00.867 --> 01:32:02.707
Dann gab mir mein Kollege, ein ehemaliger

01:32:02.707 --> 01:32:04.668
Kollege, einen Tipp. Er sagte, ich weiß auch nicht,

01:32:04.747 --> 01:32:06.727
wie sie heißt, aber es ist die längste Variable,

01:32:06.967 --> 01:32:07.267
die es gibt.

01:32:08.387 --> 01:32:10.747
MariaDB hat wahnsinnig viele Servervariablen.

01:32:11.127 --> 01:32:12.547
Es war wirklich die längste, aber ich glaube, es gibt

01:32:12.547 --> 01:32:13.547
mittlerweile eine längere.

01:32:14.567 --> 01:32:16.607
Sie ist relativ sprechend auch.

01:32:18.747 --> 01:32:19.188
Flash

01:32:19.188 --> 01:32:22.148
Transaction Commit, irgendwie so ähnlich

01:32:22.148 --> 01:32:23.947
heißt sie. Genau.

01:32:24.707 --> 01:32:26.087
Und das ist das. Aber F-Sync

01:32:26.087 --> 01:32:28.087
sollte man eigentlich nicht abstellen. Wie gesagt,

01:32:28.547 --> 01:32:29.947
die OpenStreetMappler, wenn die dann

01:32:29.947 --> 01:32:31.867
wirklich anfangen und wir laden jetzt mal

01:32:31.867 --> 01:32:33.668
auf dem frischen Server irgendwie die halbe Welt,

01:32:34.227 --> 01:32:36.007
dann ist F-Sync abstellen, dann sind

01:32:36.007 --> 01:32:37.967
die wesentlich schneller fertig und

01:32:37.967 --> 01:32:39.827
da kann man auch sagen, okay, wenn

01:32:39.827 --> 01:32:41.767
jetzt nach zwei Tagen die halbe Welt nicht da ist,

01:32:41.827 --> 01:32:42.907
das fängt von vorne an.

01:32:43.547 --> 01:32:46.047
Wenn dann wirklich mal der Server abgeraucht ist.

01:32:46.947 --> 01:32:47.807
Nur da sollte man

01:32:47.807 --> 01:32:48.907
wirklich wissen, was man tut.

01:32:50.447 --> 01:32:50.767
Ja, ja.

01:32:50.767 --> 01:32:53.527
Ja, genau, aber

01:32:53.527 --> 01:32:55.668
ich glaube, also Isolation und so, das gibt es ja auch noch,

01:32:55.747 --> 01:32:57.668
aber es gibt halt eigentlich, Transaktionen ist ja nicht das

01:32:57.668 --> 01:32:59.767
einzige Ding. Also eigentlich will man ja diese

01:32:59.767 --> 01:33:01.067
Asset

01:33:01.067 --> 01:33:03.747
Bedingungen halt sozusagen

01:33:03.747 --> 01:33:06.027
gewährleistet haben. Also je nachdem,

01:33:06.427 --> 01:33:07.527
für manche Sachen reicht auch eventuell.

01:33:07.587 --> 01:33:09.847
Also Datenbanken sollten Asset-konform sein,

01:33:09.967 --> 01:33:11.688
das heißt Atoma, das wäre mit der

01:33:11.688 --> 01:33:12.987
Normalisierung zu lösen,

01:33:13.307 --> 01:33:15.668
konsistent, auch das macht man über

01:33:15.668 --> 01:33:17.087
die Normalisierung.

01:33:18.267 --> 01:33:19.447
Die Isolation,

01:33:19.447 --> 01:33:20.447
die

01:33:20.447 --> 01:33:23.767
macht man über Isolationslevel

01:33:23.767 --> 01:33:25.427
das wird aber automatisch gemacht

01:33:25.427 --> 01:33:27.668
und wir haben den Isolationsmetall

01:33:27.668 --> 01:33:29.567
Repeat Committed

01:33:29.567 --> 01:33:31.427
oder Repeater, Repeat ist sowieso Standard

01:33:31.427 --> 01:33:33.207
da muss man eigentlich nicht nochmal dran

01:33:33.207 --> 01:33:35.447
es sei denn man ist irgendwo

01:33:35.447 --> 01:33:37.747
im tiefen universitären Bereich

01:33:37.747 --> 01:33:39.487
und will das auf serializable stellen

01:33:39.487 --> 01:33:41.427
da kann ich aber auch sagen, die meisten Bugs

01:33:41.427 --> 01:33:43.287
haben alle Datenbanksysteme, haben ein Riesenproblem

01:33:43.287 --> 01:33:45.447
mit diesem Isolationsmetall

01:33:45.447 --> 01:33:47.207
können wir nochmal drum machen

01:33:47.207 --> 01:33:48.247
was das bedeutet

01:33:48.247 --> 01:33:49.947
und dann hat man noch die

01:33:49.947 --> 01:33:52.027
Durability oder in Deutsch heißt das

01:33:52.027 --> 01:33:52.927
so schön dauerhaft.

01:33:54.507 --> 01:33:55.907
Und das ist heute

01:33:55.907 --> 01:33:58.127
ein Riesenproblem, weil Datenbanken sollten natürlich

01:33:58.127 --> 01:33:59.327
dauerhaft speichern.

01:34:00.927 --> 01:34:02.047
Und das hatte ich vorhin schon

01:34:02.047 --> 01:34:04.087
angedeutet. Das ist

01:34:04.087 --> 01:34:06.287
so eine schöne Theorie, warte bis es auf der Festplatte

01:34:06.287 --> 01:34:06.987
ist, aber

01:34:06.987 --> 01:34:09.927
ganz, ganz viele Datenbanken

01:34:09.927 --> 01:34:11.967
laufen heute auf virtuellen Maschinen.

01:34:12.967 --> 01:34:14.007
Und Festplatte heißt

01:34:14.007 --> 01:34:16.207
dann die Festplatte vom Host und viele virtuelle

01:34:16.207 --> 01:34:18.367
Maschinen sagen, ja, das ist auf der Festplatte,

01:34:18.487 --> 01:34:20.347
obwohl es erst im Rahmen des Hostes liegt.

01:34:20.467 --> 01:34:22.047
Auch gar nicht wirklich auf der Festplatte.

01:34:22.668 --> 01:34:24.527
Und da habe ich zumindest unser Datenbanksystem

01:34:24.527 --> 01:34:25.907
erstmal keinen Einfluss drauf.

01:34:26.427 --> 01:34:28.227
Das ist dann eine Administratorsache, das

01:34:28.227 --> 01:34:30.287
dauerhaft hinzukriegen. Und jetzt

01:34:30.287 --> 01:34:32.007
guckst du mich fragend an, ich weiß auch nicht wie.

01:34:32.987 --> 01:34:34.168
Also ich weiß

01:34:34.168 --> 01:34:35.887
nur, dass wir ganz häufig,

01:34:36.148 --> 01:34:38.127
wenn ich ganz komische Artefakte habe und

01:34:38.127 --> 01:34:40.267
den Kunden frage, ist das eine virtuelle Maschine?

01:34:41.947 --> 01:34:42.287
Also ich hatte

01:34:42.287 --> 01:34:44.027
auch schon Kunden, die dann nein gesagt haben. Dreimal

01:34:44.027 --> 01:34:45.407
und am Ende kam raus, es war doch eine.

01:34:46.207 --> 01:34:49.648
weil du kannst auch diese Übergabe

01:34:49.648 --> 01:34:51.267
je nach virtuelle Maschine,

01:34:51.547 --> 01:34:53.668
also je nach System, da gibt es ja KVM

01:34:53.668 --> 01:34:54.367
und was auch immer,

01:34:55.688 --> 01:34:57.387
kannst du das nicht wirklich monitoren?

01:34:57.987 --> 01:34:59.747
Was da der Host eigentlich noch macht?

01:34:59.887 --> 01:35:01.668
Also diese Übergabe, virtuelle Maschine,

01:35:01.807 --> 01:35:03.467
Host, dann

01:35:03.467 --> 01:35:05.307
verschwinden die Daten, die virtuelle Maschine sagt,

01:35:05.367 --> 01:35:07.347
ich bin fertig, aber es ist auch im Host noch gar nicht

01:35:07.347 --> 01:35:09.207
da abgelegt, wo es sein soll oder

01:35:09.207 --> 01:35:11.547
du hast nicht genug RAM gekriegt vom Host

01:35:11.547 --> 01:35:13.787
oder was auch immer. Also es gibt da ganz lustige

01:35:13.787 --> 01:35:15.527
Artefakte mit den virtuellen Maschinen.

01:35:15.527 --> 01:35:19.487
Boom, kaboom. Ja, nur das ist halt so das mit der Dauerhaftigkeit.

01:35:20.107 --> 01:35:23.287
Isolation heißt, wenn

01:35:23.287 --> 01:35:27.527
Ja, also wenn man jetzt zum Beispiel begonnene

01:35:27.527 --> 01:35:31.347
Daten, die geänderten Daten begonnener Transaktionen schon sehen kann

01:35:31.347 --> 01:35:35.347
in einer anderen oder halt erst, wenn die Transaktion durch ist zum Beispiel oder so

01:35:35.347 --> 01:35:38.747
solche Sachen halt. Also wer wann welche Sachen sehen kann.

01:35:38.747 --> 01:35:40.927
Fällt mir ein nettes Beispiel zu ein.

01:35:42.168 --> 01:35:44.148
Jochens Frau möchte Jochen einkaufen schicken.

01:35:45.527 --> 01:35:47.747
und Jochens Frau hat da so ein paar Sachen

01:35:47.747 --> 01:35:49.547
irgendwie an die Wand geschrieben, die

01:35:49.547 --> 01:35:50.847
eingekauft werden sollen.

01:35:51.567 --> 01:35:53.707
Hat aber noch fünf weitere Sachen im Kopf,

01:35:53.887 --> 01:35:54.927
die sie da draufschreiben will.

01:35:55.567 --> 01:35:57.688
Jochen geht schon einkaufen. Nein, Jochen hat

01:35:57.688 --> 01:35:59.207
jetzt schon mal ein Foto gemacht von der

01:35:59.207 --> 01:36:01.067
Liste und ist einkaufen gegangen.

01:36:01.347 --> 01:36:03.407
Und die Frau schreibt dann erst

01:36:03.407 --> 01:36:05.507
und erst danach schreibt

01:36:05.507 --> 01:36:07.607
die Frau die Sachen auf die Liste.

01:36:07.807 --> 01:36:08.747
Das heißt, Jochen hat sie schon

01:36:08.747 --> 01:36:09.467
unterwegs.

01:36:11.107 --> 01:36:12.887
Also es ist im Grunde

01:36:12.887 --> 01:36:15.188
also jeder

01:36:15.188 --> 01:36:17.127
der was ändert, ändert das

01:36:17.127 --> 01:36:18.127
erstmal für sich

01:36:18.127 --> 01:36:20.827
ohne dass es ein anderer sieht.

01:36:21.547 --> 01:36:23.127
Und der andere sieht das erst,

01:36:23.307 --> 01:36:25.387
wenn auch wirklich das Commit gekommen ist.

01:36:26.648 --> 01:36:27.168
Dann

01:36:27.168 --> 01:36:29.107
sieht der andere es erst. Das ist das Read

01:36:29.107 --> 01:36:30.907
Committed. Also ich kann erst das

01:36:30.907 --> 01:36:33.127
vom anderen lesen, wenn er das auch wirklich

01:36:33.127 --> 01:36:35.148
Committed hat. Es gibt in der

01:36:35.148 --> 01:36:35.787
Theorie

01:36:35.787 --> 01:36:39.027
noch Dirty Read und

01:36:39.027 --> 01:36:41.247
Phantom Read und so weiter. Das wären Sachen,

01:36:41.767 --> 01:36:43.127
dass der andere das schon lesen

01:36:43.127 --> 01:36:44.927
kann, bevor ich das Committed habe.

01:36:45.188 --> 01:36:48.927
Das hat Postgres gar nicht implementiert.

01:36:49.627 --> 01:36:50.847
Das ist sehr einfach.

01:36:51.207 --> 01:36:52.527
Das haben wir gar nicht implementiert.

01:36:52.627 --> 01:36:54.927
Ich hatte letztens eine Migration, die hatten ganz viel

01:36:54.927 --> 01:36:56.927
dieses Dirty Read benutzt

01:36:56.927 --> 01:36:58.947
und dann habe ich dann die Entwickler gefragt,

01:36:59.047 --> 01:37:00.907
warum braucht ihr das? Dann mussten die erstmal ganz

01:37:00.907 --> 01:37:02.887
tief forschen, weil das hat mal

01:37:02.887 --> 01:37:04.707
ein Kollege, der längst in Rente ist, gesagt,

01:37:04.827 --> 01:37:06.648
dann ist das irgendwie schneller oder so

01:37:06.648 --> 01:37:08.987
und dann mussten die noch länger forschen und dann haben sie festgestellt,

01:37:09.067 --> 01:37:10.907
eigentlich brauchen wir es gar nicht, das können wir auch komplett anders

01:37:10.907 --> 01:37:11.927
machen. Nur,

01:37:12.247 --> 01:37:14.627
weil Postgres das ja einfach nicht kann.

01:37:14.627 --> 01:37:16.927
Also wir fangen erst mit ReadCommitted an,

01:37:17.027 --> 01:37:17.967
das alles darunter geht nicht.

01:37:18.707 --> 01:37:21.027
Bei MariaDB geht es glaube ich so ein bisschen,

01:37:21.188 --> 01:37:22.727
habe ich aber auch noch nie wirklich

01:37:22.727 --> 01:37:23.267
eingestellt.

01:37:24.347 --> 01:37:26.847
Und das repeatable Read ist,

01:37:27.067 --> 01:37:28.767
wenn jetzt einer anfängt

01:37:28.767 --> 01:37:30.648
ein Select zu machen und er braucht

01:37:30.648 --> 01:37:32.807
jetzt den Wert aus Spalte 5 und der Wert

01:37:32.807 --> 01:37:33.547
sagen wir mal 7

01:37:33.547 --> 01:37:36.467
und der Select läuft länger

01:37:36.467 --> 01:37:38.507
und er braucht diesen Wert mehrfach in diesem

01:37:38.507 --> 01:37:40.727
SelectQuery. Also er greift mehrfach

01:37:40.727 --> 01:37:42.367
auf diese Spalte 5 drauf zu,

01:37:42.367 --> 01:37:44.188
um den Wert 7 nochmal,

01:37:44.188 --> 01:37:45.507
weil er da irgendwie Berechnungen macht.

01:37:45.747 --> 01:37:48.267
Und währenddessen ändert ein anderer den Wert auf 9.

01:37:49.668 --> 01:37:50.527
Ist natürlich doof,

01:37:50.607 --> 01:37:52.207
weil dann hat das Query, das Select-Query

01:37:52.207 --> 01:37:53.887
mal 7 mal 9, das will man nicht

01:37:53.887 --> 01:37:56.027
und dann kriegt halt, repeatable read

01:37:56.027 --> 01:37:57.707
heißt, wenn er das einmal gekriegt hat,

01:37:57.747 --> 01:37:59.447
kriegt er dieses Ergebnis auch bis zum Ende.

01:37:59.587 --> 01:38:01.467
Das heißt, du bekommst dann immer die 7,

01:38:01.867 --> 01:38:04.027
die 9 wird dir erst, wenn du das Select dann nochmal

01:38:04.027 --> 01:38:05.747
ausführen würdest, wird es komplett mit 9

01:38:05.747 --> 01:38:08.148
machen. Das ist repeatable read.

01:38:08.247 --> 01:38:09.207
Das kann PostgresQL,

01:38:09.727 --> 01:38:11.807
auch wenn da irgendwie, ich glaube,

01:38:11.807 --> 01:38:13.927
wir nennen es nur read-committed, weil es kann ja

01:38:13.927 --> 01:38:15.967
mal passieren, dass auf dem Mars ein Vulkan

01:38:15.967 --> 01:38:17.727
ausbricht und in Island gerade

01:38:17.727 --> 01:38:19.427
schneit und der Jupiter

01:38:19.427 --> 01:38:21.907
mit dem Saturn auf einer Linie steht, da gibt es

01:38:21.907 --> 01:38:23.607
irgendeine Ausnahme. Keine Ahnung.

01:38:24.527 --> 01:38:25.747
Aber Maria

01:38:25.747 --> 01:38:27.807
macht es auch. Also das ist eigentlich das, was

01:38:27.807 --> 01:38:29.167
standardmäßig heute passiert.

01:38:29.728 --> 01:38:31.167
Und dann gibt es noch den Serializable.

01:38:33.387 --> 01:38:33.867
Da

01:38:33.867 --> 01:38:35.747
kriegst du immer dasselbe Ergebnis, solange wie

01:38:35.747 --> 01:38:36.728
die Session offen ist.

01:38:38.688 --> 01:38:40.087
Und das ist natürlich

01:38:40.087 --> 01:38:41.787
sehr, sehr schwierig. Also wenn du da

01:38:41.787 --> 01:38:43.067
drei Tage eine Session offen hast,

01:38:43.927 --> 01:38:49.407
und das ist dann immer noch das Ergebnis von vor drei Tagen, das ist 30 Mal geändert worden.

01:38:50.127 --> 01:38:54.747
Das ist sehr, sehr schwierig zu implementieren und deswegen, wenn man mal so in die Buglisten guckt,

01:38:55.447 --> 01:39:01.827
für die Datenbanksysteme, egal ob ich einen Oracle nehme oder eins der IBMs oder MariaDB oder PostgreSQL,

01:39:02.487 --> 01:39:05.567
es gibt da Bugs im Bereich SQL-Bug.

01:39:05.567 --> 01:39:29.347
Also wenn man da so SQL-Bugs ist, ist es ganz häufig, dass es nur den Serializable betrifft, weil das auch unwahrscheinlich schwierig ist zu implementieren. Ich habe immer noch nicht rausgefallen in all diesen 20 Jahren, wann überhaupt der Serializable mal sinnvoll ist und wann er eingesetzt wird. Meine Information ist im universitären Bereich, aber auch da ist er mir persönlich noch nicht begegnet.

01:39:29.347 --> 01:39:29.787
also

01:39:29.787 --> 01:39:32.287
ja

01:39:32.287 --> 01:39:35.547
macht man nicht so ohne weiteres

01:39:35.547 --> 01:39:37.347
aber was halt heutzutage

01:39:37.347 --> 01:39:39.167
wo man immer ein bisschen dran denken muss ist an dieses

01:39:39.167 --> 01:39:40.047
dauerhaft

01:39:40.047 --> 01:39:43.287
als Admin muss man da so ein bisschen dran denken

01:39:43.287 --> 01:39:45.107
dass man Datenbanken auch dauerhaft hat

01:39:45.107 --> 01:39:47.427
Habt ihr jetzt mit der Session vielleicht was mit Verbindung

01:39:47.427 --> 01:39:47.867
zu tun?

01:39:48.967 --> 01:39:50.967
Verbindung in der Session ist ein und dasselbe

01:39:50.967 --> 01:39:53.327
Okay, da können wir jetzt vielleicht direkt

01:39:53.327 --> 01:39:55.148
drauf einsteigen, weil das noch ein Punkt auf der Liste war

01:39:55.148 --> 01:39:57.427
Also, wenn ich natürlich

01:39:57.427 --> 01:39:59.167
das ist eine kleine Serveranwendung

01:39:59.167 --> 01:40:01.587
Du hast halt den Datenbank-Server

01:40:01.587 --> 01:40:03.507
oder auch Dienst

01:40:03.507 --> 01:40:05.207
oder auch Demon genannt

01:40:05.207 --> 01:40:06.887
und du hast deinen Client.

01:40:07.767 --> 01:40:08.507
Der Client

01:40:08.507 --> 01:40:10.907
kann alles mögliche sein.

01:40:11.527 --> 01:40:12.707
Das kann die Software sein.

01:40:13.087 --> 01:40:15.287
Das ist in der Regel ein Stück Software, was auf die Datenbank

01:40:15.287 --> 01:40:17.228
zugreift, so kann ich das am einfachsten sagen.

01:40:18.027 --> 01:40:19.228
Am einfachsten erklärt sich das immer

01:40:19.228 --> 01:40:21.728
bei dem Web-Service.

01:40:22.487 --> 01:40:23.447
Das ist auch Client-Server.

01:40:23.527 --> 01:40:25.007
Du hast einen Web-Server irgendwo stehen

01:40:25.007 --> 01:40:27.228
im Rechenzentrum und das ist die Browser, die darauf zugreifen

01:40:27.228 --> 01:40:28.207
und das sind die Clients.

01:40:29.167 --> 01:40:35.067
Das hast du bei Datenbanken genauso, nur dass da die Kleinsthalte in der Regel Software sind

01:40:35.067 --> 01:40:37.347
Und

01:40:37.347 --> 01:40:43.627
ja, diese Software macht dann eine Verbindung zur Datenbank auf

01:40:43.627 --> 01:40:45.987
und die macht für

01:40:45.987 --> 01:40:50.987
und schickt dann das Query, was sie anfragen will, die Datenbankanfrage

01:40:50.987 --> 01:40:54.987
das kann jetzt das sein, was sie schreiben will oder was sie lesen will, schickt sie zu der Datenbank

01:40:54.987 --> 01:40:58.648
die Datenbank führt das Ganze aus und schickt das dann über diese Verbindung zurück

01:40:58.648 --> 01:41:01.867
Man kann pro Verbindung

01:41:01.867 --> 01:41:03.507
zeitgleich pro Verbindung

01:41:03.507 --> 01:41:05.627
und zeitgleich immer nur ein Query abschießen.

01:41:07.148 --> 01:41:07.688
Das ist auch

01:41:07.688 --> 01:41:09.107
bei allen Handlungssystemen so.

01:41:09.287 --> 01:41:11.787
Es geht nicht, dass du in derselben Verbindung

01:41:11.787 --> 01:41:13.387
zeitgleich zwei Queries abschießt.

01:41:13.387 --> 01:41:14.787
Das geht nicht ab vorerst.

01:41:15.347 --> 01:41:17.307
Du brauchst halt, wenn du für jedes

01:41:17.307 --> 01:41:18.987
zeitgleiche Query, was du

01:41:18.987 --> 01:41:21.167
abscheuig schicken willst, brauchst du eine extra

01:41:21.167 --> 01:41:21.728
Verbindung.

01:41:23.407 --> 01:41:25.507
Also wenn es wirklich richtig zeitgleich

01:41:25.507 --> 01:41:26.987
ist. Nacheinander kannst du natürlich,

01:41:26.987 --> 01:41:56.967
und die Programmiersprache Python.

01:41:56.987 --> 01:41:59.247
Seiten her dann. Von der Datenbank Seite, das macht die Datenbank.

01:41:59.367 --> 01:42:01.067
Aber du musst halt

01:42:01.067 --> 01:42:02.847
immer bedenken, du hast eine Verbindung.

01:42:02.987 --> 01:42:04.987
Und bei Postgres, bei Postgres

01:42:04.987 --> 01:42:06.927
ist eine Verbindung ein echter Prozess

01:42:06.927 --> 01:42:08.867
und deswegen sind die Verbindungen so teuer.

01:42:09.547 --> 01:42:10.847
Bei MariaDB ist es ein Sweat.

01:42:11.688 --> 01:42:12.827
Da hast du irgendwann

01:42:12.827 --> 01:42:13.667
Probleme bei,

01:42:15.007 --> 01:42:16.688
ja, wenn deine TCP-Ports

01:42:16.688 --> 01:42:17.247
ausgehen.

01:42:18.627 --> 01:42:21.007
Weil wenn du da, das hatte ich schon ein paar Mal,

01:42:21.107 --> 01:42:22.707
dass ich Web-Server hatte, dass die dann mit

01:42:22.707 --> 01:42:24.907
5, 6, 7 oder mit 30 Web-Servern auf eine

01:42:24.907 --> 01:42:26.648
Daten machen und hast irgendwann keine

01:42:26.648 --> 01:42:27.707
TCP-Boards mehr.

01:42:28.267 --> 01:42:30.207
Dann fängst du mal an

01:42:30.207 --> 01:42:32.507
und da gibt es dann ein Pooling von

01:42:32.507 --> 01:42:34.627
InnoDB, dass du dann noch mit 100.000

01:42:34.627 --> 01:42:36.927
Verbindungen zeitgleich und so weiter auch noch spielen kannst.

01:42:37.747 --> 01:42:38.527
Bei Postgres

01:42:38.527 --> 01:42:40.467
und bei denen, die prozessbasiert sind,

01:42:40.747 --> 01:42:42.667
also fast alle anderen großen,

01:42:43.947 --> 01:42:44.747
bist du

01:42:44.747 --> 01:42:46.728
da viel früher dran, dass du da Probleme

01:42:46.728 --> 01:42:48.467
kriegst, weil jede Verbindung ist ein echter

01:42:48.467 --> 01:42:49.087
Prozess.

01:42:51.107 --> 01:42:52.747
Und jeder Prozess

01:42:52.747 --> 01:42:54.507
braucht

01:42:54.507 --> 01:42:58.287
vom Betriebssystem her erstmal einen Core, einen Kern, einen Core.

01:42:59.047 --> 01:43:03.467
Ich kann pro Core zeitgleich nur einen Prozess abbilden.

01:43:05.127 --> 01:43:09.247
Das heißt, wenn ich acht Verbindungen aufhabe und ich habe acht Cores,

01:43:09.387 --> 01:43:12.707
dann läuft auf jedem Core eine Datenbankverbindung zeitgleich.

01:43:13.707 --> 01:43:16.867
Wenn ich da mehr Verbindungen zeitgleich aufhabe,

01:43:16.967 --> 01:43:18.887
sagen wir mal, ich habe jetzt vier pro Core auf,

01:43:19.247 --> 01:43:23.228
dann gibt es den Betriebssystem-Scheduler, der das schedult.

01:43:24.507 --> 01:43:30.507
und ja, dann gab es mal vom Postgres diese nette Empfehlung von meinem lieben Kollegen aus den USA,

01:43:31.327 --> 01:43:35.587
ja, also vier Verbindungen pro Core zu einer Zeit, wo Cores auch noch nicht so gut verbreitet waren,

01:43:36.027 --> 01:43:41.307
also generell, auch bei MySQL ist das übrigens nicht anders, Datenbanken sind immer sehr, sehr Core-lastig,

01:43:41.307 --> 01:43:47.787
je mehr Cores, umso besser, gerade bei Web-Anwendungen und so weiter, du kannst da nie genug voran haben

01:43:47.787 --> 01:43:53.467
und du musst dir halt überlegen, wie viele Verbindungen habe ich zeitgleich und weil das echte Prozesse sind,

01:43:53.467 --> 01:43:55.327
ist da auch irgendwo mal eine Grenze.

01:43:56.207 --> 01:43:57.107
Man sagt so

01:43:57.107 --> 01:43:59.327
vom Bauch her irgendwie so 200, 400.

01:43:59.887 --> 01:44:01.427
Das ist, je nachdem, wenn du fragst,

01:44:01.487 --> 01:44:02.427
ist das ein bisschen anders.

01:44:03.207 --> 01:44:04.907
Aber es gibt ein Connection Pooling.

01:44:06.027 --> 01:44:07.327
Das heißt, du packst

01:44:07.327 --> 01:44:09.447
zwischen deiner Datenbank und deiner Anwendung

01:44:09.447 --> 01:44:10.247
einen Pooler.

01:44:11.607 --> 01:44:13.648
Ist sehr lustig. Ich habe mal

01:44:13.648 --> 01:44:14.387
in meiner

01:44:14.387 --> 01:44:16.127
Studentenzeit

01:44:16.127 --> 01:44:18.387
im letzten Jahrhundert,

01:44:19.167 --> 01:44:21.587
Anfang dieses Jahrhunderts, hatte ich einen Job

01:44:21.587 --> 01:44:24.327
bei einer großen deutschen namhaften Firma.

01:44:25.827 --> 01:44:29.247
Und damals hatte der Datenbankhersteller die Idee,

01:44:29.387 --> 01:44:33.287
wir verkaufen mal Datenbanklizenzen pro Verbindung.

01:44:34.228 --> 01:44:34.947
Richtig teuer.

01:44:35.807 --> 01:44:39.228
Und die Firma hatte dann fünf Verbindungen zu dieser Datenbank gekauft.

01:44:39.927 --> 01:44:42.547
Und ich durfte dann einen Pool anschreiben, der dann dafür sorgte,

01:44:42.547 --> 01:44:44.867
dass immer nur fünf Verbindungen zu dieser Datenbank kamen

01:44:44.867 --> 01:44:48.067
und alle anderen wurden dann geschedult, ähnlich wie das Betriebssystem.

01:44:48.267 --> 01:44:51.407
Da gibt es dann häufig, wird der Ron-Robin-Scheduler genommen,

01:44:51.587 --> 01:44:53.747
der das dann poolt. Und sowas gibt es halt auch

01:44:53.747 --> 01:44:54.887
für die Datenbanksysteme.

01:44:55.467 --> 01:44:57.767
Der von Postgres heißt pgBouncer,

01:44:58.827 --> 01:44:59.707
den wir immer

01:44:59.707 --> 01:45:01.648
empfehlen, wenn es keinen anderen gibt.

01:45:02.627 --> 01:45:03.587
Den setzt du

01:45:03.587 --> 01:45:05.728
meistens in die Nähe der Datenbank. Auch das ist

01:45:05.728 --> 01:45:07.527
eine Sache, die kannst du bis zum

01:45:07.527 --> 01:45:09.527
Umfallen diskutieren. Setze ich den Pooler

01:45:09.527 --> 01:45:11.827
in die Nähe der Datenbank oder setze ich den in die Nähe

01:45:11.827 --> 01:45:13.728
der Anwendung? Wenn ich

01:45:13.728 --> 01:45:15.807
eine Java-Anwendung habe, irgendwas

01:45:15.807 --> 01:45:17.707
mit Tomcat und weiß der Kuckuck was,

01:45:18.307 --> 01:45:19.947
die bringen meistens einen Pooler schon mit.

01:45:20.067 --> 01:45:20.907
Da brauche ich keinen zweiten.

01:45:21.587 --> 01:45:28.407
Das ist auch sowas, das sehe ich immer. Ich sehe manchmal Datenbank, die haben dann drei Pooler, wo ich mich frage, warum einer reicht.

01:45:29.867 --> 01:45:31.467
Wie ist das bei Python, Jochen?

01:45:32.327 --> 01:45:49.047
Ne, da ist es also zum Beispiel Django macht das jetzt, ob der 4.1 kommt jetzt irgendwann im Sommer, da gibt es einen internen Pool sozusagen, aber normalerweise kannst du die Anzahl der Verbindungen, die jetzt dein Applikationsserver zur Datenbank macht, kannst du normalerweise einstellen.

01:45:49.047 --> 01:45:51.007
aber das ist jetzt halt schwierig geworden

01:45:51.007 --> 01:45:53.188
mit Async, weil

01:45:53.188 --> 01:45:55.027
wenn du jetzt sagen wir mal so 5 Queries

01:45:55.027 --> 01:45:56.867
machst und die können alle gleichzeitig

01:45:56.867 --> 01:45:58.927
laufen und ab

01:45:58.927 --> 01:46:00.148
Django 4.1 hast du halt auch schon

01:46:00.148 --> 01:46:02.967
zumindest ein Async-Interface für dein ORM

01:46:02.967 --> 01:46:05.007
also der ORM ist noch nicht Async

01:46:05.007 --> 01:46:06.887
fähig, aber es gibt zumindest das

01:46:06.887 --> 01:46:08.887
Interface, dann ist halt natürlich

01:46:08.887 --> 01:46:10.127
dann könnte sozusagen

01:46:10.127 --> 01:46:13.087
der ORM 5 Verbindungen aufmachen

01:46:13.087 --> 01:46:14.927
die alle gleichzeitig rausschicken, weil geht halt nicht

01:46:14.927 --> 01:46:16.447
auf einer Verbindung, sondern 5 Verbindungen aufmachen

01:46:16.447 --> 01:46:18.307
So, wenn du jetzt aber eingestellt hast

01:46:18.307 --> 01:46:20.927
in deiner Django-Config,

01:46:21.047 --> 01:46:22.367
soll aber nur zwei

01:46:22.367 --> 01:46:24.387
Verbindungen zur Datenbank aufmachen, dann ist das natürlich

01:46:24.387 --> 01:46:26.167
ein Problem. Also,

01:46:26.327 --> 01:46:28.427
das muss man dann halt irgendwie handeln und dafür gibt es halt

01:46:28.427 --> 01:46:30.387
eine Pool-Implementierung direkt

01:46:30.387 --> 01:46:32.087
in Django, jetzt auf der nächsten Version,

01:46:32.228 --> 01:46:33.267
aber genau.

01:46:35.387 --> 01:46:36.167
So, wie gesagt,

01:46:36.247 --> 01:46:37.967
das kommt ein bisschen auf deine Hardware drunter an.

01:46:38.367 --> 01:46:40.367
Ich sehe, du findest da so 200, 400

01:46:40.367 --> 01:46:42.027
Verbindungen. Musst du auch mal gucken,

01:46:42.247 --> 01:46:43.027
zeitgleich.

01:46:44.047 --> 01:46:45.267
Das ist auch so was,

01:46:45.267 --> 01:47:15.247
und Jochen unterhalten sich über die Programmiersprache Python

01:47:15.267 --> 01:47:16.007
da nichts machen musste.

01:47:16.507 --> 01:47:19.627
Das ist halt quasi jedes Statement, das man abgefordert hat

01:47:19.627 --> 01:47:21.427
von 4.4. aus, hat halt einfach eine Ein- und eine Verbindung

01:47:21.427 --> 01:47:23.228
aufgemacht und nach dem Statement war sie wieder zu.

01:47:23.507 --> 01:47:25.567
Na, nichts machen. Also ich hatte

01:47:25.567 --> 01:47:27.747
jetzt tatsächlich mal während der Pandemie

01:47:27.747 --> 01:47:28.447
einen Kunden.

01:47:29.567 --> 01:47:31.148
Der durfte ich dann mit Servern spielen mit

01:47:31.148 --> 01:47:33.887
128 Cores. Das war schon sehr lustig.

01:47:34.407 --> 01:47:35.607
Aber die Verbindungen waren

01:47:35.607 --> 01:47:37.367
dann auch, da hatte ich auch zeitgleich mehr,

01:47:37.547 --> 01:47:39.648
aber da hatte ich dann so irgendwie in die 200.000

01:47:39.648 --> 01:47:41.707
Verbindungen und noch

01:47:41.707 --> 01:47:43.827
mehr und da fängst du dann auch bei MariaDB

01:47:43.827 --> 01:47:45.827
anzupoolen und dann wird es lustig.

01:47:46.587 --> 01:47:47.648
Dann macht es Spaß.

01:47:48.927 --> 01:47:49.728
Weil dir dann auch

01:47:49.728 --> 01:47:51.407
irgendwann die UTC, wie gesagt, du, da

01:47:51.407 --> 01:47:53.607
rechnest du dann auf einmal,

01:47:53.707 --> 01:47:55.027
wie viele Ports habe ich denn überhaupt?

01:47:55.467 --> 01:47:57.407
Und ja, und

01:47:57.407 --> 01:47:59.547
liebe Web-Server, könnt ihr da vielleicht auch noch

01:47:59.547 --> 01:48:00.927
mal was vorschalten oder so?

01:48:01.107 --> 01:48:03.728
Das macht dann

01:48:03.728 --> 01:48:04.087
Spaß.

01:48:04.927 --> 01:48:06.427
Man kommt ja wahrscheinlich auch irgendwann ein.

01:48:06.427 --> 01:48:07.507
Aber so für die

01:48:07.507 --> 01:48:09.387
Feld und Wiesen,

01:48:09.807 --> 01:48:12.467
Lab-Sec war das halt, da ging das eigentlich immer.

01:48:12.467 --> 01:48:27.307
Das ist auch das, was viele halt falsch machen, wenn sie von der MariaDB MySQL Schiene zu Postgres kommen, dass sie dann die Verbindung so wahnsinnig hochsetzen und dann macht das Betriebssystem auf einmal die Grätsche. Das ist auch so eine Sache.

01:48:27.307 --> 01:48:28.347
genau.

01:48:29.067 --> 01:48:30.507
Also das war irgendwie,

01:48:30.947 --> 01:48:32.747
das war jedenfalls früher, war das immer so ein

01:48:32.747 --> 01:48:35.148
fand ich so Haupt-Selling-Point

01:48:35.148 --> 01:48:37.207
für MySQL, dass man sagen kann, okay, das kostet

01:48:37.207 --> 01:48:39.067
vielleicht eine Latenz 30% oder so, aber dafür

01:48:39.067 --> 01:48:40.747
muss man sich keine Gedanken um diese ganzen Sachen machen.

01:48:41.127 --> 01:48:42.807
Und die Infrastruktur ist einfacher und so.

01:48:43.207 --> 01:48:44.307
Und ja.

01:48:45.467 --> 01:48:47.007
Lizenz hatten wir noch gar nicht drüber

01:48:47.007 --> 01:48:49.067
geredet. Also wir hatten angefangen, also Postgres ist

01:48:49.067 --> 01:48:51.148
halt BSD und BSD

01:48:51.148 --> 01:48:53.148
ist sehr, sehr einfach

01:48:53.148 --> 01:48:55.267
zu handeln. Deswegen hat man das auch viel in Maschinen,

01:48:55.367 --> 01:48:57.067
auch beim Betriebssystem ist das viel

01:48:57.067 --> 01:48:57.467
BSD.

01:49:00.047 --> 01:49:00.907
MariaDB ist

01:49:00.907 --> 01:49:02.987
GPL und die

01:49:02.987 --> 01:49:03.987
haben dann noch die,

01:49:05.327 --> 01:49:07.007
erstmal muss man bei der GPL ja mal gucken,

01:49:07.167 --> 01:49:09.007
GPL und welche

01:49:09.007 --> 01:49:09.507
Versionen,

01:49:10.927 --> 01:49:12.927
Verträge sind ein bisschen länger und

01:49:12.927 --> 01:49:14.467
man muss dann

01:49:14.467 --> 01:49:16.947
gucken, MariaDB hat

01:49:16.947 --> 01:49:18.987
so dieses, ich denke mal, das haben sie immer

01:49:18.987 --> 01:49:20.967
noch, du kannst

01:49:20.967 --> 01:49:22.887
es nutzen für deine eigene Zwecke,

01:49:23.007 --> 01:49:24.747
aber wenn du Software hast, die du

01:49:24.747 --> 01:49:26.887
verkaufst und da Maria

01:49:26.887 --> 01:49:31.447
Ja, dann musst du nämlich eine Lizenz bei MariaDK kaufen, was ja auch eine faire Geschichte ist.

01:49:31.867 --> 01:49:37.287
Wenn du das dann nutzt in deiner Software, die du verkaufst, dann musst du Lizenzen kaufen.

01:49:37.927 --> 01:49:43.728
Genau. Und dann gibt es bei Postgres noch, es gibt dann immer, das nennen wir immer das Contrib-Verzeichnis,

01:49:44.447 --> 01:49:45.447
es gibt dann auch so Tools.

01:49:46.487 --> 01:49:52.887
Bei einigen dieser Tools fragt man sich, warum zur Hölle ist das nicht im Hauptpaket mit drin?

01:49:52.887 --> 01:49:55.407
Das hat man ganz häufig

01:49:55.407 --> 01:49:56.967
Also es gibt da zwei Gründe

01:49:56.967 --> 01:49:58.648
Das eine ist, weil das Tool so groß ist

01:49:58.648 --> 01:50:00.927
Früher musste der Code ja noch auf eine Diskette passen

01:50:00.927 --> 01:50:01.507
Ganz lange

01:50:01.507 --> 01:50:04.887
Eine Diskette hatte 3,5

01:50:05.787 --> 01:50:06.427
5,25

01:50:06.427 --> 01:50:08.887
Nein, wie viel?

01:50:09.587 --> 01:50:10.648
1,44

01:50:10.648 --> 01:50:12.627
1,44 Megabyte, genau

01:50:12.627 --> 01:50:14.587
Und

01:50:14.587 --> 01:50:16.367
Ihr wisst noch, was eine Diskette ist

01:50:16.367 --> 01:50:16.827
Ja, ja

01:50:16.827 --> 01:50:19.607
5,25 soll angefangen

01:50:19.607 --> 01:50:22.667
Ich bin noch mit Datasette

01:50:22.667 --> 01:50:23.167
angefangen.

01:50:23.167 --> 01:50:23.507
Aber,

01:50:25.607 --> 01:50:27.148
ja, und dann

01:50:27.148 --> 01:50:29.188
gibt es dann so ganz große Projekte wie das

01:50:29.188 --> 01:50:31.107
PostGIS mit den ganzen Geodaten

01:50:31.107 --> 01:50:33.267
oder der JDBC

01:50:33.267 --> 01:50:35.067
für Java. Das sind so

01:50:35.067 --> 01:50:36.987
große Projekte, wo man gesagt hat, okay, die macht man

01:50:36.987 --> 01:50:38.367
einfach einzeln, weil die braucht nicht jeder.

01:50:38.907 --> 01:50:40.007
Die kann man nachladen.

01:50:41.127 --> 01:50:42.787
Erstmal das, das ist das eine.

01:50:43.347 --> 01:50:45.127
Das andere ist, es gibt auch kleine Projekte,

01:50:45.167 --> 01:50:46.887
wo man sich fragt, warum zur Hölle ist das nicht mit drin.

01:50:47.688 --> 01:50:49.007
In 99%

01:50:49.007 --> 01:50:50.887
oder in 98% der Fälle,

01:50:51.167 --> 01:50:52.407
kann auch 100% sein,

01:50:52.667 --> 01:50:54.827
in 99, sage ich mal,

01:50:55.247 --> 01:50:56.827
liegt das an der Lizenz, weil

01:50:56.827 --> 01:50:58.887
diese Tools irgendwas nutzen, was

01:50:58.887 --> 01:51:00.527
GPL mitbringt, was

01:51:00.527 --> 01:51:02.787
nicht mehr mit der BSD-Lizenz

01:51:02.787 --> 01:51:04.887
kompatibel ist und wo man dann

01:51:04.887 --> 01:51:06.907
ansonsten das, also die

01:51:06.907 --> 01:51:08.867
irgendwas nutzen, was dann aus der

01:51:08.867 --> 01:51:10.087
GPL-Welt kommt

01:51:10.087 --> 01:51:12.747
und das dann... Also um da nochmal

01:51:12.747 --> 01:51:14.887
zusammenzufassen, GPL tendiert

01:51:14.887 --> 01:51:16.547
dazu, dass die Lizenzen halt nicht

01:51:16.547 --> 01:51:18.807
kommerziell freien nutzbar sind für alle Zwecke, sondern nur

01:51:18.807 --> 01:51:20.667
privat und BSD

01:51:20.667 --> 01:51:22.487
hat halt für alle Zwecke auch für kommerzielle

01:51:22.487 --> 01:51:23.207
komplett frei verwendet.

01:51:23.228 --> 01:51:26.807
Du hast es so schön gesagt, deswegen findest du auch immer Postcards in deinem Auto.

01:51:27.547 --> 01:51:28.627
Was ist der Unterschied zwischen

01:51:28.627 --> 01:51:30.407
BSC und MIT-Lizenz? Gibt es da überhaupt einen?

01:51:30.487 --> 01:51:30.767
Nein.

01:51:31.767 --> 01:51:34.267
MIT nicht, BSC ist

01:51:34.267 --> 01:51:36.107
Barclay University.

01:51:36.367 --> 01:51:37.587
Und MIT-Lizenz ist?

01:51:37.667 --> 01:51:39.067
Das ist eine andere, das weiß ich nicht.

01:51:39.067 --> 01:51:41.507
East Coast versus West Coast,

01:51:41.587 --> 01:51:41.927
ich weiß nicht.

01:51:42.487 --> 01:51:44.627
Aber die sind tatsächlich relativ ähnlich.

01:51:45.447 --> 01:51:46.867
Sie sind beide sehr liberal.

01:51:47.228 --> 01:51:48.667
Genau wie Apache auch, ist auch sehr liberal.

01:51:48.707 --> 01:51:50.067
Ja, Apache ist auch, genau.

01:51:50.067 --> 01:51:51.127
und das ist so das.

01:51:51.188 --> 01:51:53.027
Da gibt es noch so Patentgeschichten, aber das ist auch normal.

01:51:53.087 --> 01:51:55.228
Offiziell heißt die von Postgres auch Postgres Lizenz,

01:51:55.487 --> 01:51:57.648
aber die BSD Lizenz. Das ist alles von der

01:51:57.648 --> 01:51:58.807
Universität von Berkeley,

01:51:59.087 --> 01:52:00.527
die BSD Lizenz.

01:52:01.587 --> 01:52:03.127
Und MIT,

01:52:04.047 --> 01:52:04.627
ja es ist halt,

01:52:05.267 --> 01:52:07.287
ja MIT, ich finde das immer so lustig,

01:52:07.367 --> 01:52:09.527
Harvard und MIT sitzen in der

01:52:09.527 --> 01:52:11.667
Ort, wenn du mal dir überlegst,

01:52:11.728 --> 01:52:13.547
wo liegt das MIT? Jeder weiß, was die

01:52:13.547 --> 01:52:15.267
Harvard University ist und die MIT

01:52:15.267 --> 01:52:17.188
University, hat man eigentlich schon mal gehört,

01:52:17.807 --> 01:52:19.247
die Stadt, die da sind,

01:52:19.247 --> 01:52:21.447
die liegen tatsächlich nebeneinander und die Stadt

01:52:21.447 --> 01:52:22.027
heißt Cambridge.

01:52:23.247 --> 01:52:25.107
Und da muss man immer aufpassen, wenn man so im

01:52:25.107 --> 01:52:26.688
universitären Unterwegs ist,

01:52:27.527 --> 01:52:29.247
hat man jetzt

01:52:29.247 --> 01:52:31.027
echte Cambridge-Universität,

01:52:31.167 --> 01:52:33.127
also die in England, die ja auch nicht ohne ist,

01:52:33.207 --> 01:52:34.728
die will man ja manchmal auch wirklich haben,

01:52:35.307 --> 01:52:36.987
oder hat man da wirklich wieder

01:52:36.987 --> 01:52:39.047
MIT und Harvard, weil die auch

01:52:39.047 --> 01:52:41.007
gerne unter Cambridge dann irgendwas

01:52:41.007 --> 01:52:43.327
veröffentlichen. Das liegt

01:52:43.327 --> 01:52:44.707
im Übrigen in der Nähe von Boston,

01:52:44.827 --> 01:52:45.787
falls es noch einer fragt.

01:52:45.787 --> 01:52:46.188
Genau.

01:52:46.188 --> 01:52:47.927
und

01:52:47.927 --> 01:52:50.847
naja, aber das ist, die kenne ich jetzt gar nicht,

01:52:51.148 --> 01:52:51.807
die Lizenz.

01:52:51.887 --> 01:52:53.207
Ich glaube, das ist für mich, also,

01:52:53.327 --> 01:52:55.867
du sagst ja irgendwie Patente.

01:52:56.188 --> 01:52:56.847
Ja, ja, das ist...

01:52:56.847 --> 01:52:59.767
Apache macht noch diese expliziten Geschichten mit den Patenten,

01:53:00.427 --> 01:53:01.087
aber, also,

01:53:01.207 --> 01:53:03.327
BSD weiß ich jetzt gar nicht genau,

01:53:03.887 --> 01:53:05.688
ist aber auch, vielleicht die liberalste ist

01:53:05.688 --> 01:53:07.387
wahrscheinlich MIT, da ist es eigentlich quasi nur

01:53:07.387 --> 01:53:09.228
Copy-Left, da steht nur drin, du musst halt sagen,

01:53:09.367 --> 01:53:11.167
du darfst es nicht entfernen, aber sonst...

01:53:11.167 --> 01:53:12.347
Nicht mal das, glaube ich.

01:53:13.167 --> 01:53:15.188
Die BSD ist, glaube ich, nur, lass meinen Namen

01:53:15.188 --> 01:53:15.527
in Zeit.

01:53:16.447 --> 01:53:19.107
Es muss ein Name drin bleiben, bei MIT ist es völlig egal.

01:53:19.867 --> 01:53:20.927
Ist bei Python übrigens auch so.

01:53:21.007 --> 01:53:23.047
Python hat auch die Python-Lizenz,

01:53:23.127 --> 01:53:24.087
aber das ist auch einfach nur BSD.

01:53:25.387 --> 01:53:27.087
Wir haben irgendwann vor etlichen

01:53:27.087 --> 01:53:29.067
Jahren mal, auf einmal war das alles

01:53:29.067 --> 01:53:30.947
nicht mehr BSD-Lizenz, sondern jedes Projekt hatte

01:53:30.947 --> 01:53:33.327
seine eigene Lizenz, was aber eigentlich die BSD-Lizenz

01:53:33.327 --> 01:53:35.107
war. Ich nehme an, da gab es irgendwelche

01:53:35.107 --> 01:53:36.707
Namensgedöns-Geschichten.

01:53:37.287 --> 01:53:37.747
Keine Ahnung.

01:53:38.188 --> 01:53:40.188
Ich sage auf jeden Fall, von wem es gewesen ist, wenn du das sagst.

01:53:41.547 --> 01:53:43.247
Ja, interessant.

01:53:43.247 --> 01:53:44.867
Ja, ist doch schon relevant.

01:53:45.188 --> 01:53:47.547
wenn man das als Unternehmensgrunde nutzen möchte?

01:53:47.747 --> 01:53:49.047
Also ich war mal in einem

01:53:49.047 --> 01:53:50.967
Unternehmen als Diplomant

01:53:50.967 --> 01:53:52.907
damals, die hatten wirklich

01:53:52.907 --> 01:53:54.987
überlegt aus dem Maschinenbau

01:53:54.987 --> 01:53:56.967
dann irgendwann

01:53:56.967 --> 01:53:59.427
das mal wurde das ja weiter automatisiert

01:53:59.427 --> 01:54:01.087
und so weiter und die haben dann damals

01:54:01.087 --> 01:54:03.007
echt diese Diskussion geführt, was

01:54:03.007 --> 01:54:05.047
nehmen wir für Platinen oder was machen

01:54:05.047 --> 01:54:06.207
wir für ein Betriebssystem auf

01:54:06.207 --> 01:54:09.127
unsere Platinen oder auf unsere Hardware drauf

01:54:09.127 --> 01:54:11.127
und da war eine Diskussion Linux versus

01:54:11.127 --> 01:54:13.087
BSD und

01:54:13.087 --> 01:54:14.827
die haben sich dann für BSD entschieden

01:54:14.827 --> 01:54:17.567
ein abgespecktes Linux-Gurus ja auch hin.

01:54:17.907 --> 01:54:19.567
Und es war damals ja auch noch nicht so groß.

01:54:20.667 --> 01:54:22.067
Eben wegen der Lizenz,

01:54:22.207 --> 01:54:23.607
weil die das auch ohne Probleme

01:54:23.607 --> 01:54:25.507
dann in jedes der Geräte,

01:54:25.587 --> 01:54:27.627
die du heute in jedem Handel kaufen kannst,

01:54:27.747 --> 01:54:29.087
auch einfach drunterlegen kannst.

01:54:29.487 --> 01:54:31.627
Und ich meine, viele Autos nutzen auch

01:54:31.627 --> 01:54:33.627
BSD-Lizenz. Also das ist ganz,

01:54:33.907 --> 01:54:35.688
ganz spannend, wo du überall

01:54:35.688 --> 01:54:37.767
BSD drauf hast. Das ist sehr,

01:54:37.947 --> 01:54:39.688
sehr interessant. Du kommst ja heute gar nicht

01:54:39.688 --> 01:54:41.567
mehr dran. Früher haben wir uns ja immer noch den Spaß gemacht,

01:54:41.607 --> 01:54:43.728
die Geräte auseinanderzubauen und zu gucken, was da drauf ist.

01:54:43.728 --> 01:54:48.067
und das stellen die Hersteller ja, heute kommst du da nicht mehr so ohne weiteres dran.

01:54:48.188 --> 01:54:49.487
Oder du hast eine REST-API denn irgendwo?

01:54:49.807 --> 01:54:53.947
Ja, du hast halt ganz viel da, BSD und wenn sie dann eine Datenbank brauchen,

01:54:54.027 --> 01:54:56.648
eine etwas größere, dann hast du auch ganz häufig Postgres.

01:55:00.447 --> 01:55:03.527
Das ist interessant und wir haben jetzt noch zwei Sachen auf der Liste,

01:55:04.007 --> 01:55:04.907
die da vielleicht ganz gut reinfallen.

01:55:04.987 --> 01:55:08.047
Also Maria versus Postgres wäre vielleicht das, da hatten wir schon mal kurz.

01:55:08.547 --> 01:55:09.827
Was andere war NuSQL?

01:55:09.827 --> 01:55:11.467
Achso, ja, also

01:55:11.467 --> 01:55:14.148
da gibt es jetzt nicht ganz viel zu sagen.

01:55:14.307 --> 01:55:16.447
Es gibt halt neben den Relationalen

01:55:16.447 --> 01:55:17.667
diese, also diese,

01:55:17.947 --> 01:55:20.287
erstmal ist ja NoSQL ist ja NotOnlySQL

01:55:20.287 --> 01:55:22.167
und da

01:55:22.167 --> 01:55:23.947
fanden die hierarchischen

01:55:23.947 --> 01:55:25.887
Datenbanksysteme, wer das mal

01:55:25.887 --> 01:55:28.728
gelernt hat, hierarchische Datenbanksysteme

01:55:28.728 --> 01:55:30.427
sowas wie LDAP oder auch

01:55:30.427 --> 01:55:32.667
das Detailsystem ist auch ein Datenbanksystem.

01:55:33.287 --> 01:55:34.487
Die waren dann plötzlich NoSQL.

01:55:34.747 --> 01:55:36.467
Das fanden die sich überhaupt nicht mehr mit

01:55:36.467 --> 01:55:39.027
zurecht, weil ja, NotOnlySQL.

01:55:39.827 --> 01:55:41.347
und nein, es gibt halt

01:55:41.347 --> 01:55:43.007
tatsächlich sind dann so

01:55:43.007 --> 01:55:45.307
2007 hat das so ein bisschen

01:55:45.307 --> 01:55:47.267
begonnen oder

01:55:47.267 --> 01:55:49.307
seit 2007 hat sich das angefangen

01:55:49.307 --> 01:55:51.327
zu etablieren.

01:55:51.707 --> 01:55:53.247
Meines Wissens sind das

01:55:53.247 --> 01:55:55.807
Dokumentenbasierte,

01:55:55.867 --> 01:55:57.447
von der Technik her Dokumentenbasierte

01:55:57.447 --> 01:55:59.307
Datenbanksysteme und Graf-Datenbanksysteme,

01:56:00.587 --> 01:56:01.467
die grafenbasiert

01:56:01.467 --> 01:56:03.587
sind. Das grafenbasierte

01:56:03.587 --> 01:56:05.387
habe ich vorhin schon mal so versucht, das sind

01:56:05.387 --> 01:56:06.967
dann so die Klassiker-Kunden,

01:56:07.148 --> 01:56:09.247
die das gekauft haben, haben auch das und das

01:56:09.247 --> 01:56:09.707
gekauft.

01:56:09.827 --> 01:56:13.047
Das ist so das klassische Beispiel dafür

01:56:13.047 --> 01:56:15.047
Das könnte man wahrscheinlich auch in einer normalen

01:56:15.047 --> 01:56:15.467
SQL abbilden

01:56:15.467 --> 01:56:18.407
Wenn du das abbildest in einer normalen SQL

01:56:18.407 --> 01:56:20.427
Weil die Joints zu groß werden

01:56:20.427 --> 01:56:22.567
Du spielst dann ja mit Matrizen am Ende

01:56:22.567 --> 01:56:24.887
und weißt ja guck guck was, du brauchst ja unendlich viele

01:56:24.887 --> 01:56:26.707
Tabellen und also da wird es echt

01:56:26.707 --> 01:56:28.887
Das ist das grafen

01:56:28.887 --> 01:56:30.787
Dingen und wenn du dann mal so

01:56:30.787 --> 01:56:32.207
heute in größere Firmen guckst

01:56:32.207 --> 01:56:34.947
Ich nenne jetzt keine Namen, das darf ich

01:56:34.947 --> 01:56:37.367
jetzt ja wahrscheinlich nicht, die haben immer Kombinationen

01:56:37.367 --> 01:56:38.787
Also ich sag mal so ein

01:56:38.787 --> 01:56:40.627
so einen

01:56:40.627 --> 01:56:42.307
Web-Anbieter,

01:56:43.228 --> 01:56:45.467
der hat ganz, ganz häufig Kombinationen.

01:56:45.547 --> 01:56:47.127
Also für solche Sachen hat der

01:56:47.127 --> 01:56:48.967
dann eine Graph-Datenbank und ansonsten hat er eine

01:56:48.967 --> 01:56:50.707
Relationale für das ganze Kunden- und

01:56:50.707 --> 01:56:52.447
Verkaufsabwicklungs-Kit, das hat er das

01:56:52.447 --> 01:56:55.087
Relationale. Und was dann immer noch

01:56:55.087 --> 01:56:57.188
Material vielleicht auch. Und das kann man

01:56:57.188 --> 01:56:59.287
dann auch verknüpfen. Die nutzen ganz viel.

01:56:59.387 --> 01:57:01.127
Meine Erfahrung ist, was sie da ganz viel

01:57:01.127 --> 01:57:03.247
nutzen, ist von Apache

01:57:03.247 --> 01:57:04.947
das ganze Hadoop

01:57:04.947 --> 01:57:07.047
mit HBase, HGraph und

01:57:07.047 --> 01:57:08.527
wie sie alle heißen. Also

01:57:08.527 --> 01:57:16.427
und die meisten Firmen nutzen sowieso Maria und Postgres, also du hast nicht mehr nur ein Datenbanksystem, du hast halt ganz viele.

01:57:16.927 --> 01:57:21.827
Und dokumentenbasiert ist von daher interessant, wir bei Postgres empfehlen ja immer Elasticsearch.

01:57:24.107 --> 01:57:26.847
Das ist nicht, dass du Dokumente ablegst.

01:57:27.728 --> 01:57:32.067
Also Dokumente könnten jetzt, ich nehme immer ganz gerne auch Bilder als Beispiel jetzt,

01:57:32.267 --> 01:57:36.787
Bilder oder auch irgendwelche langen Textdokumente, PDFs oder so.

01:57:36.787 --> 01:57:43.287
Aber das Gute an dokumentenbasierten Datenbanken ist, dass du in den Dokumenten suchen kannst.

01:57:43.427 --> 01:57:46.847
Das heißt, du kannst mir sagen, gib mir alle Bilder, die den Farbcode rot haben.

01:57:47.648 --> 01:57:49.067
Oder wo rote Pixel drin sind.

01:57:49.767 --> 01:57:52.027
Das kannst du natürlich nicht in einer relationalen Datenbank.

01:57:52.027 --> 01:57:53.987
Da legst du das Dokument so als Blob ab.

01:57:54.827 --> 01:57:57.327
Und du kannst nur das Dokument, du kannst aber nicht reingucken in das Dokument.

01:57:57.327 --> 01:58:01.607
Ich müsste halt vorher beim Speichern reingucken, müsste quasi den Link zu dem Dokument in die Datenbank schreiben.

01:58:01.827 --> 01:58:05.167
Ja, aber dann weißt du immer noch nicht alle Farbpixels raus oder ähnliches.

01:58:05.167 --> 01:58:06.807
Die müsste ich ja einfach speichern.

01:58:06.947 --> 01:58:09.467
Aber bei der Dokumentenbasierten oder wenn du PDFs

01:58:09.467 --> 01:58:11.007
dann kannst du in den PDFs auch suchen.

01:58:11.587 --> 01:58:12.787
Wenn du da Text hast.

01:58:13.107 --> 01:58:15.427
Wobei das bei PDFs heutzutage wieder schwierig ist,

01:58:15.487 --> 01:58:17.287
weil ganz viele PDFs aus Kopierschutz

01:58:17.287 --> 01:58:18.087
als Bilder sind.

01:58:18.567 --> 01:58:20.907
Das ist dann auch ätzend, wenn du die kopieren willst.

01:58:21.087 --> 01:58:23.207
Aber das ist sowas,

01:58:23.327 --> 01:58:25.607
wo du Dokumentenbasiert natürlich super für gebrauchen kannst,

01:58:25.648 --> 01:58:27.247
wenn du in den Dokumenten selber

01:58:27.247 --> 01:58:28.027
suchen willst.

01:58:29.007 --> 01:58:31.707
Gibt mir jetzt Gesichtserkennung, ganz klassisch.

01:58:32.827 --> 01:58:33.867
Das ist sowas,

01:58:33.867 --> 01:58:35.787
wo du dann Dokumenten basiert hast mit

01:58:35.787 --> 01:58:38.027
Farbcode und mit

01:58:38.027 --> 01:58:40.507
was auch immer, Gesichtserkennung

01:58:40.507 --> 01:58:41.547
wäre jetzt sowas.

01:58:42.728 --> 01:58:43.547
Wobei ich da nicht weiß.

01:58:44.027 --> 01:58:45.927
Ich glaube, du speicherst bestimmte Punkte wahrscheinlich

01:58:45.927 --> 01:58:46.947
und dann die Winkel dazu.

01:58:46.947 --> 01:58:49.947
Ja, aber das ist jetzt was, was mir einfällt, wo du so bei Bildern

01:58:49.947 --> 01:58:51.228
ganz viel machst.

01:58:51.447 --> 01:58:53.747
Es gibt natürlich Dokumenten,

01:58:53.827 --> 01:58:56.367
MongoDB ist Dokumentenbasiert,

01:58:56.447 --> 01:58:58.127
MongoDB ist natürlich sehr extremst

01:58:58.127 --> 01:58:58.667
umstritten.

01:59:00.427 --> 01:59:01.987
Wie gesagt, die Firmen, die ich

01:59:01.987 --> 01:59:03.547
Kenne, die haben dann ein paar aus der

01:59:03.547 --> 01:59:06.228
Apache-Geschichte, Hadoop und so weiter.

01:59:06.407 --> 01:59:07.867
Warum ist MongoDB umstritten?

01:59:17.667 --> 01:59:19.648
Meine Erfahrung mit MongoDB

01:59:19.648 --> 01:59:21.787
ist, dass es

01:59:21.787 --> 01:59:23.667
extrem RAM-lastig ist

01:59:23.667 --> 01:59:25.967
und auch sehr RAM-aggressiv ist.

01:59:26.627 --> 01:59:27.847
Aber es gibt da

01:59:27.847 --> 01:59:29.927
tatsächlich Tests von großen Firmen,

01:59:29.927 --> 01:59:31.847
die mit F anfangen oder mit B

01:59:31.847 --> 01:59:33.767
anfangen oder ähnlich ist die MongoDB

01:59:33.767 --> 01:59:35.547
auch wirklich auf die kleinsten Niere

01:59:35.547 --> 01:59:37.707
auseinandergenommen oder mit G anfangen,

01:59:38.627 --> 01:59:39.987
wo es

01:59:39.987 --> 01:59:41.447
dann auch mal Dokumente dazu gab,

01:59:42.367 --> 01:59:43.627
warum sie das denn jetzt

01:59:43.627 --> 01:59:44.827
nicht einsetzen.

01:59:46.367 --> 01:59:49.747
was ich halt hatte,

01:59:50.167 --> 01:59:51.728
es gab auch eine Zeit lang Hoster,

01:59:51.927 --> 01:59:52.407
die gesagt haben,

01:59:52.648 --> 01:59:56.247
du darfst keinen Tor-Server auf deinem

01:59:56.247 --> 01:59:57.827
Server machen und keine

01:59:57.827 --> 01:59:59.887
MongoDB. Gerade

01:59:59.887 --> 02:00:01.787
Ms, weil sie dir den Ramp von ganzen

02:00:01.787 --> 02:00:03.207
Hosts mit wegbringen oder ähnliches.

02:00:03.207 --> 02:00:05.527
Auch weil MongoDB am Anfang halt keine

02:00:05.527 --> 02:00:07.267
Default-mäßig keine Authentifizierung hatte.

02:00:07.407 --> 02:00:08.147
Du konntest dich einfach drauf verbinden.

02:00:08.147 --> 02:00:09.627
Ja, irgendwas war da, ja.

02:00:09.987 --> 02:00:12.267
Das war ähnlich wie bei MySQL auch.

02:00:12.647 --> 02:00:13.667
Da war es am Anfang auch so.

02:00:14.407 --> 02:00:16.247
Aber wie gesagt, die meisten

02:00:16.247 --> 02:00:18.287
greifen dann aber tatsächlich im professionellen

02:00:18.287 --> 02:00:19.527
Bereich auf diese ganze Apache

02:00:19.527 --> 02:00:21.887
HBase, 11 Grad,

02:00:22.087 --> 02:00:23.687
Graph und was weiß ich was zurück.

02:00:24.507 --> 02:00:26.427
Neo4j ist glaube ich auch HGraph.

02:00:27.187 --> 02:00:28.067
Das hängt irgendwie

02:00:28.067 --> 02:00:32.667
zusammen bei den grafenbasierten Elasticsearch,

02:00:32.807 --> 02:00:36.227
das ist so ein klassisches Dokumentending zum Suchen in Dokumenten.

02:00:36.747 --> 02:00:38.427
Also da gibt es verschiedene.

02:00:38.847 --> 02:00:40.787
Da müssten wir jetzt auch nochmal eigentlich im Einzelnen nochmal,

02:00:40.887 --> 02:00:42.187
wie man das denn macht, wie es aussieht.

02:00:42.427 --> 02:00:42.947
Ja, da bin ich aber auch nicht wirklich so.

02:00:43.287 --> 02:00:45.967
Da ist halt das Problem, dass es da ganz viel Software gibt

02:00:45.967 --> 02:00:48.467
und dass du da, deswegen sage ich immer,

02:00:48.547 --> 02:00:51.167
man muss das dann auch heutzutage den jungen Menschen beibringen,

02:00:51.447 --> 02:00:52.887
es gibt halt nicht nur Relationale.

02:00:53.107 --> 02:00:55.687
Es gibt halt diese anderen und wenn ihr die wirklich braucht,

02:00:55.687 --> 02:00:58.147
Du kannst hier nicht alle im Studium lernen.

02:00:58.367 --> 02:00:59.927
Also da gibt es dann GQL und so weiter.

02:01:00.067 --> 02:01:01.807
Ich weiß nicht, ob das auch sinnvoll ist, die alle

02:01:01.807 --> 02:01:03.847
im Studium zu lernen oder hinterher Kurse dafür

02:01:03.847 --> 02:01:05.827
anzubieten, wie du es programmierst. Gut, wenn du

02:01:05.827 --> 02:01:07.967
jetzt Programmierer wirst, ist das natürlich

02:01:07.967 --> 02:01:09.827
für dich sinnvoll, dass du es noch lernst. Ich weiß es nicht.

02:01:10.187 --> 02:01:11.247
Aber man braucht es vielleicht.

02:01:11.527 --> 02:01:13.807
Wenn man es braucht, dann muss man sich

02:01:13.807 --> 02:01:15.567
da mal reinfuchsen. Ich weiß auch nicht, wie viele

02:01:15.567 --> 02:01:17.587
Schulungen es da schon gibt. Also ich weiß,

02:01:17.647 --> 02:01:19.607
dass CouchDB da mal eine ganze Menge gemacht wird

02:01:19.607 --> 02:01:21.647
im Schulungsbereich. Und bei den

02:01:21.647 --> 02:01:23.567
CouchDB ist, glaube ich, auch Dokumenten basiert.

02:01:23.567 --> 02:01:24.987
Ich möchte mich jetzt nicht alles täuschen.

02:01:24.987 --> 02:01:25.907
Wie war es mit Cassandra?

02:01:26.747 --> 02:01:27.547
Das ist

02:01:27.547 --> 02:01:30.447
ein Misch, glaube ich, aus beidem.

02:01:30.607 --> 02:01:32.507
Ja, das glaube ich, das ist halt so ein

02:01:32.507 --> 02:01:34.467
sehr, das kann man halt sehr gut verteilen.

02:01:34.647 --> 02:01:36.327
Das ist auch mehr, aber eigentlich eher so ein

02:01:36.327 --> 02:01:37.027
Key-Value-Store.

02:01:37.827 --> 02:01:40.787
Also es gibt ja ganz viele unterschiedliche

02:01:40.787 --> 02:01:41.847
Dinge, ich weiß nicht.

02:01:42.627 --> 02:01:44.527
Ich glaube, das ist gar nicht so einfach, sich zu überlegen,

02:01:44.747 --> 02:01:46.647
was man da jetzt braucht, wenn man sich damit

02:01:46.647 --> 02:01:48.107
nicht so auskennt. Ich glaube, wenn man

02:01:48.107 --> 02:01:50.367
sozusagen weiß, was man daneben, also

02:01:50.367 --> 02:01:52.627
wenn man das Problem hat, dann weiß man das.

02:01:53.147 --> 02:01:54.907
Und wenn man das nicht weiß, dann hat man lieber Postpapier.

02:01:54.907 --> 02:01:57.187
tatsächlich an der Uni dann so ein bisschen

02:01:57.187 --> 02:01:58.727
die Studierenden mit Nois,

02:01:58.907 --> 02:02:01.307
Quatsch, mit Neo4j spielen lassen.

02:02:02.007 --> 02:02:03.047
Ich habe aber auch eher so

02:02:03.047 --> 02:02:04.907
einen Zugang zu den Graphen als zu den

02:02:04.907 --> 02:02:06.987
anderen, weil

02:02:06.987 --> 02:02:08.787
bei den anderen kann man sich auch besser vorstellen.

02:02:09.027 --> 02:02:11.087
Die sind dann auch wahrscheinlich leichter im Selbststudenten.

02:02:11.087 --> 02:02:12.627
Ich habe die also echt mit Neo4j

02:02:12.627 --> 02:02:15.087
mal ein bisschen rumspielen

02:02:15.087 --> 02:02:16.647
lassen, dass sie das mal gesehen haben.

02:02:17.867 --> 02:02:19.107
Und das ist ja auch

02:02:19.107 --> 02:02:20.827
schon mal was, damit du überhaupt weißt,

02:02:21.247 --> 02:02:22.807
dass du es mal gesehen hast.

02:02:22.807 --> 02:02:25.787
Was würde man denn jetzt nehmen, wenn keiner ein GraphQL mit ein bisschen rumspielen will?

02:02:25.867 --> 02:02:27.007
Was würde man jetzt da drunter schicken?

02:02:27.407 --> 02:02:29.587
Neo4j. Das hat auch eine Oberfläche

02:02:29.587 --> 02:02:30.427
tatsächlich auch.

02:02:31.047 --> 02:02:33.347
Das, womit ich rumgespielt habe,

02:02:33.407 --> 02:02:33.767
besetzt.

02:02:35.447 --> 02:02:36.787
Du meinst GraphQL, das von Facebook?

02:02:37.687 --> 02:02:38.287
Zum Beispiel, ja.

02:02:38.727 --> 02:02:40.107
Das kenne ich gar nicht.

02:02:40.267 --> 02:02:41.907
Das ist irgendwie so eine neue Geschichte,

02:02:42.487 --> 02:02:44.107
quasi als Alternative zu

02:02:44.107 --> 02:02:45.127
JSON über

02:02:45.127 --> 02:02:47.367
JSON-API.

02:02:48.707 --> 02:02:49.947
Aber das weiß ich nicht,

02:02:50.047 --> 02:02:52.107
es gibt keine Datenbank, die sowas direkt,

02:02:52.107 --> 02:02:52.887
glaube ich.

02:02:52.967 --> 02:02:55.687
Vielleicht kann die das, ich weiß es nicht,

02:02:55.727 --> 02:02:56.707
vielleicht gibt es da irgendeinen Adapter oder so,

02:02:56.747 --> 02:02:59.247
die Sprache, die die verwenden,

02:02:59.527 --> 02:03:01.547
irgendwas mit Cycle oder weiß ich nicht.

02:03:01.547 --> 02:03:04.007
Es gibt tatsächlich schon ein Zisiert, das GQL

02:03:04.007 --> 02:03:06.067
mittlerweile, da hat Kajaba auch ganz viel

02:03:06.067 --> 02:03:07.007
mitgemacht.

02:03:08.227 --> 02:03:09.987
Nein, aber das ist ja

02:03:09.987 --> 02:03:11.407
erstmal auch wichtig. Guck mal,

02:03:11.827 --> 02:03:13.767
ich muss auch nicht jede Programmiersprache kennen,

02:03:13.927 --> 02:03:15.767
aber es ist schon mal schön zu wissen, wie sie

02:03:15.767 --> 02:03:17.447
heißen oder nicht jede Programmiersprache

02:03:17.447 --> 02:03:18.747
programmieren können.

02:03:19.427 --> 02:03:21.647
Ich kann jetzt auch kein Python,

02:03:21.647 --> 02:03:22.987
bin ich ganz ehrlich.

02:03:23.587 --> 02:03:25.647
Doch, ich habe mal was mit Python gemacht vor gefühlten

02:03:25.647 --> 02:03:27.787
100 Jahren. Irgendwo ist mir

02:03:27.787 --> 02:03:29.747
Python eigentlich...

02:03:30.587 --> 02:03:31.547
Wahrscheinlich wird es länger halten.

02:03:32.547 --> 02:03:33.567
Nee, da musste man

02:03:33.567 --> 02:03:35.907
früher musste man auch schon mal an so Software noch rumspielen,

02:03:36.007 --> 02:03:37.667
damit man irgendwie Features hatte, die man

02:03:37.667 --> 02:03:39.167
nicht hatte. Ich weiß aber gar nicht mehr, wie das

02:03:39.167 --> 02:03:40.927
wo man das brauchte in Python,

02:03:41.587 --> 02:03:43.307
was in Python geschrieben war, aber

02:03:43.307 --> 02:03:45.567
so ähnlich wie man

02:03:45.567 --> 02:03:47.767
bei AutoCAD auch erstmal List lernen musste,

02:03:47.967 --> 02:03:50.047
um da irgendwelche Funktionen

02:03:50.047 --> 02:03:51.587
zum Zeichnen zu machen, weil es

02:03:51.587 --> 02:03:55.227
gab nur eine Linie und kein Kopieren oder kein Spiegeln oder so, das muss man sich selbst

02:03:55.227 --> 02:03:58.647
probieren in Lisp. Und irgendwie war das auch, da gab es irgendein Tool.

02:03:59.207 --> 02:04:01.547
Blender ist eins, das Python schon ganz lange macht.

02:04:03.627 --> 02:04:07.407
Also wenn du C kannst, kannst du die meisten anderen auch wenigstens halbwegs

02:04:07.407 --> 02:04:11.807
lesen. Und es ist nicht so schwer, da irgendwo reinzukommen.

02:04:12.267 --> 02:04:14.507
Postgres ist im Übrigen komplett in C geschrieben.

02:04:15.827 --> 02:04:18.407
MariaDB ist so ein Misch aus C und C++.

02:04:18.407 --> 02:04:18.887
Ja.

02:04:20.187 --> 02:04:22.167
Ich habe jetzt nicht so viel Erfahrung. Ich habe einmal

02:04:22.167 --> 02:04:24.347
versucht, in MySQL einen Bug,

02:04:24.387 --> 02:04:25.707
den ich gefunden habe, irgendwie zu debunken.

02:04:26.427 --> 02:04:27.207
Das war eher schwierig.

02:04:27.707 --> 02:04:29.507
Ich fand das, auch gerade diese

02:04:29.507 --> 02:04:30.147
Swerding-Geschichte,

02:04:30.927 --> 02:04:31.787
hat

02:04:31.787 --> 02:04:36.387
jetzt

02:04:36.387 --> 02:04:37.927
nicht so viel Joy bei mir gespart.

02:04:38.407 --> 02:04:39.447
Wohin gegen Postgres?

02:04:40.047 --> 02:04:41.707
Sehr gut, kann ich empfehlen. Kann man sich sehr gut anschauen.

02:04:41.807 --> 02:04:44.207
Ja, Postgres hat da auch immer Lob für gekriegt,

02:04:44.367 --> 02:04:46.127
dass die einen sehr, sehr guten Quellcode

02:04:46.127 --> 02:04:47.767
haben. Sehr gut lesbar auch.

02:04:47.767 --> 02:05:17.747
und Python-Programme.

02:05:17.767 --> 02:05:19.887
Office zu kompilieren.

02:05:21.327 --> 02:05:23.407
Das war immer ganz schrecklich.

02:05:23.967 --> 02:05:25.287
Und MariaDB

02:05:25.287 --> 02:05:27.387
brauchte einfach immer lange, es kompilierte

02:05:27.387 --> 02:05:27.987
immerhin durch.

02:05:29.387 --> 02:05:31.567
Aber es brauchte halt auch wahnsinnig lange

02:05:31.567 --> 02:05:33.467
Postgres kompilieren, war auch früher mit alter

02:05:33.467 --> 02:05:34.847
Hardware schon relativ schnell.

02:05:37.667 --> 02:05:39.547
Und das ist halt der Unterschied zwischen

02:05:39.547 --> 02:05:41.467
C und C++, dass C++

02:05:41.467 --> 02:05:43.307
auch länger zu kompilieren braucht.

02:05:44.627 --> 02:05:45.507
Also es gab

02:05:45.507 --> 02:05:47.407
da, wenn du mal die Gentoo-Leute fragst,

02:05:47.407 --> 02:05:49.087
und die können dir genau sagen, welche Software

02:05:49.087 --> 02:05:51.267
da besseren Code hat und welche nicht

02:05:51.267 --> 02:05:53.067
und welche der Horror ist zum Kompilieren.

02:05:54.707 --> 02:05:55.487
Das ist so.

02:05:56.447 --> 02:05:56.647
Ja.

02:05:57.487 --> 02:05:58.367
Du hattest noch eine Frage.

02:05:58.527 --> 02:06:00.187
Ich habe noch ein News vergessen, fällt mir da gerade ein.

02:06:00.307 --> 02:06:03.367
Und zwar wurde von C89 auf C11 geändert

02:06:03.367 --> 02:06:05.187
in dem Linux-Kernel

02:06:05.187 --> 02:06:05.727
vom Standard.

02:06:05.947 --> 02:06:08.707
Oh, wow. Richtig moderne Geschichten.

02:06:08.827 --> 02:06:10.087
Ja, das war halt modern.

02:06:10.547 --> 02:06:12.647
Aber das war das erste Mal, dass es da irgendwie Diskussionen gab,

02:06:12.647 --> 02:06:13.367
wo Linus irgendwann eingestellt hat.

02:06:14.707 --> 02:06:16.507
Unterschiede Postgres MariaDB.

02:06:16.507 --> 02:06:17.967
Wann würde ich was einsetzen?

02:06:19.407 --> 02:06:20.567
Es gibt ganz viele

02:06:20.567 --> 02:06:22.467
Bereiche, wo das völlig

02:06:22.467 --> 02:06:23.127
wurscht ist.

02:06:25.607 --> 02:06:26.467
Wenn ich im

02:06:26.467 --> 02:06:28.207
GIS-Bereich unterwegs bin,

02:06:28.527 --> 02:06:29.827
würde ich immer Postgres nehmen.

02:06:30.047 --> 02:06:31.947
Bei Postgres ist es irgendwie mit dem PostGIS

02:06:31.947 --> 02:06:33.187
doch führend.

02:06:33.487 --> 02:06:37.787
Wenn ich im

02:06:37.787 --> 02:06:38.507
Hochverfügbarkeitsbereich

02:06:39.287 --> 02:06:39.767
bin,

02:06:42.107 --> 02:06:42.647
da ist

02:06:42.647 --> 02:06:44.507
irgendwie MySQL allen anderen

02:06:44.507 --> 02:06:46.267
schon vor Jahrzehnten sowas von

02:06:46.267 --> 02:06:47.387
dran vorbeigelaufen.

02:06:49.287 --> 02:06:49.587
Und

02:06:49.587 --> 02:06:52.067
also ich kann

02:06:52.067 --> 02:06:53.567
bei MariaDB

02:06:53.567 --> 02:06:56.727
hochverübergreich,

02:06:56.767 --> 02:06:57.707
wir reden jetzt von

02:06:57.707 --> 02:06:58.887
Replikation.

02:07:01.287 --> 02:07:02.307
Man darf

02:07:02.307 --> 02:07:04.247
heute nicht mehr Master und Slave

02:07:04.247 --> 02:07:06.287
sagen aus politischen

02:07:06.287 --> 02:07:08.267
Gründen. Man spricht dann heute

02:07:08.267 --> 02:07:10.087
von Primary und

02:07:10.087 --> 02:07:12.427
Secondary oder Primary und Standby.

02:07:12.667 --> 02:07:14.387
Technisch ist wahrscheinlich dann trotzdem genau

02:07:14.387 --> 02:07:20.607
Was ich erstmal machen kann bei MariaDB, weil es Thread-basiert ist in den Verbindungen und nicht Prozess-basiert ist,

02:07:20.967 --> 02:07:25.667
ich kann da einen Master machen oder Primary und dann 10.000 Slaves dahinter hängen.

02:07:25.827 --> 02:07:30.267
10.000, ihr wisst das, Standby dahinter hängen. Gar kein Problem.

02:07:31.227 --> 02:07:38.047
Oder ich kann natürlich auch dann immer einen Standby, also ich kann immer replizieren, Standby von Standby von Standby.

02:07:38.047 --> 02:07:40.807
Also ich kann auch so eine Kette aufbauen.

02:07:40.807 --> 02:07:59.207
Aber es ist überhaupt kein Problem und das wird auch häufig genug gemacht, ein Master und dann mehrere tausend Standbys. Machen die Großen alle. Und wenn du mal guckst, die meisten Großen, die meisten ganz Großen haben auch da in diesem Bereich immer MariaDB oder MySQL halt entsprechend von Oracle, aber nichts anderes.

02:07:59.207 --> 02:08:02.387
bei Postgres

02:08:02.387 --> 02:08:04.207
ist Prozessbasiert

02:08:04.207 --> 02:08:06.587
und da, naja, das Verbindungen sind halt

02:08:06.587 --> 02:08:08.607
Prozesse, also da kriegen

02:08:08.607 --> 02:08:10.287
dann die Postgres, da kriegen Schnappatmungen,

02:08:10.447 --> 02:08:12.187
du sagst, du willst einen Master haben

02:08:12.187 --> 02:08:13.527
und 1000 Sendbys.

02:08:14.667 --> 02:08:16.067
Das ist schon mal eine Sache,

02:08:16.327 --> 02:08:17.307
da muss ich mir das überlegen.

02:08:18.387 --> 02:08:20.327
Die Streaming-Replication von Postgres

02:08:20.327 --> 02:08:22.047
funktioniert super. Ich habe mal

02:08:22.047 --> 02:08:23.547
einen

02:08:23.547 --> 02:08:26.027
Set-Aufsetzen gemacht

02:08:26.027 --> 02:08:28.207
mit einem von MariaDB,

02:08:28.207 --> 02:08:30.207
mit einem der Chefs von MariaDB,

02:08:30.207 --> 02:08:31.667
mit dem Chef von MariaDB,

02:08:32.547 --> 02:08:34.327
mit reichlich Alkohol

02:08:34.327 --> 02:08:34.667
dabei.

02:08:36.007 --> 02:08:38.007
Und wer mehr

02:08:38.007 --> 02:08:39.927
Key-Hits braucht zum Aufsetzen eines

02:08:39.927 --> 02:08:42.207
Standbys, und ich hatte zwei weniger

02:08:42.207 --> 02:08:43.927
als er, obwohl das Wort Postgres

02:08:43.927 --> 02:08:45.367
länger ist als MySQL.

02:08:46.847 --> 02:08:47.867
Das war also,

02:08:48.107 --> 02:08:49.687
das ist relativ simpel.

02:08:49.847 --> 02:08:52.307
Man will eigentlich bei Postgres die Streaming-Replication

02:08:52.307 --> 02:08:52.727
haben.

02:08:55.207 --> 02:08:56.347
Was ich bei,

02:08:57.167 --> 02:08:58.187
ja, man will sie eigentlich

02:08:58.187 --> 02:09:00.387
haben. Dann kann ich

02:09:00.387 --> 02:09:02.467
bei MariaDB auch sowas

02:09:02.467 --> 02:09:03.967
machen, wie ich habe

02:09:03.967 --> 02:09:05.067
zwei Master.

02:09:07.127 --> 02:09:08.207
Die kann ich

02:09:08.207 --> 02:09:10.207
theoretisch auch als Master-Master-Replikation

02:09:10.207 --> 02:09:12.207
nutzen. Das will man aber nicht.

02:09:12.407 --> 02:09:13.687
Da hat man andere Affe-Fakte.

02:09:14.207 --> 02:09:16.207
Aber ich kann schon mal zwei Master aufsetzen

02:09:16.207 --> 02:09:18.407
und da jeweils ein paar tausend Slaves hinterhängen.

02:09:20.167 --> 02:09:22.167
Ich setze die als Master-Master auf,

02:09:22.247 --> 02:09:24.007
das heißt, sie replizieren gegenseitig.

02:09:24.867 --> 02:09:26.267
Ich nutze die tatsächlich

02:09:26.267 --> 02:09:27.447
als Master-Slave.

02:09:27.447 --> 02:09:29.747
Das heißt, ich spiele alles, was ich schreibe,

02:09:29.787 --> 02:09:31.567
nur auf den einen Master und der repliziert.

02:09:32.587 --> 02:09:33.467
Wenn ich jetzt aber den

02:09:33.467 --> 02:09:34.867
Wartungsfall habe,

02:09:36.267 --> 02:09:37.407
kann ich den einen Master,

02:09:37.527 --> 02:09:39.227
dann brauche ich nur die IP schwenken,

02:09:39.307 --> 02:09:40.547
auf den anderen Master,

02:09:41.267 --> 02:09:42.447
und dann kann ich den einen warten.

02:09:42.767 --> 02:09:45.047
Und der zieht sich alles nach, was er verpasst hat.

02:09:46.447 --> 02:09:47.587
Und ich muss nichts

02:09:47.587 --> 02:09:48.747
weiter konfigurieren.

02:09:51.067 --> 02:09:52.067
Das ist das,

02:09:52.067 --> 02:09:54.227
das machen auch gewisse

02:09:54.227 --> 02:09:55.967
weiterführende Tools.

02:09:55.967 --> 02:09:58.107
das ist jetzt das einfachste Clustering

02:09:58.107 --> 02:10:00.527
mit Hochverfügbarkeit

02:10:00.527 --> 02:10:01.567
und Master, Master und

02:10:01.567 --> 02:10:03.367
wie heißt das?

02:10:05.347 --> 02:10:05.827
Failover

02:10:05.827 --> 02:10:07.627
oder sowas.

02:10:07.987 --> 02:10:09.867
Dass ich dann einen Master rausnehme,

02:10:10.187 --> 02:10:11.707
den kann ich dann warten und dann

02:10:11.707 --> 02:10:14.047
schwenke ich die IP, also ich schwenke die IP auf den

02:10:14.047 --> 02:10:16.007
anderen Master, dann wird der

02:10:16.007 --> 02:10:17.747
einfach weiter, der Anwender merkt da nichts von,

02:10:17.847 --> 02:10:19.247
das macht Pacemaker, CoroSync,

02:10:19.787 --> 02:10:22.127
das machen die innerhalb vom Augenblick, die IP schwenken

02:10:22.127 --> 02:10:24.027
und dann geht das auf dem anderen Master weiter.

02:10:24.027 --> 02:10:26.347
Dafür ist das sehr, sehr sinnvoll.

02:10:27.127 --> 02:10:28.927
Das kann ich mit der Streaming Replication

02:10:28.927 --> 02:10:29.867
von Postgres nicht.

02:10:31.367 --> 02:10:32.767
Das gibt die Streaming Replication

02:10:32.767 --> 02:10:33.267
nicht her.

02:10:34.647 --> 02:10:36.807
Dann hat man ja erfunden

02:10:36.807 --> 02:10:38.107
Postgres

02:10:38.107 --> 02:10:40.607
logische Replikation.

02:10:41.107 --> 02:10:42.947
Die kann aber kein DDL.

02:10:43.687 --> 02:10:44.767
Die kann Master,

02:10:44.847 --> 02:10:46.767
Master und die kann alles mögliche, was man

02:10:46.767 --> 02:10:48.647
immer so kritisiert. Die kann aber

02:10:48.647 --> 02:10:50.907
kein DDL. Das heißt, ich kann damit

02:10:50.907 --> 02:10:51.967
keine

02:10:51.967 --> 02:11:21.055
und Jochen unterhalten sich die Programmiersprache Python keine Tabellen erzeugen oder Das wird nicht repliziert Es wird nur

02:11:21.055 --> 02:11:51.034
und Jochen unterhalten sich über die Programmiersprache Python

02:11:51.055 --> 02:11:53.155
Pacemaker ein bisschen mehr konfigurieren.

02:11:53.235 --> 02:11:54.795
Der Pacemaker muss ein bisschen mehr machen, um

02:11:54.795 --> 02:11:56.635
den zweiten dann zum Laufen zu kriegen,

02:11:57.015 --> 02:11:58.495
wenn der Master wird.

02:12:01.495 --> 02:12:03.075
Soweit, so gut. Manchmal braucht man

02:12:03.075 --> 02:12:05.175
ja auch nur zwei Standbys

02:12:05.175 --> 02:12:07.034
oder so. Dann ist das nicht so

02:12:07.034 --> 02:12:08.975
schlimm. Mit den vielen Standbys könnte man ja

02:12:08.975 --> 02:12:10.935
Postgres nehmen. Jetzt hat man

02:12:10.935 --> 02:12:12.975
aber das nächste Problem, dass die

02:12:12.975 --> 02:12:14.675
Postgres-Replikation

02:12:14.675 --> 02:12:16.795
oder das Transaktions-Log, was das

02:12:16.795 --> 02:12:18.895
alles irgendwie steuert, ist

02:12:18.895 --> 02:12:21.315
von drei Sachen abhängig.

02:12:22.255 --> 02:12:23.354
Fangen wir mit dem an,

02:12:23.615 --> 02:12:25.095
was heute fast am

02:12:25.095 --> 02:12:26.975
irrelevantesten ist und wo mich die meisten

02:12:26.975 --> 02:12:28.495
mal fragen, was ist es? Es ist

02:12:28.495 --> 02:12:29.955
NNN-abhängig.

02:12:31.275 --> 02:12:32.055
Und was ist das?

02:12:33.555 --> 02:12:35.275
Genau, das war die Sache

02:12:35.275 --> 02:12:37.215
mit diesen Zahlen von rechts nach links

02:12:37.215 --> 02:12:38.595
oder links nach rechts lesen.

02:12:39.875 --> 02:12:41.115
Es gibt Big NNN und

02:12:41.115 --> 02:12:43.075
Little NNN, die meisten heutige Hardware

02:12:43.075 --> 02:12:44.015
ist Little NNN.

02:12:44.695 --> 02:12:46.095
Du hast kaum noch Big NNN.

02:12:46.095 --> 02:12:49.115
Die alten Sunsparks waren Big-Anion.

02:12:49.995 --> 02:12:53.515
Die haben einfach da die Sachen andersrum drin.

02:12:54.395 --> 02:12:56.875
Und ich sage ja, das ist nicht mehr ganz so.

02:12:57.275 --> 02:13:00.635
Dann ist sie, auch das ist meistens was, was keinen stört,

02:13:01.295 --> 02:13:02.515
betriebssystemabhängig.

02:13:04.015 --> 02:13:06.154
Wobei Betriebssystem heißt Linux

02:13:06.154 --> 02:13:09.175
und nicht Suse oder Debian, sondern Linux

02:13:09.175 --> 02:13:12.154
versus Microsoft oder

02:13:12.154 --> 02:13:15.534
versus was auch immer Microsoft dafür,

02:13:15.534 --> 02:13:16.395
Betriebssysteme hat.

02:13:17.055 --> 02:13:19.755
Also ich kann nicht replizieren

02:13:19.755 --> 02:13:21.935
von einem Linux-Server auf Microsoft

02:13:21.935 --> 02:13:22.895
oder andersrum.

02:13:24.495 --> 02:13:25.775
Das stört die meisten

02:13:25.775 --> 02:13:27.375
auch noch nicht, weil meistens hat man

02:13:27.375 --> 02:13:28.715
sowieso nur Linux.

02:13:30.175 --> 02:13:30.695
Und

02:13:30.695 --> 02:13:34.075
das dritte ist, dass es massivst

02:13:34.075 --> 02:13:35.555
versionsabhängig.

02:13:37.154 --> 02:13:37.895
Und da sind wir

02:13:37.895 --> 02:13:40.055
jetzt an dem Punkt, wenn ich eine MariaDB

02:13:40.055 --> 02:13:42.215
habe, die kann ich hot upgraden.

02:13:43.015 --> 02:13:43.975
Sagen wir, ich habe da

02:13:43.975 --> 02:14:13.955
und Jochen unterhalten sich über die Programmiersprache Python

02:14:13.975 --> 02:14:15.935
älteren Versionen in eine neuere Version

02:14:15.935 --> 02:14:17.815
replizieren. Das heißt, die

02:14:17.815 --> 02:14:20.075
gucken erstmal beim hintersten

02:14:20.075 --> 02:14:21.995
Standby nach,

02:14:22.075 --> 02:14:24.055
funktioniert alles. Wenn da alles

02:14:24.055 --> 02:14:26.315
funktioniert, dann machen sie die nächste Ebene.

02:14:26.775 --> 02:14:28.055
Und so weiter. Es kann sein, dass dann

02:14:28.055 --> 02:14:30.095
mittlerweile schon noch eine neue Version draußen

02:14:30.095 --> 02:14:32.055
ist, bis sie den Master überhaupt

02:14:32.055 --> 02:14:33.975
mal upgraden. Irgendwann

02:14:33.975 --> 02:14:36.175
kommen sie dann schwenken die IP und upgraden die Master.

02:14:36.575 --> 02:14:38.034
Ich kann das komplett hot

02:14:38.034 --> 02:14:40.034
upgraden. Das heißt, ich habe ja immer nur eine

02:14:40.034 --> 02:14:41.495
Maschine, die ich da rausnehme.

02:14:41.495 --> 02:14:42.534
aus dem Cluster.

02:14:43.315 --> 02:14:45.175
Und das geht bei Postgres nicht, weil

02:14:45.175 --> 02:14:47.015
ich kann nicht von der niedrigeren Version

02:14:47.015 --> 02:14:48.675
von der älteren in die neuere.

02:14:49.395 --> 02:14:51.495
Das heißt, wenn ich ein Upgrade habe,

02:14:51.555 --> 02:14:52.955
habe ich immer eine Downtime.

02:14:53.475 --> 02:14:54.815
Die kann ich irgendwie

02:14:54.815 --> 02:14:56.555
natürlich klein halten.

02:14:57.034 --> 02:14:59.135
Ich baue noch nebenher

02:14:59.135 --> 02:15:00.835
eine logische Replikation oder so weiter,

02:15:01.154 --> 02:15:02.455
aber ich habe eine Downtime.

02:15:03.215 --> 02:15:04.575
Irgendwann habe ich den Punkt,

02:15:05.534 --> 02:15:07.475
wo ich mal eine Downtime habe

02:15:07.475 --> 02:15:08.975
von dem ganzen System.

02:15:08.975 --> 02:15:16.495
und das ist tatsächlich etwas, was gerade so große Firmen

02:15:16.495 --> 02:15:20.955
Ja, kann teuer werden dann.

02:15:21.135 --> 02:15:23.274
Ja, nicht nur das. Ja, teuer auch.

02:15:23.975 --> 02:15:28.195
Lass mal die Amazon-Seite nur 10 Sekunden nicht verfügbar sein.

02:15:29.495 --> 02:15:33.595
Bei Amazon hat das auch noch, oder Facebook, 10 Sekunden nicht verfügbar.

02:15:34.394 --> 02:15:38.355
Das ist so ähnlich wie gute Zeiten, schlechte Zeiten, wenn das Kabelfernsehen ausfällt.

02:15:38.355 --> 02:15:39.914
kann ich mir vorstellen oder so.

02:15:40.315 --> 02:15:42.335
Habe ich nie geguckt, weiß ich nicht, aber ich

02:15:42.335 --> 02:15:43.355
weiß, ich habe mal von

02:15:43.355 --> 02:15:46.095
Monteuren gehört, dass das,

02:15:46.215 --> 02:15:48.215
gerade bei Kabelfallen sind, dass die Leute

02:15:48.215 --> 02:15:50.315
da verrückt spielen. Also ich kenne das aus Spielefirmen,

02:15:50.995 --> 02:15:52.055
wie bescheuert

02:15:52.055 --> 02:15:54.235
da Spieler werden, wenn der Angriff

02:15:54.235 --> 02:15:56.135
nicht gefahren werden können und du stehst da,

02:15:56.154 --> 02:15:57.034
das ist doch nur ein Spiel.

02:15:58.215 --> 02:16:00.235
Aber ja, lass mal so ganz

02:16:00.235 --> 02:16:01.835
große Sachen da irgendwie,

02:16:02.195 --> 02:16:04.315
das ist, also irgendwann

02:16:04.315 --> 02:16:06.154
bist du am Punkt, da kannst du nicht

02:16:06.154 --> 02:16:08.135
sagen, okay, mit der Downtime kann ich leben.

02:16:08.355 --> 02:16:15.375
Es gibt natürlich andere Anwendungen, wo du sagst, ja Gott, dann haben wir mal einen Tag Downtime.

02:16:15.595 --> 02:16:16.255
Das schaffen wir schon.

02:16:16.475 --> 02:16:17.935
Oder dann haben wir mal zwei Stunden Downtime.

02:16:18.075 --> 02:16:18.815
Das kriegen wir hin.

02:16:19.215 --> 02:16:20.995
Wir haben genug Wartungsfenster drin.

02:16:21.115 --> 02:16:22.955
Zwei Stunden ist überhaupt gar nicht das Problem.

02:16:23.034 --> 02:16:25.195
Ja, wenn man sich das aussuchen kann, dann kann er irgendwie wirklich was nehmen.

02:16:26.115 --> 02:16:29.195
Du, es gibt ja so Business, das passiert nur Montags bis Freitags.

02:16:29.935 --> 02:16:32.135
Da kannst du am Wochenende auch mal so Upgrades fahren.

02:16:34.835 --> 02:16:35.235
Durchaus.

02:16:35.235 --> 02:16:37.515
jetzt nicht gerade in einer

02:16:37.515 --> 02:16:38.875
Einzelhandel zu beziehen.

02:16:38.875 --> 02:16:41.255
Es fallen ja auch genug Services einfach auf Geschäftszeit aus.

02:16:41.475 --> 02:16:43.435
Du hast ja auch tatsächlich so natürliche

02:16:43.435 --> 02:16:45.755
solche Schwankungen

02:16:45.755 --> 02:16:47.394
auch nachts, kann man oft

02:16:47.394 --> 02:16:49.235
Backups machen, weil das ging ja

02:16:49.235 --> 02:16:50.575
zur Tagszeit gar nicht.

02:16:51.215 --> 02:16:52.894
Ja, aber das ist lustig, also was zum Beispiel

02:16:52.894 --> 02:16:55.475
Auftragsprobleme sind, dass du nachts die Backups gar nicht mehr machen kannst,

02:16:55.595 --> 02:16:57.235
weil nachts so viele andere Services

02:16:57.235 --> 02:16:58.715
laufen, die halt sonst in Betrieb nicht so klar sind.

02:16:59.295 --> 02:17:01.255
Das hab ich mal gedacht, ich hab einen

02:17:01.255 --> 02:17:03.735
Kunden, der macht Kassensysteme

02:17:03.735 --> 02:17:04.815
für einen Einzelhandel.

02:17:05.235 --> 02:17:08.715
und der hatte eine ganz große Kette Einzelhandel.

02:17:09.855 --> 02:17:12.694
So 70.000 Bons pro Minute, da könnt ihr euch vorstellen,

02:17:12.815 --> 02:17:15.235
Kassenbons pro Minute, da könnt ihr euch vorstellen, wie groß die Kette war.

02:17:16.095 --> 02:17:18.875
Und die hatten kaum Wartungsfenster.

02:17:18.975 --> 02:17:21.694
Jetzt denkst du, okay, so ein Geschäft macht ja irgendwann abends um 10 zu.

02:17:22.775 --> 02:17:25.414
Ich glaube, das war sogar eins, was um 8 zu macht, so generell.

02:17:25.694 --> 02:17:26.914
Hat sonntags nie auf.

02:17:28.075 --> 02:17:29.175
Samstags vielleicht schon um 16.

02:17:29.375 --> 02:17:32.115
Also du hast da ja durchaus nachts nichts laufen.

02:17:32.115 --> 02:17:33.875
Du kannst da ja Wartung machen oder sonntags.

02:17:33.875 --> 02:17:37.835
Die hatten tatsächlich nur noch einen Tag im Jahr, wo die Wartung machen konnten.

02:17:37.955 --> 02:17:39.494
Ich glaube, das war Ostermontag oder so.

02:17:40.894 --> 02:17:42.715
Und Pfingstenmontag oder irgendwie sowas.

02:17:43.514 --> 02:17:45.514
Oder wenn Donnerstag ein Feiertag war.

02:17:45.595 --> 02:17:47.155
Das ging, glaube ich, auch nicht um mich.

02:17:47.575 --> 02:17:53.655
Weil nämlich diese Einzelhandelskette, dann immer wenn die Geschäfte geschlossen waren,

02:17:54.355 --> 02:17:58.254
haben die Preisupdates und, was weiß ich, Warenwirtschaftsupdates gemacht.

02:17:58.375 --> 02:17:58.775
Ohne Ende.

02:17:58.875 --> 02:18:00.994
Aber auf der Datenbank, wenn die geschlossen waren,

02:18:00.994 --> 02:18:02.915
in die Geschäfte viel mehr los, als wenn die Geschäfte

02:18:02.915 --> 02:18:04.394
offen hatten und die ganzen Klassen liefen.

02:18:04.994 --> 02:18:07.155
Aber weil die ja die ganzen Ware aktualisieren

02:18:07.155 --> 02:18:08.555
mussten und weiß der Kuckuck,

02:18:08.735 --> 02:18:10.894
das lief dann durch und so kam das

02:18:10.894 --> 02:18:12.855
dann wirklich so für administrative

02:18:12.855 --> 02:18:14.875
Dinge, dass das wirklich mal down sein konnte,

02:18:14.994 --> 02:18:17.014
das System, da mussten schon mehrere

02:18:17.014 --> 02:18:18.795
Feiertage hintereinander folgen, damit

02:18:18.795 --> 02:18:20.355
das dann überhaupt nochmal einen Tag blieb,

02:18:20.475 --> 02:18:22.254
dass die dann zu hatten.

02:18:23.955 --> 02:18:24.855
Deswegen, das ist

02:18:24.855 --> 02:18:26.475
so was, man muss das vielleicht

02:18:26.475 --> 02:18:28.635
dokumentieren als Admin, dass man

02:18:28.635 --> 02:18:30.795
eine Downtime hat. Man kann

02:18:30.795 --> 02:18:32.735
die natürlich, man kann das

02:18:32.735 --> 02:18:34.595
geschickt machen, dass man nicht ganz so viel

02:18:34.595 --> 02:18:36.475
Downtime hat. Aber man hat

02:18:36.475 --> 02:18:38.435
eine Downtime und da kommt man nicht drum rum.

02:18:39.535 --> 02:18:40.535
Und so ohne Downtime,

02:18:40.575 --> 02:18:42.595
ganz ohne Downtime, dieses Hot-Upgrade,

02:18:42.715 --> 02:18:44.415
wie es so wunderschön bei Maria geht.

02:18:44.455 --> 02:18:46.494
Oder es ist halt nicht eingebaut, man muss es dann halt selber machen.

02:18:47.095 --> 02:18:48.535
Was? Man muss das dann ja vielleicht

02:18:48.535 --> 02:18:50.635
einfach selber machen. Ich meine, ich kann ja schon zwei Datenbanken

02:18:50.635 --> 02:18:52.635
offen haben und switche dann halt

02:18:52.635 --> 02:18:54.215
am Loadbalancer um, aber dann machen wir halt einen Loadbalancer an,

02:18:54.215 --> 02:18:55.055
wenn man das switchen kann.

02:18:55.754 --> 02:18:56.795
Das hat ja wahrscheinlich auch nicht jeder.

02:18:58.035 --> 02:18:59.894
Naja, ich kann ja sozusagen

02:18:59.894 --> 02:19:02.915
eine Postgres-Datenbank

02:19:02.915 --> 02:19:06.295
oder ich möchte die upgraden ohne Downtime,

02:19:06.375 --> 02:19:07.375
dann habe ich halt eine zweite.

02:19:08.775 --> 02:19:10.715
Dann muss ich auf der, die ich upgraden möchte,

02:19:10.915 --> 02:19:11.775
muss ich dann irgendwann sagen,

02:19:11.875 --> 02:19:12.915
okay, jetzt darf nicht mehr geschrieben werden.

02:19:12.915 --> 02:19:16.494
Dann muss die andere sozusagen so lange repliziert haben,

02:19:16.655 --> 02:19:17.555
bis es wieder da ist.

02:19:17.915 --> 02:19:19.014
Okay, ich habe eine kleine Downtime, stimmt.

02:19:19.394 --> 02:19:20.494
Und dann switch ich den Block dann ganz da um.

02:19:21.514 --> 02:19:22.994
Und du hast halt das Problem,

02:19:23.235 --> 02:19:27.435
dass du echte hohe Verfügbarkeit fängst ja bei drei Maschinen an,

02:19:27.754 --> 02:19:29.815
damit du, wenn eine ausfällt, immer noch zwei hast,

02:19:29.895 --> 02:19:30.754
und nie einer alleine.

02:19:31.514 --> 02:19:32.815
Du musst ja, wenn du jetzt

02:19:32.815 --> 02:19:35.855
einen Master und 10 Standbys,

02:19:36.155 --> 02:19:38.095
du kannst die nur alle zeitgleich upgraden.

02:19:39.234 --> 02:19:40.095
Was in der Regel

02:19:40.095 --> 02:19:42.075
dazu führt, dass du den Master upgradest

02:19:42.075 --> 02:19:44.275
und die Standbys neu aufsetzt auf der neuen Version.

02:19:44.435 --> 02:19:46.275
Aber du kannst ja nicht,

02:19:46.335 --> 02:19:47.875
weil die sind ja noch auf der alten Version,

02:19:47.974 --> 02:19:50.095
du kannst nicht in einer anderen Version replizieren.

02:19:50.514 --> 02:19:52.155
Das heißt, du musst deinen ganzen Cluster

02:19:52.155 --> 02:19:54.195
zeitgleich irgendwie, das heißt

02:19:54.195 --> 02:19:56.555
ganz häufig

02:19:56.555 --> 02:19:57.915
fängst du dann an, also meine

02:19:57.915 --> 02:19:59.815
Erfahrung ist, du fängst dann an, du machst dann einfach nur die

02:19:59.815 --> 02:20:01.575
eine, die Mastermaschine, die gradest du ab

02:20:01.575 --> 02:20:03.615
und die ganzen Standby setzte neu auf.

02:20:04.014 --> 02:20:05.875
Weil das ist schneller, es ist ganz

02:20:05.875 --> 02:20:06.655
häufig schneller.

02:20:07.754 --> 02:20:09.835
Nicht immer, manchmal willst du sie auch einzeln

02:20:09.835 --> 02:20:11.815
upgraden, aber ganz häufig

02:20:11.815 --> 02:20:13.635
ist es schneller, sie neu aufzusetzen, weil

02:20:13.635 --> 02:20:15.514
Aber kann man das nicht, ja,

02:20:15.855 --> 02:20:18.135
gut. Siehst du das Problem?

02:20:18.295 --> 02:20:19.535
So ein bisschen, ja, ja.

02:20:19.655 --> 02:20:19.994
Ich meine, gut.

02:20:21.234 --> 02:20:23.675
Also wie gesagt, du kannst mit einer, wenn du wirklich kein

02:20:23.675 --> 02:20:25.695
DDL hast und du weißt, diese Nacht kommt

02:20:25.695 --> 02:20:26.835
auch kein DDL rein.

02:20:26.835 --> 02:20:28.955
Ganz kurz auf Cache-Only stellen?

02:20:29.375 --> 02:20:31.195
Nein, auf logische, kannst du noch einen logischen

02:20:31.195 --> 02:20:33.115
Replikationsserver daneben stellen

02:20:33.115 --> 02:20:35.375
da kannst du auch von der niedrigeren in eine höhere

02:20:35.375 --> 02:20:36.715
replizieren und andersrum

02:20:36.715 --> 02:20:39.234
dass du dann erstmal logisch replizierst

02:20:39.234 --> 02:20:41.075
das braucht natürlich ein bisschen das aufzusetzen, das kannst du ja

02:20:41.075 --> 02:20:43.055
im laufenden Betrieb machen und

02:20:43.055 --> 02:20:44.855
dann fängst du an

02:20:44.855 --> 02:20:47.315
mit dem Upgrade

02:20:47.315 --> 02:20:49.635
dann hast du dann erstmal die logische Replikation

02:20:49.635 --> 02:20:50.775
die dann weitermacht

02:20:50.775 --> 02:20:52.595
da schreibst du rein

02:20:52.595 --> 02:20:55.215
und weil du ja logisch replizierst

02:20:55.215 --> 02:20:56.715
und damit kriegst du es dann ein wenig

02:20:56.715 --> 02:20:58.295
niedriger, die Downtime.

02:20:58.935 --> 02:21:00.435
Da musst du aber aufpassen, dass nicht

02:21:00.435 --> 02:21:02.974
zeitgleich deine Software ein Upgrade macht oder ähnliches.

02:21:03.815 --> 02:21:04.695
Wenn deine Software

02:21:04.695 --> 02:21:06.595
im normalen Tagesgebrauch

02:21:06.595 --> 02:21:08.335
kein DDL braucht, also ganz häufig

02:21:08.335 --> 02:21:10.575
DDL heißt Data Definition Language, das heißt alles,

02:21:10.715 --> 02:21:12.494
was mit Create, Alter und Drop

02:21:12.494 --> 02:21:14.335
zu tun hat oder Grant und Revoke,

02:21:14.435 --> 02:21:15.494
zählt da auch noch rein.

02:21:16.055 --> 02:21:18.535
Wirklich nur Insert, Update, Delete und

02:21:18.535 --> 02:21:19.895
Select machen, mehr nicht.

02:21:20.655 --> 02:21:22.195
Wenn du keine Creates hast

02:21:22.195 --> 02:21:24.355
im Tagesgebrauch, dann könntest du

02:21:24.355 --> 02:21:26.435
sowas machen, weil dann hast

02:21:26.435 --> 02:22:01.382
und Jochen unterhalten sich die Programmiersprache Python Manpower Ja das kann ich ja vorher machen Ich muss da leben dass der Republikations halt ein bisschen gr ist

02:22:02.302 --> 02:22:04.242
Du ziehst das aus dem selben Backup, genau.

02:22:04.622 --> 02:22:04.822
Genau.

02:22:05.482 --> 02:22:12.802
Ja, du kannst auch einfach den Datamonks-Server neu aufsetzen und dann aus dem Backup das ziehen und dann die Standbys dahinter. Dann hast du aber auch eine Downtime.

02:22:13.002 --> 02:22:14.622
Ja, so ein bisschen kommt immer vor.

02:22:14.642 --> 02:22:16.402
Ohne Darmteilen kommst du da nicht aus.

02:22:16.402 --> 02:22:18.402
und das ist halt...

02:22:18.402 --> 02:22:20.742
Okay, Datenmarkup, alles in Cache, dann wird der Cache

02:22:20.742 --> 02:22:21.002
dann...

02:22:21.002 --> 02:22:24.942
Wie gesagt, das ist was,

02:22:25.022 --> 02:22:26.362
da musst du dir wirklich Gedanken drum machen

02:22:26.362 --> 02:22:27.902
und das ist auch das große

02:22:27.902 --> 02:22:30.362
Aus, wenn ich

02:22:30.362 --> 02:22:32.422
so ein Business habe, ist das

02:22:32.422 --> 02:22:34.682
meiner Erfahrung nach das Aus für PostgreSQL,

02:22:34.822 --> 02:22:35.962
dann wird MariaDB genommen.

02:22:36.922 --> 02:22:38.382
Und das ist dann auch was, wo ich sage, wenn

02:22:38.382 --> 02:22:40.802
ihr wirklich da so auf 24-7

02:22:40.802 --> 02:22:41.882
online verfügbar,

02:22:42.742 --> 02:22:44.322
das sagt nicht nur ich, das

02:22:44.322 --> 02:22:46.282
sagen auch die großen Firmen, die haben alle

02:22:46.282 --> 02:22:47.582
in diesem Bereich MariaDB.

02:22:48.482 --> 02:22:49.982
Und das ist ja auch, weil

02:22:49.982 --> 02:22:52.022
es gab, Ericsson hat

02:22:52.022 --> 02:22:54.142
MySQL Cluster entwickelt.

02:22:54.482 --> 02:22:55.682
Das ist ein eigenes Produkt,

02:22:56.022 --> 02:22:58.162
das basiert auf MySQL. Das ist noch immer

02:22:58.162 --> 02:22:58.602
bei Oracle.

02:23:01.002 --> 02:23:02.102
Das war ursprünglich

02:23:02.102 --> 02:23:03.782
von Ericsson. Ericsson ist ja nun mal,

02:23:04.162 --> 02:23:05.402
ihr kennt die Firma Ericsson.

02:23:06.322 --> 02:23:08.422
Und der ganze Telefonie-

02:23:08.422 --> 02:23:09.622
Bereich hat das eingesetzt.

02:23:09.762 --> 02:23:11.822
Und dann kam dieser, wir werden jetzt Oracle.

02:23:13.222 --> 02:23:13.742
Und

02:23:13.742 --> 02:23:15.342
dann brauchten die

02:23:15.342 --> 02:23:37.802
und die Kunden ja plötzlich auch irgendwie was von Cluster und MySQL Cluster war sowieso schon Closed Source, glaube ich, aber ich weiß es nicht mehr genau, auf alle Fälle brauchten die was Neues und dann ist Galera entwickelt worden dafür und da sitzen die großen Telefonfirmen alle mit dahinter oder saßen anfangs, weiß ich nicht, ob immer noch so tief stecke ich jetzt bei MariaDB nicht mehr drin, aber

02:23:37.802 --> 02:23:40.142
und

02:23:40.142 --> 02:23:44.262
natürlich die großen anderen Firmen,

02:23:44.382 --> 02:23:46.362
die da auch alle mit drinstecken in dieser

02:23:46.362 --> 02:23:48.202
Entwicklung von MariaDB

02:23:48.202 --> 02:23:50.262
und die nutzen fast

02:23:50.262 --> 02:23:52.222
alle MariaDB eben halt wegen dieser

02:23:52.222 --> 02:23:53.102
Hochverfügbarkeit.

02:23:54.222 --> 02:23:55.962
Und die haben die auch teilweise mitentwickelt.

02:23:57.342 --> 02:23:58.382
Also da hat

02:23:58.382 --> 02:24:00.102
Google mit dran rum, beziehungsweise

02:24:00.102 --> 02:24:01.882
Google hat es eingesetzt, Facebook hat es eingesetzt,

02:24:02.002 --> 02:24:03.702
wobei das teilweise

02:24:03.702 --> 02:24:05.662
dieselbe Person war, aber

02:24:05.662 --> 02:24:07.722
die haben ja auch teilweise

02:24:07.722 --> 02:24:09.722
Code zurückgegeben, wenn die irgendwas

02:24:09.722 --> 02:24:11.522
hatten, ein Feature oder so, haben die das auch

02:24:11.522 --> 02:24:13.822
an MySQL, also an uns damals

02:24:13.822 --> 02:24:15.762
zurückgegeben. Und das

02:24:15.762 --> 02:24:17.602
wurde dafür entwickelt. Und da haben

02:24:17.602 --> 02:24:19.662
einfach alle anderen nicht aufgepasst.

02:24:20.262 --> 02:24:21.402
Da ist MySQL schon

02:24:21.402 --> 02:24:23.162
vor zehn Jahren und noch

02:24:23.162 --> 02:24:25.302
früher einfach an allen anderen

02:24:25.302 --> 02:24:26.782
sowas von vorbeigezogen.

02:24:27.562 --> 02:24:29.442
Und was bei Postgres passiert ist, Postgres

02:24:29.442 --> 02:24:31.462
kann wohl jetzt in einer Replikation genau das gleiche wie

02:24:31.462 --> 02:24:33.262
Oracle. Mittlerweile kann Oracle mehr.

02:24:33.582 --> 02:24:35.482
Weil Oracle hat ja mittlerweile auch kapiert, dass

02:24:35.482 --> 02:24:36.462
MySQL da mehr kann.

02:24:36.462 --> 02:24:38.482
und das ist ja ein und dasselbe

02:24:38.482 --> 02:24:40.662
und das echte MySQL liegt ja bei Oracle,

02:24:40.822 --> 02:24:41.542
das gehört ja Oracle.

02:24:42.322 --> 02:24:44.542
Meines Wissens, meine Info ist, dass Oracle

02:24:44.542 --> 02:24:46.582
mittlerweile auch ein bisschen weiter ist, aber Postgres hat

02:24:46.582 --> 02:24:48.642
mit dieser logischen Replikation einfach das

02:24:48.642 --> 02:24:50.662
entwickelt, was Oracle zu dem

02:24:50.662 --> 02:24:51.442
Zeitpunkt konnte.

02:24:52.562 --> 02:24:54.542
Und das war damals aber schon nicht das,

02:24:54.742 --> 02:24:56.622
was da draußen die Welt braucht.

02:24:57.442 --> 02:24:58.262
Und wenn

02:24:58.262 --> 02:25:00.982
du wirklich so ein 24-7-Business hast,

02:25:02.162 --> 02:25:03.062
in der Form

02:25:03.062 --> 02:25:04.342
würde ich dir immer sagen,

02:25:04.442 --> 02:25:05.282
MariaDB.

02:25:05.282 --> 02:25:35.262
Okay.

02:25:35.282 --> 02:25:35.902
zu setzen.

02:25:37.262 --> 02:25:38.162
Das wäre noch spannend.

02:25:38.942 --> 02:25:40.982
Nochmal, wenn ich PHP nutze, weil ich ja auch

02:25:40.982 --> 02:25:43.082
nicht so der Programmierer bin in PHP.

02:25:44.042 --> 02:25:45.502
Warum? Was für ein Grund gibt es für PHP?

02:25:45.942 --> 02:25:47.062
Keine Ahnung, aber

02:25:47.062 --> 02:25:48.762
dann würde ich dann auch eher

02:25:48.762 --> 02:25:49.962
einfach, weil

02:25:49.962 --> 02:25:53.162
Du musst auch mal die nächste Mal Django einsetzen

02:25:53.162 --> 02:25:53.962
oder Python.

02:25:58.062 --> 02:25:59.122
Ich habe mich mal irgendwie

02:25:59.122 --> 02:26:01.082
letztens wieder mit HTML rumgequält.

02:26:01.362 --> 02:26:03.122
War auch spannend, hat ich auch ewig nicht

02:26:03.122 --> 02:26:05.062
gemacht, aber nein.

02:26:05.282 --> 02:26:07.062
war jetzt ein Beispiel.

02:26:07.382 --> 02:26:09.942
Es ist so, genau wenn ich ein Tool

02:26:09.942 --> 02:26:10.302
habe,

02:26:11.802 --> 02:26:13.962
was ein Datenbanksystem braucht,

02:26:14.822 --> 02:26:15.682
ich nenne das große

02:26:15.682 --> 02:26:17.862
Web-Tool, was alle nutzen und

02:26:17.862 --> 02:26:19.702
keiner es mag, das McDonald's der

02:26:19.702 --> 02:26:21.842
Web-Tools. Keiner geht

02:26:21.842 --> 02:26:23.062
in, aber alle setzen es ein.

02:26:26.522 --> 02:26:27.762
Ich meine, du kannst

02:26:27.762 --> 02:26:29.582
das sogar mit beiden benutzen, aber

02:26:29.582 --> 02:26:31.722
das ist halt für MariaDB oder für MySQL

02:26:31.722 --> 02:26:33.722
entwickelt als erstes, dann würde

02:26:33.722 --> 02:26:35.222
ich auch auf MySQL aufsetzen.

02:26:35.282 --> 02:26:36.822
wenn ich es nutzen würde

02:26:36.822 --> 02:26:39.522
also das ist natürlich auch was

02:26:39.522 --> 02:26:41.582
auf welchem System ist das Tool

02:26:41.582 --> 02:26:43.582
als erstes entwickelt, das ist meistens auch

02:26:43.582 --> 02:26:45.682
das, womit es einfach nur

02:26:45.682 --> 02:26:46.942
optimaler läuft

02:26:46.942 --> 02:26:49.442
das liegt einfach auch

02:26:49.442 --> 02:26:51.442
daran, dass du als Entwickler natürlich auch nicht

02:26:51.442 --> 02:26:53.122
so tief reinguckst und du musst da halt

02:26:53.122 --> 02:26:55.762
die sind halt in bestimmten Dingen auch komplett anders

02:26:55.762 --> 02:26:57.762
und du müsstest das komplette SQL

02:26:57.762 --> 02:26:59.762
teilweise auch umschreiben und dann

02:26:59.762 --> 02:27:01.382
ja also

02:27:01.382 --> 02:27:03.202
es ist natürlich schön, dass die Tools sagen

02:27:03.202 --> 02:27:05.142
wir können mehrere Datenbanksysteme

02:27:05.142 --> 02:27:06.442
dass du es dir aussuchen kannst.

02:27:07.142 --> 02:27:08.982
Aber da ich ja beides sehr gut kenne

02:27:08.982 --> 02:27:11.242
und mir das dann im Endeffekt egal ist,

02:27:11.262 --> 02:27:12.942
welches eingesetzt wird, gucke ich dann

02:27:12.942 --> 02:27:15.022
meistens, okay, auf was wurde das Tool denn als

02:27:15.022 --> 02:27:16.502
erstes entwickelt und nehme das.

02:27:17.022 --> 02:27:18.822
Ich weiß gar nicht, bei Django ist es glaube ich auch

02:27:18.822 --> 02:27:19.642
Maria die Idee.

02:27:20.202 --> 02:27:21.522
Das war von Anfang an Postgres.

02:27:22.582 --> 02:27:24.022
Nee, das war irgendein anderes Tool.

02:27:25.242 --> 02:27:27.042
Bei Ruby und Rails war es am Anfang

02:27:27.042 --> 02:27:28.042
MySQL.

02:27:29.242 --> 02:27:31.122
Das würde ich tatsächlich auch mit Postgres

02:27:31.122 --> 02:27:33.122
nutzen. Heutzutage macht das kaum

02:27:33.122 --> 02:27:33.482
noch jemand.

02:27:35.142 --> 02:27:38.662
und Ruby on Rails mit MariaDB benutzt.

02:27:38.782 --> 02:27:41.842
Also es geht zwar wohl auch, bei Django geht es auch,

02:27:41.922 --> 02:27:43.082
aber das machen halt wenige Leute.

02:27:43.402 --> 02:27:44.862
Und ich glaube, ich habe gehört,

02:27:45.022 --> 02:27:48.222
der Grund für den Schwenk bei vielen war Heroku.

02:27:48.722 --> 02:27:51.182
Heroku hat von Anfang an eigentlich dann auf Postgres gesetzt

02:27:51.182 --> 02:27:54.142
und dann war das halt so der Default.

02:27:54.322 --> 02:27:55.942
Und die meisten haben ihre Ruby on Rails-Geschichten

02:27:55.942 --> 02:27:56.842
bei Heroku laufen lassen

02:27:56.842 --> 02:27:58.662
und dann ist das halt sich da so eingebürgert.

02:27:59.062 --> 02:28:02.082
Aber da gab es halt so einen Schwenk quasi von MariaDB

02:28:02.082 --> 02:28:05.042
oder MySQL, also damals war es MySQL, auf Postgres.

02:28:05.142 --> 02:28:35.122
und

02:28:35.142 --> 02:29:05.122
und Jochen unterhalten sich über die Programmiersprache Python

02:29:05.142 --> 02:29:07.162
anders, so wie ich denke.

02:29:07.742 --> 02:29:09.002
Und teilweise

02:29:09.002 --> 02:29:11.082
mache ich es dann noch dichter, also wenn dann

02:29:11.082 --> 02:29:13.182
irgendein User gebraucht wird,

02:29:13.282 --> 02:29:15.122
also ganz schlimm ist, wenn Superuser gebraucht wird,

02:29:15.262 --> 02:29:17.162
grundsätzlich erstmal ohne Superuser,

02:29:17.702 --> 02:29:19.302
weil Superuser sollte man ja

02:29:19.302 --> 02:29:20.902
jetzt nicht unbedingt für so ein Tool nutzen.

02:29:22.582 --> 02:29:22.982
Und

02:29:22.982 --> 02:29:23.802
ja,

02:29:25.142 --> 02:29:27.182
aber das sind so die ganz großen

02:29:27.182 --> 02:29:29.042
Unterschiede, wo ich jetzt wirklich diese zwei

02:29:29.042 --> 02:29:30.922
Unterschiede, also wenn ich wirklich in dem ganz tiefen

02:29:30.922 --> 02:29:32.682
Hochverfügbarheitsbereich bin, würde ich

02:29:32.682 --> 02:29:35.122
MariaDB nehmen, auch wenn ich im GIS-

02:29:35.122 --> 02:30:05.102
und Jochen unterhalten sich über die Programmiersprache Python

02:30:05.122 --> 02:30:07.002
natürlich auch noch. Und wenn du natürlich sagst, du willst das

02:30:07.002 --> 02:30:09.022
weiterverkaufen, da frage ich dich, was

02:30:09.022 --> 02:30:10.342
willst du für ein Betriebssystem haben?

02:30:10.782 --> 02:30:13.262
Da bin ich dann sowieso diejenige,

02:30:13.362 --> 02:30:14.942
die das gar nicht mehr entscheiden muss, weil

02:30:14.942 --> 02:30:16.602
dann sind die schon am Betriebssystem vorher

02:30:16.602 --> 02:30:18.302
normalerweise.

02:30:19.422 --> 02:30:20.182
Ja, stimmt, ja.

02:30:20.482 --> 02:30:23.082
Das habe ich gar nicht mehr. Ich würde

02:30:23.082 --> 02:30:25.002
beide niemals auf

02:30:25.002 --> 02:30:26.442
irgendwie Windows laufen lassen.

02:30:27.802 --> 02:30:29.242
Das ist auch noch sowas,

02:30:29.322 --> 02:30:31.062
da hat man mal vor vielen Jahren

02:30:31.062 --> 02:30:33.002
Tests gemacht. Nicht ich,

02:30:33.002 --> 02:30:34.442
sondern viele große Firmen.

02:30:35.122 --> 02:30:36.942
Die haben dieselbe

02:30:36.942 --> 02:30:38.142
Hardware genommen

02:30:38.142 --> 02:30:41.202
und haben dann geguckt, weil da kommt es immer

02:30:41.202 --> 02:30:43.182
darauf an, wie viel in 5 Minuten auf die Festplatte

02:30:43.182 --> 02:30:44.702
gespeichert werden kann. Also wie viel

02:30:44.702 --> 02:30:47.362
RAM auf die Festplatte ausgespült werden

02:30:47.362 --> 02:30:49.182
kann. Also wie viel aus dem Cache

02:30:49.182 --> 02:30:51.202
auf die Platte kommt und da gibt es dann immer noch

02:30:51.202 --> 02:30:53.042
diese 5 Minuten Regel und

02:30:53.042 --> 02:30:55.242
die haben dann also mit ganz ganz

02:30:55.242 --> 02:30:57.562
vielen Tests festgestellt, bei Linux

02:30:57.562 --> 02:30:59.262
war das im Schnitt damals bei

02:30:59.262 --> 02:30:59.922
8 GB

02:30:59.922 --> 02:31:03.222
und bei Windows 512 MB.

02:31:05.122 --> 02:31:11.382
und das Problem ist das Journaling, was Windows mitbringt, was das wohl so langsam macht.

02:31:11.642 --> 02:31:18.162
Und es ist auch tatsächlich so, das ist mir mal aufgefallen, du hast gesagt, du hast nur Apple-Hardware, darf ich das sagen?

02:31:18.702 --> 02:31:20.142
Ja, nicht ausschließlich, aber irgendwie.

02:31:20.382 --> 02:31:27.582
Aber wie gesagt, die Chinesen haben beim WTCF jetzt festgestellt, ich habe 675 Anschläge.

02:31:27.582 --> 02:31:33.542
Das ist ein Wahnsinn. Wenn du das mit Mac und dem LibreOffice machst, dann kann das noch zeitgleich mitschreiben.

02:31:33.542 --> 02:31:36.062
beim Windows und Word

02:31:36.062 --> 02:31:38.582
kann ich dann warten, bis mein Text angezeigt wird.

02:31:40.462 --> 02:31:42.042
Das ist tatsächlich so,

02:31:42.202 --> 02:31:43.862
das habe ich jetzt gerade ausprobiert,

02:31:44.202 --> 02:31:44.362
aber

02:31:44.362 --> 02:31:48.162
man merkt es halt nicht, weil die ganzen

02:31:48.162 --> 02:31:50.122
Leute, die Microsoft

02:31:50.122 --> 02:31:51.062
nutzen,

02:31:52.722 --> 02:31:54.162
die merken gar nicht, wie langsam

02:31:54.162 --> 02:31:56.282
Office ist, weil sie ja

02:31:56.282 --> 02:31:57.162
nichts anderes kennen.

02:31:58.222 --> 02:32:00.322
Wenn du denen dann wirklich mal so intensiv

02:32:00.322 --> 02:32:02.082
ein LibreOffice gibst, erst danach merken sie,

02:32:02.082 --> 02:32:32.062
und Jochen unterhalten sich über die Programmiersprache Python

02:32:32.082 --> 02:32:59.009
schreiben Also zum Beispiel das ist ein Fall den ich immer beeindrucken finde da gibt es auch lange Artikel dar der Stack von Stack Overflow Stack Overflow war ich wei nicht ob es jetzt immer noch sind aber lange auch unter den Top 10 Seiten der Welt und das l in einem halben Rack Und das zentrale St Infrastruktur ist dann MS SQL Server Und das geht wohl auch sehr schnell wenn man das richtig macht Aber das ist halt auch nicht so einfach Da musst du halt entsprechend administrieren und da musst du halt gucken Nur das ist halt immer das was so meine

02:32:59.009 --> 02:33:00.429
Information dazu ist.

02:33:01.549 --> 02:33:03.209
Jetzt habe ich aber auch die Kunden,

02:33:03.329 --> 02:33:05.289
die ich betreue, die haben meistens noch Linux-Server.

02:33:06.009 --> 02:33:07.149
Sogar meistens,

02:33:07.229 --> 02:33:08.769
entweder haben sie ein CentOS oder sie haben

02:33:08.769 --> 02:33:10.909
ein Debian oder ein Ubuntu. Das kann ich auch

02:33:10.909 --> 02:33:12.949
meistens nur einschränken. So sehe ich

02:33:12.949 --> 02:33:14.869
ganz, ganz selten und irgendwas

02:33:14.869 --> 02:33:16.569
anderes Linux-mäßiges auch nicht.

02:33:17.169 --> 02:33:21.049
Das tut sich so, das echte Debian, das Ubuntu und dann CentOS.

02:33:21.349 --> 02:33:22.689
Dann Reel vielleicht noch?

02:33:22.989 --> 02:33:23.209
Was?

02:33:23.369 --> 02:33:24.189
Rated Enterprise.

02:33:26.189 --> 02:33:26.749
Selten.

02:33:27.009 --> 02:33:27.209
Okay.

02:33:28.509 --> 02:33:28.989
Selten.

02:33:29.729 --> 02:33:30.789
Tatsächlich selten.

02:33:32.169 --> 02:33:35.169
Da hast du ja auch das Problem mit Pakete nachladen.

02:33:35.249 --> 02:33:36.269
Ich weiß es nicht so genau.

02:33:36.789 --> 02:33:41.969
Ich hatte mal einmal einen Kunden mit Rated Enterprise, da mussten wir was nachinstallieren.

02:33:42.309 --> 02:33:44.389
Die CD lag 300 Kilometer entfernt.

02:33:44.829 --> 02:33:46.049
Das war auch sehr lustig.

02:33:46.049 --> 02:33:48.269
und so, weil eben

02:33:48.269 --> 02:33:50.349
wir ziehen uns das von irgendeinem FDP, gab's

02:33:50.349 --> 02:33:50.689
nicht.

02:33:53.149 --> 02:33:54.689
Das war auch sehr lustig,

02:33:54.929 --> 02:33:56.389
aber ja, das

02:33:56.389 --> 02:33:58.129
kann halt ja natürlich auch noch passieren, Red Hat

02:33:58.129 --> 02:33:59.989
Enterprise, aber du hast halt selten

02:33:59.989 --> 02:34:02.309
Suse und alles andere, Gentoo und was es da

02:34:02.309 --> 02:34:03.409
alles gibt, hast du auch

02:34:03.409 --> 02:34:05.049
so gut wie gar nicht.

02:34:05.729 --> 02:34:06.929
Du hast ja eher so Privatanbinder.

02:34:07.329 --> 02:34:09.989
Was ich jetzt gehört habe, was wohl wieder im Kommen ist, ist

02:34:09.989 --> 02:34:10.429
BSD.

02:34:12.049 --> 02:34:13.770
Ich glaube, das war auch schon mal,

02:34:13.770 --> 02:34:15.369
es gab immer Leute, die das lieber gemacht haben,

02:34:15.369 --> 02:34:17.609
gerade für irgendwie wegen ZFS und so.

02:34:18.609 --> 02:34:19.349
Ja, wobei das

02:34:19.349 --> 02:34:21.589
ZFS bringt nichts. Das hat man

02:34:21.589 --> 02:34:23.210
auch getestet. Also es ist immer noch

02:34:23.210 --> 02:34:25.290
XFS oder du kannst auch X4 nehmen.

02:34:26.429 --> 02:34:27.510
ZFS bringt gar

02:34:27.510 --> 02:34:29.169
nichts bei Datenbanken. Das hat man gedacht.

02:34:29.169 --> 02:34:30.230
Bei Datenbanken, ja, ja.

02:34:30.369 --> 02:34:31.849
Reiser-FS finde ich auch nicht.

02:34:34.849 --> 02:34:35.290
BTRF,

02:34:35.649 --> 02:34:37.270
das Butter-FS, auch nicht.

02:34:37.409 --> 02:34:38.349
Was du da immer...

02:34:38.349 --> 02:34:40.809
War das nicht jemand, der jemand

02:34:40.809 --> 02:34:41.730
umgebracht hat?

02:34:42.409 --> 02:34:42.849
Was?

02:34:42.849 --> 02:34:45.169
Ja, Hans Weiser

02:34:45.169 --> 02:34:46.389
hatte die Vase

02:34:46.389 --> 02:34:48.889
Ja, der ist tatsächlich

02:34:48.889 --> 02:34:51.129
im Gefängnis gelandet, weil er seine Frau umgebracht hat

02:34:51.129 --> 02:34:52.349
Aber, ja

02:34:52.349 --> 02:34:54.710
Das sagt jetzt ja noch nicht nur die Qualität

02:34:54.710 --> 02:34:56.270
vom Verteilssystem

02:34:56.270 --> 02:34:58.989
Nein, also tatsächlich ist meine

02:34:58.989 --> 02:35:00.489
Ich weiß, es gibt

02:35:00.489 --> 02:35:02.429
ganz viele Microsofts, aber

02:35:02.429 --> 02:35:05.169
tatsächlich bin ich in der Linux-Welt unterwegs

02:35:05.169 --> 02:35:05.669
und

02:35:05.669 --> 02:35:09.069
mich buchen auch komisch, aber es sind meistens die Leute

02:35:09.069 --> 02:35:10.289
die einen Linux-Server haben

02:35:10.289 --> 02:35:13.010
auch Migration, da habe ich auch

02:35:13.010 --> 02:35:15.069
mit Linux, natürlich musst du

02:35:15.069 --> 02:35:16.789
das Betriebssystem auch noch ein bisschen tunen

02:35:16.789 --> 02:35:18.069
das machen wir dann ja auch

02:35:18.069 --> 02:35:21.050
bei Linux, ja, das ist auch

02:35:21.050 --> 02:35:22.869
völlig egal, welches Betriebssystem, also ob du da

02:35:22.869 --> 02:35:25.050
welche Distributionen du da hast, das ist ein Linux

02:35:25.050 --> 02:35:25.849
und gut

02:35:25.849 --> 02:35:28.609
das ist nur was ich immer

02:35:28.609 --> 02:35:30.849
ich kenne mich natürlich, weil ich

02:35:30.849 --> 02:35:32.609
aus der Debian-Ecke komme

02:35:32.609 --> 02:35:34.869
natürlich mit Debian und Ubuntu am besten aus

02:35:34.869 --> 02:35:38.729
das heißt, da weiß ich, wo ich

02:35:38.729 --> 02:36:08.709
und Jochen unterhalten sich über die Programmiersprache Python

02:36:08.729 --> 02:36:10.229
habe und das rate ich auch.

02:36:10.949 --> 02:36:12.409
Bei MariaDB gibt es

02:36:12.409 --> 02:36:13.510
ganz cool

02:36:13.510 --> 02:36:17.270
auf der Download-Seite

02:36:17.270 --> 02:36:18.949
da gibt es ein Tool, das ist nur ganz klein

02:36:18.949 --> 02:36:20.809
verlinkt. Da kann man dann angeben,

02:36:20.889 --> 02:36:22.869
was für ein Betriebssystem man hat und welche Version

02:36:22.869 --> 02:36:24.709
von MariaDB und dann kriegt man eine

02:36:24.709 --> 02:36:26.789
Anleitung. Da kann man auch angeben,

02:36:26.869 --> 02:36:28.669
von welchem Mirror man das ziehen will und dann kriegt man

02:36:28.669 --> 02:36:30.770
eine Anleitung, wie man das dann mal eben installieren

02:36:30.770 --> 02:36:32.829
kann, sodass es dann auch, wenn

02:36:32.829 --> 02:36:34.510
man das Betriebssystem upgradet

02:36:34.510 --> 02:36:36.729
oder updatet, auch upgedatet

02:36:36.729 --> 02:36:38.249
wird, also die Minor-Updates mitfährt.

02:36:38.249 --> 02:36:40.209
und bei Postgres gibt es das ähnlich.

02:36:41.149 --> 02:36:42.270
Und wenn man jetzt sagt, okay,

02:36:42.369 --> 02:36:44.329
das Betriebssystem, ich habe jetzt ein LTS und das

02:36:44.329 --> 02:36:46.369
hat jetzt doch ein sehr altes Datenbanksystem, ich will

02:36:46.369 --> 02:36:48.409
da ein neueres draufnehmen, dann nehme ich halt

02:36:48.409 --> 02:36:50.530
diese Pakete und die werden dann passend

02:36:50.530 --> 02:36:52.469
mit bei Debian in die Sourceslisten

02:36:52.469 --> 02:36:54.429
eingefügt und dann kommt dann

02:36:54.429 --> 02:36:56.309
bei jedem Update, was ich auf dem Betriebssystem

02:36:56.309 --> 02:36:56.729
mache,

02:36:58.109 --> 02:37:00.469
wenn ich da Security Fixes oder so habe

02:37:00.469 --> 02:37:02.709
bei den beiden, dann werden die gleich automatisch

02:37:02.709 --> 02:37:04.349
mit geupdatet. Also man soll das nicht

02:37:04.349 --> 02:37:06.530
mehr selbst kompilieren.

02:37:06.530 --> 02:37:08.869
so wie früher, machen wir auch in den Schulungen

02:37:08.869 --> 02:37:10.629
nicht mehr. Schön auf Nixos.

02:37:10.989 --> 02:37:12.389
Was? Schön auf Nixos.

02:37:13.069 --> 02:37:14.449
Also ja, du kannst bei mir auch noch,

02:37:14.510 --> 02:37:16.489
ich erkläre dir auch gerne, wie du es kompilierst

02:37:16.489 --> 02:37:18.609
oder wie du da auch noch diverse Sachen, die du

02:37:18.609 --> 02:37:20.609
beim Kompilieren einstellen kannst.

02:37:21.329 --> 02:37:22.770
Wenn du sowas machst

02:37:22.770 --> 02:37:24.469
auf ganz kleiner Hardware, das

02:37:24.469 --> 02:37:26.569
passiert so alle Jubiläare mal, dass ich

02:37:26.569 --> 02:37:27.969
mal angefragt werde für

02:37:27.969 --> 02:37:30.789
Postgref aus extrem kleiner Hardware

02:37:30.789 --> 02:37:31.969
auf irgendwelchen Geräten,

02:37:32.969 --> 02:37:34.489
die dann doch sehr klein sind, wo du dann

02:37:34.489 --> 02:37:37.109
irgendwelche Variablen in C noch ändern muss.

02:37:37.589 --> 02:37:38.589
Nichts, was er sich gerade ist,

02:37:38.669 --> 02:37:40.429
ist Service MySQL in Abletrue, damit man

02:37:40.429 --> 02:37:41.569
mir die ADB laufen lassen kann.

02:37:43.309 --> 02:37:43.809
Interessant, ja.

02:37:45.349 --> 02:37:46.629
Ja, Python

02:37:46.629 --> 02:37:48.569
hat da so ein Problem. Python zu installieren ist

02:37:48.569 --> 02:37:50.449
immer nach wie vor schwierig oder wüsste ich jetzt keinen

02:37:50.449 --> 02:37:52.649
Standardweg, wie das geht. Auch wenn ich

02:37:52.649 --> 02:37:54.329
Python installiere oder halt so produktiv,

02:37:55.389 --> 02:37:56.709
also Desktop gibt es vielleicht noch

02:37:56.709 --> 02:37:58.069
andere Möglichkeiten, aber wenn ich es irgendwo auf dem Server

02:37:58.069 --> 02:38:00.649
kopiere, ist das tatsächlich momentan auch noch selber, weil

02:38:00.649 --> 02:38:02.349
es gibt keine gute Alternative.

02:38:02.349 --> 02:38:03.629
Ja.

02:38:03.989 --> 02:38:06.629
Der ist ja noch total abhängig davon, was seine Umgebung hat.

02:38:07.789 --> 02:38:08.569
Reicht es nicht,

02:38:08.689 --> 02:38:10.369
was das Betriebssystem mitbringt?

02:38:10.489 --> 02:38:11.770
Naja, Debian macht es kaputt.

02:38:12.369 --> 02:38:14.149
Debian macht es leider völlig kaputt. Echt?

02:38:14.349 --> 02:38:14.510
Ja.

02:38:16.510 --> 02:38:17.609
Ja, das ist

02:38:17.609 --> 02:38:20.050
eines der ungelösteren Probleme,

02:38:20.209 --> 02:38:21.629
in dem man gucken muss, ob da was passiert.

02:38:22.550 --> 02:38:23.909
Ja, weil eigentlich will man das halt

02:38:23.909 --> 02:38:25.309
virtualisiert auch haben, das Python.

02:38:25.469 --> 02:38:27.809
Man will ja quasi immer nur sein eigenes nutzen und nicht das System Python.

02:38:28.809 --> 02:38:30.169
Weil da sonst komische Sachen passieren

02:38:30.169 --> 02:38:31.829
und dann muss man das eigentlich immer neu

02:38:31.829 --> 02:38:32.789
irgendwo herbekommen.

02:38:33.289 --> 02:38:33.689
Uff.

02:38:35.329 --> 02:38:35.689
Ja, ja.

02:38:35.989 --> 02:38:37.770
Auch bei Django und Co.?

02:38:37.770 --> 02:38:38.270
Ja, ja, klar.

02:38:39.149 --> 02:38:39.510
Genau.

02:38:40.829 --> 02:38:42.550
Das ist dann aber aufwendig.

02:38:43.050 --> 02:38:44.729
Ja, die tollen Story

02:38:44.729 --> 02:38:46.389
ist da so ein bisschen ungelöst,

02:38:46.489 --> 02:38:48.409
ein ungelöstes Problem. Das ist ein bisschen schwierig.

02:38:49.309 --> 02:38:50.369
Ja, es gibt da so Tooltür,

02:38:50.469 --> 02:38:52.249
wie PyEnv oder sowas, dann sagst du einfach, was du hast.

02:38:52.530 --> 02:38:54.389
Aber du musst halt wieder ein extra Tool installieren, was dann halt

02:38:54.389 --> 02:38:56.349
dafür sorgt, dass du dann die jeweilige Version hast und so.

02:38:57.849 --> 02:38:58.109
Ja.

02:38:59.109 --> 02:39:00.249
Wir sagen einfach immer,

02:39:00.249 --> 02:39:02.349
Also da sind die wirklich beide sehr, sehr gut,

02:39:02.489 --> 02:39:04.249
was das angeht, gerade auch so den

02:39:04.249 --> 02:39:06.329
Support für die ganzen Linux-Systeme

02:39:06.329 --> 02:39:08.249
und Distributionen. Du kriegst das natürlich

02:39:08.249 --> 02:39:10.369
jetzt, ich habe das jetzt vorhin mal eben schnell

02:39:10.369 --> 02:39:11.709
für Debian erklärt,

02:39:12.249 --> 02:39:13.869
eben halt, weil das war ja auswendig, aber

02:39:13.869 --> 02:39:16.050
du kannst dann auch, in dem Weg,

02:39:16.189 --> 02:39:18.129
was habe ich für ein Linux, kannst du auch

02:39:18.129 --> 02:39:19.849
Red Hat Enterprise angucken oder

02:39:19.849 --> 02:39:22.270
CenterOS oder so. Du kriegst das genau

02:39:22.270 --> 02:39:24.010
erklärt, du kannst es per Copy und Paste

02:39:24.010 --> 02:39:26.189
einfach in deine Shell packen. Hast du die URL

02:39:26.189 --> 02:39:27.469
gerade im Kopf? Was?

02:39:27.469 --> 02:39:29.429
Für MariaDB?

02:39:29.429 --> 02:39:59.409
und Jochen unterhalten sich über die Programmiersprache Python

02:39:59.429 --> 02:40:13.689
download.mariadb.org

02:40:13.689 --> 02:40:15.550
So, genau da.

02:40:15.729 --> 02:40:18.109
Und da hast du...

02:40:18.109 --> 02:40:19.709
Wo ist denn das? Hier auf der Handy-Version.

02:40:19.789 --> 02:40:20.849
Das ist natürlich auch super, ne?

02:40:20.849 --> 02:40:21.449
Ja, natürlich.

02:40:22.989 --> 02:40:23.770
I'm sorry.

02:40:25.909 --> 02:40:27.609
Wie heißt denn dieses Tool?

02:40:27.849 --> 02:40:29.069
Ich gucke es uns einfach später nach.

02:40:29.069 --> 02:40:30.869
Ich glaube, das können wir ja vielleicht so nachlesen.

02:40:30.869 --> 02:40:31.889
Genau, das kann ich euch noch.

02:40:32.569 --> 02:40:35.449
In der normalen hätte ich das jetzt,

02:40:35.629 --> 02:40:37.510
aber es kann auch sein, dass sie die Webseite geändert haben.

02:40:37.829 --> 02:40:39.409
Da gibt es jedenfalls ein Configuration-Tool.

02:40:39.649 --> 02:40:40.510
Das heißt auch irgendwie

02:40:40.510 --> 02:40:43.789
Download Configuration Tool oder so ähnlich.

02:40:44.689 --> 02:40:46.609
Und dann kannst du das so anklicken.

02:40:46.689 --> 02:40:48.050
Das ist total cool eigentlich.

02:40:48.729 --> 02:40:50.209
Und genau.

02:40:51.469 --> 02:40:54.309
Ja, auf Mac habe ich tatsächlich noch nie.

02:40:55.629 --> 02:40:57.229
Ich habe das mal installiert.

02:40:57.229 --> 02:41:02.389
Ich weiß nicht mehr, welches schlimmer war als das andere. Eins wollte glaube ich gar nicht.

02:41:03.649 --> 02:41:06.169
Also das war bei beiden nicht so das Gelbe vom Ei.

02:41:06.369 --> 02:41:10.329
Würde ich jetzt auf Mac nicht betreiben. Weder das eine noch das andere.

02:41:12.069 --> 02:41:12.989
Also ich...

02:41:12.989 --> 02:41:18.889
Ja, quasi produktiv sowieso nicht, aber zum Entwickeln geht beides ganz gut.

02:41:19.109 --> 02:41:21.909
Ich habe nicht so viel Erfahrung mit MariaDB, aber

02:41:21.909 --> 02:41:24.129
das mal probiert hat es schon funktioniert.

02:41:24.129 --> 02:41:25.409
aber ja.

02:41:25.409 --> 02:41:27.309
Du kannst es beides irgendwie hin,

02:41:27.329 --> 02:41:28.050
das zu installieren.

02:41:30.010 --> 02:41:31.389
Ich mache das dann tatsächlich,

02:41:31.550 --> 02:41:33.089
dass ich das irgendwo auf dem Server packe.

02:41:35.289 --> 02:41:37.050
Aber ich auch tatsächlich mit dem Mac nicht

02:41:37.050 --> 02:41:39.089
entwickle. Also da habe ich tatsächlich noch

02:41:39.089 --> 02:41:41.129
ein Thinkpad und ein Linux und

02:41:41.129 --> 02:41:42.010
eine Shell und

02:41:42.010 --> 02:41:47.129
das ist von der Tastatur auch etwas gruselig

02:41:47.129 --> 02:41:48.229
programmieren auf dem Mac.

02:41:48.329 --> 02:41:51.189
Ja, oder sagen wir mal, das war eine ganze Zeit lang

02:41:51.189 --> 02:41:51.769
total kaputt.

02:41:54.129 --> 02:41:56.570
Ich bin in dieses Problem auch reingelaufen, das war furchtbar.

02:41:56.629 --> 02:42:00.669
Mit dieser schönen F-Bar, die dann irgendwie ausgeblendet zum Scrollen...

02:42:00.669 --> 02:42:02.149
Ja, es gab diverse Probleme.

02:42:02.349 --> 02:42:06.010
Die Touchbar hatte das Problem, es gab keine S-Tab-Taste mehr, das war hoher.

02:42:06.829 --> 02:42:09.949
Und gerade als wir Ayguza, muss ich sagen, fand ich nicht so gut.

02:42:11.010 --> 02:42:13.189
War eher so mittel.

02:42:13.709 --> 02:42:16.189
Und eine andere Geschichte, die halt auch total nervig war,

02:42:16.189 --> 02:42:23.269
ist halt, dass von 2016 bis 2021 oder 2020,

02:42:23.269 --> 02:42:38.589
und das war halt, ja, um das zu lösen, muss das Mainboard getauscht werden, das heißt,

02:42:38.589 --> 02:42:41.030
man muss damit irgendwie irgendwo hin, da muss das eingeschickt werden, lautet das eine

02:42:41.030 --> 02:42:44.510
Woche und wer mal darauf angewiesen ist, dass Rechner funktionieren, ist das natürlich

02:42:44.510 --> 02:42:45.809
eher auch ungut.

02:42:47.229 --> 02:42:50.429
Aber wisst ihr was, ich glaube, über Mac-Hardware reden wir ja gleich bei einem Getränk weiter

02:42:50.429 --> 02:42:52.889
und wir haben heute richtig viel

02:42:52.889 --> 02:42:54.329
gelernt über Datenmachung. Danke für das.

02:42:54.570 --> 02:42:55.949
Ja. Das war echt super.

02:42:56.809 --> 02:42:57.070
War gut.

02:42:58.209 --> 02:43:00.550
Ich würde sagen, wir haben alles besprochen.

02:43:01.030 --> 02:43:02.669
Die Pics der Woche lassen wir heute weg,

02:43:02.729 --> 02:43:03.510
Jochen, oder was sagst du?

02:43:04.889 --> 02:43:06.629
Eine Geschichte würde ich vielleicht noch

02:43:06.629 --> 02:43:07.929
ganz nett,

02:43:08.349 --> 02:43:10.789
wenn man so ein bisschen

02:43:10.789 --> 02:43:12.789
grafischer das mag, zu sehen,

02:43:12.889 --> 02:43:14.149
wo man eventuell Performance-Probleme hat.

02:43:14.149 --> 02:43:16.209
Da gibt es für Postkisten ein schönes

02:43:16.209 --> 02:43:18.010
kommerzielles Tool, pgMustard.

02:43:18.629 --> 02:43:19.669
Kann sich mal angucken.

02:43:20.429 --> 02:43:22.309
und sonst, ja, was ich nicht...

02:43:22.309 --> 02:43:24.209
Also ja, ich hätte irgendwie noch, ich mache ja gerne dann

02:43:24.209 --> 02:43:25.949
Modelle irgendwie mit Pydentic, der man irgendwie

02:43:25.949 --> 02:43:27.989
wegschreibt und weil das zwischendurch ein bisschen langsam war, weil

02:43:27.989 --> 02:43:30.369
so pur Python dann schon manchmal Probleme haben kann,

02:43:30.729 --> 02:43:32.489
gibt es Pydentic Core, das ist in Rust

02:43:32.489 --> 02:43:34.389
gecodet, das macht das Ganze deutlich schneller.

02:43:35.929 --> 02:43:36.109
Ja.

02:43:36.749 --> 02:43:37.389
Das vielleicht noch.

02:43:38.050 --> 02:43:39.889
Ja, dann vielen Dank fürs Zuhören, dass ihr eingeschaltet habt.

02:43:39.989 --> 02:43:41.229
Vielen Dank, dass du da warst nochmal, Sanne.

02:43:41.729 --> 02:43:43.929
Wir bleiben uns bewogen, schaltet uns mal wieder ein und

02:43:43.929 --> 02:43:46.129
alle Feedback, Kritik, Anregungen an

02:43:46.129 --> 02:43:47.510
hallo.pythonpodcast.de

02:43:47.510 --> 02:43:49.229
Tschüss, bis zum nächsten Mal.
