WEBVTT

00:00:00.000 --> 00:00:04.140
Ja, hallo liebe Hörer und Hörer, herzlich willkommen beim Paisen-Podcast, Episode 43.

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

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

00:00:15.060 --> 00:00:15.880
Hallo Dominik.

00:00:16.060 --> 00:00:16.820
Ich bin der Dominik.

00:00:17.220 --> 00:00:18.380
Und die Susanne ist heute dabei.

00:00:18.640 --> 00:00:20.060
Hallo Dominik, hallo Jochen.

00:00:20.240 --> 00:00:20.760
Hallo Susanne.

00:00:21.760 --> 00:00:23.160
Ja, haben wir News?

00:00:23.640 --> 00:00:24.700
Wir starten immer mit News.

00:00:24.700 --> 00:00:30.460
Wir starten immer mit ein bisschen News und ja, es war nicht so wahnsinnig viel.

00:00:31.020 --> 00:00:34.880
Ich weiß nicht, ich kann ja einfach mal so erzählen, was ich irgendwie für bemerkenswert halte irgendwie.

00:00:36.080 --> 00:00:38.000
Was in der letzten Zeit so passiert ist.

00:00:39.460 --> 00:00:43.820
Ja, ich mache hier schon mal die Kapitelmarken, dann spare ich mir ein bisschen Zeit.

00:00:43.960 --> 00:00:44.900
Das hilft wahrscheinlich auch nicht.

00:00:46.100 --> 00:00:48.580
Genau, ja, also was ist alles so irgendwie passiert?

00:00:49.720 --> 00:00:54.200
Zum Beispiel, es gibt jetzt irgendwie PyTorch für Apple, für M1.

00:00:54.700 --> 00:00:56.620
optimiert. Also es ist halt noch nicht so schnell,

00:00:56.740 --> 00:00:58.200
also es ist auch noch nicht wirklich vergleichbar

00:00:58.200 --> 00:01:00.340
mit Nvidia.

00:01:02.120 --> 00:01:02.400
Aber

00:01:02.400 --> 00:01:04.720
tatsächlich geht da so ein bisschen was in die Richtung.

00:01:04.840 --> 00:01:06.520
Also vorher konnte man schon ein bisschen was machen mit PlateML,

00:01:07.280 --> 00:01:08.800
aber jetzt gibt's

00:01:08.800 --> 00:01:10.740
halt auch tatsächlich direkt Unterstützung von PyTorch

00:01:10.740 --> 00:01:11.940
aus. Und

00:01:11.940 --> 00:01:14.680
das sah eigentlich schon mal ganz interessant aus und da geht bestimmt

00:01:14.680 --> 00:01:15.520
noch mehr in Zukunft.

00:01:16.300 --> 00:01:18.680
Es ist auf jeden Fall jetzt gut zu sehen, dass das mal so ein bisschen in die Gänge kommt.

00:01:18.680 --> 00:01:19.700
Das war jetzt ganz lange Zeit,

00:01:20.620 --> 00:01:22.640
also es ist jetzt auch, ich glaube 2020 oder so sind die

00:01:22.640 --> 00:01:24.720
rausgekommen, das ist ja jetzt schon zweieinhalb Jahre

00:01:24.720 --> 00:01:25.780
her. Ja.

00:01:26.940 --> 00:01:27.340
Genau.

00:01:29.580 --> 00:01:30.720
Das ist aber jetzt eher so eine

00:01:30.720 --> 00:01:32.360
Minor-News. Ja,

00:01:32.580 --> 00:01:33.540
außer man hat

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

00:01:37.080 --> 00:01:38.420
Dann ist das natürlich super wichtig, ja.

00:01:38.660 --> 00:01:38.860
Ja.

00:01:41.460 --> 00:01:42.600
Ansonsten, ich meine, wenn ihr mal

00:01:42.600 --> 00:01:44.880
dieses ganze Machine-Learning-Thema

00:01:44.880 --> 00:01:46.120
und so interessant findet,

00:01:46.760 --> 00:01:48.680
ich letztens, kann ich

00:01:48.680 --> 00:01:50.580
den Robot-Brains-Podcast empfehlen von

00:01:50.580 --> 00:01:52.540
Peter Abiel und da war

00:01:52.540 --> 00:01:54.600
letzte Woche war da irgendwie Jeffrey Hinton

00:01:54.600 --> 00:01:56.700
zu Gast oder es gibt jetzt zwei Episoden.

00:01:57.240 --> 00:01:58.880
Das war, ja, war sehr interessant.

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

00:02:00.060 --> 00:02:02.440
derjenige, der so die ganzen, oder

00:02:02.440 --> 00:02:04.440
einer von denen, die diesen Deep Learning

00:02:04.440 --> 00:02:08.440
Hype irgendwie so mit losgetreten haben.

00:02:08.580 --> 00:02:10.580
Oder was heißt Hype? Ist ein bisschen, eigentlich ist er ja

00:02:10.580 --> 00:02:11.600
schon durchaus was hinter.

00:02:12.640 --> 00:02:14.460
Und, ja,

00:02:14.540 --> 00:02:16.000
der erzählte so ganz interessante Dinge.

00:02:17.440 --> 00:02:18.500
Also, ja, kann man sich

00:02:18.500 --> 00:02:19.920
ja mal vielleicht irgendwie anhören.

00:02:20.580 --> 00:02:34.920
Ja, es gab, das ist jetzt schon ein bisschen länger her, ich habe jetzt eigenartigerweise erst davon erfahren oder vielleicht haben wir das ja auch schon erzählt, das weiß ich nicht so genau. Es gab ein Paper in Nature, NumPy ist jetzt tatsächlich als quasi Artikel irgendwie in einem renommierten Magazin erschienen.

00:02:35.620 --> 00:02:37.540
Damals, Travis Oliphant hat da ja

00:02:37.540 --> 00:02:39.560
seine Doktorarbeit für abgebrochen und ihm haben alle

00:02:39.560 --> 00:02:41.460
gesagt, bist du verrückt? Irgendwie

00:02:41.460 --> 00:02:43.520
sowas komisches zu machen, Nampai, das interessiert

00:02:43.520 --> 00:02:45.020
doch niemanden. Und

00:02:45.020 --> 00:02:47.520
ja, jetzt hat das doch nochmal auch akademische

00:02:47.520 --> 00:02:48.300
Weinen irgendwie

00:02:48.300 --> 00:02:51.340
gezeitigt. Das war gar nicht so

00:02:51.340 --> 00:02:52.980
schlecht. Spät, aber ja.

00:02:55.120 --> 00:02:55.320
Tja.

00:02:56.300 --> 00:02:56.660
Genau.

00:02:57.600 --> 00:02:59.420
Sonst habe ich auch eigentlich nicht so wirklich was.

00:02:59.560 --> 00:03:01.680
Wir wollten nochmal, vielleicht Blührepeisen haben wir ja schon ein paar Mal

00:03:01.680 --> 00:03:03.420
eingeladen. Blührepeisen. Bist du jetzt eigentlich da oder

00:03:03.420 --> 00:03:05.520
weißt du noch nicht? Also ich schon. Ich habe keine

00:03:05.520 --> 00:03:09.520
Ich habe keine Unterkunft gefunden, jedenfalls nicht so, dass wir da alle hinfahren könnten.

00:03:09.720 --> 00:03:12.340
Daher, wenn, dann bin ich alleine da.

00:03:12.740 --> 00:03:13.280
Kurzfristig, okay.

00:03:13.480 --> 00:03:16.460
Ja, kurzfristig könnte sein, dass das klappt.

00:03:16.580 --> 00:03:21.520
Aber man muss halt nochmal gucken, weil Urlaubsplanungen anderweitig sind.

00:03:21.540 --> 00:03:22.660
Ansonsten müssen wir alleine ein Bier trinken gehen.

00:03:23.300 --> 00:03:26.220
Also meine Unterkunft ist nicht weit von der Brewdog-Bade entfernt.

00:03:27.180 --> 00:03:31.040
Ich habe übrigens nachgeguckt, da gibt es keine Zimmer mehr in dem Hotel.

00:03:31.120 --> 00:03:31.440
Oh, ausgeworfen?

00:03:31.660 --> 00:03:31.780
Ja.

00:03:32.320 --> 00:03:32.760
Okay, wow.

00:03:33.660 --> 00:03:34.600
Hat erst im Mai eröffnet.

00:03:35.520 --> 00:03:37.380
Tja. Okay. Also, ja.

00:03:38.720 --> 00:03:39.500
Tja, so ist das.

00:03:39.720 --> 00:03:41.600
Na gut, dann sind wir heute mit den News dann relativ schnell durch,

00:03:41.680 --> 00:03:43.180
würde ich sagen, oder? Ja.

00:03:43.720 --> 00:03:44.420
Haben wir schnell gemacht.

00:03:45.280 --> 00:03:46.780
So schnell waren wir nur nie, drei Minuten.

00:03:46.800 --> 00:03:48.880
Wir könnten auch noch irgendwie, es gibt jetzt auch eine

00:03:48.880 --> 00:03:51.000
Postgres 15 Beta, glaube ich.

00:03:51.280 --> 00:03:52.680
Da könnten wir eigentlich schon eine Überleitung machen.

00:03:52.680 --> 00:03:52.860
Oh.

00:03:53.740 --> 00:03:59.140
Was ist denn in der Postgres 15 Beta drin?

00:03:59.680 --> 00:04:00.680
Weißt du das? Das weiß ich nicht.

00:04:01.700 --> 00:04:02.900
Susanne, auch nicht? Oh, okay.

00:04:03.020 --> 00:04:05.140
Nee, das weiß ich jetzt auch nicht auswendig.

00:04:05.140 --> 00:04:07.600
Da müsste ich auch nachgucken, was jetzt wirklich drin ist

00:04:07.600 --> 00:04:08.620
in der Beta und was nicht.

00:04:09.360 --> 00:04:12.040
Ich könnte da jetzt zählen, wie das immer so funktioniert

00:04:12.040 --> 00:04:14.440
bei Postgres mit den Beta und den Releases.

00:04:15.240 --> 00:04:15.860
Ja, dann machen wir doch das.

00:04:15.980 --> 00:04:16.760
Dann gehen wir da direkt über.

00:04:16.860 --> 00:04:17.920
Dann machen wir doch genau das.

00:04:19.880 --> 00:04:20.280
Hauptthema.

00:04:21.720 --> 00:04:22.960
Hier steht ja, bei Postgres 50 steht

00:04:22.960 --> 00:04:24.780
Developer Experience and Performance.

00:04:25.060 --> 00:04:28.640
Ja, also es gibt immer, bei Postgres musst du einen Patch einreichen,

00:04:28.740 --> 00:04:29.600
wenn du ihn geschrieben hast.

00:04:29.740 --> 00:04:31.380
Einschließlich Dokumentation, ganz wichtig.

00:04:32.120 --> 00:04:34.420
Und dann gibt es halt ein paar Reviewer, die da drüber gucken.

00:04:34.420 --> 00:04:43.640
Das machen dann andere Entwickler und dann kriegst du den Patch entweder, ich sage immer, du kriegst ihn zurück, also da kriegst du dann eine E-Mail, was mit dem Patch ist, ob der so in Kiki ist oder nicht okay ist.

00:04:44.720 --> 00:04:53.760
Wenn du da eine Klammer ans Ende gesetzt hast, das sind die neue Zeile, kriegst du den Patch zurück, weil da wird massivst drauf geachtet auf solche Sachen.

00:04:54.300 --> 00:05:04.340
Und wenn dann noch irgendwie eine Ausnahme ist, dass auf dem Mars ein Vulkan ausbricht, dann wird der Patch halt auch nicht angenommen, also wenn da irgendwas passieren könnte, was du nicht bedacht hast.

00:05:04.420 --> 00:05:24.420
Und da Postgres ja überhaupt keine Kunden dahinter hat, die jetzt irgendwo Druck machen könnten, weil es ist ja eine kostenfreie Software, können wir natürlich auch recht früh sagen, also wenn wir sagen, okay, wir releasen und da ist jetzt noch irgendein neues Feature drin oder irgendein Patch drin, der noch nicht hundertprozentig ist, können wir den noch einfach zurückstellen.

00:05:25.380 --> 00:05:38.760
Also wir haben da nicht den Druck, dass da jetzt irgendwelche Kunden sagen, der Patch muss jetzt aber unbedingt in die nächste Version, sondern das passiert auch schon mal, dass die so kurz vor knapp nochmal zurückgestellt werden und dann erst ins nächste Release kommen. Das ist gar nicht so selten, das passiert, ja.

00:05:39.520 --> 00:05:51.420
Mittlerweile schaffen wir es immerhin, rechtzeitig zu releasen. Das war auch schon mal eine Zeit lang nicht so. Eigentlich wird immer ein neues Release rausgebracht zur OSCON, glaube ich, also zu irgendeiner amerikanischen Konferenz, in der Regel im Oktober.

00:05:52.300 --> 00:06:18.340
Also ich hatte das schon, dass ich im Linux Hotel gesagt habe, es müsste bald, wir haben Oktober, es müsste bald ein neues Release rauskommen und in den zwei Tagen später, noch während der Schulung, kommt das neue Release raus. Aber was genau drin ist, sieht man auch erst immer, also man sieht natürlich, was alles entwickelt wird, aber was da jetzt davon jetzt in das nächste Release kommt und was nicht, das sieht man dann tatsächlich erst am Ende, weil da werden natürlich auch riesige Tests gefahren.

00:06:19.280 --> 00:06:40.540
Und es gibt auch absichtlich dann, dass nicht angekündigt wird, was drin ist, eben damit man nochmal sagen kann, wir stellen das eine oder andere nochmal zurück. Deswegen wird das auch nicht so groß publiziert, was da jetzt, also wir publizieren jetzt nicht ein halbes Jahr vorher im nächsten Release kommt das und das, sondern das sieht man erst immer mit der neuen Version, mit den Release Notes, was da passiert ist und was nicht.

00:06:41.400 --> 00:06:46.420
Auf alle Fälle, ab Version 13 ist Postgres noch mal wahnsinnig viel schneller geworden.

00:06:46.920 --> 00:06:50.240
Also ich kann allen nur empfehlen, zumindest auf 13 abzugraden.

00:06:51.120 --> 00:06:52.520
Wer noch auf 9.6 ist.

00:06:53.020 --> 00:06:54.280
9.6 müsste auslaufen.

00:06:54.920 --> 00:06:56.940
Ich richtig gerechnet habe jetzt gerade.

00:06:58.160 --> 00:06:58.600
Ah, okay.

00:06:59.340 --> 00:07:02.460
Ja, ich würde sagen, jetzt haben wir die News auf jeden Fall durch.

00:07:02.620 --> 00:07:03.160
Ja, ja, ja.

00:07:03.920 --> 00:07:06.140
Und können wir anfangen mit unserem Thema.

00:07:06.620 --> 00:07:06.840
Ja.

00:07:07.260 --> 00:07:10.180
Und das Thema ist ja tatsächlich irgendwie so ein bisschen dann Datenpacken.

00:07:10.180 --> 00:07:12.460
Datenbank, ja. Speziell im Allgemeinen

00:07:12.460 --> 00:07:14.200
oder auch noch ein bisschen im Detail.

00:07:16.280 --> 00:07:17.940
Du hast ja ganz viele Erfahrungen mit Susanne.

00:07:18.140 --> 00:07:20.400
Du kennst halt die ganzen Unterschiede

00:07:20.400 --> 00:07:21.560
zwischen Mü,

00:07:22.280 --> 00:07:24.160
Maria. Soll ich das erzählen?

00:07:24.160 --> 00:07:26.180
Ja. Also ich habe,

00:07:26.340 --> 00:07:27.860
ich erzähl mal kurz die ganze Geschichte.

00:07:28.000 --> 00:07:30.280
Ich hab mal irgendwann Informatik studiert, vor gefühlten

00:07:30.280 --> 00:07:32.440
100 Jahren. Und

00:07:32.440 --> 00:07:34.080
damals an der Uni hatten wir

00:07:34.080 --> 00:07:36.240
Informix. Und

00:07:36.240 --> 00:07:38.020
die Rechenzentren waren auch noch nicht so wirklich

00:07:38.020 --> 00:07:40.120
klimatisiert. Und SSH gab es

00:07:40.120 --> 00:07:41.840
schon. Erstmal fragen, was ist Informix?

00:07:42.140 --> 00:07:44.240
Informix ist ein konventionelles Datenbanksystem.

00:07:45.020 --> 00:07:46.200
Das gehört zu IBM.

00:07:47.660 --> 00:07:48.060
Und

00:07:48.060 --> 00:07:50.100
ich hatte

00:07:50.100 --> 00:07:52.160
mir dann überlegt, ich war ja

00:07:52.160 --> 00:07:53.960
faul, wollte nicht immer ins

00:07:53.960 --> 00:07:55.480
Rechenzentrum, wie gesagt, SSH gab es schon.

00:07:55.920 --> 00:07:58.040
Und habe dann geguckt, wie ich zu Hause programmieren kann.

00:07:59.540 --> 00:08:00.520
Und welches Datenbanksystem

00:08:00.520 --> 00:08:01.900
ich dann nehme. Und es gab dann

00:08:01.900 --> 00:08:03.560
damals schon MySQL so ein bisschen.

00:08:03.720 --> 00:08:05.060
Und es gab ein bisschen PostgreSQL.

00:08:05.980 --> 00:08:06.820
Und PostgreSQL

00:08:06.820 --> 00:08:08.600
hatte

00:08:08.600 --> 00:08:10.240
mehr Ähnlichkeit. Also da gab es schon

00:08:10.240 --> 00:08:12.140
irgendwelche Features, die gab es bei MySQL noch nicht.

00:08:12.300 --> 00:08:14.220
Ich weiß nicht mehr genau, was es war. Ich habe dann

00:08:14.220 --> 00:08:16.400
PostgreSQL genommen und

00:08:16.400 --> 00:08:18.100
es war damals wirklich noch ziemlich

00:08:18.100 --> 00:08:20.040
identisch. Ich habe später

00:08:20.040 --> 00:08:22.560
erfahren, PostgreSQL und Informix

00:08:22.560 --> 00:08:24.420
hatten denselben

00:08:24.420 --> 00:08:26.320
Urkurs. Das war beides irgendwie

00:08:26.320 --> 00:08:28.320
an der Universität Barclay entwickelt. Nein, das heißt,

00:08:28.420 --> 00:08:30.520
es gab einen, der das an der Universität

00:08:30.520 --> 00:08:32.520
Barclay, dieses Datenbanksystem entwickelt hat.

00:08:33.840 --> 00:08:36.360
Ich weiß nicht, ob das auch schon

00:08:36.360 --> 00:08:38.840
Michael Stonebreaker war. Ja, das war Michael Stonebreaker.

00:08:38.940 --> 00:08:40.240
Ich komme noch nicht drauf. Ingress.

00:08:40.240 --> 00:08:42.160
Ingress heißt es. Ich kam jetzt nur gerade so schnell

00:08:42.160 --> 00:08:44.000
nicht auf den Namen. Also Michael Stonebreaker

00:08:44.000 --> 00:08:45.600
hatte dieses Projekt mit Ingress.

00:08:46.080 --> 00:08:47.960
Michael Stonebreaker hat dann die Universität

00:08:47.960 --> 00:08:50.420
zweimal verlassen. Ich weiß jetzt nicht, bei welchem

00:08:50.420 --> 00:08:52.240
Mal und mit dem

00:08:52.240 --> 00:08:54.100
Code zusammen. Und er hatte dann den

00:08:54.100 --> 00:08:55.560
Code irgendwie verkauft.

00:08:56.380 --> 00:08:58.000
Deswegen hieß es dann, ist dann wieder zurück

00:08:58.000 --> 00:09:00.020
zur Uni. Da er das nicht mehr Ingress nennen

00:09:00.020 --> 00:09:01.940
konnte, musste es jetzt Postgres heißen.

00:09:02.040 --> 00:09:03.760
Also nach Ingress. Post für nach

00:09:03.760 --> 00:09:05.600
Ingress. Und

00:09:05.600 --> 00:09:08.060
aus dem einen Mal, wo er es verlassen hat,

00:09:08.120 --> 00:09:09.920
samt Code ist dann später Informix

00:09:09.920 --> 00:09:11.900
entstanden. Also die basieren

00:09:11.900 --> 00:09:14.120
wirklich beide auf dem uralten Ingress-Code

00:09:14.120 --> 00:09:16.100
und deswegen war das zu der Zeit

00:09:16.100 --> 00:09:18.300
noch, so 2099,

00:09:18.400 --> 00:09:19.880
2000 war das noch ziemlich identisch.

00:09:20.320 --> 00:09:21.920
Das heißt, du konntest auch so den Dampf vom

00:09:21.920 --> 00:09:23.900
einen in den anderen einspülen und so weiter, das war

00:09:23.900 --> 00:09:26.160
noch relativ, so unterschiedliche

00:09:26.160 --> 00:09:27.960
Features hatten sie nicht. Ist heute natürlich

00:09:27.960 --> 00:09:30.240
nicht mehr so, nach 20 Jahren Weiterentwicklung.

00:09:31.440 --> 00:09:31.800
Und

00:09:31.800 --> 00:09:33.820
ja, so bin ich

00:09:33.820 --> 00:09:36.080
irgendwie da reingekommen

00:09:36.080 --> 00:09:37.460
in diese Postgres-Geschichte.

00:09:38.180 --> 00:09:39.960
Dann hatte ich einen Job in PostgresQL

00:09:39.960 --> 00:09:42.000
und ich hatte

00:09:42.000 --> 00:09:43.940
festgestellt, PostgresQL kann was

00:09:43.940 --> 00:09:45.900
nicht. Ich hatte

00:09:45.900 --> 00:09:48.400
im Studium gelernt, dass irgendeine Update-Syntax

00:09:48.400 --> 00:09:49.540
eine spezielle wäre Standard,

00:09:50.260 --> 00:09:51.700
aber Postgres konnte das nicht und

00:09:51.700 --> 00:09:53.860
dann hieß es,

00:09:54.040 --> 00:09:54.940
ja, entwickle doch.

00:09:56.280 --> 00:09:57.620
Und ich hatte dann einen Mentor dazu,

00:09:57.920 --> 00:10:00.100
einen der großen Entwickler von PostgresQL,

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

00:10:03.480 --> 00:10:05.500
bestimmt gar nicht, der war im Nachbarbüro, aber wir haben zusammen

00:10:05.500 --> 00:10:06.660
in derselben Firma gearbeitet

00:10:06.660 --> 00:10:09.500
und dann habe ich angefangen

00:10:09.500 --> 00:10:11.120
an PostgreSQL mitzuentwickeln

00:10:11.120 --> 00:10:13.740
und das fand PostgreSQL

00:10:13.740 --> 00:10:15.420
ganz toll, weil da hatte

00:10:15.420 --> 00:10:17.280
eine Susanne einen Patch eingereicht,

00:10:17.380 --> 00:10:18.520
ein weiblicher Vorname

00:10:18.520 --> 00:10:21.520
und dann haben die also wirklich ganz große E-Mails

00:10:21.520 --> 00:10:23.560
geschrieben, ob es noch eine zweite Frau gibt

00:10:23.560 --> 00:10:25.440
oder ob ich die erste wäre

00:10:25.440 --> 00:10:27.660
und dann haben sie festgestellt, ich war die erste Entwicklerin,

00:10:27.820 --> 00:10:29.480
die einen Patch dann committed bekommen hat

00:10:29.480 --> 00:10:30.780
und in den PostgreSQL-Code

00:10:30.780 --> 00:10:32.820
und das haben die, da haben die irgendwie so

00:10:32.820 --> 00:10:34.900
waren die so stolz, so juhu, wir haben endlich

00:10:34.900 --> 00:10:37.160
eine Frau, das hat so ein bisschen

00:10:37.160 --> 00:10:39.060
Welle geschlagen und dann

00:10:39.060 --> 00:10:41.140
habe ich aber irgendwie diesen Job

00:10:41.140 --> 00:10:42.920
naja, da ist was passiert

00:10:42.920 --> 00:10:44.920
und dann kriegte ich dann, ich

00:10:44.920 --> 00:10:47.100
brauchte einen neuen Job und ich kriegte

00:10:47.100 --> 00:10:48.340
dann per ICQ

00:10:48.340 --> 00:10:51.200
schrieb mich dann jemand an

00:10:51.200 --> 00:10:52.680
wie das nochmal, oh oh

00:10:52.680 --> 00:10:54.940
ich weiß es nicht mehr

00:10:54.940 --> 00:10:57.160
aber es war der CEO

00:10:57.160 --> 00:10:58.420
von MySQL

00:10:58.420 --> 00:11:11.300
Er schrieb mich bei ICQ an, ich habe gehört, was passiert ist, du suchst doch bestimmt einen neuen Job, du kannst morgen bei uns anfangen. Und ich stand da, ich habe von MySQL überhaupt keine Ahnung, ich, hallo, ja, das lernst du.

00:11:11.400 --> 00:11:29.580
Und dann musste ich dann natürlich ein bisschen durch diesen ganzen, wir wissen noch nicht in welcher Abteilung, aber wir nehmen dich an und dann, wie kannst du bei uns anfangen, hab mir das dann natürlich erstmal überlegt und musste dann so ein bisschen durch diesen Bewerbungsprozess durch mit erstes Interview auf Englisch einer Frau aus Maine, die ich überhaupt nicht verstanden habe.

00:11:29.580 --> 00:11:31.860
mein späterer Chef sagte, das ist auch schwierig,

00:11:32.020 --> 00:11:33.300
diesen Dialekt zu verstehen,

00:11:34.340 --> 00:11:35.880
weil sie hatte

00:11:35.880 --> 00:11:38.020
mich nach irgendwas gefragt und ich habe ihr was völlig anderes

00:11:38.020 --> 00:11:39.740
erklärt, weil ich das Englisch nicht

00:11:39.740 --> 00:11:42.020
verstanden habe. Naja, und

00:11:42.020 --> 00:11:43.180
Hat sie das gemerkt?

00:11:44.360 --> 00:11:45.660
Sie hat mich einfach erklären lassen.

00:11:46.000 --> 00:11:48.000
Natürlich. Ich weiß gar nicht mehr, wonach

00:11:48.000 --> 00:11:48.880
sie mich gefragt hat.

00:11:50.060 --> 00:11:51.800
Ich habe, glaube ich, Point-in-Time-Recovery

00:11:51.800 --> 00:11:53.540
erklärt und sie wollte

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

00:11:57.180 --> 00:11:57.760
Irgendwann hast du irgendwas

00:11:57.760 --> 00:11:59.520
Schönes doch gewusst.

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

00:12:01.800 --> 00:12:03.120
generell so ein bisschen abprüfen.

00:12:04.260 --> 00:12:05.720
Und ja, dann war ich jahrelang

00:12:05.720 --> 00:12:07.820
bei MySQL, bis die dann standen wurden.

00:12:07.940 --> 00:12:09.720
Da habe ich auch noch mitgemacht und dann wurden sie

00:12:09.720 --> 00:12:10.020
Oracle.

00:12:11.620 --> 00:12:13.500
Und dann bin ich mit vielen

00:12:13.500 --> 00:12:14.980
anderen Kollegen gegangen.

00:12:15.800 --> 00:12:18.040
Das musst du nochmal genauer erklären, das war ganz...

00:12:18.040 --> 00:12:19.080
Ja, also MySQL

00:12:19.080 --> 00:12:21.780
ist

00:12:21.780 --> 00:12:23.920
sehr, sehr schnell gewachsen. Wir waren

00:12:23.920 --> 00:12:25.420
zum Schluss, als wir noch

00:12:25.420 --> 00:12:27.360
MySQL, also MySQL ist in Schweden gegründet,

00:12:27.420 --> 00:12:29.340
ein schwedisches Unternehmen, weltweit alle

00:12:29.340 --> 00:12:31.600
im Homeoffice. MySQL ist tatsächlich

00:12:31.600 --> 00:12:33.360
auch einer der Vorreiter, was Homeoffice

00:12:33.360 --> 00:12:35.460
angeht, also echtes Homeoffice mit eigenen

00:12:35.460 --> 00:12:37.380
Büros und was man da alles beachten muss, das ist nämlich

00:12:37.380 --> 00:12:38.200
gar nicht so einfach.

00:12:39.300 --> 00:12:39.660
Und

00:12:39.660 --> 00:12:43.680
wir hatten, glaube ich, zum Schluss 400 Mitarbeiter,

00:12:43.860 --> 00:12:45.360
200 Techniker, 200 Sales

00:12:45.360 --> 00:12:47.220
oder irgendwie so, so Pi mal Daumen und Auge.

00:12:48.360 --> 00:12:49.360
Und im Höhepunkt

00:12:49.360 --> 00:12:51.120
des Erfolges sind die dann für

00:12:51.120 --> 00:12:53.180
zwei Milliarden an Fun Microsystems

00:12:53.180 --> 00:12:55.360
verkauft worden. Also da

00:12:55.360 --> 00:12:57.200
gab es dann auch natürlich, man hat dann

00:12:57.200 --> 00:12:59.160
wohl Geldgeber gesucht. Das war dann so

00:12:59.160 --> 00:13:01.080
die Überlegung, machen wir jetzt eine IPO, also gehen wir

00:13:01.080 --> 00:13:02.640
an den Aktienmarkt, ganz offiziell.

00:13:05.000 --> 00:13:05.260
Machen

00:13:05.260 --> 00:13:07.240
eine AG drauf im Grunde, würde man in Deutschland

00:13:07.240 --> 00:13:09.200
sagen. IPO heißt das Ganze. Ich weiß

00:13:09.200 --> 00:13:10.960
jetzt nicht, was IPO in Langkorn heißt.

00:13:12.500 --> 00:13:12.900
International,

00:13:13.120 --> 00:13:15.120
keine Ahnung. Ist ein klassischer

00:13:15.120 --> 00:13:16.920
Börsending, wenn eine Firma

00:13:16.920 --> 00:13:19.080
und dann haben sie aber

00:13:19.080 --> 00:13:21.020
beschlossen, sie verkaufen es, die Aktionäre

00:13:21.020 --> 00:13:22.800
das war ja schon irgendwie

00:13:22.800 --> 00:13:24.980
haben dann beschlossen,

00:13:25.120 --> 00:13:26.900
sie verkaufen es an Sun Microsystems für

00:13:26.900 --> 00:13:28.860
zwei Milliarden. Zwei Milliarden

00:13:28.860 --> 00:13:29.960
finde ich schon eine ganze Menge.

00:13:30.300 --> 00:13:31.400
Initial Public Offering.

00:13:32.420 --> 00:13:34.400
Initial Public Offering, genau.

00:13:34.940 --> 00:13:35.320
Und dann

00:13:35.320 --> 00:13:38.840
haben sie es verkauft an Sun Microsystems

00:13:38.840 --> 00:13:41.360
und ein Jahr später ist Sun Microsystems

00:13:41.360 --> 00:13:42.740
von Oracle gekauft worden.

00:13:45.200 --> 00:13:45.220
Und

00:13:45.220 --> 00:13:48.860
jetzt könnt ihr euch vorstellen, dass wir mit Oracle

00:13:48.860 --> 00:13:50.640
jetzt, das war jetzt der größte Konkurrent

00:13:50.640 --> 00:13:51.480
eigentlich so.

00:13:52.860 --> 00:13:54.700
In der Zwischenzeit hatte aber

00:13:54.700 --> 00:13:55.800
der Montevideo News.

00:13:56.140 --> 00:13:59.080
Vielleicht noch ganz vorher, also MariaDB war vorher Open Source?

00:13:59.280 --> 00:14:00.280
Nein, nein, nein, MySQL.

00:14:00.680 --> 00:14:13.680
Das war alles MySQL noch, MariaDB komme ich jetzt zu, also da irgendwie in diesem Sun Oracle hatte der Monty Vitenius, der Urentwickler, einer der Gründer, der Urgründer von MySQL.

00:14:13.960 --> 00:14:15.760
Dessen Tüchter dann auch.

00:14:15.760 --> 00:14:37.420
Das sage ich gleich auch noch, genau. Der hatte irgendwie den Code aber geforkt von MySQL, den er forken konnte legal und hat dann MariaDB gegründet. MariaDB, weil er hat drei Kinder, My, also M-Y, aus Englisch My, Schwedisch eigentlich My.

00:14:38.060 --> 00:14:55.640
Die jüngste Tochter heißt Maria und er hat auch einen Sohn, der heißt Max. Es gibt auch einen MaxDB, ich weiß nicht, ob es das noch gibt, aber das war eine Datenbank, die unter SAP oder im SAP-Umfeld mit war. Ich glaube aber, die ist mittlerweile ganz, die war schon fast eingestompft, als ich bei MySQL war.

00:14:55.960 --> 00:15:13.280
Und also hat er gesagt, okay, das nächste System heißt dann Maria, nach meiner jüngsten Tochter. So ist das dann mit MariaDB gekommen. 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, oder die ganz, ganz hohen Chefs.

00:15:13.280 --> 00:15:15.820
so auch der von den ganzen Services,

00:15:16.080 --> 00:15:18.000
also Training, Consulting, Support.

00:15:19.060 --> 00:15:21.700
Und der hatte dann damals eine Consulting-Firma gegründet,

00:15:21.960 --> 00:15:24.200
SkySQL, weil sie hatten sich überlegt,

00:15:24.260 --> 00:15:25.500
sie wollten nicht mehr Entwicklung

00:15:25.500 --> 00:15:27.920
und die Dienstleistung in einer Firma haben.

00:15:28.380 --> 00:15:30.160
Mittlerweile ist das wieder alles MariaDB,

00:15:30.300 --> 00:15:31.800
die haben dann das wieder zusammengelegt,

00:15:31.920 --> 00:15:33.920
aber sie wollten ja ein bisschen aus Erfahrung lernen.

00:15:35.180 --> 00:15:36.920
Das ist so MariaDB.

00:15:36.920 --> 00:15:39.220
Es sind ganz, ganz viele Kollegen

00:15:39.220 --> 00:15:42.700
damals von den Entwicklern zu MariaDB gegangen.

00:15:43.280 --> 00:15:52.520
Also ich weiß nicht, wer da noch bei Oracle heute ist, ich wüsste jetzt keinen, aber es heißt nicht, dass da keiner mehr ist, aber die.

00:15:53.680 --> 00:15:56.320
Also quasi komplett einfach alle gekündigt und zum.

00:15:56.320 --> 00:16:11.100
Ja, das war ganz viel bei diesem Sun Microsystems, Oracle kauft Sun Microsystems, ich weiß nicht, ob ihr das gehört habt, Java zum Beispiel, die Java-Leute haben auch fast alle gekündigt, die Open Office-Leute haben fast alle gekündigt und MySQL halt entsprechend auch.

00:16:11.200 --> 00:16:12.760
Wo sind die Java-Leute alle hingekommen?

00:16:12.760 --> 00:16:14.700
das weiß ich nicht. Keine Ahnung.

00:16:15.040 --> 00:16:15.440
Keine Ahnung.

00:16:16.640 --> 00:16:18.000
Also wenn ihr es wisst, schreibt mal an

00:16:18.000 --> 00:16:20.160
halloatpaisenpodcast.de. Ja, genau.

00:16:21.060 --> 00:16:22.660
Und ja, so war das. Und ich

00:16:22.660 --> 00:16:24.560
bin dann zurück zu meinen

00:16:24.560 --> 00:16:26.480
Urzeln. Ich habe mich dann mit einem

00:16:26.480 --> 00:16:27.880
Franzosen, mit einem Engländer,

00:16:28.560 --> 00:16:30.440
mit noch einem zweiten Deutschen

00:16:30.440 --> 00:16:32.800
und einem aus den USA

00:16:32.800 --> 00:16:34.640
und einem

00:16:34.640 --> 00:16:35.880
Italiener zusammengetan.

00:16:36.860 --> 00:16:38.340
Und wir haben dann PostgreSQL

00:16:38.340 --> 00:16:40.560
erst mal. Es war

00:16:40.560 --> 00:16:42.480
so ein bisschen gemischt. Die Firma heißt

00:16:42.480 --> 00:16:44.320
Second Quadrant ist jetzt

00:16:44.320 --> 00:16:45.080
Enterprise DB

00:16:45.080 --> 00:16:46.740
und

00:16:46.740 --> 00:16:50.160
ich habe hauptsächlich

00:16:50.160 --> 00:16:52.380
Consulting gemacht, weltweit

00:16:52.380 --> 00:16:54.280
für PostgreSQL, also ich bin

00:16:54.280 --> 00:16:56.000
ganz viel um die Gegend gefahren,

00:16:56.540 --> 00:16:58.360
geflogen mit dem Amerikaner

00:16:58.360 --> 00:17:00.540
zusammen und irgendwann wurde uns das zu viel,

00:17:00.660 --> 00:17:02.420
mir zumindest, weil wenn du ganz viel

00:17:02.420 --> 00:17:04.400
unterwegs bist, irgendwann machst du das nicht mehr

00:17:04.400 --> 00:17:06.300
und dann habe ich gesagt, okay,

00:17:06.420 --> 00:17:07.480
ich muss kürzer treten,

00:17:08.540 --> 00:17:10.340
habe dann erst noch so ein bisschen promoviert

00:17:10.340 --> 00:17:27.520
Und dann am Ende gesagt, eigentlich liebst du das Ganze und machst bis heute im Grunde PostgreSQL und MariaDB als Consultant und Trainer, aber hauptsächlich halt, wo man gut hinkommt. Also keine Langstreckenflüge mehr. Ich brauche das nicht heute Amerika, morgen Japan.

00:17:28.720 --> 00:17:55.220
Also so, wo man gut hinkommt. Das ist dann auch zum Beispiel, Amsterdam ist näher als Bayern. Nein, ich fahre natürlich auch nach Bayern, so ist das nicht, aber es ist halt nicht so. Das ist so das, was ich mache. Ich war dann zwischendurch noch, Sun Microsystems hatte noch die Idee, nein, die hatten das Angebot gekriegt von ANSI, von dem American National Standard Institute.

00:17:55.780 --> 00:18:03.880
Genau, du wolltest mich erzählen, du hattest mich doch mal diese ganze Reisetätigkeit vorher im Zusammenhang da mit dem SQL-Standard gemacht.

00:18:03.880 --> 00:18:22.760
Ja, Ansi, also Ansi ist an Microsystem herangetreten und hat gefragt, ob sie jetzt nicht jemanden, da sie jetzt ja MySQL aufgekauft haben, ob sie nicht jemanden im Standardgremium haben wollen.

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

00:18:25.780 --> 00:18:43.120
Und bei Postgres war immer das Problem, das wollte der Standard nicht, weil das ja keine Legal Entity hat, also macht ja kein Geld, ist ja irgendwie Open Source, da war etwas komisch. Und dann hatte Sun auch noch JavaDB und ich weiß nicht was, die hatten noch ein paar mehr Datenbanksysteme.

00:18:43.680 --> 00:19:01.300
Und dann gab es irgendwo auf einer Konferenz ein Meeting, ich war nur per Skype zugeschaltet und ich wusste auch gar nicht genau, weil wenn man in so einem Meeting per Skype zugeschaltet ist, du kriegst nicht wirklich mit, wenn die alle durcheinander reden, um was es da geht.

00:19:01.440 --> 00:19:19.180
Und ich hatte dann irgendwie so meinen einen Kollegen Sergey, den hatte ich im IAC. Also ich hatte Sergey dann gefragt, um was geht es? Und dann erzählte er mir groß, ja, die suchen jetzt jemanden, der uns da im Standardgremium vertreten kann. Und irgendwie so eine Minute später, hast du Lust? Und ich sagte, ja.

00:19:19.840 --> 00:19:38.380
Und dann hörte ich nur, dass Sergej sagte, ich habe da jemanden. Also es muss so gesehen sein, dass Peter dann wohl von PostgreSQL, den hatten wir mittlerweile zusammen geholt, das war auch lustig, mein alter Kollege Peter Eisentraut, mein uralter Mentor, der ist mir mehrfach gefolgt in mehrere Firmen, das ist ganz lustig.

00:19:38.700 --> 00:19:58.780
Peter muss wohl auf den Monitor, auf alle Fälle hörte ich nur wie Peters Stimme, oh ja, das ist eine coole Idee, da bin ich mit einverstanden. Und dann war wieder Stille und dann hörte ich meinen Chef sagen, auch ohne, dass mein Name bis dahin gefallen war, ja, genau, das ist perfekt.

00:19:59.100 --> 00:20:07.120
Und dann hörte ich, wie alle anderen fragten, wen meint ihr denn jetzt? Und dann kam raus, ja Susanne. Und so bin ich dann erstmal in diesem Ansiedgremium gelandet.

00:20:10.120 --> 00:20:19.500
Was sehr lustig ist in Amerika, weil man muss bei ISO sagen, so ein ISO-Standard funktioniert oder so ein Standard funktioniert so, du brauchst immer drei verschiedene Parteien.

00:20:20.700 --> 00:20:40.620
Also ich sag mal, du brauchst einen Hersteller, du brauchst irgendwie eine Universität und noch was Drittes oder zwei Hersteller. Wenn du drei Gruppen hast, kannst du erstmal einen nationalen Standard gründen. Also bei DIN, die brauchen auch immer drei und das dürfen nicht drei Universitäten sein. Irgendwer muss da schon mal Gewinn bringen mit was zu tun haben.

00:20:41.960 --> 00:20:57.540
Und dann hast du nationalen, wenn du dann irgendwie drei europäische Nationale hast, kannst du einen EN-Standard gründen und wenn du drei internationale hast, kannst du einen ISO-Standard gründen. Irgendwie so. Und im ISO-Gremium hat jedes Land nur eine Stimme. Egal wie groß das ist.

00:20:58.480 --> 00:21:16.800
So, jetzt das amerikanische Gremium. In Amerika saßen natürlich sämtliche Datenbankhersteller, das ist eine riesengroße Gruppe gewesen. Da saß auch Microsoft drin, die haben kaum was gesagt. Im Grunde haben sich da immer nur IBM versus Oracle, die beiden da ausgemacht.

00:21:16.800 --> 00:21:30.000
Und Oracle hat natürlich auch Leute, die nichts anderes den ganzen Tag machen, als sich neue Ideen für den Standard ausdenken so ungefähr oder versuchen dann die Features, die Oracle sich ausgedacht hat, in den Standard reinzubringen, so muss ich das mal höflich sagen. Und IBM und Oracle saßen auch fast in jedem Land.

00:21:31.660 --> 00:21:34.160
Wer hat mein Geld, da kann man mir einfach was auf den Stand nehmen.

00:21:34.160 --> 00:21:35.220
Ja, aber wenn du bei ANSI bist,

00:21:35.300 --> 00:21:37.920
vertrittst du natürlich in dem ISO-Gremium auch die USA.

00:21:39.500 --> 00:21:42.560
Und dann war ich dann auf diesem ersten internationalen ISO-Meeting.

00:21:43.580 --> 00:21:45.020
Dann kam Deutschland auf mich zu und sagt,

00:21:45.140 --> 00:21:47.380
warum zur Hölle vertrittst du die USA?

00:21:48.640 --> 00:21:50.700
Und dann haben die mich zu DIN geholt.

00:21:50.800 --> 00:21:53.940
Und dann habe ich halt ganz lange bei DIN mitgemacht.

00:21:54.760 --> 00:21:57.660
Und weil die Länder machen immer die Vorschläge in dem ISO-Gremium.

00:21:57.840 --> 00:21:58.480
Das kommt auch noch dazu.

00:21:58.480 --> 00:22:21.440
Also wenn du eine Idee hast, dann macht das Land einen Vorschlag und im ISO-Gremium wird dann abgestimmt, ob das genommen wird oder nicht. Und das ist extremst politisch auch teilweise. Also das ist nicht so einfach. Da kann es dir passieren, dass es uns mal passiert tatsächlich, dass dann ein asiatisches Land gegen den Vorschlag von Deutschland gestimmt hat.

00:22:21.440 --> 00:22:37.540
Und dann fragte der Kanadier oder der Engländer, irgendwer fragte nach, warum? Und dann kam, ja, weil Deutschland in irgendeiner Schrauben-Norm gegen Japan gestinkt hat oder gegen das asiatische Land. Ich weiß nicht mehr, welches genau. Also so, wir standen da, wir kannten diese Schrauben-Norm nicht mal.

00:22:39.420 --> 00:22:48.080
Vielleicht nochmal genau erklären, worum es eigentlich geht bei so einem Standard. Da geht es halt darum, welche Features so eine Datenbank haben muss, damit sie sich so nennen darf?

00:22:48.080 --> 00:23:03.880
Nee, es geht darum, so ein bisschen Einigkeit zu haben. Also zum Beispiel, dass du egal, welches Datenbanksystem du hast, dass vor dem SQL-Standard hatte jedes Datenbanksystem seine eigene Sprache.

00:23:07.140 --> 00:23:21.280
Und da hieß dann auch nicht immer alles Select, wenn du jetzt was raussuchst, das konnte auch ein Feind sein, ich habe keine Ahnung, wie es hieß. Und die hatten halt, es gab ja schon Oracle und die IBM und Postgres, das gibt es ja alles schon seit den 70ern.

00:23:22.000 --> 00:23:39.480
Und dann hat sich Oracle und der Stonebreaker und einer von IBM, wenn ich das richtig weiß, die haben sich dann damals mal Ende der 70er zusammengesetzt und haben gesagt, okay, wir entwickeln dann mal eine gemeinsame Sprache, damit wir nicht auf jedem System wieder das komplett umprogrammieren müssen.

00:23:40.400 --> 00:23:56.140
Und so ist dann der SQL-Standard entstanden und ich sage mal, so ein Select ist ja zum Glück auf allen Datenbankensystemen funktioniert, so ein Insert funktioniert auch meistens noch, dass das Grund-SQL funktioniert meistens noch auf allen gleich.

00:23:59.060 --> 00:24:01.480
Aber in den Dialekten weicht das dann von Standard ab, oder?

00:24:01.480 --> 00:24:03.500
Ja, genau. In den Dialekten wird es anders.

00:24:03.780 --> 00:24:05.660
Und das kommt daher, weil natürlich,

00:24:05.780 --> 00:24:08.020
diese Gremien, da wird dann ein Vorschlag gemacht.

00:24:09.160 --> 00:24:11.160
Und du machst keinen Vorschlag,

00:24:11.240 --> 00:24:12.740
wenn du das nicht schon implementiert hast.

00:24:13.940 --> 00:24:15.280
Also ich kann zum Beispiel sagen,

00:24:16.080 --> 00:24:17.740
die Limit-Geschichte ist ganz witzig.

00:24:18.000 --> 00:24:20.760
MySQL hat Limit erfunden.

00:24:21.840 --> 00:24:23.840
Also Limit heißt, wenn ich was raussuche

00:24:23.840 --> 00:24:25.740
und ich mache am Ende Limit 1,

00:24:25.860 --> 00:24:27.460
dann kriege ich nur den ersten Wert raus.

00:24:27.460 --> 00:24:53.960
Wenn ich mache 1,3, dann kriege ich, wirft er die ersten drei weg und er gibt mir den vierten Wert, bei der Offset dann drei ist. Also super so ein Tax. Postgres fand Limit total cool und hat gesagt, das implementieren wir auch, aber diese Limit 1,3, also x,y, das ist jetzt ein bisschen arg kryptisch und die haben es dann schon implementiert mit Limit x Offset y.

00:24:55.400 --> 00:25:13.240
Und dann hieß es, bring das mal in den Standard, dann haben wir dafür einen Vorschlag gemacht. Und das ist auch durchgegangen am Ende. Und allerdings war dann in dem internationalen Gremium, kam dann zu bedenken, ja, das wäre aber immer noch nicht die Syntax, wie SQL eigentlich aussehen würde.

00:25:13.240 --> 00:25:15.600
und die offizielle Syntax heißt jetzt, glaube ich,

00:25:15.700 --> 00:25:17.820
Fetch X-Rows

00:25:17.820 --> 00:25:20.220
X-Next-Rows-Offset

00:25:20.220 --> 00:25:21.140
Y.

00:25:21.840 --> 00:25:23.640
Ja, also das ist dann sowas.

00:25:24.480 --> 00:25:24.620
Ja,

00:25:25.480 --> 00:25:27.600
ich glaube, MySQL oder MariaDB hat

00:25:27.600 --> 00:25:28.820
mittlerweile die Limit

00:25:28.820 --> 00:25:31.460
X, Y gibt es, glaube ich, auch nicht mehr.

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

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

00:25:35.080 --> 00:25:37.260
hundertprozentig sicher. Im Moment müsste ich ausprobieren.

00:25:38.140 --> 00:25:39.360
Aber so funktioniert

00:25:39.360 --> 00:25:41.280
halt das Standard. Und was halt, wo

00:25:41.280 --> 00:25:43.140
man das halt merkt, wo alle

00:25:43.140 --> 00:25:44.700
schon was hatten bei sämtlichen

00:25:44.700 --> 00:25:46.260
Zeitgeschichten.

00:25:47.020 --> 00:25:48.860
Wenn man ein Date bei Oracle eingibt, ist das

00:25:48.860 --> 00:25:50.260
immer mit Uhrzeit zum Beispiel.

00:25:51.100 --> 00:25:52.960
Da merkt man schon, okay, das hatten sie vorher

00:25:52.960 --> 00:25:54.900
schon. Und dann kann man natürlich

00:25:54.900 --> 00:25:56.820
als Datenbanksystem sagen, wir implementieren das

00:25:56.820 --> 00:25:58.980
nach. Wir machen dann Alias draus

00:25:58.980 --> 00:26:00.880
oder ähnliches. Aber zumindest das

00:26:00.880 --> 00:26:02.180
Uhr, das Grund ist erstmal

00:26:02.180 --> 00:26:04.780
dasselbe. Ich sage ja, so ein Insert Statement, so ein

00:26:04.780 --> 00:26:06.720
normales Update Statement, das funktioniert bei

00:26:06.720 --> 00:26:08.680
allen ziemlich gleich. Und dann hast du irgendwann

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

00:26:11.180 --> 00:26:12.540
Aber Standard ist halt

00:26:12.540 --> 00:26:13.880
politische Geschichte.

00:26:14.420 --> 00:26:16.380
Die treffen sich dann auch zweimal im Jahr.

00:26:17.040 --> 00:26:18.420
Immer ein Land lädt ein.

00:26:19.280 --> 00:26:20.320
Und je nachdem, welches Land

00:26:20.320 --> 00:26:22.200
einlädt, will sich dann auch

00:26:22.200 --> 00:26:23.540
hervorheben.

00:26:24.160 --> 00:26:25.900
Dann hast du dann so Meetings auf Hawaii.

00:26:26.540 --> 00:26:28.000
Nein. Auf Kreta.

00:26:29.520 --> 00:26:30.280
Ja, sagst du so.

00:26:30.300 --> 00:26:30.860
Welche Insel?

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

00:26:34.180 --> 00:26:36.160
zu machen. Kommst du natürlich

00:26:36.160 --> 00:26:38.120
super hin. Wir waren dann am Ende doch

00:26:38.120 --> 00:26:40.140
in Berlin, weil das DIN-Gebäude in Berlin

00:26:40.140 --> 00:26:41.940
bot sich an. Wir waren auch in London.

00:26:42.540 --> 00:26:59.440
Weil auch da haben die gesagt, das bietet sich an. Das ist schon ganz schön, das ist natürlich teuer, weil die Reisen musst du ja auch irgendwo bezahlen. Und Standardisierung ist ein spannendes Thema, ist halt, ja, wenn man weiß, wie es funktioniert.

00:26:59.440 --> 00:27:12.740
Und Amerika kam immer mit 15 Leuten auf diese internationalen Meetings, weil es konnte ja passieren, dass bei den Diskussionen irgendwas dann entschieden werden musste, wo das Land eine Stimme abgibt und damit die dann überhaupt eine Mehrheit hatten.

00:27:13.860 --> 00:27:32.160
Während Deutschland, wir waren damals zu zweit, es war noch die Uni Aachen damals mit in dem Gremium, als ich da drin war. Die haben gesagt, wenn ihr beide euch einig seid, einer von Eureka und ich, dann passt das schon so ungefähr. Und auch die anderen Länder waren kleiner. Aber wie gesagt, IBM und Eureka, die saßen fast in jedem Land, hatten die versucht. Das war schon sehr spannend.

00:27:32.440 --> 00:27:45.280
Und Postgres wollten sie immer nicht haben oder nicht annehmen, weil es war ja rein Open Source, da gab es keine Legal Entity und so weiter und so fort. Mittlerweile sitzt der Peter tatsächlich im Standardgremium in Deutschland, glaube ich auch.

00:27:45.460 --> 00:28:05.060
Wir haben den Peter sowieso schon mit dazugeholt von PostgresQL. Der hat eine Zeit lang in Finnland gelebt und den haben wir aber immer beratend schon mit dazu gehabt, weil wir Deutschen hatten eigentlich nichts dagegen, wenn Postgres mit drin ist. Weil ich habe offiziell ja MySQL vertreten oder MariaDB. Ne, MySQL tatsächlich, nicht MariaDB, weil es wurde ja von Auric bezahlt.

00:28:05.060 --> 00:28:33.180
Und natürlich hat das Gremium aber mich auch eher dann zu PostgreSQL befragt, weil das war hinterher, als das Oracle war dann ganz lustig, weil eigentlich mussten die von Oracle jetzt MySQL mit vertreten und irgendwie kannte ich dann MySQL doch besser als die und waren die immer sehr froh, dass ich dann noch mit drin war, aber irgendwann bin ich dann da ausgestiegen, weil ich dann auch nicht mehr, ja, wie gesagt, das ist eine teure Angelegenheit.

00:28:33.840 --> 00:28:47.840
Und mittlerweile ist der Peter Eisentraut da mit drin, dann brauche ich dafür PostgreSQL nicht mal rein und wenn MariaDB da jemanden drin haben möchte, dann, da ich nicht bei MariaDB arbeite, ich weiß nicht, ob einer von MariaDB irgendwo im Gremium sitzt, weiß ich jetzt nicht.

00:28:47.840 --> 00:29:02.060
Aber das war eine spannende Geschichte, mal zu sehen, wie so Standardisierung funktioniert. Und ich finde das dann ganz lustig, weil SQL heißt nämlich nur SQL. Das ist auch eine sehr lustige Geschichte, die ist bei Wikipedia ganz spannend.

00:29:03.120 --> 00:29:22.900
Die hatten, ich hatte vorhin gesagt, vor dem Standard hatten die alle eigene Sprachen. Und die von IBM hieß SQL. Und das Gremium hat dann beschlossen, sie nennen diese neue Sprache, die sie da entwickeln, SQL. War natürlich ein bisschen angelehnt an das IBM SQL, aber war es nicht.

00:29:22.900 --> 00:29:24.700
Was heißt Sequence Query Language?

00:29:24.820 --> 00:29:26.400
Gar nichts, das heißt einfach nur SQL.

00:29:27.100 --> 00:29:28.580
Das steht immer bei Wikipedia,

00:29:28.840 --> 00:29:30.180
Standard Query Language,

00:29:31.300 --> 00:29:33.160
Structured Query Language, irgendwie sowas.

00:29:33.880 --> 00:29:35.020
Und es wird dann, wir schreiben

00:29:35.020 --> 00:29:36.840
dann immer schon, im Englischen ist das lustig,

00:29:36.900 --> 00:29:38.820
wir schreiben dann in die Diskussion immer schon rein und

00:29:38.820 --> 00:29:40.900
ändern das und schreiben dann rein, passt nicht und so.

00:29:41.020 --> 00:29:42.680
Hier, siehe Standard, heißt nur SQL.

00:29:43.660 --> 00:29:44.940
Dann steht es drei Tage auch

00:29:44.940 --> 00:29:46.460
richtig drin und dann ändert es wieder einer.

00:29:47.620 --> 00:29:48.880
Im deutschen Wikipedia

00:29:48.880 --> 00:29:50.300
steht es, glaube ich, mittlerweile richtig drin.

00:29:50.480 --> 00:29:52.360
Also das ist auch so von wegen

00:29:52.360 --> 00:29:53.820
wie funktioniert Wikipedia?

00:29:55.380 --> 00:29:56.560
Wenn man dann da steht

00:29:56.560 --> 00:29:58.540
und denkt so, ich hab's erfunden.

00:30:00.240 --> 00:30:02.340
Das glaube ich auch irgendjemand anderes mal passiert,

00:30:02.520 --> 00:30:04.320
irgendeiner berühmten Person, die hat

00:30:04.320 --> 00:30:05.800
dann irgendwas geändert

00:30:05.800 --> 00:30:07.840
zu sich selbst.

00:30:08.540 --> 00:30:10.340
Das hat Wikipedia wieder zurückgeändert,

00:30:10.480 --> 00:30:12.420
weil sie meinten, sie kennen ihn besser als er selbst.

00:30:12.640 --> 00:30:13.360
Das hat mich geändert.

00:30:14.780 --> 00:30:16.060
Kniffliges Problem, genau.

00:30:16.200 --> 00:30:18.180
Wer ist da autorisiert?

00:30:19.020 --> 00:30:20.720
Deswegen ist Wikipedia auch,

00:30:20.720 --> 00:30:22.820
ich erkläre das immer bei Studierenden,

00:30:23.220 --> 00:30:24.780
deswegen ist Wikipedia auch keine

00:30:24.780 --> 00:30:26.960
zitierwürdige Quelle, wenn die so

00:30:26.960 --> 00:30:28.840
wissenschaftliche Arbeiten schreiben müssen,

00:30:29.600 --> 00:30:31.100
weil das jeder ändern kann

00:30:31.100 --> 00:30:32.800
und weil du dann auch solche Phänomene hast.

00:30:34.520 --> 00:30:37.040
Ja, ganz viel dazu.

00:30:38.400 --> 00:30:39.000
Spannend mal

00:30:39.000 --> 00:30:40.600
die Geschichte vom Datenbanksystem.

00:30:41.680 --> 00:30:43.080
Ja, wir können natürlich sowohl

00:30:43.080 --> 00:30:44.980
Postgres als auch Maria, also ich mache

00:30:44.980 --> 00:30:46.960
überwiegend heute MariaDB

00:30:46.960 --> 00:30:49.160
und PostgresQL, selten noch

00:30:49.160 --> 00:30:51.240
das Original-MySQL, weil das

00:30:51.240 --> 00:30:53.460
Original-MySQL gibt es natürlich bei Oracle immer noch.

00:30:54.780 --> 00:30:55.280
Ich habe aber

00:30:55.280 --> 00:30:57.140
das Gefühl, irgendwo ist meine

00:30:57.140 --> 00:30:59.280
Kundenwolke die, die dann in dem

00:30:59.280 --> 00:31:00.960
Bereich MariaDB einsetzt.

00:31:01.140 --> 00:31:03.260
Also weniger das echte

00:31:03.260 --> 00:31:03.860
MySQL.

00:31:05.340 --> 00:31:06.900
Weil MariaDB ist immer noch

00:31:06.900 --> 00:31:08.960
die Lizenz des Open Source.

00:31:09.660 --> 00:31:11.220
Hat sich da in der Lizenz

00:31:11.220 --> 00:31:12.920
mal, weil MySQL hat ja so ein bisschen

00:31:12.920 --> 00:31:14.760
früher eine etwas komische Lizenz.

00:31:15.040 --> 00:31:16.980
Das war, oder im Vergleich

00:31:16.980 --> 00:31:18.800
zu anderen, also jedenfalls im Vergleich zu Postgres,

00:31:18.820 --> 00:31:20.220
Postgres ist ja sehr liberal, aber

00:31:20.220 --> 00:31:22.200
eine super Lizenz.

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

00:31:25.120 --> 00:31:26.820
und gut, deswegen

00:31:26.820 --> 00:31:28.720
ist ja auch Postgres

00:31:28.720 --> 00:31:30.920
findest

00:31:30.920 --> 00:31:33.000
du ja auch manchmal an ganz lustigen Stellen.

00:31:34.120 --> 00:31:34.760
Das findest du dann

00:31:34.760 --> 00:31:36.620
in irgendwelchen Autos, in irgendwelchen

00:31:36.620 --> 00:31:38.840
Waschmaschinen oder in irgendwelchen Geräten.

00:31:38.940 --> 00:31:40.640
Ich weiß jetzt nicht, auf einer Waschmaschine jetzt wirklich.

00:31:41.580 --> 00:31:42.820
Aber da ist

00:31:42.820 --> 00:31:44.600
dann häufig, häufig ist auf solchen Geräten

00:31:44.600 --> 00:31:46.500
dann abgesprengt, es ist net BSD drauf,

00:31:46.620 --> 00:31:47.640
wegen der BSD-Lizenz.

00:31:48.100 --> 00:31:50.000
Und dann, wenn sie ein Datenbanksystem

00:31:50.000 --> 00:31:51.740
wirklich brauchen, dann eine Postgres auch

00:31:51.740 --> 00:31:53.340
wegen der Lizenz.

00:31:53.420 --> 00:31:55.300
Auf der Apple Watch ist SQLite, wird auch

00:31:55.300 --> 00:31:57.740
gerne verwendet. Also wenn die

00:31:57.740 --> 00:31:59.620
Schritte gezählt werden, auf der Apple Watch

00:31:59.620 --> 00:32:00.460
macht das eine SQLite.

00:32:01.900 --> 00:32:03.700
Aber ja, Postgres auf einer

00:32:03.700 --> 00:32:04.980
Uhr ist vielleicht auch ein bisschen übertrieben.

00:32:05.240 --> 00:32:07.460
Ich darf nicht unbedingt über Referenzen reden, aber

00:32:07.460 --> 00:32:09.580
es ist schon spannend, wo Postgres da so

00:32:09.580 --> 00:32:10.780
überall drin sitzt.

00:32:11.440 --> 00:32:13.580
Deswegen MySQL und MariaDB, die sagen ja immer

00:32:13.580 --> 00:32:15.900
oder MySQL hat sich damit immer gebrüstet,

00:32:15.900 --> 00:32:17.260
vor allen Dingen Oracle und MySQL,

00:32:17.720 --> 00:32:21.300
Die weltverbreitetste Datenbank, ich weiß das gar nicht,

00:32:21.440 --> 00:32:24.560
weil Postgres, ich würde das nicht unterschätzen,

00:32:24.640 --> 00:32:28.320
was da so auf den Geräten ist, wo du nicht als Mensch dran bist.

00:32:28.440 --> 00:32:32.100
Natürlich, MySQL, MariaDB ist unter Webseiten nicht wegzudenken.

00:32:33.180 --> 00:32:35.300
Und du hast ja heute auch in den großen Firmen,

00:32:35.320 --> 00:32:36.440
du hast ja alles im Einsatz.

00:32:36.440 --> 00:32:40.000
Also wenn ich mir mal meinen lieben alten Kollegen Christian Köntorp anhöre,

00:32:40.060 --> 00:32:43.520
was der da an Datenbanken, wie viele Systeme der bei seiner Firma,

00:32:43.720 --> 00:32:45.260
wo er heute arbeitet, im Einsatz hat,

00:32:45.400 --> 00:32:47.220
Das ist ja ganz viel auch von den

00:32:47.220 --> 00:32:49.360
NoSQL-Systemen, das wird ja alles gemischt.

00:32:50.000 --> 00:32:51.280
Ganz viel auch mit den Adobe,

00:32:51.540 --> 00:32:52.480
Adobe, Apache,

00:32:53.400 --> 00:32:55.320
HBase und wie sie alle heißen

00:32:55.320 --> 00:32:57.220
und Neo4j

00:32:57.220 --> 00:32:58.380
und weiß ich nicht.

00:32:59.260 --> 00:33:01.380
Das wird ja tatsächlich auch sinnvoll

00:33:01.380 --> 00:33:03.300
eingesetzt. Nimm das

00:33:03.300 --> 00:33:04.660
Datenbanksystem oder

00:33:04.660 --> 00:33:07.340
mach nicht alles

00:33:07.340 --> 00:33:09.640
im Relationalen, mach das im Relationalen,

00:33:09.640 --> 00:33:11.400
was du im Relationalen abbilden kannst

00:33:11.400 --> 00:33:12.120
und wenn du was

00:33:12.120 --> 00:33:14.440
Graf, was besser in Grafen

00:33:14.440 --> 00:33:16.180
abbilden, wenn es bildet, ist ein Grafen ab.

00:33:16.380 --> 00:33:18.240
Sowas wie Kunden, die auch

00:33:18.240 --> 00:33:20.240
X, die X gekauft haben, haben auch XY

00:33:20.240 --> 00:33:22.380
gekauft. Das ist eher in so einer grafischen

00:33:22.380 --> 00:33:23.980
Datenbank aufgehoben, als in

00:33:23.980 --> 00:33:25.940
einer relationalen.

00:33:25.940 --> 00:33:27.900
Ich würde auf diese beiden Punkte gleich nochmal irgendwie eingehen.

00:33:28.520 --> 00:33:30.120
Ja, aber ich, genau,

00:33:30.280 --> 00:33:30.740
also da,

00:33:31.780 --> 00:33:34.300
ich finde Postgres ist eigentlich

00:33:34.300 --> 00:33:35.160
immer ganz schön, oder sagen wir mal so,

00:33:35.280 --> 00:33:37.360
weil es halt so ein bisschen ähnlich ist,

00:33:37.460 --> 00:33:40.420
wenn ich Webentwicklung

00:33:40.420 --> 00:33:41.560
mache, meistens ja sowas Django,

00:33:42.120 --> 00:33:44.380
mäßiges oder halt, ich mag diesen

00:33:44.380 --> 00:33:46.480
Batteries-Included-Ansatz eigentlich

00:33:46.480 --> 00:33:48.480
da sehr gerne und ich finde, Postgres

00:33:48.480 --> 00:33:50.300
ist das so ein bisschen für die Datenbankwelt, so was

00:33:50.300 --> 00:33:52.220
so Django für die Web, oder Ruby on Rails

00:33:52.220 --> 00:33:54.060
für die Webwelt ist, ist halt so, weil also

00:33:54.060 --> 00:33:56.500
es ist zwar jetzt vielleicht nicht in allen

00:33:56.500 --> 00:33:58.440
Sachen spitze, aber

00:33:58.440 --> 00:34:00.400
es kann halt, also fast alles, was man

00:34:00.400 --> 00:34:02.240
so braucht, ist da schon mal drin und

00:34:02.240 --> 00:34:03.560
man kann das einfach so verwenden

00:34:03.560 --> 00:34:05.620
und ja,

00:34:05.960 --> 00:34:07.540
für viele Sachen ist es halt auch gut genug.

00:34:10.680 --> 00:34:11.080
Vorsicht!

00:34:11.880 --> 00:34:30.640
Tatsächlich, wenn ich so objektiv, ich kann ja objektiv sein, weil mir ist das ja ganz egal, was du einsetzt und ich kenne ja jetzt beide, also ob jetzt Maria oder Poskos einsetzt, ich kenne ja beide Systeme sehr, sehr gut und ich gucke mir tatsächlich, wenn mich jemand fragt, ich gucke mir an, was wollen die machen, was ist das für ein Kunde?

00:34:30.640 --> 00:34:32.920
natürlich erstmal, da gibt es

00:34:32.920 --> 00:34:35.000
ganz viel, da ist das völlig wurscht, ob du Postgres

00:34:35.000 --> 00:34:37.000
oder MariaDB nimmst. Es gibt da so

00:34:37.000 --> 00:34:38.840
Eckpunkte, wo man dann

00:34:38.840 --> 00:34:40.780
sagt, okay, das ist vielleicht eher da

00:34:40.780 --> 00:34:42.920
besser und das ist das besser. Aber was

00:34:42.920 --> 00:34:45.000
ich mir auch angucke, ist dann teilweise die Menschen,

00:34:45.120 --> 00:34:46.700
die es hinterher bedienen müssen, weil

00:34:46.700 --> 00:34:48.980
auch das ist etwas, der eine kommt mit

00:34:48.980 --> 00:34:50.880
Postgres besser zurecht und der andere kommt

00:34:50.880 --> 00:34:52.940
mit MariaDB besser zurecht. Das finde ich jetzt

00:34:52.940 --> 00:34:54.800
spannend. Welchen Nasenfaktor gibt es

00:34:54.800 --> 00:34:56.500
zu MariaDB? Welchen Postgres?

00:35:00.640 --> 00:35:03.720
Postgres ist, es kommt

00:35:03.720 --> 00:35:05.540
darauf an, wo du herkommst, also

00:35:05.540 --> 00:35:07.700
von welchem Daten, auf welchem

00:35:07.700 --> 00:35:09.200
Datenbasis-System hast du gelernt

00:35:09.200 --> 00:35:11.640
Wenn du jetzt wirklich aus

00:35:11.640 --> 00:35:13.800
der DB2

00:35:13.800 --> 00:35:15.660
Informix im IBM-Ecke

00:35:15.660 --> 00:35:17.700
kommst, ist

00:35:17.700 --> 00:35:19.800
Postgres häufig für dich intuitiver

00:35:19.800 --> 00:35:21.800
Wenn du

00:35:21.800 --> 00:35:23.440
aus der Oracle-Ecke kommst

00:35:23.440 --> 00:35:25.640
möchtest du vielleicht auch

00:35:25.640 --> 00:35:27.720
Postgres, aber nicht, weil es intuitiver ist

00:35:27.720 --> 00:35:29.440
sondern weil die Migration

00:35:29.440 --> 00:35:31.680
einfacher ist. Wobei ich das

00:35:31.680 --> 00:35:33.580
heutzutage auch mal dahingestellt lasse,

00:35:33.640 --> 00:35:35.720
du kannst auch zu MariaDB migrieren.

00:35:36.380 --> 00:35:37.700
Wenn du jetzt wirklich aus der

00:35:37.700 --> 00:35:39.260
Webentwicklung kommst,

00:35:40.380 --> 00:35:41.340
Alter LempStack, oder?

00:35:41.820 --> 00:35:43.480
So PHP, was weiß ich,

00:35:43.640 --> 00:35:44.360
ja, Lemp,

00:35:45.120 --> 00:35:47.760
ist vielleicht MariaDB für dich

00:35:47.760 --> 00:35:48.460
intuitiver.

00:35:50.620 --> 00:35:51.760
Also es kommt ein bisschen

00:35:51.760 --> 00:35:53.780
drauf an, wie Hardcore hast du SQL

00:35:53.780 --> 00:35:55.420
gelernt? Auch.

00:35:56.720 --> 00:35:57.940
So sage ich jetzt mal

00:35:57.940 --> 00:36:00.160
ganz trocken. Oder auch, an welcher

00:36:00.160 --> 00:36:02.040
Uni hast du SQL gelernt? Weil die

00:36:02.040 --> 00:36:03.600
SQL-Kurse sind ja häufig

00:36:03.600 --> 00:36:05.720
auch schräg.

00:36:06.880 --> 00:36:08.200
Also wenn ich mal so...

00:36:09.860 --> 00:36:10.180
Habe ich das

00:36:10.180 --> 00:36:10.780
gut ausgedrückt?

00:36:12.780 --> 00:36:14.260
Ich habe da wirklich schon,

00:36:14.360 --> 00:36:16.160
wenn ich so junge Menschen, wenn die so

00:36:16.160 --> 00:36:18.220
lernen, SQL oder Datenbank

00:36:18.220 --> 00:36:20.020
Vorlesungen, es ist schon

00:36:20.020 --> 00:36:21.980
sehr spannend. Dann hat man so ein reines

00:36:21.980 --> 00:36:23.760
Oracle-Dialekt.

00:36:25.000 --> 00:36:25.400
Teilweise.

00:36:25.920 --> 00:36:27.840
Was würdest du denn empfehlen, um überhaupt SQL zu

00:36:27.840 --> 00:36:29.620
lernen. Also wenn ich

00:36:29.620 --> 00:36:31.800
SQL-Kurse gebe, jetzt für Anfänger,

00:36:31.980 --> 00:36:33.460
also für Grundkurse heißt das ja,

00:36:34.120 --> 00:36:35.440
ich mache Standard-SQL.

00:36:37.540 --> 00:36:37.820
Also

00:36:37.820 --> 00:36:39.820
ich erzähle dir auch erstmal nicht, dass

00:36:39.820 --> 00:36:41.780
es in Postgres einen Datentyp Text gibt oder

00:36:41.780 --> 00:36:43.480
ähnliches, sondern ich mache wirklich erstmal

00:36:43.480 --> 00:36:45.580
Standard-SQL und mache wirklich die

00:36:45.580 --> 00:36:47.600
Standardsachen, weil die funktionieren wirklich bei allen.

00:36:49.740 --> 00:36:51.640
Kennst du da irgendwelche besonderen Tools, die man vielleicht noch

00:36:51.640 --> 00:36:53.620
verlinken könnte? Achso, du meinst jetzt

00:36:53.620 --> 00:36:55.780
für Leute, die das grafisch machen

00:36:55.780 --> 00:36:57.640
wollen? Ja, oder nicht unbedingt

00:36:57.640 --> 00:36:58.820
grafisch, aber einfach so als

00:36:58.820 --> 00:37:02.000
Kontext drumherum.

00:37:02.200 --> 00:37:04.020
Wenn du bei mir SQL lernst,

00:37:04.100 --> 00:37:05.720
dann musst du das natürlich selbst runterschreiben.

00:37:05.840 --> 00:37:07.820
Ja, das finde ich super. Aber genau das ist ja

00:37:07.820 --> 00:37:09.740
vielleicht, also ich habe zwei tolle Sachen entdeckt

00:37:09.740 --> 00:37:11.540
im Netz, die mir da sehr geholfen haben. Und zwar eins,

00:37:11.980 --> 00:37:12.820
ein Detektivspiel,

00:37:13.820 --> 00:37:15.480
wo man irgendwie einen Mordfall aufklären musste.

00:37:16.540 --> 00:37:17.660
Geführt mit SQL. Das war ein

00:37:17.660 --> 00:37:19.700
SQL-Tutorial. Das will ich sehen. Genau, das

00:37:19.700 --> 00:37:21.540
finde ich cool, weil ich finde Gamification ganz

00:37:21.540 --> 00:37:23.480
gut. Wenn du bei mir die Schulung buchst, dann kriegst du dann

00:37:23.480 --> 00:37:25.420
einen Bindfaden und darfst dann an einer

00:37:25.420 --> 00:37:27.900
Pinnwand mit Bindfaden und Moderationskarten

00:37:27.900 --> 00:37:29.440
rumspielen, damit

00:37:29.440 --> 00:37:31.380
das ein bisschen lustiger wird

00:37:31.380 --> 00:37:33.020
in der Gruppe oder so, aber

00:37:33.020 --> 00:37:35.320
ich erkläre auch Normalisierung.

00:37:35.680 --> 00:37:37.420
Das ist ja auch so ein Thema, was

00:37:37.420 --> 00:37:39.500
immer noch ist. Das müssen wir auch gleich

00:37:39.500 --> 00:37:41.400
nochmal machen, das finde ich nämlich auch interessant, das machen wir aber auch

00:37:41.400 --> 00:37:43.140
gleich, glaube ich, nochmal extra, Normalisierung.

00:37:44.300 --> 00:37:45.020
Das ist halt nur,

00:37:45.540 --> 00:37:47.320
wenn du so teilweise die ganz

00:37:47.320 --> 00:37:49.280
jungen Menschen, wenn die so SQL in der

00:37:49.280 --> 00:37:51.340
Uni oder wo auch immer eine Ausbildung bei

00:37:51.340 --> 00:37:52.460
der IHK oder so,

00:37:53.140 --> 00:37:55.160
teilweise, wenn du da reinguckst,

00:37:55.260 --> 00:37:57.380
Also ich werde ja dann häufiger auch mal nach Hilfe gefragt

00:37:57.380 --> 00:37:59.480
von jungen Menschen, so ganz unabhängig.

00:38:00.160 --> 00:38:02.320
Und was ich da teilweise sehe, wo ich dann denke,

00:38:02.460 --> 00:38:04.960
okay, wir schlucken mal.

00:38:05.300 --> 00:38:07.600
Das ist jetzt aber ganz stark Eureka-Lastik

00:38:07.600 --> 00:38:10.480
oder ganz stark MySQL-Lastik hast du auch.

00:38:12.040 --> 00:38:14.460
Häufig, was ich traurig finde

00:38:14.460 --> 00:38:16.540
in der heutigen Datenbankausbildung ist,

00:38:17.840 --> 00:38:20.160
also ich weiß jetzt nicht, wie es jetzt in der Pandemie

00:38:20.160 --> 00:38:21.740
kann sich das ja geändert haben.

00:38:21.840 --> 00:38:22.820
Ich glaube das aber nicht.

00:38:23.520 --> 00:38:26.580
Also die letzten Datenbank-Vorlesungen, die ich gegeben habe,

00:38:27.920 --> 00:38:30.340
ich habe dann tatsächlich mich da mal reingekniet

00:38:30.340 --> 00:38:31.880
und mir auch die anderen angeguckt,

00:38:31.940 --> 00:38:33.920
weil die sind seit 2007 auf dem Markt.

00:38:34.540 --> 00:38:37.220
Und ich kann nicht mehr nur relationale Datenbanken machen,

00:38:37.220 --> 00:38:39.180
wenn ich es lerne, sondern ich sollte vielleicht auch mal sagen,

00:38:39.260 --> 00:38:42.240
was ist eine grafenbasierte Datenbank oder eine dokumentenbasierte,

00:38:42.840 --> 00:38:46.780
dass man das zumindest mal vorstellt und mit reinmacht.

00:38:46.860 --> 00:38:48.640
Du musst jetzt kein GQL und SQL.

00:38:48.940 --> 00:38:50.700
Ich glaube, das ist für so ein Informatikstudium,

00:38:50.860 --> 00:38:52.480
wenn du es hinterher nicht brauchst.

00:38:52.920 --> 00:38:55.040
Datenbank ist ein Pflichtfach. Das ist ja

00:38:55.040 --> 00:38:57.000
sowas. Nur, dass du es zumindest schon mal

00:38:57.000 --> 00:38:58.940
gehört hast, das finde ich halt sehr

00:38:58.940 --> 00:39:01.100
wichtig, dass man nicht nur immer auf die

00:39:01.100 --> 00:39:02.740
Relationalen eingeht.

00:39:03.300 --> 00:39:03.980
In der Ausbildung.

00:39:04.700 --> 00:39:06.740
Ich mache natürlich hauptsächlich Relationale,

00:39:06.860 --> 00:39:08.840
weil das ist mein Thema. Zum Anfang, ich habe es

00:39:08.840 --> 00:39:11.160
rausgefunden, und zwar ist das SQL Murder Mystery.

00:39:11.640 --> 00:39:12.640
Ah ja. Das ist das erste.

00:39:12.780 --> 00:39:14.780
Da geht es halt darum, den Mordfall, also Murder

00:39:14.780 --> 00:39:15.560
in SQL City,

00:39:16.640 --> 00:39:18.940
die muss man aufklären und dafür lernt man halt die ersten

00:39:18.940 --> 00:39:20.800
Queries zu machen, wer war denn in welcher Straße,

00:39:20.800 --> 00:39:22.900
wann, wie, wo. Das ist sehr interessant.

00:39:22.920 --> 00:39:25.160
Das muss man halt auch schreiben dann, die Queries selber.

00:39:25.660 --> 00:39:26.900
Ich habe eine Zeit lang auch mal

00:39:26.900 --> 00:39:29.000
irgendwie sowas gemacht. Stell dir vor, du bist in deiner Küche

00:39:29.000 --> 00:39:30.540
und dann duftest du deine eigene Küche.

00:39:31.360 --> 00:39:32.680
Wo sind die Teller und so weiter.

00:39:32.940 --> 00:39:34.360
Das habe ich auch schon mal gemacht.

00:39:34.640 --> 00:39:36.100
Aber das finde ich cool, ja.

00:39:36.380 --> 00:39:38.020
Und ich habe noch ein zweites Story mal gemacht.

00:39:38.140 --> 00:39:40.300
Das ist auch sehr schön. Select Star, SQL heißt das.

00:39:40.360 --> 00:39:40.900
Da geht es darum,

00:39:41.820 --> 00:39:44.340
das ist ein bisschen ein traurigeres Thema, aber die

00:39:44.340 --> 00:39:47.120
Gefängnisinsassen in Texas, die zum Tode verurteilt waren,

00:39:47.200 --> 00:39:49.060
auszuwerten, was denn deren letzten Worte waren

00:39:49.060 --> 00:39:49.700
und warum und so.

00:39:51.880 --> 00:39:53.820
Ja, aber da gab es dann auch ein...

00:39:53.820 --> 00:39:55.460
Ich habe gerade bei den Psychologen,

00:39:55.500 --> 00:39:56.780
die Psychologen-Statistik,

00:39:56.880 --> 00:40:00.460
sollten dann irgendwelche BWL-Statistiken machen,

00:40:00.560 --> 00:40:01.860
Umsatzstatistiken und so weiter,

00:40:01.980 --> 00:40:03.580
wo die Psychologen dann da standen,

00:40:03.600 --> 00:40:04.840
was ist das eigentlich alles?

00:40:05.400 --> 00:40:07.200
Also, weil das so BWL-lastig war.

00:40:07.800 --> 00:40:08.600
Und dann habe ich auch,

00:40:08.660 --> 00:40:10.300
ich hatte denen halt im Tutorium geholfen

00:40:10.300 --> 00:40:14.080
und dann habe ich dann einfach die eine Aufgabe gegeben.

00:40:14.180 --> 00:40:15.480
Ich glaube, es war eine Umsatzstatistik.

00:40:15.480 --> 00:40:17.600
Da habe ich die Sterbestatistik draus gemacht.

00:40:18.060 --> 00:40:19.420
Es war dann auch zwar makaber,

00:40:19.640 --> 00:40:22.240
Aber es war für die leichter Nachfolge zu vollziehen

00:40:22.240 --> 00:40:24.260
als irgendwas BWL-lastiges.

00:40:24.660 --> 00:40:26.220
So, was passiert jetzt?

00:40:26.240 --> 00:40:27.860
Wie viele Menschen sterben da jetzt von?

00:40:29.120 --> 00:40:31.000
Deswegen, also da muss man immer gucken,

00:40:31.060 --> 00:40:32.220
was man für ein Publikum hat.

00:40:32.760 --> 00:40:34.780
Und das ist in der Ausbildung halt sehr, sehr schwierig,

00:40:34.960 --> 00:40:37.460
weil am besten findest du natürlich Beispiele,

00:40:37.820 --> 00:40:38.680
die auch alle kennen.

00:40:38.880 --> 00:40:40.000
Deswegen nehme ich immer gerne,

00:40:40.540 --> 00:40:42.240
ich habe es aufgegeben, das Kochbuch zu nehmen,

00:40:42.300 --> 00:40:44.060
weil so ein Kochbuch, so eine Kochbuch-Datenbank

00:40:44.060 --> 00:40:44.920
ist recht komplex.

00:40:45.440 --> 00:40:46.720
Vor allen Dingen heutzutage,

00:40:46.840 --> 00:40:47.840
also früher habe ich immer gesagt,

00:40:47.960 --> 00:40:50.080
es googelt, es sucht niemand in einer

00:40:50.080 --> 00:40:51.960
Datenbank nach, gebe mir alle Rezepte

00:40:51.960 --> 00:40:52.740
mit einem Teelöffel.

00:40:53.700 --> 00:40:55.220
Oder wo die Menge fünf ist.

00:40:56.440 --> 00:40:57.440
Brauchst du aber heute doch.

00:40:57.470 --> 00:41:00.970
Doch einzeln normalisierst du tatsächlich auch aus heutzutage,

00:41:01.150 --> 00:41:04.510
weil Rezepte, dann hast du natürlich heute auch den Anspruch dran,

00:41:04.930 --> 00:41:06.550
ich will das mal für zwei Personen kochen,

00:41:06.630 --> 00:41:08.650
mal für vier Personen, dann wird mit den Mengen gerechnet.

00:41:08.850 --> 00:41:10.350
Dann brauchst du die Mengen wieder einzeln.

00:41:10.810 --> 00:41:12.710
Aber nach wie vor sucht natürlich keiner nach,

00:41:12.790 --> 00:41:15.870
gib mir alle, wo Teelöffel drin vorkommt oder so,

00:41:15.990 --> 00:41:19.630
oder Messbecher oder Tasse oder was man immer eine Prise,

00:41:20.010 --> 00:41:22.630
gib mir alle Rezepte, wo eine Prise drin vorkommt, das Einheit.

00:41:22.630 --> 00:41:23.530
Ein Quäntchen Glück.

00:41:24.210 --> 00:41:35.310
Ja, aber Kochbuch ist schon eine recht aufwendige Datenbank, das kannst du dann so als Prüfung mal verkaufen, aber dann willst du meistens auch noch irgendwas, du hast hier noch ein View oder ähnliches, dann ist ein Kochbuch wieder auch zu viel.

00:41:36.310 --> 00:41:52.130
Ich glaube, wenn du so eine volle Datenbank hast, mit der interessant ist, dann ist zum Lernen vielleicht besser, also wenn das nicht nur so trockene BWL-Daten sind, weil man dann vielleicht selber Neugier bekommt, auch mal in andere Datensätze reinzuschauen und dadurch, dass man das dann selber eintippen muss, dann halt lernt, wie die Syntax ist, um die Sachen so zu filtern, wie man das mag.

00:41:52.130 --> 00:42:06.330
Du nimmst halt irgendwas Kleines als Beispiel und machst dann aber mittlerweile auch schon sowas wie Datensicherheit mit rein oder Datenschutz. Du musst ja, heute hast du ja auch sowas wie Transparenz und du musst ja, wer hat was, wann, wie geändert und so weiter auch noch mit festhalten.

00:42:07.450 --> 00:42:12.970
Ja, aber gut, wenn ich SQL schreibe, ist das eigentlich nicht mit drin, das muss ja mit einem Meta.

00:42:12.970 --> 00:42:15.750
Nö, das kannst du ja mit, wann du die Zeile geendet hast,

00:42:15.850 --> 00:42:18.970
du on update, da machst du noch eine Spalte mehr dran

00:42:18.970 --> 00:42:21.750
und dann hältst du das dann fest last update.

00:42:21.850 --> 00:42:23.990
Genau, aber das muss ja ein Modell mit drin stehen haben.

00:42:24.250 --> 00:42:25.950
Ja, ja, eben, deswegen, das sind dann aber so Sachen,

00:42:26.030 --> 00:42:27.790
da gehst du dann vielleicht noch mal drauf ein,

00:42:27.930 --> 00:42:30.310
wenn du so, also dass du ein bisschen mehr auf Datenschutz eingehst.

00:42:30.390 --> 00:42:32.930
Du machst immer dieses Beispiel, was sind Transaktionen,

00:42:32.930 --> 00:42:36.810
stell dir vor, du willst dem jetzt 100 Euro überweisen

00:42:36.810 --> 00:42:40.230
und das muss natürlich auf beiden Konten sein oder auf gar keinem.

00:42:40.370 --> 00:42:42.210
Ich kann nicht sagen, bei dir sind 100 abgezogen

00:42:42.210 --> 00:42:43.570
und bei dir sind sie nicht angekommen,

00:42:44.110 --> 00:42:46.130
wenn das in der Zwischenzeit, ne, das erklärst du

00:42:46.130 --> 00:42:48.370
immer noch, aber das weiß auch jeder, dass du das in der Praxis

00:42:48.370 --> 00:42:50.250
nicht machst. Noch so ein Thema, das müssen wir gleich noch mal kurz

00:42:50.250 --> 00:42:52.110
Transaktionen, das müssen wir gleich alles noch mal

00:42:52.110 --> 00:42:53.750
aufmachen, da können wir uns die Reihenfolge überlegen,

00:42:54.290 --> 00:42:56.150
aber ja, zum

00:42:56.150 --> 00:42:58.050
Einstieg, ist dir noch was eingefallen, wie man das am besten

00:42:58.050 --> 00:42:59.310
lernen kann oder was du denkst?

00:43:00.090 --> 00:43:01.970
Tja, ich hab, ich weiß es nicht genau,

00:43:02.070 --> 00:43:04.410
ich hab vielleicht eine pessimistische,

00:43:05.150 --> 00:43:06.330
etwas pessimistische

00:43:06.330 --> 00:43:08.110
Ansicht dazu, dass man, ich glaub, ich weiß nicht,

00:43:08.170 --> 00:43:09.910
ob man das so trocken lernen kann,

00:43:09.910 --> 00:43:11.950
also, oder vielleicht bin ich einfach nicht der Typ

00:43:11.950 --> 00:43:14.010
dafür. Ich kann das nur lernen,

00:43:14.090 --> 00:43:14.990
wenn ich das tatsächlich brauche.

00:43:15.310 --> 00:43:17.050
Und es dauert auch lange.

00:43:18.630 --> 00:43:19.850
Ich habe

00:43:19.850 --> 00:43:21.510
angefangen, mich mit diesem Thema zu beschäftigen.

00:43:21.730 --> 00:43:23.130
Ich fühle mich einigermaßen sicher.

00:43:23.310 --> 00:43:26.050
Bei relationalen Daten machen wir das eher so Jahre.

00:43:26.810 --> 00:43:27.290
Und das waren,

00:43:28.990 --> 00:43:30.370
wenn man jetzt eine Vorlesung

00:43:30.370 --> 00:43:31.290
hört oder eine Prüfung schreibt,

00:43:31.950 --> 00:43:33.910
das ist aus meiner Sicht nicht so richtig gut möglich.

00:43:33.910 --> 00:43:35.870
Ihr müsst jetzt aber wieder verstehen, dass wenn Jochen meint,

00:43:35.970 --> 00:43:38.170
dass er so einigermaßen sich wohl fühlt, ist er derjenige,

00:43:38.270 --> 00:43:39.330
der das richtig aus dem Schlaf dann...

00:43:39.330 --> 00:43:41.850
Nein, einfach so, dass man halt ungefähr weiß,

00:43:41.910 --> 00:43:44.090
was man da tut, dann das ist...

00:43:44.090 --> 00:43:45.730
Dann hatte ich einen guten Prof, also ich

00:43:45.730 --> 00:43:47.470
habe das relativ schnell, aber

00:43:47.470 --> 00:43:49.570
tatsächlich merke ich, dass

00:43:49.570 --> 00:43:51.550
das Spannende an SQL

00:43:51.550 --> 00:43:52.150
ist,

00:43:52.350 --> 00:43:55.530
das Spannende an

00:43:55.530 --> 00:43:57.490
Mengenlehre ist, ich hatte ja in der ersten

00:43:57.490 --> 00:43:58.670
Klasse noch Mengenlehre.

00:44:00.310 --> 00:44:01.550
Du musst ja sofort erklären, bitte, was

00:44:01.550 --> 00:44:03.150
ist Mengenlehre? Mengenlehre

00:44:03.150 --> 00:44:05.710
war in der ersten

00:44:05.710 --> 00:44:07.650
Klasse, du hast da so

00:44:07.650 --> 00:44:09.370
ovale gemalt,

00:44:10.030 --> 00:44:11.590
einen links, einen rechts, das war deine

00:44:11.590 --> 00:44:13.730
Menge mit den roten

00:44:13.730 --> 00:44:15.470
Plättchen und das war deine Menge mit den

00:44:15.470 --> 00:44:16.330
blauen Plättchen.

00:44:17.230 --> 00:44:19.270
Und dann wolltest du jetzt wissen,

00:44:19.930 --> 00:44:21.890
ja, gebe mir alle Plättchen,

00:44:22.050 --> 00:44:23.750
die die Dreiecken haben.

00:44:24.290 --> 00:44:25.570
Und dann hast du die übereinander

00:44:25.570 --> 00:44:27.530
gelegt und dann hast du die Schnittmenge aus dem

00:44:27.530 --> 00:44:29.730
roten und dem blauen Plättchen mit der Schnittmenge

00:44:29.730 --> 00:44:31.370
die Dreiecken haben. Und die wurde dann lila.

00:44:32.030 --> 00:44:32.290
Nein.

00:44:33.350 --> 00:44:35.490
Dann hast du da die viereckigen drin und die fünfeckigen

00:44:35.490 --> 00:44:37.330
und die Kreise hast du da beides und die

00:44:37.330 --> 00:44:38.750
dreieckigen waren halt die Schnittmenge.

00:44:39.530 --> 00:44:41.490
Das ist Mengenlehre. Das nennt man auch

00:44:41.490 --> 00:44:42.990
so, wie heißt das,

00:44:43.430 --> 00:44:45.850
Kombinatorik heißt das dann im Studium

00:44:45.850 --> 00:44:46.510
oder

00:44:46.510 --> 00:44:49.430
Kombinatorik ist es

00:44:49.430 --> 00:44:51.790
mit A und B

00:44:51.790 --> 00:44:53.690
und nicht A oder B

00:44:53.690 --> 00:44:55.110
und solche Geschichten, genau.

00:44:55.510 --> 00:44:57.690
Und ich sage immer, SQL besteht ja fast

00:44:57.690 --> 00:44:59.230
nur aus Mengenlehre.

00:44:59.770 --> 00:45:01.730
Du hast ja, entweder hast du die Schnittmenge

00:45:01.730 --> 00:45:03.390
Join, ein einfacher Join ist ja

00:45:03.390 --> 00:45:05.470
ein innerer Join, ist ja nichts anderes als die Schnittmenge.

00:45:06.230 --> 00:45:07.610
Und ein Outer Join ist immer

00:45:07.610 --> 00:45:09.570
irgendwie eine Menge plus der Schnittmenge

00:45:09.570 --> 00:45:11.790
oder halt irgendwie

00:45:11.790 --> 00:45:13.690
je nachdem, wenn du das natürlich negierst

00:45:13.690 --> 00:45:15.690
oder gib mir nur das eine

00:45:15.690 --> 00:45:17.730
oder das andere. Gib mir alle

00:45:17.730 --> 00:45:19.610
Werte, die aus

00:45:19.610 --> 00:45:21.870
Tabelle A, die nicht in Tabelle B stehen.

00:45:22.010 --> 00:45:23.630
Das wäre jetzt auch ein Outer Join mit einem

00:45:23.630 --> 00:45:25.430
Nicht drin und so weiter. Also

00:45:25.430 --> 00:45:27.810
es basiert immer

00:45:27.810 --> 00:45:29.570
irgendwie, kommst du am Ende immer auf

00:45:29.570 --> 00:45:31.610
Mengenlehre. Also SQL ist ganz viel

00:45:31.610 --> 00:45:33.630
Mengenlehre und

00:45:33.630 --> 00:45:35.670
jetzt habe ich den Faden verloren.

00:45:35.770 --> 00:45:37.630
Was war deine Frage? Ja, ich wollte

00:45:37.630 --> 00:45:39.390
kurz, dass du über die Mengenlehre sprichst, weil du gesagt hast,

00:45:39.490 --> 00:45:40.690
dass die Mengenlehre darunter steht.

00:45:40.690 --> 00:45:42.970
Ja, aber du hast vorher was gefragt

00:45:42.970 --> 00:45:43.870
zu SQL.

00:45:44.710 --> 00:45:45.910
Ach so, ja genau.

00:45:46.590 --> 00:45:48.690
Ich habe halt im Studium

00:45:49.230 --> 00:45:50.590
und auch später, wenn ich mal

00:45:50.590 --> 00:45:52.230
junge Menschen ausgebildet habe,

00:45:53.050 --> 00:45:54.370
es gab, du hast

00:45:54.370 --> 00:45:56.550
entweder dieses

00:45:56.550 --> 00:45:58.610
logische Verständnis für

00:45:58.610 --> 00:45:59.890
diese Kombinatorik

00:45:59.890 --> 00:46:01.850
oder du hast sie nicht.

00:46:03.170 --> 00:46:04.490
Also ich hatte immer, wenn ich

00:46:04.490 --> 00:46:06.450
Prüfungen abgenommen habe

00:46:06.450 --> 00:46:08.650
und bewertet habe, ich hatte nur immer Einsen und Fünfen.

00:46:09.410 --> 00:46:10.590
Also nur so ungefähr, es gab

00:46:10.590 --> 00:46:12.490
keine Mitte. Und dann kommen

00:46:12.490 --> 00:46:14.410
dann so einige Institute auf die Idee,

00:46:14.490 --> 00:46:16.450
du musst ja jetzt deine Noten nach der

00:46:16.450 --> 00:46:18.290
Normalverteilung verteilen.

00:46:18.770 --> 00:46:20.450
Und ich sage, super, du hast nur welche, die haben es verstanden

00:46:20.450 --> 00:46:21.830
und nicht, da kannst du ja vielleicht

00:46:21.830 --> 00:46:24.270
eine Nuance, vielleicht 1,3 oder 1,7

00:46:24.270 --> 00:46:25.850
draus machen oder halt, nee.

00:46:26.850 --> 00:46:28.390
Das ist dann immer sehr schön.

00:46:28.770 --> 00:46:30.310
Macht man heute zum Glück nicht mehr mit der

00:46:30.310 --> 00:46:32.030
Normalverteilung, mit den Noten.

00:46:32.470 --> 00:46:33.930
Wüsste ich jedenfalls nicht, aber

00:46:33.930 --> 00:46:37.170
ich weiß nicht, ob das

00:46:37.170 --> 00:46:39.250
angeboren ist oder wie auch immer.

00:46:39.470 --> 00:46:41.230
Vielleicht wäre es interessant, vielleicht Leute, die in der

00:46:41.230 --> 00:46:42.710
ersten Klasse sowas wie Mengenlehre hatten.

00:46:42.710 --> 00:46:45.230
Das war in meinem Studium, ich habe ja Informatik

00:46:45.230 --> 00:46:47.010
erst angefangen zu studieren, da war ich schon 28.

00:46:48.290 --> 00:46:48.490
Und

00:46:48.490 --> 00:46:51.190
da gab es dann natürlich

00:46:51.190 --> 00:46:52.950
auch schon Menschen, weil das wurde nur

00:46:52.950 --> 00:46:55.170
in den 70ern in der

00:46:55.170 --> 00:46:56.810
Grundschule in der ersten Klasse unterrichtet.

00:46:57.510 --> 00:46:59.210
Das war eigentlich keine schlechte Idee,

00:46:59.470 --> 00:47:01.130
muss ich sagen. Aber da haben sich

00:47:01.130 --> 00:47:03.190
so viele Eltern, also man hat sie in Niedersachsen

00:47:03.190 --> 00:47:04.970
und in NRW unterrichtet, ich weiß nicht

00:47:04.970 --> 00:47:07.110
wo noch, da haben sich so viele

00:47:07.110 --> 00:47:08.990
Eltern, da waren die Eltern so massiv dagegen,

00:47:09.050 --> 00:47:10.750
weil sie das nicht verstanden haben, weil sie es ja nicht kannten.

00:47:11.390 --> 00:47:13.070
Und dann hat man es wieder aufgegeben

00:47:13.070 --> 00:47:14.350
und jetzt fängt man dann wieder mit Zellen.

00:47:14.610 --> 00:47:16.790
Also Zellen kam es nach der Mengenlehre so

00:47:16.790 --> 00:47:18.830
ungefähr, oder was man heute in der ersten

00:47:18.830 --> 00:47:20.290
Klasse Mathe macht, ich weiß es nicht.

00:47:20.890 --> 00:47:22.670
Oder in Rechnen heißt das ja, aber

00:47:22.670 --> 00:47:24.790
wir hatten halt Mengenlehre. Und im Studium

00:47:24.790 --> 00:47:26.930
habe ich dann festgestellt, also es gab

00:47:26.930 --> 00:47:28.990
ja die, die das nicht

00:47:28.990 --> 00:47:31.070
mehr in der Schule hatten, in der ersten Klasse.

00:47:32.150 --> 00:47:32.830
Und es gab

00:47:32.830 --> 00:47:34.830
auch noch einen Teil, der das in der ersten Klasse hatte

00:47:34.830 --> 00:47:36.650
und mir war im Studium aufgefallen,

00:47:37.330 --> 00:47:38.830
dass mit der Kombinatorik, die ist

00:47:38.830 --> 00:47:40.650
natürlich viel umfangreicher.

00:47:41.150 --> 00:47:42.830
Mit diesen ganzen A

00:47:42.830 --> 00:47:44.750
und B und oder B und so weiter,

00:47:44.910 --> 00:47:47.030
die machst du ja in Mathe im Studium

00:47:47.030 --> 00:47:48.630
und brauchst sie auch dann später

00:47:48.630 --> 00:47:50.930
zum Beispiel für SQL Kombinatorik

00:47:50.930 --> 00:47:52.870
und die hatten weniger

00:47:52.870 --> 00:47:54.310
Schwierigkeiten damit. Ich dachte, na,

00:47:54.770 --> 00:47:56.750
das ist ja wie Mengenlehre, so ungefähr.

00:47:56.750 --> 00:47:58.670
Da ist nur ein bisschen, dass du nicht mehr

00:47:58.670 --> 00:48:00.890
nur rote und blaue und bunte Plättchen hast

00:48:00.890 --> 00:48:02.610
und Dreiecke und Vierecke, sondern

00:48:02.610 --> 00:48:04.890
komplexere Sachen

00:48:04.890 --> 00:48:06.790
da hast, aber im Grunde, während

00:48:06.790 --> 00:48:08.730
die anderen, die Jüngeren, hatten damit mehr

00:48:08.730 --> 00:48:10.810
Probleme, weil sie das halt nicht schon aus der ersten

00:48:10.810 --> 00:48:12.850
Klasse kannten. Das war mir so aufgefallen

00:48:12.850 --> 00:48:14.190
in der Mengenlehre.

00:48:15.650 --> 00:48:16.530
Und aber...

00:48:16.530 --> 00:48:18.990
Ich frage deswegen, weil vielleicht konnte man sich ja vorbereiten

00:48:18.990 --> 00:48:20.810
zu sowas, indem man nochmal sich so

00:48:20.810 --> 00:48:22.650
diese Basismengenlehre, wie du sagtest,

00:48:22.690 --> 00:48:24.830
mit den unterschiedlichen Schnittmengen, Kreisen

00:48:24.830 --> 00:48:26.390
vor Augen führt, um dann

00:48:26.390 --> 00:48:28.650
zu überlegen, wie das in der SQL ausfällt.

00:48:29.150 --> 00:48:30.890
So ein, jemand, der sowas noch nie

00:48:30.890 --> 00:48:32.950
gesehen hat, der irgendwie einen komplexeren Outer-Join

00:48:32.950 --> 00:48:34.550
ein bisschen zu fassen sieht,

00:48:34.750 --> 00:48:35.930
der ist vielleicht erstmal befordert.

00:48:36.750 --> 00:48:38.630
Ich habe da auch eine Folie für, wo ich

00:48:38.630 --> 00:48:41.030
wirklich das wie in der Schule mit den Ovalen,

00:48:41.070 --> 00:48:42.630
ich nenne das immer Eier, mit den

00:48:42.630 --> 00:48:44.750
Ovalen und Schnittmenge und was

00:48:44.750 --> 00:48:46.710
ist A und B, A oder B

00:48:46.710 --> 00:48:48.390
oder A und nicht B und solche

00:48:48.390 --> 00:48:48.990
Geschichten.

00:48:51.650 --> 00:48:52.790
Es ist sehr lustig,

00:48:52.950 --> 00:48:54.470
es ist immer, dass das funktioniert bei

00:48:54.470 --> 00:48:56.350
MariaDB nicht so ohne weiteres.

00:48:56.490 --> 00:48:58.550
Es gibt mir dann alles aus

00:48:58.550 --> 00:49:00.730
A und B, nur nicht die Schnittmenge.

00:49:00.890 --> 00:49:03.370
Das ist dann ein lustiges Query.

00:49:03.750 --> 00:49:06.070
Wenn man das in der Anwendung braucht, ist dann was anderes.

00:49:06.310 --> 00:49:08.790
Aber nur, damit man dann mal die Logik dahinter versteht.

00:49:09.310 --> 00:49:13.410
Aber es gibt halt, ich weiß nicht, ob das eingeboren ist oder woher.

00:49:14.010 --> 00:49:15.690
Es gibt ja auch beim Programmieren,

00:49:15.690 --> 00:49:18.970
wenn ihr so Algorithmen habt in der Programmiersprache,

00:49:19.710 --> 00:49:22.550
da ist mir auch schon aufgefallen, dass es da Menschen gibt,

00:49:24.030 --> 00:49:26.330
die können der Logik nicht folgen.

00:49:27.050 --> 00:49:27.690
Warum auch immer.

00:49:28.610 --> 00:49:30.990
Die haben aber dann ganz, ganz tolle andere Fähigkeiten,

00:49:31.150 --> 00:49:32.410
die ich nicht habe, aber

00:49:32.410 --> 00:49:35.150
das ist dann.

00:49:35.970 --> 00:49:36.190
Naja.

00:49:37.390 --> 00:49:38.950
Nein, aber bei SQL ist es

00:49:38.950 --> 00:49:40.750
wirklich so, du kannst da nicht so viel falsch machen.

00:49:40.830 --> 00:49:42.690
Also wenn du es verstanden hast, hast du es verstanden.

00:49:43.730 --> 00:49:44.830
Und was du dann

00:49:44.830 --> 00:49:46.290
vielleicht machen kannst, ist

00:49:46.290 --> 00:49:48.810
diese Normalisierung, was du vorhin dann sagtest.

00:49:49.910 --> 00:49:50.790
Aber auch das,

00:49:50.790 --> 00:49:52.590
wenn du es einmal verstanden hast, dann

00:49:52.590 --> 00:49:53.350
ist es auch nicht so schwer.

00:49:53.350 --> 00:49:56.830
Was der Normalisierung überhaupt ist,

00:49:57.250 --> 00:50:00.770
Da gibt es ja, glaube ich, verschiedene Ebenen von oder Stufen, wie man die machen kann.

00:50:01.270 --> 00:50:08.750
Also wenn ich das so laienhaft richtig verstanden habe, ist das das Aufbrechen einer ganz komischen Tabelle in die richtige Form,

00:50:08.750 --> 00:50:15.710
wo halt die einzelnen Tabellen voneinander getrennt werden, wenn Informationen redundant vorhanden sind.

00:50:17.010 --> 00:50:19.330
Und die verbindet man dann halt über Foreign Keys oder sowas.

00:50:19.570 --> 00:50:25.610
Also es gibt, ich kann dir das jetzt erstmal, ich will das jetzt nicht so ganz mathematisch erklären.

00:50:25.710 --> 00:50:36.050
Du hast, ja, es gibt verschiedene Grade von Normalisierung.

00:50:36.050 --> 00:50:38.050
Es gibt die erste Normalform, die zweite Normalform,

00:50:38.750 --> 00:50:41.170
es gibt die dritte und noch folgende.

00:50:41.870 --> 00:50:43.810
Vierte, fünfte, sechste, ich habe keine Ahnung.

00:50:45.070 --> 00:50:47.870
Normalerweise normalisierst du nach der dritten Normalform.

00:50:48.510 --> 00:50:49.850
Das ist so das Übliche.

00:50:50.450 --> 00:50:55.250
Ich kann dir jetzt auswendig nicht sagen, was die erste und die zweite sind.

00:50:55.350 --> 00:50:57.570
Musst du es jedes Mal nachgucken, wenn ich es schule.

00:50:58.050 --> 00:50:59.750
Weil du brauchst immer nur am Ende die dritte.

00:51:00.010 --> 00:51:02.610
Im Grunde geht es darum, das ist eigentlich ganz simpel,

00:51:03.530 --> 00:51:05.510
du möchtest zum einen keine Doppelten.

00:51:06.430 --> 00:51:07.250
Also wenn ich jetzt ...

00:51:07.250 --> 00:51:09.250
Also in zwei Spalten irgendwo eine Adresse steht,

00:51:09.330 --> 00:51:10.690
dann möchte ich die nicht zweimal drin haben,

00:51:10.770 --> 00:51:13.130
sondern eine eigene Adresse, eine Tabelle mit Adressen.

00:51:13.170 --> 00:51:14.170
Ich hätte jetzt gesagt Stadt.

00:51:14.670 --> 00:51:16.690
Ich hätte jetzt gesagt, ich hätte es noch weiter runtergebrochen,

00:51:16.690 --> 00:51:19.990
so Postleitzahl Stadt, das Klassische, was du so in der Tabelle hast.

00:51:20.090 --> 00:51:21.530
Aber wir nehmen mal nur den Städtennamen.

00:51:22.650 --> 00:51:26.130
Ich komme jetzt aus Bielefeld und ich habe vorher mal in Osnabrück studiert.

00:51:28.210 --> 00:51:33.890
Ich habe mittlerweile einen Anschlag von, haben sie erst vor zwei Wochen in China getestet, von 675.

00:51:35.550 --> 00:51:37.250
Osnabrück schaffe ich nie richtig zu schreiben.

00:51:37.370 --> 00:51:38.370
Ich schreibe immer Osanbrücke.

00:51:38.730 --> 00:51:40.270
675 ist ja ein Rekord, finde ich nicht.

00:51:40.530 --> 00:51:42.790
Ja, und Bielefeld schreibe ich auch immer falsch.

00:51:43.330 --> 00:51:48.850
Und wenn ich jetzt aber irgendwie eine Tabelle habe, wo ich jetzt eine Adresse drin habe.

00:51:48.850 --> 00:52:00.070
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:01.230 --> 00:52:27.710
Und um das zu vermeiden, macht man halt eine Tabelle Städte, da hat man dann das Wort Bielefeld einmal drin stehen und dann hat Bielefeld vielleicht die ID 33615, weil das die Postleitzahl ist und oder wonach man das auch immer nur bei Städten wäre, Postleitzahl wäre eine super ID, kann auch eine andere Nummer nehmen, die 760 und dann steht halt bei der Tabelle mit der Person unter Stadt nur 760.

00:52:27.710 --> 00:52:47.590
Und dann kann man das verlinken und sieht dann, ah, die 67 ist Bielefeld. Das ist einfach, das ist eine Sache, damit man sich nicht verschreibt, damit man es nicht irgendwo dann nicht wiederfindet, dass man halt immer dasselbe hat. Und wenn man dann in der Städtetabelle nicht Bielefeld, sondern Bieleflät geschrieben hat, dann ist das halt überall Bieleflät.

00:52:48.530 --> 00:52:49.730
Also das ist das.

00:52:50.710 --> 00:52:51.490
Einfach zu ändern.

00:52:52.430 --> 00:52:54.730
Wenn man es löscht, dann gibt es Bielefeld plötzlich nicht mehr.

00:52:55.190 --> 00:52:55.670
So ungefähr.

00:52:57.110 --> 00:52:58.270
Wie kann das denn sein?

00:52:59.410 --> 00:53:02.410
Ich hätte auch Düsseldorf nehmen können,

00:53:02.690 --> 00:53:04.430
aber bei Düsseldorf tippe ich nicht so häufig.

00:53:04.570 --> 00:53:06.470
Da vertippe ich mich noch nicht so häufig.

00:53:06.930 --> 00:53:09.370
Aber Bielefeld und Osnabrück ist noch schlimmer zu tippen.

00:53:09.510 --> 00:53:11.250
Du tippst immer Osanbrück.

00:53:12.630 --> 00:53:16.130
Das ist tatsächlich der klassische Tippfehler.

00:53:18.110 --> 00:53:25.990
Also das andere ist die Sache, dass du das zusammenpackst, was zusammengehört und nicht mehr.

00:53:27.470 --> 00:53:29.050
Da nehme ich jetzt den Küchenschrank.

00:53:30.310 --> 00:53:34.090
Du hast in deinem Küchenschrank vielleicht eine Schublade, wo die Teller drin sind.

00:53:35.850 --> 00:53:42.470
Oh, da drauf ist noch die Küchenwaage und die Küchenwaage ist umgedreht und in die Schale von der Küchenwaage war es noch ein Messbecher.

00:53:44.410 --> 00:54:00.450
Du hast einen Ort, wo deine Teller sind, du hast einen Ort, wo deine Gläser sind. Ich hatte mal eine Mitarbeiterin, die hat tatsächlich beim Ausräumen der Spülmaschine, nein, ich hatte mal eine Mitarbeiterin, die hat beim Ausräumen der Spülmaschine das einfach immer in irgendeinen Schrank gestellt.

00:54:00.450 --> 00:54:02.230
und dann standen dann die Teller und die Tassen

00:54:02.230 --> 00:54:04.250
irgendwie so alle durcheinander und ich habe nichts mehr wieder

00:54:04.250 --> 00:54:06.290
gefunden. Und

00:54:06.290 --> 00:54:07.470
nein.

00:54:09.430 --> 00:54:10.570
Also du sortierst

00:54:10.570 --> 00:54:11.750
in einem ordentlichen Schrank.

00:54:12.210 --> 00:54:13.950
Du sortierst in deiner Küche,

00:54:14.050 --> 00:54:16.290
ich habe jetzt die Küche genommen, ich hätte auch deinen Kleiderschrank

00:54:16.290 --> 00:54:18.550
nehmen können. Du sortierst das ja ein bisschen.

00:54:19.610 --> 00:54:19.930
Und

00:54:19.930 --> 00:54:22.290
du hast vielleicht

00:54:22.290 --> 00:54:23.870
einen Schrank, wo nur die Gläser drin sind.

00:54:24.070 --> 00:54:26.350
Da hast du Weingläser drin, Biergläser drin und so weiter.

00:54:27.710 --> 00:54:28.350
Aber das ist

00:54:28.350 --> 00:54:29.950
der Schrank, wo nur die Gläser drin sind.

00:54:30.050 --> 00:54:32.130
Und dann hast du einen Schrank, dann nimm mal die ganze Wohnung,

00:54:32.250 --> 00:54:33.490
da sind nur deine Unterhosen drin.

00:54:34.230 --> 00:54:35.410
Die mischst du nicht.

00:54:36.990 --> 00:54:37.350
So.

00:54:38.550 --> 00:54:40.850
Wenn du das mischen würdest, wäre das ganz lustig.

00:54:41.330 --> 00:54:45.730
Aber das ist erst mal so, dass du das so weit runterbringst,

00:54:45.810 --> 00:54:48.570
dass du das, was zusammengehört, diese Einheit,

00:54:48.710 --> 00:54:51.810
mal die Einheit Teller oder was in diesem Küchenschrank ist.

00:54:51.810 --> 00:54:55.030
Du kannst auch sagen, ich habe die Küche mit den Küchengeräten.

00:54:56.450 --> 00:54:58.370
Und da habe ich das Schlafzimmer, da liegt das.

00:54:58.630 --> 00:55:00.930
Du hast ja auch nicht unbedingt deine Kleidung in der Küche

00:55:00.930 --> 00:55:02.850
liegen. Also du kannst auch zimmerweise

00:55:02.850 --> 00:55:04.750
das machen, je nachdem. Aber dass

00:55:04.750 --> 00:55:06.270
du diese Einheit hast,

00:55:07.110 --> 00:55:08.150
in die du das runterbrichst.

00:55:08.150 --> 00:55:09.970
Das finde ich jetzt interessant, weil ich glaube,

00:55:10.130 --> 00:55:12.110
das ist sehr, sehr schwierig, weil ich stelle mir das jetzt

00:55:12.110 --> 00:55:14.410
so vor, dass da relativ viel Validierung

00:55:14.410 --> 00:55:15.970
nötig ist, das da reinzubekommen, weil

00:55:15.970 --> 00:55:17.990
beispielsweise habe ich jetzt einen Schrank, wo Gläser reinkommen,

00:55:18.570 --> 00:55:20.030
aber ich müsste jetzt dann vielleicht doch teilen

00:55:20.030 --> 00:55:22.150
zwischen Weingläsern und Biergläsern und Wassergläsern.

00:55:22.170 --> 00:55:24.130
Dann machst du halt zwei Tabellen. Aber woher weiß

00:55:24.130 --> 00:55:26.050
ich denn jetzt, ob Wasser ein Weinglas oder ein Bierglas oder

00:55:26.050 --> 00:55:28.030
ein... Das hast du ja irgendwo

00:55:28.030 --> 00:55:29.910
definiert. Ja.

00:55:30.870 --> 00:55:32.690
Also, du kannst es auch anders

00:55:32.690 --> 00:55:33.090
machen.

00:55:35.330 --> 00:55:36.890
Wir nehmen mal Autos.

00:55:38.550 --> 00:55:39.070
Autos

00:55:39.070 --> 00:55:39.750
haben eine Farbe.

00:55:42.730 --> 00:55:44.770
Autos haben eine Marke. Autos haben einen Typ.

00:55:45.470 --> 00:55:45.930
Und so weiter.

00:55:47.170 --> 00:55:47.690
So.

00:55:49.010 --> 00:55:50.850
Und die haben einen Preis. Du willst jetzt

00:55:50.850 --> 00:55:52.890
so eine Autowebseite machen,

00:55:53.010 --> 00:55:54.570
wo du dein Auto verkaufen kannst.

00:55:56.430 --> 00:55:56.970
Jetzt stell dir

00:55:56.970 --> 00:55:59.090
vor, du packst alles, alle Informationen

00:55:59.090 --> 00:56:00.850
des Autos in eine

00:56:00.850 --> 00:56:01.370
Tabelle.

00:56:04.270 --> 00:56:04.830
So,

00:56:05.110 --> 00:56:06.950
und jetzt will ein Käufer

00:56:06.950 --> 00:56:10.750
danach suchen.

00:56:12.950 --> 00:56:14.590
Er möchte jetzt nur, nennen wir eine

00:56:14.590 --> 00:56:16.450
Automarke, nur Mercedes haben.

00:56:17.850 --> 00:56:18.670
Bestimmt ein Typ noch,

00:56:18.670 --> 00:56:19.850
ein bestimmtes Baujahr.

00:56:21.370 --> 00:56:22.610
Und dann überlegt sich der

00:56:22.610 --> 00:56:24.650
Käufer, okay, also du musst dann alles aus dieser

00:56:24.650 --> 00:56:25.910
einen Tabelle raussuchen.

00:56:26.970 --> 00:56:34.730
Dann überlegt sich der Käufer, naja, eigentlich möchte ich nur diesen Typen haben von dem Auto.

00:56:35.450 --> 00:56:44.230
Jetzt steht der Typ da immer wieder in dieser Tabelle drin, du hast ja keine zweite Tabelle, wo der Typ drin steht und hast dann nur die Nummern drin, auch noch fünfmal falsch geschrieben wahrscheinlich, ne?

00:56:44.370 --> 00:56:46.110
Mercedes vielleicht auch noch dreimal falsch geschrieben.

00:56:46.990 --> 00:56:53.210
Du hast alles in einer Tabelle, das wird sehr, sehr schnell, wird die Tabelle sehr, sehr breit.

00:56:54.970 --> 00:57:13.890
Auch bei der Farbe, gib mir alle roten Autos, Frauen suchen ja gerne, habe ich mal gehört, nach der Farbe der Autos, weiß ich jetzt gar nicht, ob das, habe ich noch nie ausprobiert bei solchen Sachen, gib mir alle roten Autos, aber theoretisch geht das wahrscheinlich, praktisch geht das wahrscheinlich auch, aber erstmal wird die Tabelle ziemlich breit und du bist da.

00:57:13.890 --> 00:57:15.110
Also breit hast du viele Spalten.

00:57:15.290 --> 00:57:17.810
Viele Spalten, also du hast halt viele Informationen zu dem Auto.

00:57:17.950 --> 00:57:21.090
Es hat vier Reifen, es hat vielleicht noch die Reifentypen und so weiter.

00:57:21.450 --> 00:57:28.830
Und die Reifengröße und was weiß ich, was man da Baujahr und wie alt, Tachostand und alles mögliche.

00:57:29.370 --> 00:57:32.250
Aber das ist alles in eine Tabelle und dann sucht jemand,

00:57:32.870 --> 00:57:35.990
möchtest du einen Käufer haben, der jetzt bestimmte Eigenschaften daraus sucht.

00:57:36.790 --> 00:57:39.030
Ich kann dir sagen, das wird sehr, sehr groß.

00:57:39.030 --> 00:58:02.250
Es gab in der Vergangenheit eine Plattform, die was Ähnliches gemacht hat und die hatten wirklich nur eine Tabelle. Und die haben mit Hardware skaliert, weil sie das nicht mehr anders skaliert haben und die sind auch dann ein wenig in finanzielle Not geraten, weil die Hardware dann irgendwann nicht mehr bezahlbar war.

00:58:02.250 --> 00:58:04.930
Okay, immer teurer, mehr Geld aufmachen.

00:58:04.930 --> 00:58:31.630
In der Zwischenzeit waren aber ein paar Kollegen von mir da. Die hatten erst, glaube ich, eine Oracle-Datenbank. Ich wusste davon nichts. 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.190 --> 00:58:58.710
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. Und ich habe dann gesagt, naja, das liegt nicht an dem Datenbanksystem, was ihr da drunter habt, das liegt an dem Design eurer Datenbank. Das solltet ihr mal ändern. Ihr werdet mit PostgreSQL genau das gleiche Problem kriegen wie mit MySQL war es damals noch.

00:59:01.350 --> 00:59:13.690
Ich bin dann nach Hause gefahren und dann kriegte mein britischer Kollege einen Anruf, der konnte die Consultant verscheißen. Ich habe ja nicht das gesagt, was ich hören wollte so ungefähr. Schick mal einen anderen.

00:59:13.690 --> 00:59:30.850
Und mein britischer Kollege hat dann einen ganz jungen dahin geschickt, weil er meinte, naja, ich werde auch nichts anderes sagen als du. Und ich habe mich dann, ohne überhaupt irgendwie einen Namen zu nennen, weil das ist ja auch immer gefährlich so zu Hause, man hat ja auch Geschäftsgeheimnis und so weiter.

00:59:31.350 --> 00:59:47.490
Ich habe das dann zu Hause, ich habe mich mit meinem Mann darüber aufgeregt, über diesen Kunden, ohne ihn zu benennen. Ich weiß jetzt nicht, ob mein Mann wusste, bei welchem großen Kunden ich war. Er wusste jedenfalls nichts von dieser Plattform.

00:59:49.270 --> 01:00:15.030
Und ohne, dass ich das jemals erwähnt hatte, sagte mein Mann dann, das war die Plattform, ich so, woher weißt du das? Und dann hat er mir das erzählt, dass zwei sehr bekannte MySQL-Consultants, da damals schon mal waren, da wollten die von Oracle nach MySQL migrieren und die beiden hatten auch, der erste hatte gesagt, naja, das liegt nicht an Oracle, das liegt an eurem System.

01:00:15.030 --> 01:00:26.450
Und dann war der, aber hatte dann bei MySQL dann auch, Consultant ist scheiße, dann ist der andere hingefahren, auch sehr namhaft und bekannt, der hat das dann auch nochmal gesagt und ich glaube ein dritter war dann auch nochmal da.

01:00:27.050 --> 01:00:29.870
Der hat dann gesagt, hat er gehört, was die vorher beraten, hat er gesagt, oh ja, ja.

01:00:29.870 --> 01:00:53.670
Nee, nee, das brauchst du gar nicht, das war so offensichtlich. Und naja, okay. Und dann hatten die nie wieder was davon gehört, bis ich dann da war. Und ich kriegte dann am Ende einen Anruf von dem großen Unternehmen und wurde dann gefragt, nur so irgendwie eine Stufe höher, was denn da los war. Und dann habe ich das erzählt und dann haben die wirklich diese Plattform ein halbes Jahr aus dem Netz genommen und komplett neu programmiert.

01:00:54.450 --> 01:01:11.430
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.230 --> 01:01:39.370
Ja, das ist, MariaDB hat irgendwo ein Spaltenlimit bei, ich weiß nicht wo, 256 oder so. Wenn du das erreichst, ich habe so Tabellen gesehen, wenn das dann nur noch hochscrollt an Spalten, das ist überhaupt nicht mehr wartbar. Also mal abgesehen davon, dass da ganz komische Artefakte passieren, aber irgendwann denkst du dir schon von dir aus, okay, ist es vielleicht sinnvoll, diese Tabelle mal mehrere aufzuteilen.

01:01:39.370 --> 01:01:41.370
Ja, das vielleicht unter Kategorien zu fassen.

01:01:41.650 --> 01:02:04.190
Ja genau, also das Normalisieren heißt einfach, du fasst es irgendwo so zu Kategorien zusammen oder das zusammen, was zusammen gehört. Wenn du jetzt das klassische Wikipedia-Beispiel zur dritten Normalform oder überhaupt zu den Normalformen ist immer Musik. Die haben dann immer Interpreten, Alben und Songtitel. Kann man jetzt den Lieblingsinterpreten draus machen, was auch immer.

01:02:05.010 --> 01:02:07.090
Wenn du jetzt natürlich eine Tabelle hast,

01:02:07.210 --> 01:02:09.110
da steht dann fünfmal Helene Fischer,

01:02:09.430 --> 01:02:10.970
äh, dumm, fünfmal die

01:02:10.970 --> 01:02:12.530
Ärzte, kenn ich mehr Titel,

01:02:13.190 --> 01:02:15.050
und da steht

01:02:15.050 --> 01:02:16.950
dann 127 Mal, oder wer weiß, wie

01:02:16.950 --> 01:02:18.870
viele Songs die Ärzte gemacht haben, da

01:02:18.870 --> 01:02:20.810
drin, 127 Mal die

01:02:20.810 --> 01:02:22.590
Ärzte und daneben steht dann,

01:02:22.750 --> 01:02:24.750
sag mal, erst mal, wie

01:02:24.750 --> 01:02:26.430
viele Songs sind auf so einem Album?

01:02:27.070 --> 01:02:28.330
30 Mal

01:02:28.330 --> 01:02:30.950
das eine Album, dann das

01:02:30.950 --> 01:02:32.710
andere Album und dann die Songtitel nochmal.

01:02:33.750 --> 01:02:34.990
Dann hast du erst schon 127

01:02:34.990 --> 01:02:36.910
Zeilen, wo du die Ärzte doppelt

01:02:36.910 --> 01:02:38.990
zigfach drin hast und dann

01:02:38.990 --> 01:02:40.990
das machst du ja nicht nur mit einem,

01:02:41.070 --> 01:02:43.350
das machst du dann ja mit deiner ganzen Plattensammlung

01:02:43.350 --> 01:02:45.310
oder deiner ganzen Song-Sammlung

01:02:45.310 --> 01:02:47.250
und dann hast du eine riesige Tabelle.

01:02:48.530 --> 01:02:49.190
Also, was

01:02:49.190 --> 01:02:50.990
machst du da? Du machst natürlich

01:02:50.990 --> 01:02:53.070
als erstes mal, du nimmst erst mal die

01:02:53.070 --> 01:02:54.810
Interpreten raus,

01:02:55.550 --> 01:02:56.990
machst da von der eigenen Spalte, da hast du

01:02:56.990 --> 01:02:59.310
eine Interpretenspalte. Kannst du vielleicht noch mal die Adresse

01:02:59.310 --> 01:03:01.090
oder wo du dann die

01:03:01.090 --> 01:03:03.150
Autogrammkarten kriegst oder was auch immer,

01:03:03.270 --> 01:03:06.850
je nachdem, warum du jetzt die Musiktitel sammelst,

01:03:07.350 --> 01:03:08.330
noch mit dazu packen,

01:03:08.550 --> 01:03:10.790
Ansprechpartner oder Ähnliches von der Band.

01:03:11.370 --> 01:03:13.230
Aber die packst du in eine Tabelle,

01:03:13.330 --> 01:03:14.110
die kriegen eine ID,

01:03:14.690 --> 01:03:15.770
diese klassische Personen-ID,

01:03:16.010 --> 01:03:17.450
die lässt du automatisch generieren,

01:03:17.950 --> 01:03:19.710
haben die halt so, was weiß ich,

01:03:19.790 --> 01:03:22.270
die Ärzte ist vielleicht Nummer 1

01:03:22.270 --> 01:03:24.530
und dann steht in deiner Song-Tabelle

01:03:24.530 --> 01:03:26.170
nur noch die 1 drin für die Ärzte

01:03:26.170 --> 01:03:27.430
und die 2 für Rammstein

01:03:27.430 --> 01:03:29.710
und die 3 für irgendwas.

01:03:30.710 --> 01:03:32.370
Und die 27 für Helene Fischer

01:03:32.370 --> 01:03:34.250
sowas in der Richtung. Also

01:03:34.250 --> 01:03:36.550
hast du danach die Nummer und du kannst dann nachgucken,

01:03:36.670 --> 01:03:38.710
wenn du dann hinter der Tabelle bist, okay, interpretest

01:03:38.710 --> 01:03:40.350
Nummer, was hatte ich vorhin, drei

01:03:40.350 --> 01:03:42.770
und dann guckst du in der anderen Tabelle nach, Nummer drei

01:03:42.770 --> 01:03:43.290
ist,

01:03:44.790 --> 01:03:45.490
habe ich vergessen.

01:03:47.210 --> 01:03:48.150
Hatte ich überhaupt eine drei?

01:03:48.530 --> 01:03:50.770
Weiß ich nicht mehr, aber eine zwei bei Rammstein,

01:03:50.870 --> 01:03:51.990
das weiß ich noch. Und die drei ist dann

01:03:51.990 --> 01:03:53.990
Sepultura, irgendeine Metalband. Ja, egal.

01:03:54.370 --> 01:03:56.550
Nur, dass du dann halt

01:03:56.550 --> 01:03:57.930
nur noch über die Zahlen das machst.

01:03:58.230 --> 01:03:59.630
Dasselbe machst du mit den Alben.

01:04:00.490 --> 01:04:02.950
weil ja auf so einem Album, du willst ja den Titel haben am Ende,

01:04:03.110 --> 01:04:04.670
wir sind ja bei dem Titel im Grunde,

01:04:05.170 --> 01:04:08.650
aber auf so einem Album ist ja immer auch mehr als ein Song drauf.

01:04:10.010 --> 01:04:12.170
Also lagerst du die Alben auch aus.

01:04:13.390 --> 01:04:14.790
Da kannst du noch eine Verknüpfung machen,

01:04:14.910 --> 01:04:17.550
Album und Band, so eine Zwischentabelle,

01:04:17.990 --> 01:04:20.270
dass du das Album und die Band noch zusammenlegst,

01:04:20.270 --> 01:04:24.670
dann hast du nicht bei dem Album immer noch die Band stehen,

01:04:24.750 --> 01:04:26.310
sondern du machst eine Zwischentabelle,

01:04:26.650 --> 01:04:28.490
wo du das Album und die Band reinpackst

01:04:28.490 --> 01:04:32.390
Und dann hast du dann, ab 18 ist vielleicht bei den Ärzten,

01:04:32.390 --> 01:04:36.110
das erste Album hat die ID 1, ist von den Ärzten.

01:04:36.250 --> 01:04:38.750
Und dann steht in dieser Zwischenstabelle nur noch 1, 1 drin.

01:04:38.870 --> 01:04:40.890
Album 1, Interpret 1.

01:04:41.490 --> 01:04:43.010
Und dann kannst du das so zusammenfügen.

01:04:44.550 --> 01:04:46.070
Ziehst du halt alles ein bisschen auseinander.

01:04:46.230 --> 01:04:48.330
Und dann hast du halt nur noch die Tabelle mit dem Titel,

01:04:48.570 --> 01:04:51.250
wo dann draufsteht, Album 1, Band 1.

01:04:51.790 --> 01:04:52.890
Ach so, da hättest du es sowieso drin,

01:04:52.930 --> 01:04:53.730
dann brauchst du es gar nicht.

01:04:53.930 --> 01:04:54.950
Oder nur Album 1.

01:04:55.030 --> 01:04:56.830
Und dann kannst du es dann noch mal weiter verlinken,

01:04:57.550 --> 01:04:59.570
wenn du da jetzt nochmal, jetzt wäre das doppelt,

01:04:59.690 --> 01:05:01.270
aber das macht man schon dann, das

01:05:01.270 --> 01:05:03.730
demonymisiert man dann schon mal leicht, aber

01:05:03.730 --> 01:05:05.850
das wäre so, dass du es ein bisschen

01:05:05.850 --> 01:05:07.690
sortierst, dass du es halt kleiner

01:05:07.690 --> 01:05:09.910
machst. Wenn du es aber zu klein

01:05:09.910 --> 01:05:10.410
machst,

01:05:11.590 --> 01:05:13.810
es macht keinen Spaß, Kombinationen

01:05:14.350 --> 01:05:15.770
aus Datenbanken zu suchen, wenn du

01:05:15.770 --> 01:05:17.210
dabei weißt, wie viele Tabellen hast.

01:05:18.310 --> 01:05:19.770
Also bei über 8

01:05:19.770 --> 01:05:21.410
wird das irgendwo spannend.

01:05:22.350 --> 01:05:23.810
Es macht dann auch nicht mehr wirklich Spaß,

01:05:23.910 --> 01:05:25.750
die alle zu verjoinen. Dann fängst

01:05:25.750 --> 01:05:27.950
dann angezielt zu denormalisieren.

01:05:28.030 --> 01:05:29.590
Ich hatte das jetzt gerade schon gemacht,

01:05:30.330 --> 01:05:31.550
indem ich dann halt

01:05:31.550 --> 01:05:33.670
gesagt habe beim Titel, okay, das ist

01:05:33.670 --> 01:05:35.670
auf Album 1 und auf dem Interpreten

01:05:35.670 --> 01:05:37.610
1. Es hätte ja gereicht,

01:05:37.690 --> 01:05:39.290
der Interpret steht ja schon mal beim Album.

01:05:39.910 --> 01:05:41.670
Den hätte ich gar nicht so doppelt

01:05:41.670 --> 01:05:43.730
drin gehabt. Aber das wäre so eine leichte

01:05:43.730 --> 01:05:45.650
Denormalisierung schon. Und das

01:05:45.650 --> 01:05:47.610
erklärt man auch immer gerne. Beim Kochbuch habe ich das

01:05:47.610 --> 01:05:49.350
früher erzählt, niemand sucht nach

01:05:49.350 --> 01:05:51.610
Teelöffel. Das heißt, du kannst bei der

01:05:51.610 --> 01:05:53.670
Menge auch sagen, 200 Teelöffel,

01:05:54.310 --> 01:05:55.150
200 Gramm oder so.

01:05:55.470 --> 01:05:58.750
Da ist es auch egal, ob du Gramm groß, klein oder nur GR schreibst.

01:05:58.870 --> 01:06:01.430
Oder wie du Teelöffel abkürzt, ist auch völlig egal,

01:06:01.530 --> 01:06:02.690
weil da sucht keiner nach.

01:06:04.350 --> 01:06:06.530
Heutzutage ist es aber nicht mehr so,

01:06:06.590 --> 01:06:08.730
dass du in die Menge beim Kochbuch einschreiben kannst,

01:06:08.810 --> 01:06:10.410
300 Gramm Mehl, ne?

01:06:10.750 --> 01:06:13.250
Also du hast Mehl und dann 300 Gramm,

01:06:14.050 --> 01:06:15.730
wenn du jetzt die Zutaten zusammen mischt,

01:06:16.530 --> 01:06:18.530
weil du ja diese Funktion hast,

01:06:18.690 --> 01:06:20.730
ach, gib mal jetzt für zwei Personen oder drei

01:06:20.730 --> 01:06:23.870
und teil mal, dann brauchst du plötzlich nicht mehr 200 Gramm,

01:06:23.950 --> 01:06:25.350
sondern 150 oder so.

01:06:25.470 --> 01:06:36.070
Da musst du dir schon ein bisschen mehr wieder überlegen, aber vom Prinzip her, wo du dann mal gezielt Bottlenecks auch dir angucken kannst und sagen kannst, okay, da den normalisiere ich jetzt bewusst.

01:06:36.910 --> 01:06:44.050
Du machst aber nicht mehr als die dritte Normalform, alle anderen sind eher universitär und unübersichtlich, also so ein bisschen.

01:06:44.350 --> 01:06:45.810
Also die ein bisschen tiefer gehen halt.

01:06:46.150 --> 01:06:53.110
Ja, also die dritte Normalform ist eigentlich das, was du am Ende brauchst und du brauchst immer einen Schlüssel, jeder Datensatz sollte einen Schlüssel haben.

01:06:53.650 --> 01:06:58.750
Es ist ganz lustig, wenn du Datensätze in einer Datenbank hast,

01:06:58.830 --> 01:06:59.910
die keinen Schlüssel haben.

01:07:01.410 --> 01:07:03.470
Und da steht dann in der Datenbank fünfmal drin,

01:07:03.570 --> 01:07:08.170
Volker-Meyer-Adolf-Straße 27 in Düsseldorf.

01:07:09.650 --> 01:07:12.190
Jetzt hast du den Datensatz ausgesehen, fünfmal erfasst.

01:07:13.390 --> 01:07:15.290
Er sieht aber identisch aus, komplett.

01:07:16.190 --> 01:07:16.670
Fünfmal.

01:07:18.030 --> 01:07:20.210
Du willst ihn eigentlich nur einmal haben.

01:07:20.210 --> 01:07:21.870
Du musst ja jetzt die vier da rauskriegen.

01:07:21.970 --> 01:07:22.970
Wie kriegst du die da raus?

01:07:23.650 --> 01:07:45.070
Das ist schon eine lustige Aufgabe, passiert manchmal, ich weiß, wie man es rauskriegt, aber alleine schon deswegen ist es sinnvoll, dem Ganzen auch noch eine Kennung zu geben, irgendeine Eindeutigkeit und deswegen hast du meistens dann, meistens heißt die Spalte dann auch ID, in den meisten Datenbanken heißt die dann ID, dass da eine Spalte davor sitzt, wo du dann eine Kennung rein hast.

01:07:45.070 --> 01:07:57.070
Und dann hast du dann, Nummer 1 ist Klaus-Meyer, Nummer 2 ist Klaus-Meyer, 3 ist Klaus-Meyer, 4 ist Klaus-Meyer, 5 ist Klaus-Meyer und dann kannst du dann sagen, delete alle, wo Name Klaus-Meyer ist oder alle mit ID 2 bis 4.

01:07:57.510 --> 01:07:58.650
Könntest du ja auch so machen.

01:07:58.790 --> 01:08:02.870
Dann hast du da eine Eindeutigkeit, jede Spalte sollte eine Eindeutigkeit haben.

01:08:03.570 --> 01:08:08.510
Jeder Datensatz sollte zumindest in einer Spalte eindeutig identifizierbar sein.

01:08:08.630 --> 01:08:34.950
Und das ist dann meistens der primäre Schlüssel, über den du die auch finden kannst und über den du diesen Datensatz auch bearbeiten kannst, diesen alleinigen. Das ist das noch, was dazukommt. Und dann hast du die dritte Normalform, du brauchst ein Primärkey und du musst, Primärkey heißt das auf Deutsch, Primärschlüssel heißt das so. Und du solltest es halt so ein bisschen ordentlich sortieren, dass du nicht alles in einer Tabelle hast.

01:08:37.810 --> 01:08:39.450
Okay, und wenn man dann davon weggeht,

01:08:39.570 --> 01:08:40.430
dann schreibt man halt alles rein.

01:08:41.770 --> 01:08:42.130
Was?

01:08:42.610 --> 01:08:44.030
Ich würde sagen, Normalisierung haben wir, glaube ich,

01:08:44.050 --> 01:08:44.830
soweit verstanden, oder?

01:08:46.590 --> 01:08:48.050
Ja, also, genau.

01:08:48.250 --> 01:08:49.030
Also, ich meine, irgendwann,

01:08:49.410 --> 01:08:51.770
ich habe dann irgendwie meistens,

01:08:51.850 --> 01:08:53.470
wenn bei irgendeinem neuen Problem oder so,

01:08:53.530 --> 01:08:54.170
da oft dann angefangen,

01:08:54.230 --> 01:08:56.830
so ein Entity-Relationship-Diagramm hinzumalen oder so.

01:08:57.710 --> 01:09:00.550
Und das, genau, das macht man dann eigentlich meistens.

01:09:00.630 --> 01:09:01.630
Irgendwann hat man das dann so ein Gefühl,

01:09:01.710 --> 01:09:03.130
wie das dann aussehen kann.

01:09:03.150 --> 01:09:04.130
Das mache ich tatsächlich auch.

01:09:04.130 --> 01:09:06.250
Also, dass ich mir das grob

01:09:06.250 --> 01:09:07.970
auf irgendeinem Schmierzettel

01:09:07.970 --> 01:09:09.570
aufmale und

01:09:09.570 --> 01:09:12.370
wenn ich es nicht, wenn es nicht nur drei Tabellen

01:09:12.370 --> 01:09:14.370
sind, das kriege ich im Kopf und hin, aber

01:09:14.370 --> 01:09:16.230
tatsächlich mache ich das auch

01:09:16.230 --> 01:09:18.430
tatsächlich, dass ich mir das dann teilweise mal auf dem Schmierzettel

01:09:18.430 --> 01:09:20.150
überlege. Wie ich da eigentlich immer

01:09:20.150 --> 01:09:22.490
dran gehe, ist, wenn ich eine Datenbank neu aufsetze,

01:09:22.630 --> 01:09:24.330
ist, ich gucke erstmal nach, was muss ich

01:09:24.330 --> 01:09:26.370
überhaupt alles an Informationen in dieser Datenbank

01:09:26.370 --> 01:09:27.410
speichern.

01:09:28.410 --> 01:09:30.650
Also wirklich so als reines Sammelsurium,

01:09:30.770 --> 01:09:32.210
das ist natürlich für andere Firmen

01:09:32.210 --> 01:09:34.290
programmierst du das so, musst du das erstmal

01:09:34.290 --> 01:09:36.310
aus den ganzen Besprechungen raushaben, was brauchen die

01:09:36.310 --> 01:09:38.270
überhaupt alles in der Datenbank,

01:09:38.390 --> 01:09:40.310
dann musst du noch gucken, meistens für die Firmen

01:09:40.310 --> 01:09:42.650
mit, was ist überhaupt erlaubt, abzuspeichern.

01:09:43.650 --> 01:09:44.450
Gibt es ja auch sowas

01:09:44.450 --> 01:09:45.530
wie diesen

01:09:45.530 --> 01:09:47.890
bei der Kreditkarte,

01:09:48.110 --> 01:09:50.250
bei der EC-Karte hinten die Nummer, die darfst du

01:09:50.250 --> 01:09:51.490
glaube ich gar nicht mit abspeichern.

01:09:52.030 --> 01:09:53.570
Oder solchen Sachen.

01:09:54.410 --> 01:09:56.150
Dass man da nochmal guckt und

01:09:56.150 --> 01:09:58.150
man muss ja immer versuchen, man hat ja in der Regel

01:09:58.150 --> 01:10:00.190
nicht mit IT-Lern zu tun oder mit

01:10:00.190 --> 01:10:02.210
technischen Menschen, sondern mit anderen.

01:10:03.150 --> 01:10:04.030
Aus deren

01:10:04.030 --> 01:10:05.950
Sprachgebrauch rauszufinden, was

01:10:05.950 --> 01:10:07.930
davon kann ich denn überhaupt als Daten

01:10:07.930 --> 01:10:09.930
abspeichern, als Information und

01:10:09.930 --> 01:10:11.930
das sammle ich dann einfach auch immer erstmal ganz

01:10:11.930 --> 01:10:14.070
wild durcheinander und sortiere das dann

01:10:14.070 --> 01:10:16.070
und dann überlege ich mir, wo könnte

01:10:16.070 --> 01:10:18.090
ich jetzt was davon hinpacken und was gehört

01:10:18.090 --> 01:10:19.210
da wie zusammen und

01:10:19.210 --> 01:10:21.970
so baue ich das Ganze auf und dann gucke ich, wie

01:10:21.970 --> 01:10:24.030
kann ich das dann vernetzen und auch ich mache

01:10:24.030 --> 01:10:25.790
es so, ich mache auch immer erstmal die dritte

01:10:25.790 --> 01:10:27.570
Normalform und gucke dann,

01:10:28.050 --> 01:10:29.830
gut, manchmal sieht man dann schon auf Anfang an,

01:10:29.930 --> 01:10:32.070
okay, da kannst du ein Bottleneck haben, da kannst du was rein haben.

01:10:32.830 --> 01:10:33.850
Ich kann mal ein Beispiel

01:10:33.850 --> 01:10:35.470
nennen für ein Bottleneck

01:10:35.470 --> 01:10:37.070
eine Spielefirma

01:10:37.070 --> 01:10:39.250
mit Online-Spielen.

01:10:40.050 --> 01:10:41.850
Die haben mehrere Online-Spiele

01:10:41.850 --> 01:10:43.790
und natürlich

01:10:43.790 --> 01:10:45.690
hat der Nutzer nur

01:10:45.690 --> 01:10:46.510
einen Account.

01:10:48.030 --> 01:10:49.310
Und dann

01:10:49.310 --> 01:10:51.650
hat der auch Nick, der Nutzer.

01:10:52.570 --> 01:10:53.870
Aber die sind hinterher dazu

01:10:53.870 --> 01:10:55.330
übergekommen, weil jetzt von diesen

01:10:55.330 --> 01:10:57.310
mehreren Millionen Nutzern

01:10:57.310 --> 01:10:59.710
musste natürlich

01:10:59.710 --> 01:11:01.330
immer die Account-Tabelle

01:11:01.330 --> 01:11:02.790
aufgerufen werden,

01:11:03.210 --> 01:11:08.950
um dann irgendwas über den Nutzer rauszufinden.

01:11:10.110 --> 01:11:13.570
Bei den Spielen, wie weit ist der Spielstand oder so weiter.

01:11:14.290 --> 01:11:15.910
Und die mussten dann immer den Nutzer,

01:11:16.090 --> 01:11:18.870
und wenn da auf eine Tabelle immer laufen,

01:11:18.990 --> 01:11:21.330
zwei Millionen Sachen raufkommen oder noch mehr Spieler,

01:11:21.950 --> 01:11:23.370
ist das natürlich etwas schwierig.

01:11:23.910 --> 01:11:26.230
Und dann sind die hingegangen und haben die nix,

01:11:27.870 --> 01:11:30.570
der Spieler dann noch mal in den Spielen hinterlegt.

01:11:30.890 --> 01:11:34.570
dass die nicht immer auf die eine Tabelle zugreifen konnten.

01:11:35.250 --> 01:11:37.470
Deswegen ist das ganz häufig so,

01:11:37.910 --> 01:11:41.090
Passworte ändern ist meistens einfach.

01:11:42.190 --> 01:11:44.310
Und ganz viele, ich weiß nicht, ob es immer noch so ist,

01:11:44.390 --> 01:11:45.370
ich spiele so selten,

01:11:45.750 --> 01:11:48.490
aber den Nick ändern ist immer etwas schwieriger und aufwendiger.

01:11:48.670 --> 01:11:50.610
Das liegt daran, dass das dann nicht nur in der einen Tabelle,

01:11:50.750 --> 01:11:53.450
sondern weil die den nochmal denormalisiert haben,

01:11:53.550 --> 01:11:54.510
und zwar aus Absicht,

01:11:54.630 --> 01:11:57.250
weil das einfach sonst zu viel wird auf einer Tabelle.

01:11:57.250 --> 01:11:58.730
Okay, da muss man dann tatsächlich zurückgehen

01:11:58.730 --> 01:11:59.490
auf diese Tabelle und gucken.

01:11:59.790 --> 01:12:02.690
Ja, und dann, deswegen ist so ein Nick ändern bei so Spielen

01:12:02.690 --> 01:12:06.070
häufiger mal so ein Problem gewesen, eine Zeit lang.

01:12:06.130 --> 01:12:07.070
Ich weiß nicht, ob es immer noch so ist.

01:12:07.650 --> 01:12:11.950
Aber das wäre so ein Beispiel für eine gezielte Denormalisierung.

01:12:12.490 --> 01:12:14.190
Aber das ist halt das.

01:12:14.790 --> 01:12:17.350
Ja, also dann, wenn ganz viele Zugriffe auf eine Tabelle sind,

01:12:17.410 --> 01:12:18.430
dann muss man vielleicht drüber nachdenken.

01:12:19.130 --> 01:12:21.390
Was ich auch mal aus Versehen denormalisiert hatte,

01:12:21.390 --> 01:12:22.930
war so eine Stempeluhr-Datenbank.

01:12:24.190 --> 01:12:25.330
Da habe ich einen Start und einen Stopp.

01:12:25.410 --> 01:12:26.410
Stempeluhr ist ganz einfach.

01:12:26.670 --> 01:12:28.390
Ich habe eine Startzeit, ich habe eine Stoppzeit.

01:12:29.370 --> 01:12:31.310
Und ich habe dann noch clevererweise die Differenz

01:12:31.310 --> 01:12:33.250
mit abgespeichert, weil das war dann einfach

01:12:33.250 --> 01:12:35.290
okay, wenn ich das dann, wenn ich Stopp sage, kann ich

01:12:35.290 --> 01:12:37.010
auch gleich nochmal eben schnell die Differenz

01:12:37.010 --> 01:12:39.510
Stopp minus Start ausrechnen und das auch mit abspeichern.

01:12:40.210 --> 01:12:41.230
Das war dann auch meine

01:12:41.230 --> 01:12:43.390
Riesenrettung, weil ich habe dann als Admin

01:12:43.390 --> 01:12:45.350
tatsächlich mal irgendwo

01:12:45.350 --> 01:12:46.690
ganz schnell wollte ich,

01:12:47.250 --> 01:12:48.630
obwohl es da Skripte für gab,

01:12:49.050 --> 01:12:50.950
noch irgendeine Stoppzeit

01:12:50.950 --> 01:12:53.210
nachtragen und habe

01:12:53.210 --> 01:12:54.610
die Werkklausel vergessen.

01:12:55.290 --> 01:12:56.430
Und dann alle geupdatet.

01:12:57.130 --> 01:12:57.490
Genau.

01:12:58.790 --> 01:13:00.430
komisch, warum dauert das Update denn so lang?

01:13:00.430 --> 01:13:02.430
Na, das ging relativ schnell,

01:13:02.570 --> 01:13:04.570
es war ein guter Server, so viele Mitarbeiter

01:13:04.570 --> 01:13:06.390
waren das nicht, aber dann so, ja,

01:13:06.690 --> 01:13:08.310
die Stempelur lief auch erst irgendwie so

01:13:08.310 --> 01:13:10.170
zwei Jahre, also es war nicht so schlimm.

01:13:12.890 --> 01:13:14.390
Ja, aber zum Glück

01:13:14.390 --> 01:13:16.370
gab es die Differenz noch,

01:13:16.490 --> 01:13:18.010
also konnte ich dann ganz schnell mal

01:13:18.010 --> 01:13:20.130
ein Update fahren, mach mal Start plus

01:13:20.130 --> 01:13:22.210
Differenz und dann hatte ich wieder die richtige Stoppzeit

01:13:22.210 --> 01:13:24.290
drin, also das

01:13:24.290 --> 01:13:25.430
kann auch mal passieren.

01:13:26.390 --> 01:13:28.310
Wobei ich da auch dachte, okay, eigentlich ist

01:13:28.310 --> 01:13:30.310
das ist ja eine Hitze, die die Differenz

01:13:30.310 --> 01:13:32.110
ja gar nicht gebraucht, aber ich fand das

01:13:32.110 --> 01:13:34.170
damals sinnvoll, sie mit abzuschleichen und ich rate

01:13:34.170 --> 01:13:36.190
das auch bei einer Stempelung, jeden das gleich

01:13:36.190 --> 01:13:38.250
mitzumachen. Doppeltet, besser

01:13:38.250 --> 01:13:40.110
dann, ja? Ne, das ist auch teilweise

01:13:40.110 --> 01:13:41.790
wie du es in der Anwendung brauchst, wenn du immer

01:13:41.790 --> 01:13:43.770
diese Differenz brauchst, dann

01:13:43.770 --> 01:13:46.130
brauchst du auch nur die Differenz abfragen

01:13:46.130 --> 01:13:48.050
und musst nicht immer Start und Stop abfragen, später

01:13:48.050 --> 01:13:50.170
in der Anwendung. Ja, genau. Das ist

01:13:50.170 --> 01:13:52.110
dann auch noch was, das musst du ja auch noch wieder ein bisschen

01:13:52.110 --> 01:13:54.290
mit dazu tanken und du musst

01:13:54.290 --> 01:13:56.250
natürlich heutzutage auch so ein bisschen Sicherheit

01:13:56.250 --> 01:13:58.210
da in Schutz und was weiß ich was mit berücksichtigen,

01:13:58.310 --> 01:14:04.950
Deswegen hast du auch ganz viel in den Tabellen, fast jede Tabelle noch last updated und so weiter.

01:14:06.030 --> 01:14:07.090
Update 3 updated.

01:14:07.590 --> 01:14:14.170
Ja, irgendwie sowas. Oder hast du noch eine History-Tabelle, wo die alten Werte reinkommen oder ähnliches. Das hast du ja auch noch.

01:14:14.190 --> 01:14:15.410
Ein Model History Tracker.

01:14:15.770 --> 01:14:27.510
Ja, das hast du ja auch bei Preisen. Wenn du jetzt ganz normal so eine Verkaufstabelle machst, dann hast du ja auch bei Preisen häufig, wenn du einen Preis änderst, solltest du den alten Preis ja auch nochmal irgendwo sehen.

01:14:28.370 --> 01:14:30.810
Ja, schon praktisch, dann kann man das auch in die Entwicklung gucken.

01:14:31.650 --> 01:14:40.170
Ja, nicht nur das, weil du änderst vielleicht heute den Preis, aber es haben noch nicht alle die Rechnungen bezahlt und dann brauchst du ja noch in einem Jahr solche Geschichten.

01:14:40.170 --> 01:14:45.290
Das ist lustig, es gibt auch Unternehmen, da wird dann der Preis bezahlt, der jetzt gerade aktuell gilt.

01:14:45.770 --> 01:15:05.190
Das ist auch lustig, was auch immer mal wieder passiert ist, für die Schlüssel, dass dann die Namen genannt werden. Ich hatte mal eine Firma, die hatte wirklich bei den Mitarbeitern als Schlüssel die Namen. Ich so, was macht ihr denn, wenn ihr Mitarbeiter habt, die gleich heißen?

01:15:05.190 --> 01:15:06.330
Das ist ja minus zwei.

01:15:07.310 --> 01:15:08.990
Haben wir nicht, stellen wir nicht ein.

01:15:09.830 --> 01:15:10.430
Ja, sehr gut.

01:15:11.170 --> 01:15:30.150
Also das sollte man natürlich nicht machen, sondern bei Mitarbeitern, also bei sowas nimmt man meistens auch die Kennung. Es gibt natürlich auch natürliche Schlüssel. Ich weiß nicht, ob Autos jetzt das Kfz-Zeichen unbedingt sinnvoll ist, als Kennung zu nehmen, aber es gibt halt so Schlüssel, so ISBN-Nummern oder sowas, die könnte man auch als Schlüssel nehmen.

01:15:30.450 --> 01:15:33.190
Oder wenn man jetzt die Postleitzahlen hat,

01:15:33.610 --> 01:15:35.710
Postleitzahlen sind auch super Schlüssel bei Städten.

01:15:36.250 --> 01:15:37.190
Ist das sinnvoll, ein Datensatz?

01:15:37.190 --> 01:15:41.290
Nee, das ist schon sehr sinnvoll, wenn das so eine ganze Zahl ist.

01:15:42.010 --> 01:15:44.810
Jedenfalls, je nachdem, was man für einen Index verwenden will,

01:15:44.870 --> 01:15:45.390
vielleicht auch drauf.

01:15:45.670 --> 01:15:46.830
Aber zum Normalfall denke ich schon,

01:15:46.910 --> 01:15:49.330
dass es vielleicht nicht so unpraktisch ist.

01:15:50.130 --> 01:15:52.810
Ja, das wäre eine interessante Frage.

01:15:53.390 --> 01:15:54.850
Also irgendwie sehe ich in letzter Zeit sehr häufig,

01:15:54.990 --> 01:15:56.470
dass Leute UUID-IDs verwenden.

01:15:57.190 --> 01:15:58.630
Also dann könnten wir den Hash nehmen.

01:15:59.350 --> 01:16:02.510
bitte? Ich nehme gerne auch den

01:16:02.510 --> 01:16:03.890
Unix-Timestamp

01:16:03.890 --> 01:16:05.390
für bestimmte Dinge auch.

01:16:08.170 --> 01:16:09.350
Ja, also irgendwie

01:16:09.350 --> 01:16:11.330
in der JavaScript-Welt ist das halt so total super,

01:16:11.890 --> 01:16:13.330
was ich in gewisser Weise verstehen kann, weil

01:16:13.330 --> 01:16:15.290
da hat man ja oft irgendwie nur das,

01:16:15.690 --> 01:16:16.830
wenn man jetzt eigentlich das erzeugen möchte,

01:16:17.030 --> 01:16:19.250
will man ja, dass sie eindeutig sind, hat aber keine zentrale

01:16:19.250 --> 01:16:20.050
Datenbank möglicherweise.

01:16:21.970 --> 01:16:22.830
Es gibt halt

01:16:22.830 --> 01:16:25.450
diese Sache bei Postgres

01:16:25.450 --> 01:16:26.690
und bei MariaDB und so weiter,

01:16:27.390 --> 01:16:30.050
sogar im Standard gibt es den Datentyp Serial,

01:16:30.130 --> 01:16:31.750
der soll einfach immer einen hochzählen

01:16:31.750 --> 01:16:34.030
und das kann man

01:16:34.030 --> 01:16:35.970
natürlich machen und wenn das völlig egal ist,

01:16:35.990 --> 01:16:37.270
was du für eine Nummer hinterher hast,

01:16:37.830 --> 01:16:39.290
nimmst du den

01:16:39.290 --> 01:16:42.130
und zählst dann einfach mal, dann zählt der automatisch

01:16:42.130 --> 01:16:43.830
beim Einfügen einen hoch und dann hat das

01:16:43.830 --> 01:16:45.230
Ding eine eindeutige ID.

01:16:45.450 --> 01:16:47.850
Auto-Increment heißt das

01:16:47.850 --> 01:16:49.410
bei MySQL, bei PostgreSQL.

01:16:49.910 --> 01:16:51.410
Nimmst du den Datentyp Serial oder

01:16:51.410 --> 01:16:54.050
genau und dann macht er das automatisch.

01:16:55.570 --> 01:16:56.130
Ja, also

01:16:56.130 --> 01:16:58.510
Ich weiß nicht, ich habe dann irgendwann mal Benchmarks

01:16:58.510 --> 01:17:00.390
gesehen. Also ich meine, das macht es halt, weil einfach

01:17:00.390 --> 01:17:02.290
UUID ist halt so riesig. Das heißt,

01:17:02.490 --> 01:17:04.730
wenn du das dann tatsächlich

01:17:04.730 --> 01:17:06.570
als Primary Key hast, dann macht das halt Joins

01:17:06.570 --> 01:17:08.390
bei Postgres, das letzte, was ich gesehen habe, so

01:17:08.390 --> 01:17:10.370
viermal langsamer oder sowas.

01:17:10.930 --> 01:17:12.350
Bei den meisten ist das halt wurscht,

01:17:12.450 --> 01:17:14.430
weil irgendwie Datenbank ist vielleicht

01:17:14.430 --> 01:17:15.630
da eh nicht das Bottleneck, aber

01:17:15.630 --> 01:17:18.530
ich meine, es kostet halt viel mehr Speicher und es macht

01:17:18.530 --> 01:17:20.490
Dinge langsamer. Daher tendiere ich immer

01:17:20.490 --> 01:17:22.510
dazu zu sagen, hey, lieber eine Zahl

01:17:22.510 --> 01:17:22.770
nehmen.

01:17:24.430 --> 01:17:26.110
Und dann, wenn man sowas haben will,

01:17:26.230 --> 01:17:28.130
so eine Eigenschaft will man ja oft haben, dass man nicht

01:17:28.130 --> 01:17:30.130
sehen kann, wann

01:17:30.130 --> 01:17:32.270
ein Datensatz eingefügt worden ist, weil an der Zahl kann man

01:17:32.270 --> 01:17:34.310
das natürlich sehen, oder welche miteinander

01:17:34.310 --> 01:17:36.230
zusammenhängen oder so, dann kann man

01:17:36.230 --> 01:17:38.670
sowas wie Hash-IDs im Frontend verwenden, wo man

01:17:38.670 --> 01:17:40.190
die IDs hasht. Aber das

01:17:40.190 --> 01:17:42.290
sozusagen, den Hash in der Datenbank zu verwenden,

01:17:42.550 --> 01:17:43.910
weiß ich nicht.

01:17:44.810 --> 01:17:46.410
Ich tatsächlich häufiger mal

01:17:46.410 --> 01:17:48.210
als Kundennummern oder so auch Timestamps

01:17:48.210 --> 01:17:49.530
gesehen habe.

01:17:49.690 --> 01:17:50.590
Genommen auch schon.

01:17:51.550 --> 01:17:53.650
Das ist natürlich, wenn du dann so einen Support am Telefon

01:17:53.650 --> 01:17:55.530
nennen sie mir mal ihre Kunden-ID und dann fängt

01:17:55.530 --> 01:17:57.710
er da an, so ein Unix-Timestamp-Bot zu lesen.

01:17:58.990 --> 01:17:59.390
Gut,

01:17:59.570 --> 01:18:01.370
du erkennst es als Laie nicht als

01:18:01.370 --> 01:18:01.970
Timestamp.

01:18:03.570 --> 01:18:05.310
Da musst du schon freak zu sein, dass du

01:18:05.310 --> 01:18:06.990
raffst, dass das ein Timestamp ist,

01:18:07.570 --> 01:18:09.410
von wegen Eindeutigkeit und schwer

01:18:09.410 --> 01:18:10.230
zu raten, aber

01:18:10.230 --> 01:18:13.470
ist halt auch eindeutig,

01:18:13.550 --> 01:18:15.370
dass du dann irgendwie so in derselben Sekunde

01:18:15.370 --> 01:18:17.630
mehrere Kunden dann liest, ist dann doch schon schwierig.

01:18:18.650 --> 01:18:19.250
Also so viel,

01:18:19.430 --> 01:18:21.390
kommt auf dein Business drauf an, kann natürlich sein,

01:18:21.390 --> 01:18:23.210
im Online-Business würde ich das vielleicht

01:18:23.210 --> 01:18:25.130
jetzt nicht machen, den Timestamp nehmen, aber

01:18:25.130 --> 01:18:26.690
wenn du jetzt so eine normale Firma hast.

01:18:30.410 --> 01:18:31.010
Dann schon,

01:18:31.190 --> 01:18:33.230
also das kannst du auch machen oder wie du dir noch immer

01:18:33.230 --> 01:18:35.090
generierst, du musst dir halt was

01:18:35.090 --> 01:18:37.050
überlegen und ganz häufig bei den Tabellen ist es

01:18:37.050 --> 01:18:39.010
einfach automatisch hochgezählt.

01:18:40.970 --> 01:18:42.630
Macht wahrscheinlich dann Sinn. Und wie gesagt,

01:18:42.730 --> 01:18:44.950
Postleitzahlen sind recht eindeutig. Oh, aber das ist

01:18:44.950 --> 01:18:46.930
so eine interessante Sache, weil was mache ich denn jetzt,

01:18:46.990 --> 01:18:49.050
wenn ich die Postleitzahleneingabe

01:18:49.050 --> 01:18:50.690
nicht kontrollieren kann, weil ich die irgendwo herbekomme

01:18:50.690 --> 01:18:53.190
und dann hat irgendjemand dann D-Postleitzahlen

01:18:53.190 --> 01:18:54.090
eingegeben oder sowas.

01:18:54.950 --> 01:18:56.510
Und dann habe ich ja das Problem, dass ich dann

01:18:56.510 --> 01:18:58.990
Doppelte habe, quasi.

01:18:59.670 --> 01:19:01.170
Naja, es kommt darauf an, wie du die

01:19:01.170 --> 01:19:03.190
Postsatz an der Datenbank abgelegt hast.

01:19:03.250 --> 01:19:05.450
Ja, also in Malarbeit, wenn es jetzt sechs Zeichen,

01:19:05.450 --> 01:19:07.130
ja, nein, dann geht es halt kaputt.

01:19:07.930 --> 01:19:09.530
Also ich würde sowas ja prüfen

01:19:09.530 --> 01:19:11.510
in der Software, bevor ich es an die Datenbank schicke

01:19:11.510 --> 01:19:13.350
und die Datenbank prüft es und wirft es dir zurück,

01:19:13.470 --> 01:19:13.770
weil,

01:19:14.350 --> 01:19:16.910
ganz einfach,

01:19:17.490 --> 01:19:19.350
weil ich muss ja erstmal, also ich

01:19:19.350 --> 01:19:21.630
nehme die Daten entgegen, also die Software

01:19:21.630 --> 01:19:23.310
jetzt in eurem Fall

01:19:23.310 --> 01:19:25.670
in Python geschrieben, die nimmt die Daten

01:19:25.670 --> 01:19:26.750
entgegen. So.

01:19:27.890 --> 01:19:29.490
Jetzt nimmt es die Daten so, wie sie sind

01:19:29.490 --> 01:19:31.850
und schmeißt sie in die

01:19:31.850 --> 01:19:33.670
Datenbank. Die Datenbank, äh, kann ich

01:19:33.670 --> 01:19:35.510
nicht einfügen, falscher Datentyp oder was auch immer.

01:19:36.430 --> 01:19:37.710
Gibt dann, erst mal habt ihr

01:19:37.710 --> 01:19:39.590
eine Verbindung aufgemacht, die sind bei Postgres

01:19:39.590 --> 01:19:41.490
relativ teuer. Da rein.

01:19:41.930 --> 01:19:43.630
Die gibt es dann zurück, kann ich nicht. Ihr kriegt

01:19:43.630 --> 01:19:45.170
den Fehler, behandelt den Fehler

01:19:45.170 --> 01:19:47.530
wieder in Python. Das ist doch dann

01:19:47.530 --> 01:19:49.290
sinnvoller bei sowas, die Postsatz

01:19:49.290 --> 01:19:51.570
das gleiche in Python zu prüfen. Oder auch beim

01:19:51.570 --> 01:19:53.130
Geschlecht oder sowas. Das Problem ist halt

01:19:53.130 --> 01:19:55.370
die Frage, ob ich jetzt wirklich alle Ausnahmen

01:19:55.370 --> 01:19:57.150
irgendwie abfangen kann, die sich irgendwie ausdenken kann

01:19:57.150 --> 01:19:59.530
oder es halt alles runterbreche oder ob ich sage,

01:19:59.590 --> 01:20:01.510
ich mache da einfach ein Textfeld raus, das ist mir egal und dann ist halt

01:20:01.510 --> 01:20:03.710
dann die Identität weg. Weil was ich bei Postleitzahlen machen würde,

01:20:03.930 --> 01:20:05.490
ist, die gibt es ja als CSV,

01:20:05.790 --> 01:20:07.570
die würde ich einmal importieren und dann würde

01:20:07.570 --> 01:20:09.450
ich mir die als Liste, dann kann er die auswählen.

01:20:09.530 --> 01:20:11.370
Also es gibt, ja, okay, Tri-Suite, ja, gut, aber

01:20:11.370 --> 01:20:13.810
ja.

01:20:14.910 --> 01:20:15.410
Ja, aber

01:20:15.410 --> 01:20:16.990
wenn die dann halt nicht passt, das ist halt das Problem.

01:20:17.650 --> 01:20:19.530
Oder die Stadt anfangen

01:20:19.530 --> 01:20:21.510
einzugeben und dann zeichnet der automatisch

01:20:21.510 --> 01:20:23.250
Ja gut, aber da muss ich ja das Formular schon

01:20:23.250 --> 01:20:24.590
in der Hand haben quasi.

01:20:25.030 --> 01:20:27.290
Ja, aber da gibt es halt unterschiedliche

01:20:27.290 --> 01:20:29.130
Sichten. Also ich meine, ich finde das Problem deswegen schön,

01:20:29.190 --> 01:20:30.830
weil das halt vielleicht klar macht,

01:20:31.010 --> 01:20:32.370
dass das alles nicht so ganz einfach ist.

01:20:32.770 --> 01:20:35.050
Aus einer Datenbank-Sicht kann ich mir vielleicht eine ideale,

01:20:35.530 --> 01:20:37.150
ich habe auch, das hat wahrscheinlich jeder schon

01:20:37.150 --> 01:20:38.670
ein paar Mal gemacht, aber irgendwie so versucht,

01:20:38.730 --> 01:20:39.930
normalisiert Adressen zu speichern.

01:20:40.770 --> 01:20:42.850
Und dann, wenn man das aber dann benutzt,

01:20:42.930 --> 01:20:45.090
dann stellt man fest, so, oh, das gibt aber ganz viele Fälle,

01:20:45.150 --> 01:20:46.030
die passen dann halt nicht.

01:20:46.890 --> 01:20:47.250
Mannheim.

01:20:48.190 --> 01:20:49.030
Irgendwelche heiligen

01:20:49.030 --> 01:20:51.490
Dinge, die halt irgendwie nicht so

01:20:51.490 --> 01:20:53.050
richtig da reinpassen wollen.

01:20:53.490 --> 01:20:55.550
Also dann, wenn man dann sich mit Leuten unterhält,

01:20:55.590 --> 01:20:57.430
die dann aus dem Web-Dings da drauf gucken,

01:20:57.530 --> 01:20:58.530
die sagen dann eher so, ja,

01:20:59.370 --> 01:21:01.250
okay, du kannst das ja vielleicht in der Datenbank so speichern,

01:21:01.330 --> 01:21:03.290
aber wenn du es zum Beispiel dann hinterher irgendwie

01:21:03.290 --> 01:21:05.310
Leuten anzeigen oder ausdrucken oder sonst irgendwie, dann nimm

01:21:05.310 --> 01:21:06.850
halt immer irgendwas, was reiner Text ist,

01:21:07.210 --> 01:21:08.750
weil alles andere geht eh nicht.

01:21:09.070 --> 01:21:11.150
Alles andere kannst du eh nicht machen, weil es funktioniert

01:21:11.150 --> 01:21:13.450
hinten und vorne. Also was ich tatsächlich

01:21:13.450 --> 01:21:15.250
mache, ist, ich mache einfach mal nur Adresse

01:21:15.250 --> 01:21:17.550
1 bis 6, 6 Felder

01:21:17.550 --> 01:21:19.390
und da können die reinschreiben, was sie wollen.

01:21:19.390 --> 01:21:20.250
Also so ungefähr.

01:21:21.490 --> 01:21:22.790
Du kannst es ja dann

01:21:22.790 --> 01:21:23.630
irgendwie prüfen.

01:21:24.950 --> 01:21:26.790
Also, ich weiß

01:21:26.790 --> 01:21:28.270
nicht, wie du es prüfst.

01:21:28.790 --> 01:21:30.550
Irgendein Reckhex, wenn es nicht matcht, dann irgendwie

01:21:30.550 --> 01:21:31.090
Error, oder?

01:21:32.090 --> 01:21:34.590
Also, du kannst die Länder kurz, kannst du natürlich,

01:21:34.690 --> 01:21:36.610
ich würde auch sowas wie Postleitzahlen nochmal

01:21:36.610 --> 01:21:37.870
extra vielleicht,

01:21:38.150 --> 01:21:39.510
kannst du ja importieren.

01:21:40.150 --> 01:21:42.550
Für Deutschland, ja. Hast du natürlich, wenn du

01:21:42.550 --> 01:21:43.870
international bist, dann auch wieder.

01:21:44.630 --> 01:21:46.530
Aber ich sag mal so, Straßen, Mannheim

01:21:46.530 --> 01:21:48.470
hat ja die Quadrate T633,

01:21:48.650 --> 01:21:50.370
hab ich mal drin gewohnt, glaube ich, und so.

01:21:50.550 --> 01:21:54.910
Aber das geht halt auch nur dann, wenn ich halt den Input wirklich kontrollieren kann.

01:21:54.950 --> 01:21:56.830
kann. Wenn ich halt irgendwas bekomme und das muss

01:21:56.830 --> 01:21:58.810
halt dann da ins Postleitzahlenfeld rein, dann ist das

01:21:58.810 --> 01:21:59.430
natürlich schwierig.

01:22:00.610 --> 01:22:03.050
Wofür willst du das unbedingt in das Postleitzahlen?

01:22:03.210 --> 01:22:04.750
Warum willst du da unbedingt irgendwas

01:22:04.750 --> 01:22:06.470
reintun, was keine Postleitzahl ist? Das verstehe ich nicht.

01:22:06.490 --> 01:22:09.090
Weil ich die Adresse anlegen muss, um eine Bestellung anlegen zu können.

01:22:09.270 --> 01:22:10.570
Ja, aber dann leg das doch, tu doch die Adresse

01:22:10.570 --> 01:22:12.050
in das Textfeld. Ja, genau.

01:22:13.590 --> 01:22:14.950
Und dann kannst du ja versuchen,

01:22:15.010 --> 01:22:16.450
eine Postleitzahl zu extrahieren oder so.

01:22:16.470 --> 01:22:18.750
Oder die Postleitzahl kommt direkt ins Textfeld.

01:22:19.430 --> 01:22:20.710
Die Frage ist ja, wofür

01:22:20.710 --> 01:22:22.570
brauchst du diese Adresse? Genau.

01:22:23.950 --> 01:22:24.370
Ja, nein, also

01:22:24.370 --> 01:22:26.470
was halt noch schwieriger wird hinterher, ist halt Filtern

01:22:26.470 --> 01:22:28.430
von Adressen. Also wenn du

01:22:28.430 --> 01:22:29.850
ein Verkäufer bist,

01:22:30.610 --> 01:22:32.470
der etwas

01:22:32.470 --> 01:22:33.670
online verkauft

01:22:33.670 --> 01:22:36.350
und du brauchst jetzt die Lieferadresse, um das

01:22:36.350 --> 01:22:38.410
dem Kunden zu liefern, da hat der Kunde ja schon

01:22:38.410 --> 01:22:40.390
ein gewisses Interesse dran, dass richtig

01:22:40.390 --> 01:22:42.550
Das Textfeld, dann kommt

01:22:42.550 --> 01:22:44.330
das halt auch an. Aber wenn ich jetzt dann hinterher in der Analyse

01:22:44.330 --> 01:22:46.350
hingehen will, in welchem Postleitzahlengebiet habe ich

01:22:46.350 --> 01:22:48.370
denn jetzt wie viel geliefert beispielsweise, dann ist halt

01:22:48.370 --> 01:22:49.870
dann das Problem, dass die Textwelle halt nicht mehr

01:22:49.870 --> 01:22:52.230
Ja, aber dann genau ist halt die Frage, wie wichtig ist es,

01:22:52.750 --> 01:22:54.710
bis auf die letzte Adresse stimmt und dann...

01:22:54.710 --> 01:22:56.470
Genau, dann muss ich mir halt dann halt die Filter überlegen,

01:22:56.550 --> 01:22:57.330
wie ich das dann wieder rauskomme.

01:22:57.350 --> 01:23:00.290
Dann ist auch die Frage, ob du diese Analyse überhaupt fahren darfst

01:23:00.290 --> 01:23:02.390
oder ob das gegen die Datenschutzrichtlinien für dich stimmt.

01:23:02.390 --> 01:23:03.490
Na gut, aber das ist ja ein anderes Problem.

01:23:03.910 --> 01:23:05.950
Also im Zweifel hat man ja berechtigte Interessen

01:23:05.950 --> 01:23:07.610
und dafür eine jeweilige Datenschutzvereinbarung.

01:23:07.630 --> 01:23:08.070
Ja, auch nicht.

01:23:08.230 --> 01:23:10.070
Aber bei Business-to-Business-Kunden meistens schon.

01:23:10.210 --> 01:23:10.730
Ja, das ja.

01:23:12.850 --> 01:23:15.270
Aber, ich habe die hier gleich aufgegessen.

01:23:15.370 --> 01:23:16.010
Nun, das ist ja lecker.

01:23:17.010 --> 01:23:19.010
Nein, aber das ist so dieses...

01:23:21.630 --> 01:23:24.010
Nee, aber tatsächlich, ich habe das auch schon mehrfach,

01:23:24.390 --> 01:23:25.250
die war dann einfach faul.

01:23:25.330 --> 01:23:27.670
Ich habe dann mal angeguckt, was passt denn auf einen Briefkopf?

01:23:28.070 --> 01:23:29.890
Ich glaube, du hast sechs Zeilen, hast du fünf?

01:23:30.970 --> 01:23:32.670
Also ein normaler Briefkopf hat immer fünf.

01:23:33.810 --> 01:23:38.110
Mir heißt die Adresse 1, Adresse 2 oder ADR 1, 2, 3, 4, 5, 6,

01:23:38.190 --> 01:23:40.250
weil mir ist das doch auch völlig egal,

01:23:40.730 --> 01:23:43.970
ob der Name der Kunde jetzt ganz oben steht oder in der zweiten Zeile.

01:23:44.430 --> 01:23:47.730
Der Kunde wird ja wissen, wie seine Rechnung ist

01:23:47.730 --> 01:23:49.550
beziehungsweise wie seine Adresse ist.

01:23:50.170 --> 01:23:50.250
Ja.

01:23:51.490 --> 01:23:52.950
Und wenn der was geliefert haben will,

01:23:53.010 --> 01:23:54.870
hat der auch ein entsprechend großes Interesse,

01:23:54.970 --> 01:23:56.850
dass das ankommt, dass er seine Adresse schon richtig

01:23:56.850 --> 01:23:57.890
da eintippt.

01:24:00.110 --> 01:24:00.470
Und

01:24:00.470 --> 01:24:02.970
dann schickst du ihm ja auch nochmal eine E-Mail,

01:24:03.090 --> 01:24:05.130
bevor du das lieferst und so weiter und so fort.

01:24:05.930 --> 01:24:07.310
Bei Rechnungsadressen,

01:24:07.950 --> 01:24:09.050
ja.

01:24:09.490 --> 01:24:10.510
Ja, ich glaube, ihr redet rein.

01:24:10.550 --> 01:24:12.930
Das ist wurscht. Also da ist das ja,

01:24:13.570 --> 01:24:15.050
die schickst du ja auch selten noch mit der Post.

01:24:15.350 --> 01:24:16.850
Ich glaube, das Normalisierungsthema würde ich

01:24:16.850 --> 01:24:18.890
dann damit auch abschließen wollen. Und ich würde gerne

01:24:18.890 --> 01:24:20.230
noch zu was anderem überkommen. Und zwar

01:24:20.230 --> 01:24:22.410
könnt ihr euch jetzt aussuchen, ob ihr erst Transaktionen sprechen

01:24:22.410 --> 01:24:24.050
wollt oder Verbindungen oder über

01:24:24.050 --> 01:24:25.170
NoSQL vs. SQL.

01:24:27.370 --> 01:24:28.390
Und am Ende wollen wir

01:24:28.390 --> 01:24:29.690
nochmal Maria gegen ProSquares

01:24:29.690 --> 01:24:30.190
wissen.

01:24:32.950 --> 01:24:34.650
Was wolltest du zu Transaktionen

01:24:34.650 --> 01:24:34.890
wissen?

01:24:35.890 --> 01:24:37.070
Vielleicht erstmal, was ist das überhaupt?

01:24:37.270 --> 01:24:40.510
Also eine Transaktion

01:24:40.510 --> 01:24:42.250
ist, der Dominik

01:24:42.250 --> 01:24:43.510
möchte dem Jochen

01:24:43.510 --> 01:24:45.490
100 Euro überweisen.

01:24:48.010 --> 01:24:49.990
Jetzt zieht die Bank, stell dir vor,

01:24:50.010 --> 01:24:51.690
du bist eine Bank. Jetzt zieht die Bank

01:24:51.690 --> 01:24:53.590
die 100 Euro von Dominiks Konto ab

01:24:53.590 --> 01:24:55.550
und die Datenbank bricht zusammen.

01:24:56.010 --> 01:24:57.270
Oder das System bricht zusammen.

01:24:58.350 --> 01:24:59.770
Ja, es ist halt beim

01:24:59.770 --> 01:25:01.710
Jochen nichts angekommen, aber beim Dominik

01:25:01.710 --> 01:25:02.910
sind die 100 Euro auch weg.

01:25:03.650 --> 01:25:05.130
Das wäre nicht gut.

01:25:05.590 --> 01:25:07.070
Ist in einem schwarzen Loch versunken.

01:25:07.750 --> 01:25:09.330
So, also

01:25:09.330 --> 01:25:11.630
macht man das Ganze in

01:25:11.630 --> 01:25:13.710
einer sogenannten Transaktion, das heißt

01:25:13.710 --> 01:25:15.790
beim Dominik werden

01:25:15.790 --> 01:25:17.850
die 100 Euro abgezogen und

01:25:17.850 --> 01:25:18.330
beim

01:25:18.330 --> 01:25:21.290
Jochen draufgepackt

01:25:21.290 --> 01:25:23.250
und erst wenn beides passiert ist,

01:25:23.950 --> 01:25:25.270
ist der Prozess abgeschlossen.

01:25:25.390 --> 01:25:26.330
Das macht man mit einem Commit.

01:25:27.190 --> 01:25:28.090
So heißt der Befehl.

01:25:28.890 --> 01:25:31.270
Wenn jetzt zwischendurch das Datenbanksystem abfällt,

01:25:31.370 --> 01:25:33.290
sagen wir mal, die 100 Euro werden abgezogen

01:25:33.290 --> 01:25:35.030
und das System bricht zusammen,

01:25:36.150 --> 01:25:37.370
dann ist kein Commit passiert,

01:25:37.550 --> 01:25:39.490
sondern dann wird das Ganze zurückgerollt

01:25:39.490 --> 01:25:41.030
und dann hat der Dominik dann,

01:25:41.170 --> 01:25:42.410
sobald das System wieder da ist,

01:25:42.890 --> 01:25:45.230
die 100 Euro noch auf dem Konto und es ist einfach gar nichts

01:25:45.230 --> 01:25:47.290
passiert. Okay, also tatsächlich eine Isolation

01:25:47.290 --> 01:25:49.610
von mehreren Arbeitsschritten.

01:25:49.610 --> 01:25:50.950
Ja, nicht nur von mehreren,

01:25:51.530 --> 01:25:53.410
eigentlich war es früher so,

01:25:53.530 --> 01:25:55.330
das ist auch heute noch so, das wird noch heute

01:25:55.330 --> 01:25:57.390
so automatisiert, dass es keiner mehr weiß,

01:25:57.810 --> 01:25:59.370
sobald du irgendwas auf eine Datenbank

01:25:59.370 --> 01:26:00.290
schreibst,

01:26:02.030 --> 01:26:03.470
jedes schreibende Zugriff,

01:26:03.730 --> 01:26:05.410
also jeder, ne, eine Transaktion

01:26:05.410 --> 01:26:07.190
ist eigentlich jeder Befehl, aber jede

01:26:07.190 --> 01:26:08.910
schreibende Transaktion,

01:26:09.230 --> 01:26:11.350
das heißt, du machst ein Insert oder ein Update,

01:26:11.950 --> 01:26:13.470
wenn du das mal so früher in C

01:26:13.470 --> 01:26:15.150
gemacht hast, musstest du immer

01:26:15.150 --> 01:26:16.430
ein Commit hinten dran werfen.

01:26:17.290 --> 01:26:22.170
Warum jetzt unbedingt den C, die Programmiersprache

01:26:22.170 --> 01:26:23.910
war eigentlich egal, aber du musst

01:26:23.910 --> 01:26:26.210
immer ein Commit hinten dran werfen.

01:26:26.630 --> 01:26:28.110
Also du musst immer erstmal Insert sagen

01:26:28.110 --> 01:26:29.390
und dann darunter Commit.

01:26:30.770 --> 01:26:32.390
Mittlerweile machen die Datenbanksysteme

01:26:32.390 --> 01:26:33.170
alle Auto-Commit.

01:26:35.250 --> 01:26:36.590
Das heißt, wenn du ein Insert-Befehl

01:26:36.590 --> 01:26:38.370
abfeuerst, dann wird er automatisch committet.

01:26:38.810 --> 01:26:40.370
Aber das Commit ist natürlich intern immer noch

01:26:40.370 --> 01:26:41.590
da. Aber

01:26:41.590 --> 01:26:44.510
es wird dann automatisch da hinten

01:26:44.510 --> 01:26:46.350
dran gefeuert, dass du das nicht mehr machen

01:26:46.350 --> 01:26:47.870
musst, das ist ja immer noch ein Commit einzeln.

01:26:48.130 --> 01:26:50.190
Das kann man auch ausstellen. Und das kannst du ausfallen,

01:26:50.270 --> 01:26:52.010
dafür gibt es den SQL-Befehl.

01:26:52.710 --> 01:26:54.290
Im Standard-SQL heißt das Start

01:26:54.290 --> 01:26:56.330
Transaction, damit stellst du das Autocommit

01:26:56.330 --> 01:26:58.270
aus, dann machst du deine ganzen Schreiben

01:26:58.270 --> 01:26:59.870
und Transaktionen und sagst am Ende Commit.

01:27:01.330 --> 01:27:02.370
Das wäre jetzt das

01:27:02.370 --> 01:27:04.330
mit dem Kontoüberweis. Also das würde man

01:27:04.330 --> 01:27:06.270
zum Beispiel machen in der Business-Logik

01:27:06.270 --> 01:27:08.390
von so einer Applikation, wo man zwischendurch noch andere Dinge abfragen

01:27:08.390 --> 01:27:10.230
muss, wo man Verbindungen aufbauen muss, wo man

01:27:10.230 --> 01:27:11.290
nicht weiß, ob die klappen oder so.

01:27:12.830 --> 01:27:14.230
Ja, also bei allem, wo

01:27:14.230 --> 01:27:16.270
du mehrere Schritte hast und die halt

01:27:16.270 --> 01:27:18.110
entweder alle funktionieren sollen oder keine Ahnung.

01:27:18.490 --> 01:27:20.450
Genau, also das mit der Bank ist immer

01:27:20.450 --> 01:27:22.430
so ein, das macht, die Banken funktionieren

01:27:22.430 --> 01:27:24.250
natürlich noch viel komplexer, aber das ist immer so ein

01:27:24.250 --> 01:27:25.950
schönes Beispiel, weil das ist so

01:27:25.950 --> 01:27:27.510
schön anschaulich.

01:27:28.010 --> 01:27:30.910
Und Postgres

01:27:30.910 --> 01:27:32.270
und MariaDB haben aber

01:27:32.270 --> 01:27:33.910
eine Abkürzung für Start Transaction,

01:27:33.910 --> 01:27:35.890
das ist Beginn, also da kann man auch Beginn

01:27:35.890 --> 01:27:37.770
sagen, Start Transaction, das ist

01:27:37.770 --> 01:27:38.750
weniger Tipparbeit.

01:27:39.850 --> 01:27:40.150
Und

01:27:40.150 --> 01:27:43.810
das ist halt so ein schönes Beispiel, aber man hat

01:27:43.810 --> 01:27:45.750
tatsächlich immer mal wieder solche Fälle.

01:27:46.270 --> 01:27:48.230
in Anwendungen,

01:27:48.590 --> 01:27:50.130
wo du das brauchst tatsächlich,

01:27:50.270 --> 01:27:51.210
dass du das in einem Jahr

01:27:51.210 --> 01:27:54.110
oder das ist wirklich so

01:27:54.110 --> 01:27:55.530
entweder alles oder nichts.

01:27:55.830 --> 01:27:56.830
Das ist im Grunde.

01:27:57.130 --> 01:27:59.610
Man hat erstmal so ein Letter und dann muss man die einzelnen Transaktionen

01:27:59.610 --> 01:28:00.490
dann committen und dann gucken.

01:28:00.810 --> 01:28:03.570
Sehr schön, auch wenn du jetzt mal ganz große Sachen,

01:28:03.950 --> 01:28:05.750
ich sag mal, ich hätte vorhin schon ein paar Mal gesagt,

01:28:05.830 --> 01:28:06.950
du willst jetzt aus dem CSV

01:28:06.950 --> 01:28:09.290
die ganzen Postleitzahlen Deutschlands importieren.

01:28:10.870 --> 01:28:11.770
Ja, aus dem CSV,

01:28:12.050 --> 01:28:13.570
okay, das ist eh nur eine Transaktion,

01:28:13.650 --> 01:28:15.410
aber du würdest das mit einem Insult-Statement machen.

01:28:16.270 --> 01:28:18.590
Da möchtest du auch entweder alle drin haben oder keine.

01:28:19.430 --> 01:28:21.710
Du willst nicht irgendwo, dass der dir nach der Hälfte irgendwie,

01:28:21.810 --> 01:28:24.050
dann hast du die halben Posterzahlen drin und die andere Hälfte nicht.

01:28:24.190 --> 01:28:25.130
Du willst da alles ein.

01:28:25.490 --> 01:28:26.970
Würdest du auch mit einer Transaktion machen.

01:28:27.070 --> 01:28:30.430
Wie gesagt, wenn du das CSV hochlädst, ist es nur eine.

01:28:30.610 --> 01:28:32.350
Aber du könntest das auch anders lösen.

01:28:32.490 --> 01:28:34.030
Das war jetzt zum Beispiel, was mir einfällt.

01:28:34.190 --> 01:28:36.610
Also es gibt da aber durchaus ganz viele,

01:28:36.750 --> 01:28:38.390
kriegt da wahrscheinlich jetzt ganz viele Zuschriften,

01:28:38.390 --> 01:28:41.410
was da die Leute als Beispiel schon haben für Transaktionen.

01:28:42.350 --> 01:28:45.430
Aber das ist so das Transaktion und das wird mitgelockt tatsächlich.

01:28:45.570 --> 01:28:49.690
Das Transaktions-Log ist ja das Wichtigste überhaupt bei Postgres oder bei Datenbanken.

01:28:50.450 --> 01:28:54.450
Und das wird halt mitgeloggt, damit du dann, wenn deine Datenbank abstürzt,

01:28:54.530 --> 01:28:58.070
hast du immer noch das Transaktions-Log und aus dem Bestand,

01:28:58.130 --> 01:29:00.370
den du auf der Festplatte in deinem Datenverzeichnis hast

01:29:00.370 --> 01:29:02.870
und den Transaktions-Logs kann die Datenbank wieder hergestellt werden.

01:29:03.270 --> 01:29:04.350
Die Backup ist ja wichtig.

01:29:05.970 --> 01:29:09.330
Naja, aber die Datenbank muss es halt schon irgendwann mal geschrieben haben auf die Platte.

01:29:10.010 --> 01:29:12.630
Ja, das Transaktions-Log schreibt halt immer auf die Platte.

01:29:12.750 --> 01:29:13.830
Das ist das Wichtige daran.

01:29:14.290 --> 01:29:16.290
Es sei denn, da muss man immer aufpassen.

01:29:16.610 --> 01:29:17.510
Aber man kann es auch abschalten.

01:29:18.090 --> 01:29:19.490
Macht Tests unter Umständen schon selber.

01:29:20.650 --> 01:29:22.150
Man kann das abschalten, ja.

01:29:22.430 --> 01:29:24.450
Das kann man machen. Ganz viel fieser

01:29:24.450 --> 01:29:26.370
ist aber, dass Festplatten nicht unbedingt permanent

01:29:26.370 --> 01:29:28.470
speichern. Dass auch

01:29:28.470 --> 01:29:30.230
Festplatten mittlerweile irgendwelche Caches

01:29:30.230 --> 01:29:32.470
haben und wenn dann wirklich mal so richtig

01:29:32.470 --> 01:29:33.590
heftig was ausfällt,

01:29:34.190 --> 01:29:36.490
ist in Deutschland seltener. Also in Amerika

01:29:36.490 --> 01:29:38.370
mit Stromausfällen haben wir jetzt nicht ganz

01:29:38.370 --> 01:29:40.450
so viel hier zu tun. In Amerika fällt ja ganz häufig

01:29:40.450 --> 01:29:42.430
der Strom aus und so weiter. Dass dann

01:29:42.430 --> 01:29:44.210
das nur in dem Cache der Festplatte war

01:29:44.210 --> 01:29:45.750
und noch gar nicht richtig auf der Festplatte

01:29:45.750 --> 01:29:47.730
und dann weg ist. Da wird dann immer geraten,

01:29:47.830 --> 01:29:49.750
man soll den Plattencache ausstellen und solche

01:29:49.750 --> 01:29:51.230
Geschichten, damit das dann...

01:29:51.230 --> 01:29:53.270
Ja gut, ich weiß es nicht genau.

01:29:53.390 --> 01:29:55.970
Ich glaube, man kann...

01:29:55.970 --> 01:29:57.890
Ist auch bei VMs, dann sagt die

01:29:57.890 --> 01:29:59.770
VM, es ist fest auf der Platte, es ist aber

01:29:59.770 --> 01:30:01.590
erst im Cache des Hoses oder so.

01:30:02.210 --> 01:30:03.770
Das ist auch was, da habe ich

01:30:03.770 --> 01:30:05.570
bei VMs dann keinen Einfluss drauf.

01:30:05.930 --> 01:30:07.810
Also bei den Datenbanken,

01:30:07.950 --> 01:30:09.670
so Hardware-Datenbanken, die ich mal so irgendwie

01:30:09.670 --> 01:30:11.670
in Racks gesehen habe, die hatten meistens dann halt

01:30:11.670 --> 01:30:13.190
so RAID-Controller mit Batterien drauf.

01:30:13.430 --> 01:30:14.650
Ja, wenn du wieder wegkommst.

01:30:16.930 --> 01:30:19.430
Ansonsten, ich glaube, Postgres verwendet irgendwie F-Sync.

01:30:19.510 --> 01:30:20.490
Und F-Sync kann man auch irgendwie sagen,

01:30:20.630 --> 01:30:22.650
sag mir, werd erst fertig,

01:30:22.730 --> 01:30:24.950
wenn du es wirklich, wirklich auf der Platte geschrieben hast.

01:30:24.970 --> 01:30:26.330
Das ist das, was...

01:30:26.330 --> 01:30:27.910
Das macht es auch langsamer, aber ja.

01:30:28.090 --> 01:30:31.610
Nein, F-Sync ist das, was wir immer den OpenStreetMap-Mann sagen,

01:30:31.690 --> 01:30:33.310
stell das aus, wenn sie wieder ganz NRW

01:30:33.310 --> 01:30:35.750
oder die halbe Welt hochladen wollen, weil das geht schnell.

01:30:36.350 --> 01:30:37.430
Und da kannst du auch mal sagen,

01:30:37.530 --> 01:30:38.750
entweder du hast alles oder gar nichts,

01:30:38.890 --> 01:30:39.750
du willst ja die ganze Welt hochladen.

01:30:39.790 --> 01:30:41.310
F-Sync sollte man nie abschalten.

01:30:41.650 --> 01:30:43.710
Es gibt Synchronus Commit bei Postgresql

01:30:43.710 --> 01:30:45.830
und bei MariaDB heißt das

01:30:45.830 --> 01:30:47.990
Ganze, ein Kollege von mir

01:30:47.990 --> 01:30:49.830
sagte mal, es ist die längste Variable, die es

01:30:49.830 --> 01:30:50.110
gibt.

01:30:54.110 --> 01:30:56.050
Es gibt die Variable

01:30:56.050 --> 01:30:58.070
mit selber, also die heißt nur anders.

01:31:00.630 --> 01:31:01.990
Das kannst du ausstellen,

01:31:02.190 --> 01:31:03.770
dann würde es

01:31:03.770 --> 01:31:05.870
schon das OK zurückgeben,

01:31:07.130 --> 01:31:07.890
wenn

01:31:07.890 --> 01:31:09.970
es im Cache, wenn die Transaktion im Cache

01:31:09.970 --> 01:31:11.830
liegt und nicht auf der Platte.

01:31:12.670 --> 01:31:13.890
Ansonsten kriegst du immer erst das,

01:31:13.950 --> 01:31:16.190
wenn du ein Statement abfeuerst,

01:31:16.250 --> 01:31:17.750
kriegst du erst das ACK,

01:31:17.750 --> 01:31:19.690
das Acknowledgement oder das OK, zurück.

01:31:20.350 --> 01:31:22.370
Wenn wirklich das von der Transaktion,

01:31:22.430 --> 01:31:24.530
wenn das System sagt, ja, das Transaktionslog,

01:31:24.610 --> 01:31:26.510
also dieser Schnipsel, den du da geändert hast,

01:31:26.570 --> 01:31:28.030
der ist jetzt wirklich auf der Festplatte

01:31:28.030 --> 01:31:29.010
im Transaktionslog.

01:31:29.810 --> 01:31:31.550
Und du kannst halt, das Transaktionslog hat nochmal

01:31:31.550 --> 01:31:33.150
ein Cache da drüber und du kannst halt auch schon

01:31:33.150 --> 01:31:35.590
sagen, okay, gib mir das schon zurück, wenn das in dem Cache

01:31:35.590 --> 01:31:37.530
angekommen ist. Da verlierst du

01:31:37.530 --> 01:31:38.750
bei PostgreSQL

01:31:38.750 --> 01:31:41.630
maximal 600

01:31:41.630 --> 01:31:43.690
Millisekunden an Transaktionen, also deine

01:31:43.690 --> 01:31:45.770
letzten 600 Millisekunden an Transaktionen

01:31:45.770 --> 01:31:47.770
kannst du verlieren. Ist bei MariaDB

01:31:47.770 --> 01:31:48.690
nicht anders.

01:31:51.050 --> 01:31:51.530
InnoDB

01:31:51.530 --> 01:31:53.050
Transaction Commit

01:31:53.050 --> 01:31:55.530
irgendwie so ähnlich. Ist eine ganz lange

01:31:55.530 --> 01:31:56.530
Variable bei

01:31:56.530 --> 01:31:59.310
MariaDB. Ich weiß immer nicht, wie sie

01:31:59.310 --> 01:32:01.490
heißt. Dann gab mir

01:32:01.490 --> 01:32:03.510
ein ehemaliger Kollege einen Tipp.

01:32:03.830 --> 01:32:05.610
Er sagte, ich weiß auch nicht, wie sie heißt, aber es ist

01:32:05.610 --> 01:32:07.290
die längste Variable, die es gibt.

01:32:07.570 --> 01:32:09.970
Maria, die hat wahnsinnig viele

01:32:09.970 --> 01:32:12.070
Server-Variablen. Das war wirklich die längste,

01:32:12.110 --> 01:32:13.590
aber ich glaube, es gibt mittlerweile eine längere.

01:32:13.810 --> 01:32:15.650
Aber sie ist relativ

01:32:15.650 --> 01:32:16.650
sprechend auch.

01:32:18.650 --> 01:32:19.170
Flash

01:32:19.170 --> 01:32:21.870
Transaction Commit, irgendwie so

01:32:21.870 --> 01:32:22.910
ähnlich heißt sie.

01:32:24.070 --> 01:32:25.610
Und das ist das.

01:32:25.710 --> 01:32:27.670
Aber F-Sync sollte man eigentlich nicht abstellen.

01:32:27.790 --> 01:32:29.750
Wie gesagt, die OpenStreetMappler, wenn die

01:32:29.750 --> 01:32:31.770
dann wirklich anfangen und wir laden jetzt

01:32:31.770 --> 01:32:33.730
mal auf einen frischen Server irgendwie die halbe Welt,

01:32:34.330 --> 01:32:35.670
dann ist F-Sync abstellen,

01:32:35.770 --> 01:32:37.470
dann sind die wesentlich schneller fertig

01:32:37.470 --> 01:32:39.330
und da kann man auch sagen,

01:32:39.470 --> 01:32:41.270
okay, wenn jetzt nach zwei Tagen die halbe Welt

01:32:41.270 --> 01:32:42.930
nicht da ist, dann fängt es von vorne an.

01:32:43.650 --> 01:32:45.230
Wenn dann wirklich mal der Server

01:32:45.230 --> 01:32:46.090
abgeraucht ist.

01:32:47.070 --> 01:32:48.950
Da sollte man wirklich wissen, was man tut.

01:32:50.490 --> 01:32:50.790
Ja, ja.

01:32:51.890 --> 01:32:53.290
Ja, genau,

01:32:53.550 --> 01:32:55.130
aber ich glaube, also Isolation und so,

01:32:55.130 --> 01:32:56.490
das gibt es ja auch noch, aber es gibt halt eigentlich,

01:32:56.770 --> 01:32:58.210
Transaktionen ist ja nicht das einzige Ding.

01:32:58.590 --> 01:32:59.870
Also eigentlich will man ja diese

01:32:59.870 --> 01:33:03.110
Asset-Bedingungen

01:33:03.110 --> 01:33:04.770
halt sozusagen gewährleistet haben.

01:33:05.150 --> 01:33:07.130
je nachdem, für manche Sachen reicht

01:33:07.130 --> 01:33:08.590
auch Eventual. Also Datenbanken sollten

01:33:08.590 --> 01:33:10.790
Asset-konform sein, das heißt Atoma,

01:33:10.990 --> 01:33:13.030
das wäre mit der Normalisierung zu lösen,

01:33:13.690 --> 01:33:15.110
Konsistent, auch das

01:33:15.110 --> 01:33:17.130
macht man über die Normalisierung.

01:33:18.310 --> 01:33:19.510
Die Isolation,

01:33:20.090 --> 01:33:20.490
die

01:33:20.490 --> 01:33:22.530
macht man über

01:33:22.530 --> 01:33:25.090
Isolationslevel, das wird aber automatisch

01:33:25.090 --> 01:33:26.790
gemacht und wir haben den

01:33:26.790 --> 01:33:27.690
Isolationsmittel

01:33:27.690 --> 01:33:30.390
Repeat Committed oder Repeater,

01:33:30.450 --> 01:33:33.230
ist sowieso Standard, da muss man eigentlich nicht nochmal dran.

01:33:34.330 --> 01:33:34.890
Es sei denn, man

01:33:34.890 --> 01:33:37.370
ist irgendwo im tiefen universitären

01:33:37.370 --> 01:33:39.030
Bereich und will das auf serializable

01:33:39.030 --> 01:33:40.830
stellen. Da kann ich aber auch sagen,

01:33:40.910 --> 01:33:42.790
die meisten Bugs haben, alle Datenbanksysteme haben

01:33:42.790 --> 01:33:44.550
ein Riesenproblem mit diesem

01:33:44.550 --> 01:33:46.850
Isolationslevel. Können wir noch mal

01:33:46.850 --> 01:33:48.230
drüber machen, was das bedeutet.

01:33:49.030 --> 01:33:50.570
Und dann haben wir noch die Durability

01:33:50.570 --> 01:33:52.970
oder in Deutsch heißt das so schön dauerhaft.

01:33:54.630 --> 01:33:55.070
Und

01:33:55.070 --> 01:33:56.970
das ist heute ein Riesenproblem,

01:33:57.110 --> 01:33:58.670
weil Datenbanken sollten natürlich dauerhaft

01:33:58.670 --> 01:33:59.370
speichern.

01:34:01.030 --> 01:34:02.770
Und das hatte ich vorhin schon angedeutet.

01:34:03.730 --> 01:34:06.630
Das ist so eine schöne Theorie, warte, bis es auf der Festplatte ist.

01:34:06.630 --> 01:34:12.010
Aber ganz, ganz viele Datenbanken laufen heute auf virtuellen Maschinen.

01:34:13.050 --> 01:34:15.290
Und Festplatte heißt dann die Festplatte vom Host.

01:34:15.430 --> 01:34:18.430
Und viele virtuelle Maschinen sagen, ja, das ist auf der Festplatte,

01:34:18.550 --> 01:34:20.390
obwohl es erst im Rahmen des Hostes liegt.

01:34:20.490 --> 01:34:22.090
Und noch gar nicht wirklich auf der Festplatte.

01:34:22.710 --> 01:34:24.590
Und da habe ich zumindest als Datenbanksystem

01:34:24.590 --> 01:34:25.950
erst mal keinen Einfluss drauf.

01:34:26.490 --> 01:34:29.310
Das ist dann eine Administratorsache, das dauerhaft hinzukriegen.

01:34:29.910 --> 01:34:32.050
Und jetzt guckst du mich fragend an, ich weiß auch nicht, wie.

01:34:33.030 --> 01:34:45.410
Also ich weiß nur, dass wir ganz häufig, wenn ich ganz komische Artefakte habe und dann den Kunden frage, ist das eine virtuelle Maschine? Also ich hatte auch schon Kunden, die dann nein gesagt haben, dreimal und am Ende kam raus, es war doch eine.

01:34:47.370 --> 01:35:12.530
Weil du kannst auch diese Übergabe je nach virtuelle Maschine, also je nach System, da gibt es ja KVM und was auch immer, kannst du das nicht wirklich monitoren, was da der Host eigentlich noch macht. Also diese Übergabe, virtuelle Maschine, Host, dann verschwinden die Daten, die virtuelle Maschine sagt, ich bin fertig, aber es ist vom Host noch gar nicht da abgelegt, wo es sein soll oder du hast nicht genug RAM gekriegt vom Host oder was auch immer.

01:35:12.530 --> 01:35:15.590
Also es gibt da ganz lustige Artefakte mit den virtuellen Maschinen.

01:35:15.990 --> 01:35:19.530
Ja, nur das ist halt so das mit der Dauerhaftigkeit.

01:35:20.230 --> 01:35:23.530
Isolation heißt, wenn...

01:35:25.150 --> 01:35:29.210
Ja, also wenn man jetzt zum Beispiel die geänderten Daten

01:35:29.210 --> 01:35:31.970
begonnener Transaktionen schon sehen kann in der anderen

01:35:31.970 --> 01:35:34.970
oder halt erst, wenn die Transaktion durch ist zum Beispiel

01:35:34.970 --> 01:35:36.990
oder so solche Sachen halt.

01:35:37.290 --> 01:35:38.790
Also wer wann welche Sachen sehen kann.

01:35:39.050 --> 01:35:40.970
Fällt mir ein nettes Beispiel zu ein.

01:35:42.270 --> 01:35:44.190
Jochens Frau möchte Jochen einkaufen schicken.

01:35:45.570 --> 01:35:50.870
Und Jochens Frau hat da so ein paar Sachen irgendwie an die Wand geschrieben, die eingekauft werden sollen.

01:35:51.610 --> 01:35:54.970
Hat aber noch fünf weitere Sachen im Kopf, die sie da draufschreiben will.

01:35:55.610 --> 01:35:56.610
Jochen geht schon einkaufen.

01:35:56.810 --> 01:36:01.110
Nein, Jochen hat jetzt schon mal ein Foto gemacht von der Liste und ist einkaufen gegangen.

01:36:01.390 --> 01:36:07.630
Und die Frau schreibt dann erst, und erst danach schreibt die Frau die Sachen auf die Liste.

01:36:07.850 --> 01:36:09.470
Das heißt, Jochen hat sie schon unterwegs.

01:36:09.470 --> 01:36:25.430
Also es ist im Grunde, also jeder, der was ändert, ändert das erstmal für sich, ohne dass es ein anderer sieht. Und der andere sieht das erst, wenn auch wirklich das Commit gekommen ist.

01:36:26.690 --> 01:36:44.990
Dann sieht der andere es erst, das ist das Read Committed, also ich kann erst das vom anderen lesen, wenn er das auch wirklich Committed hat. Es gibt in der Theorie noch Dirty Read und Phantom Read und so weiter, das wären Sachen, dass der andere das schon lesen kann, bevor ich das Committed habe.

01:36:47.030 --> 01:36:48.950
Das hat Postgres gar nicht implementiert.

01:36:49.590 --> 01:36:52.570
Das ist sehr einfach, das haben wir gar nicht implementiert.

01:36:52.670 --> 01:36:54.010
Ich hatte letztens eine Migration,

01:36:54.110 --> 01:36:56.990
die hatten ganz viel dieses Dirty Read benutzt.

01:36:57.490 --> 01:36:58.990
Und dann habe ich dann die Entwickler gefragt,

01:36:59.090 --> 01:36:59.930
warum braucht ihr das?

01:37:00.030 --> 01:37:01.550
Dann mussten die erst mal ganz tief forschen.

01:37:01.550 --> 01:37:04.750
Ja, weil das hat mal ein Kollege, der längst in Rente ist, gesagt,

01:37:04.870 --> 01:37:06.690
dann ist das irgendwie schneller oder so.

01:37:06.850 --> 01:37:08.190
Und dann mussten die noch länger forschen.

01:37:08.330 --> 01:37:09.870
Und dann haben sie festgestellt, eigentlich brauchen wir es gar nicht.

01:37:09.970 --> 01:37:11.230
Das können wir auch komplett anders machen.

01:37:11.790 --> 01:37:14.650
Nur, weil Postgres das ja einfach nicht kann.

01:37:14.970 --> 01:37:16.970
Also wir fangen erst mit Read Committed an,

01:37:17.090 --> 01:37:17.990
das alles da drunter geht nicht.

01:37:18.770 --> 01:37:21.070
Bei MariaDB geht es, glaube ich, so ein bisschen.

01:37:21.230 --> 01:37:23.310
Habe ich aber auch noch nie wirklich eingestellt.

01:37:24.350 --> 01:37:26.890
Und das Repeatable Read ist,

01:37:27.110 --> 01:37:30.070
wenn jetzt einer anfängt, ein Select zu machen

01:37:30.070 --> 01:37:32.090
und er braucht jetzt den Wert aus Spalte 5

01:37:32.090 --> 01:37:33.630
und der Wert, sagen wir mal, ist 7.

01:37:34.750 --> 01:37:36.530
Und der Select läuft länger

01:37:36.530 --> 01:37:39.310
und er braucht diesen Wert mehrfach in diesem Select Query.

01:37:39.450 --> 01:37:42.410
Also er greift mehrfach auf diese Spalte 5 drauf zu,

01:37:42.810 --> 01:37:44.850
um den Wert sieben nochmal, weil er da irgendwie

01:37:44.850 --> 01:37:46.990
Berechnungen macht. Und währenddessen ändert

01:37:46.990 --> 01:37:48.350
ein anderer den Wert auf neun.

01:37:49.710 --> 01:37:51.070
Ist natürlich doof, weil dann hat

01:37:51.070 --> 01:37:53.090
das Query, das Select-Query mal sieben mal neun,

01:37:53.170 --> 01:37:55.210
das will man nicht und dann kriegt halt

01:37:55.210 --> 01:37:57.070
repeatable read, das heißt, wenn er das

01:37:57.070 --> 01:37:58.930
einmal gekriegt hat, kriegt er dieses Ergebnis auch

01:37:58.930 --> 01:38:01.010
bis zum Ende. Das heißt, du bekommst dann immer

01:38:01.010 --> 01:38:03.070
die sieben, die neun wird ja erst,

01:38:03.210 --> 01:38:04.750
wenn du das Select dann nochmal ausführen würdest,

01:38:04.810 --> 01:38:06.810
wird das komplett mit neun machen.

01:38:07.090 --> 01:38:09.230
Das ist repeatable read. Das kann PostgresQL,

01:38:09.770 --> 01:38:11.290
auch wenn da irgendwie,

01:38:11.490 --> 01:38:13.190
Ich glaube, wir nennen das nur Read Committed,

01:38:13.330 --> 01:38:15.550
weil es kann ja mal passieren, dass auf dem Mars

01:38:15.550 --> 01:38:17.570
ein Vulkan ausbricht und den Islandkreis

01:38:17.570 --> 01:38:19.470
gerade schneit und der Jupiter

01:38:19.470 --> 01:38:21.630
mit dem Saturn auf einer Linie steht,

01:38:21.690 --> 01:38:22.770
da gibt es irgendeine Ausnahme.

01:38:23.090 --> 01:38:23.670
Keine Ahnung.

01:38:24.590 --> 01:38:26.690
Aber Maria HDW macht es auch.

01:38:26.850 --> 01:38:29.210
Das ist eigentlich das, was standardmäßig heute passiert.

01:38:29.770 --> 01:38:31.230
Und dann gibt es noch den Serializable.

01:38:33.470 --> 01:38:35.330
Da kriegst du immer dasselbe Ergebnis,

01:38:35.450 --> 01:38:36.790
solange wie die Session offen ist.

01:38:38.770 --> 01:38:39.650
Und das ist

01:38:39.650 --> 01:38:41.070
natürlich sehr, sehr schwierig.

01:38:41.490 --> 01:38:43.110
wenn du da drei Tage eine Session offen hast.

01:38:44.510 --> 01:38:45.330
Das kann lange sein, ja.

01:38:45.490 --> 01:38:47.390
Du willst dann immer noch das Ergebnis von

01:38:47.390 --> 01:38:49.430
vor drei Tagen, das ist 30 Mal geändert worden.

01:38:50.150 --> 01:38:51.570
Das ist sehr, sehr schwierig

01:38:51.570 --> 01:38:53.410
zu implementieren und deswegen, wenn man

01:38:53.410 --> 01:38:54.810
mal so in die Buglisten guckt,

01:38:55.410 --> 01:38:57.390
für die Datenbanksysteme, egal ob ich

01:38:57.390 --> 01:38:59.670
einen Oracle nehme oder eins der IBMs

01:38:59.670 --> 01:39:01.890
oder MariaDB oder PostgreSQL,

01:39:02.530 --> 01:39:03.710
es gibt da Bugs

01:39:03.710 --> 01:39:05.510
im Bereich serializable.

01:39:06.510 --> 01:39:08.050
Also wenn man

01:39:08.050 --> 01:39:09.810
da so SQL-Bugs, das ist ganz

01:39:09.810 --> 01:39:11.130
häufig, dass es nur den

01:39:11.130 --> 01:39:13.590
Serializable

01:39:13.590 --> 01:39:15.410
betrifft, weil das auch

01:39:15.410 --> 01:39:16.950
unwahrscheinlich schwierig ist zu implementieren.

01:39:17.450 --> 01:39:19.490
Ich habe immer noch nicht rausgefallen, in all diesen

01:39:19.490 --> 01:39:21.410
20 Jahren, wann überhaupt das

01:39:21.410 --> 01:39:23.290
Serializable mal sinnvoll ist und wann er

01:39:23.290 --> 01:39:25.390
eingesetzt wird. Meine Information

01:39:25.390 --> 01:39:27.430
ist im universitären Bereich, aber auch da

01:39:27.430 --> 01:39:29.410
ist er mir persönlich noch nicht begegnet.

01:39:29.830 --> 01:39:33.810
ja, keine Ahnung.

01:39:34.150 --> 01:39:35.590
Macht man nicht so ohne weiteres.

01:39:35.690 --> 01:39:37.410
Aber ich weiß halt, heutzutage,

01:39:37.410 --> 01:39:39.230
wo man immer ein bisschen dran denken muss, ist an dieses

01:39:39.230 --> 01:39:40.090
dauerhaft.

01:39:41.230 --> 01:39:43.330
Als Admin muss man da so ein bisschen dran denken,

01:39:43.430 --> 01:39:45.110
dass man Datenbanken auch dauerhaft hat.

01:39:45.490 --> 01:39:47.510
Hat das mit der Session vielleicht was mit Verbindungen

01:39:47.510 --> 01:39:47.890
zu tun?

01:39:48.870 --> 01:39:50.970
Eine Verbindung in der Session ist ein und dasselbe.

01:39:51.630 --> 01:39:53.370
Okay, da können wir jetzt vielleicht direkt

01:39:53.370 --> 01:39:55.190
drauf einsteigen, weil das noch ein Punkt auf der Liste war.

01:39:55.630 --> 01:39:57.490
Also, wenn ich natürlich,

01:39:57.610 --> 01:39:59.210
das ist eine Client-Server-Anwendung,

01:39:59.850 --> 01:40:01.110
du hast halt die Datenbank

01:40:01.110 --> 01:40:03.550
Server oder auch Dienst

01:40:03.550 --> 01:40:05.250
oder auch Demon genannt

01:40:05.250 --> 01:40:06.930
und du hast dann Client.

01:40:07.790 --> 01:40:08.550
Der Client

01:40:08.550 --> 01:40:10.950
kann alles Mögliche sein.

01:40:11.550 --> 01:40:12.750
Das kann die Software sein.

01:40:13.130 --> 01:40:15.330
Das ist in der Regel ein Stück Software, was auf die Datenbank

01:40:15.330 --> 01:40:17.270
zugreift, so kann ich das am einfachsten sagen.

01:40:18.070 --> 01:40:19.250
Am einfachsten erklärt das immer

01:40:19.250 --> 01:40:20.990
bei dem

01:40:20.990 --> 01:40:22.930
Webservice. Das ist auch

01:40:22.930 --> 01:40:25.050
Client-Server. Du hast einen Webserver irgendwo stehen

01:40:25.050 --> 01:40:27.290
im Rechenzentrum und das ist die Browser, die darauf zugreifen

01:40:27.290 --> 01:40:28.230
und das sind die Clients.

01:40:30.850 --> 01:40:31.450
Das hast du

01:40:31.450 --> 01:40:33.150
bei Datenbanken genauso, nur dass

01:40:33.150 --> 01:40:35.090
da die Clients halt in der Regel Software sind.

01:40:37.050 --> 01:40:37.410
Und

01:40:37.410 --> 01:40:58.690
Und ja, diese Software macht dann eine Verbindung zur Datenbank auf und schickt dann das Query, was sie anfragen will, die Datenbankanfrage, das kann jetzt das sein, was sie schreiben will oder was sie lesen will, schickt sie zu der Datenbank, die Datenbank führt das Ganze aus und schickt das dann über diese Verbindung zurück.

01:41:00.450 --> 01:41:05.670
Man kann pro Verbindung zeitgleich, pro Verbindung und zeitgleich immer nur ein Query abschießen.

01:41:07.110 --> 01:41:09.150
Das ist auch bei allen Handmachsystemen so.

01:41:09.310 --> 01:41:13.290
Also es geht nicht, dass du in derselben Verbindung zeitgleich zwei Queries abschießt.

01:41:13.510 --> 01:41:14.830
Das geht nicht ab vorerst.

01:41:15.110 --> 01:41:21.770
Also du brauchst halt, wenn für jedes zeitgleiche Query, was du abscheuig schicken willst, brauchst du eine extra Verbindung.

01:41:22.110 --> 01:41:22.270
Ja.

01:41:23.770 --> 01:41:25.750
Also wenn es wirklich richtig zeitgleich ist.

01:41:25.850 --> 01:41:28.550
Nacheinander kannst du natürlich, aber pro Verbindung kannst du es nicht.

01:41:28.550 --> 01:41:30.610
Das heißt, du musst entweder immer warten oder tatsächlich

01:41:30.610 --> 01:41:32.030
mehrere Verbindungen aufrufen. Ja, das

01:41:32.030 --> 01:41:34.450
wird jetzt auch mit Async und so

01:41:34.450 --> 01:41:35.590
sehr interessant dann noch, ja.

01:41:36.050 --> 01:41:38.590
Ja, du musst halt mehrere Verbindungen aufmachen, das ist aber

01:41:38.590 --> 01:41:40.590
auch nicht tragisch. Na, ist halt die Frage, wenn

01:41:40.590 --> 01:41:42.530
die auf was Gleiches zugreifen, auf die gleiche

01:41:42.530 --> 01:41:44.710
Zeile oder sowas? Nee, damit hat das

01:41:44.710 --> 01:41:45.170
nichts zu tun.

01:41:46.910 --> 01:41:48.770
Eine einzelne Verbindung

01:41:48.770 --> 01:41:49.570
hat damit nichts zu tun.

01:41:51.210 --> 01:41:52.810
Du kannst natürlich, wenn du zwei Verbindungen

01:41:52.810 --> 01:41:54.630
hast und die greifen auf dieselbe Zeile zu,

01:41:54.670 --> 01:41:55.970
dann muss der eine auf den anderen warten.

01:41:56.070 --> 01:41:58.370
Aber von der Datenbankseite her dann? Von der Datenbankseite.

01:41:58.470 --> 01:41:59.570
Das macht die Datenbank. Aber

01:41:59.570 --> 01:42:01.870
du musst halt immer bedenken,

01:42:02.290 --> 01:42:03.910
du hast eine Verbindung. Und bei Postgres,

01:42:04.390 --> 01:42:06.310
bei Postgres ist eine Verbindung ein echter

01:42:06.310 --> 01:42:08.390
Prozess. Und deswegen sind die Verbindungen

01:42:08.390 --> 01:42:10.450
so teuer. Bei MariaDB ist es

01:42:10.450 --> 01:42:12.410
ein Thread. Da hast

01:42:12.410 --> 01:42:13.710
du irgendwann Probleme bei,

01:42:15.030 --> 01:42:16.730
ja, wenn deine TCP-Ports

01:42:16.730 --> 01:42:17.290
ausgehen.

01:42:18.650 --> 01:42:20.470
Weil wenn du da, das hatte ich

01:42:20.470 --> 01:42:22.150
schon ein paar Mal, dass ich Web-Server hatte,

01:42:22.250 --> 01:42:24.590
dass die dann mit 5, 6, 7 oder mit 30 Web-Servern

01:42:24.590 --> 01:42:26.450
auf eine Datenbank, dann hast du irgendwann

01:42:26.450 --> 01:42:27.730
keine TCP-Boards mehr.

01:42:28.330 --> 01:42:30.250
Dann fängst du mal an

01:42:30.250 --> 01:42:32.270
und da gibt es dann ein Pooling

01:42:32.270 --> 01:42:34.110
von InnoDB, für das du dann noch mit

01:42:34.110 --> 01:42:36.050
100.000 Verbindungen zeitgleich und so weiter

01:42:36.050 --> 01:42:36.970
auch noch spielen kannst.

01:42:37.770 --> 01:42:40.490
Bei Postgres und bei denen, die prozessbasiert sind,

01:42:40.790 --> 01:42:42.210
also fast alle anderen

01:42:42.210 --> 01:42:42.710
großen,

01:42:44.050 --> 01:42:45.950
bist du da viel früher dran,

01:42:46.070 --> 01:42:47.930
dass du da Probleme kriegst, weil jede Verbindung

01:42:47.930 --> 01:42:49.130
ist ein echter Prozess.

01:42:51.110 --> 01:42:51.990
Und jeder

01:42:51.990 --> 01:42:52.790
Prozess

01:42:52.790 --> 01:42:56.150
braucht vom Betriebssystem her

01:42:56.150 --> 01:42:57.710
erst mal einen Core, einen Kern,

01:42:57.890 --> 01:42:59.970
einen Core. Ich kann

01:42:59.970 --> 01:43:01.730
pro Core zeitgleich nur

01:43:01.730 --> 01:43:03.510
einen Prozess abbilden.

01:43:05.210 --> 01:43:05.950
Das heißt,

01:43:06.050 --> 01:43:07.870
wenn ich acht Verbindungen aufhabe

01:43:07.870 --> 01:43:09.770
und ich habe acht Cores, dann läuft

01:43:09.770 --> 01:43:11.630
auf jedem Core eine Datenbankverbindung

01:43:11.630 --> 01:43:12.770
zeitgleich.

01:43:13.770 --> 01:43:15.670
Wenn ich da mehr

01:43:15.670 --> 01:43:17.730
Verbindungen zeitgleich aufhabe, sagen wir mal, ich habe jetzt

01:43:17.730 --> 01:43:19.450
vier pro Core auf, dann

01:43:19.450 --> 01:43:22.190
gibt es den Betriebssystem-Scheduler,

01:43:22.330 --> 01:43:23.290
der das schedult.

01:43:25.490 --> 01:43:47.830
Und ja, dann gab es mal vom Postgres diese nette Empfehlung von meinem lieben Kollegen aus den USA. Ja, so vier Verbindungen pro Core zu einer Zeit, wo Cores auch noch nicht so gut verbreitet waren. Also generell, auch bei MySQL ist das übrigens nicht anders. Datenbanken sind immer sehr, sehr Core-lastig. Je mehr Cores, umso besser, gerade bei Web-Anwendungen und so weiter. Du kannst da nie genug voran haben.

01:43:47.990 --> 01:44:04.950
Und du musst dir halt überlegen, wie viele Verbindungen habe ich zeitgleich und weil das echte Prozesse sind, ist da auch irgendwo mal eine Grenze. So man sagt so vom Bauch her irgendwie so 200, 400, das ist je nachdem, wenn du fragst, ist das ein bisschen anders, aber es gibt ein Connection Pooling.

01:44:05.570 --> 01:44:24.370
Das heißt, du packst zwischen deiner Datenbank und deiner Anwendung einen Pooler. Ist sehr lustig. Ich habe mal in meiner Studentenzeit im letzten Jahrhundert, Anfang dieses Jahrhunderts, hatte ich einen Job bei einer großen deutschen namhaften Firma.

01:44:24.370 --> 01:44:26.750
und damals hatte

01:44:26.750 --> 01:44:28.070
der Datenbankhersteller

01:44:28.070 --> 01:44:30.550
die Idee, wir verkaufen mal

01:44:30.550 --> 01:44:32.610
Datenbanklizenzen pro

01:44:32.610 --> 01:44:34.570
Verbindung. Richtig

01:44:34.570 --> 01:44:36.710
teuer. Und die Firma

01:44:36.710 --> 01:44:38.770
hatte dann fünf Verbindungen zu dieser Datenbank

01:44:38.770 --> 01:44:40.670
gekauft und ich durfte

01:44:40.670 --> 01:44:42.590
dann einen Pooler schreiben, der dann dafür sorgte,

01:44:42.690 --> 01:44:44.570
dass immer nur fünf Verbindungen zu dieser Datenbank

01:44:44.570 --> 01:44:45.930
kamen und alle anderen wurden dann

01:44:45.930 --> 01:44:48.290
geschedult, ähnlich wie das Betriebssystem das

01:44:48.290 --> 01:44:50.050
schedult. Da gibt es dann, häufig wird der

01:44:50.050 --> 01:44:52.530
Ron-Robin-Scheduler genommen, der das dann

01:44:52.530 --> 01:45:12.650
Und sowas gibt es halt auch für die Datenbanksysteme. Der von Postgres heißt PG-Bouncer, den wir immer empfehlen, wenn es keinen anderen gibt. Den setzt du meistens in die Nähe der Datenbank. Auch das ist eine Sache, die kannst du bis zum Umfallen diskutieren. Setze ich den Pooler in die Nähe der Datenbank oder setze ich den in die Nähe der Anwendung?

01:45:13.130 --> 01:45:28.470
Wenn ich eine Java-Anwendung habe, irgendwas mit Tomcat und weiß der Kuckuck was, die bringen meistens einen Pooler schon mit, da brauche ich keinen zweiten. Das ist auch sowas, das sehe ich immer. Ich sehe manchmal Datenbanken, die haben dann drei Pooler, wo ich mich frage, warum einer reicht.

01:45:29.630 --> 01:45:30.630
Wie ist das bei

01:45:30.630 --> 01:45:32.690
Python? Weiß ich jetzt nicht.

01:45:32.690 --> 01:45:34.650
Ne, da ist es also zum Beispiel Django macht das jetzt

01:45:34.650 --> 01:45:36.710
ab 4.1, kommt jetzt irgendwann im Sommer

01:45:36.710 --> 01:45:38.570
gibt es einen

01:45:38.570 --> 01:45:40.750
internen Pool sozusagen

01:45:40.750 --> 01:45:41.630
also für die

01:45:41.630 --> 01:45:43.950
aber normalerweise

01:45:43.950 --> 01:45:46.430
kannst du die Anzahl der Verbindungen, die jetzt dein

01:45:46.430 --> 01:45:48.670
Applikationsserver sozusagen zur Datenbank macht, kannst du normalerweise

01:45:48.670 --> 01:45:50.650
einstellen, aber das ist jetzt halt schwierig

01:45:50.650 --> 01:45:52.390
geworden mit Async,

01:45:52.750 --> 01:45:54.570
weil wenn du jetzt sagen wir mal so

01:45:54.570 --> 01:45:56.530
fünf Queries machst und die können alle

01:45:56.530 --> 01:45:58.370
gleichzeitig laufen und

01:45:58.370 --> 01:46:00.190
ab Django 4.1 hast du halt auch schon

01:46:00.190 --> 01:46:02.490
zumindest ein Async-Interface für

01:46:02.490 --> 01:46:04.470
dein ORM. Also der ORM ist noch nicht

01:46:04.470 --> 01:46:06.530
Async-fähig, aber es gibt

01:46:06.530 --> 01:46:07.490
zumindest das Interface.

01:46:08.370 --> 01:46:10.170
Dann könnte sozusagen

01:46:10.170 --> 01:46:12.190
dann der ORM

01:46:12.190 --> 01:46:14.070
fünf Verbindungen aufmachen, die alle gleichzeitig rausschicken.

01:46:14.370 --> 01:46:16.470
Weil es geht halt nicht auf eine Verbindung, sondern fünf Verbindungen aufmachen.

01:46:16.950 --> 01:46:18.350
So, wenn du jetzt aber eingestellt hast

01:46:18.350 --> 01:46:20.970
in deiner Django-Config,

01:46:21.090 --> 01:46:22.430
soll aber nur zwei

01:46:22.430 --> 01:46:24.430
Verbindungen zur Datenbank aufmachen, dann ist das natürlich

01:46:24.430 --> 01:46:26.230
ein Problem. Also

01:46:26.230 --> 01:46:28.470
das muss man dann halt irgendwie handeln und dafür gibt es halt

01:46:28.470 --> 01:46:30.430
eine Pool-Implementierung direkt

01:46:30.430 --> 01:46:32.470
in Django, jetzt ab der nächsten Version, aber

01:46:32.470 --> 01:46:33.310
genau,

01:46:34.450 --> 01:46:36.390
ja. Also wie gesagt, das

01:46:36.390 --> 01:46:38.010
kommt ein bisschen auf deine Hardware drunter an.

01:46:38.410 --> 01:46:40.410
Ich sehe, du findest da so etwa 200, 400

01:46:40.410 --> 01:46:42.090
Verbindungen. Musst du auch mal gucken,

01:46:42.310 --> 01:46:43.090
zeitgleich.

01:46:44.170 --> 01:46:46.130
Das ist auch sowas, wenn man das mal

01:46:46.130 --> 01:46:48.570
monitort, das ist bei MariaDB einfach zu monitoren

01:46:48.570 --> 01:46:49.310
und bei Postgres,

01:46:50.450 --> 01:46:52.230
da habe ich da 10.000 Verbindungen

01:46:52.230 --> 01:46:54.350
und gucke ich, habe ich

01:46:54.350 --> 01:46:56.530
zeitgleich vielleicht maximal 64 gehabt.

01:46:57.530 --> 01:46:58.590
Exakt zeitgleich.

01:46:58.790 --> 01:47:00.710
Also das muss man ja auch

01:47:00.710 --> 01:47:02.470
gucken, wie viel sind das denn wirklich

01:47:02.470 --> 01:47:04.590
exakt zeitgleich, das ist so das

01:47:04.590 --> 01:47:05.270
mit den Verbindungen.

01:47:06.850 --> 01:47:08.550
Ja, also

01:47:08.550 --> 01:47:10.550
ich meine, das ist halt, würde ich sagen, das ist eine der Haupt

01:47:10.550 --> 01:47:11.890
Vorteile von

01:47:11.890 --> 01:47:14.330
oder war früher auf jeden Fall

01:47:14.330 --> 01:47:16.050
von MySQL, dass man da nichts machen musste.

01:47:16.550 --> 01:47:17.710
Das halt so quasi

01:47:17.710 --> 01:47:20.390
jedes Statement, das man abgefeuert hat von PHP aus,

01:47:20.470 --> 01:47:22.050
hat halt einfach eine einwöhnliche Verbindung aufgemacht und

01:47:22.050 --> 01:47:23.270
nach dem Statement war sie wieder zu.

01:47:23.890 --> 01:47:41.990
Ja, nichts machen. Also ich hatte jetzt tatsächlich mal in der Pandemie einen Kunden, der durfte ich dann mit Servern spielen mit 128 Cores, das war schon sehr lustig, aber die Verbindungen waren dann auch, da hatte ich auch zeitgleich mehr, aber da hatte ich dann so irgendwie in die 200.000 Verbindungen und noch mehr.

01:47:41.990 --> 01:47:43.890
und da fängst du dann auch bei MariaDB

01:47:43.890 --> 01:47:46.390
anzupoolen und dann wird's lustig.

01:47:46.390 --> 01:47:47.710
Ja. Dann macht's Spaß.

01:47:48.870 --> 01:47:50.110
Weil dir dann auch irgendwann

01:47:50.110 --> 01:47:51.970
die, wie gesagt, du, da hampelst du ja

01:47:51.970 --> 01:47:53.930
plötzlich, da rechnest du dann auf einmal, wie viele

01:47:53.930 --> 01:47:55.510
Ports hab ich denn überhaupt und

01:47:55.510 --> 01:47:57.790
ja, und liebe

01:47:57.790 --> 01:47:59.810
Web-Server, könnt ihr da vielleicht auch noch mal was

01:47:59.810 --> 01:48:01.990
vorschalten oder so, aber das ist dann

01:48:01.990 --> 01:48:04.210
schon, das macht dann Spaß,

01:48:04.430 --> 01:48:06.050
aber. Ja gut, man kommt da wahrscheinlich

01:48:06.050 --> 01:48:07.550
auch irgendwann ein, aber so für die

01:48:07.550 --> 01:48:09.770
Feld und Wiesen. Nein.

01:48:10.690 --> 01:48:15.230
Das ist auch das, was viele halt falsch machen,

01:48:15.310 --> 01:48:18.190
wenn sie von der MariaDB MySQL-Schiene zu Postgres kommen,

01:48:18.630 --> 01:48:20.570
dass sie dann die Verbindung so wahnsinnig hochsetzen

01:48:20.570 --> 01:48:23.710
und dann macht das Betriebssystem auf einmal die Grätsche.

01:48:24.550 --> 01:48:28.330
Das ist auch so eine Sache, genau.

01:48:29.090 --> 01:48:31.730
Naja, also das war irgendwie, das war jedenfalls früher,

01:48:31.810 --> 01:48:35.890
war das immer so ein, fand ich, so Haupt-Selling-Point für MySQL,

01:48:35.990 --> 01:48:37.930
dass man sagen kann, okay, das kostet vielleicht eine Latenz,

01:48:37.970 --> 01:48:39.870
30 Prozent oder so, aber dafür muss man sich keine Gedanken

01:48:39.870 --> 01:48:41.930
um diese ganzen Sachen machen. Und die Infrastruktur

01:48:41.930 --> 01:48:43.230
ist einfacher und so und

01:48:43.230 --> 01:48:44.350
ja.

01:48:45.550 --> 01:48:47.490
Lizenz hatten wir noch gar nicht drüber geredet.

01:48:47.610 --> 01:48:49.670
Also wir hatten angefangen, also Postgres ist halt BSD

01:48:49.670 --> 01:48:51.590
und BSD ist

01:48:51.590 --> 01:48:53.690
sehr, sehr einfach zu handeln.

01:48:53.810 --> 01:48:55.690
Deswegen hat man das auch viel in Maschinen, auch beim

01:48:55.690 --> 01:48:57.530
Betriebssystem ist das viel BSD.

01:49:00.190 --> 01:49:01.570
Maria, die bis GPL

01:49:01.570 --> 01:49:03.670
und die haben dann noch

01:49:03.670 --> 01:49:04.010
die,

01:49:05.390 --> 01:49:07.070
erstmal muss man bei der GPL ja mal gucken,

01:49:07.070 --> 01:49:09.050
GPL und welche

01:49:09.050 --> 01:49:11.690
Version und die Verträge sind

01:49:11.690 --> 01:49:12.970
ein bisschen länger und

01:49:12.970 --> 01:49:14.510
man muss dann

01:49:14.510 --> 01:49:16.990
gucken, MariaDB hat

01:49:16.990 --> 01:49:19.030
so dieses, ich denke mal, das haben sie immer

01:49:19.030 --> 01:49:21.010
noch, du kannst

01:49:21.010 --> 01:49:22.930
es nutzen für deine eigene Zwecke,

01:49:23.050 --> 01:49:24.790
aber wenn du Software hast, die du

01:49:24.790 --> 01:49:26.930
verkaufst, und da, Maria,

01:49:27.010 --> 01:49:29.150
dann musst du nämlich eine Lizenz bei MariaDB

01:49:29.150 --> 01:49:30.730
kaufen, was ja auch eine faire

01:49:30.730 --> 01:49:32.970
Geschichte ist. Wenn du das dann

01:49:32.970 --> 01:49:35.090
nutzt in deiner Software, die du verkaufst,

01:49:35.370 --> 01:49:36.730
dann musst du Lizenzen

01:49:36.730 --> 01:49:38.990
kaufen. Genau, und dann

01:49:38.990 --> 01:49:40.670
gibt es bei Postgres noch,

01:49:41.150 --> 01:49:42.650
es gibt dann immer, das nennen wir immer das

01:49:42.650 --> 01:49:44.890
Contrib-Verzeichnis, es gibt dann

01:49:44.890 --> 01:49:47.010
auch so Tools. Bei einigen

01:49:47.010 --> 01:49:48.970
dieser Tools fragt man

01:49:48.970 --> 01:49:50.890
sich, warum

01:49:50.890 --> 01:49:52.930
zur Hölle ist das nicht im Hauptpaket mit drin?

01:49:54.550 --> 01:49:55.170
Das hat man

01:49:55.170 --> 01:49:57.010
ganz häufig. Also es gibt da zwei Gründe.

01:49:57.190 --> 01:49:58.910
Das eine ist, weil das Tool so groß ist. Früher

01:49:58.910 --> 01:50:00.970
musste der Code ja noch auf eine Diskette passen.

01:50:01.070 --> 01:50:02.470
Ganz lange. Nein, nein.

01:50:03.410 --> 01:50:04.790
Eine Diskette hatte 3,

01:50:05.290 --> 01:50:06.570
5 ein Viertel.

01:50:07.170 --> 01:50:08.970
Nein, wie viel

01:50:08.970 --> 01:50:12.590
1,44 Megabyte, genau.

01:50:14.150 --> 01:50:16.470
Und ihr wisst noch, was eine Diskette ist.

01:50:16.470 --> 01:50:18.050
Ja, ich kenne die, die biegsam.

01:50:18.070 --> 01:50:19.650
Den Fünfeinviertelstoll angefangen,

01:50:20.070 --> 01:50:21.350
nur 360 Kilometer drauf.

01:50:21.550 --> 01:50:23.210
Ich bin noch mit Datasette angefangen.

01:50:24.730 --> 01:50:25.890
Aber, ja.

01:50:26.930 --> 01:50:28.450
Und dann gibt es dann so ganz große

01:50:28.450 --> 01:50:30.410
Projekte wie das PostGIS mit den ganzen

01:50:30.410 --> 01:50:31.850
Geodaten oder

01:50:31.850 --> 01:50:34.130
der JDBC für Java.

01:50:34.690 --> 01:50:36.330
Das sind so große Projekte, wo man gesagt hat,

01:50:36.370 --> 01:50:38.410
okay, die macht man einfach einzeln, weil die braucht nicht jeder.

01:50:38.970 --> 01:50:40.050
die kann man nachladen.

01:50:41.170 --> 01:50:42.830
Erstmal das, das ist das eine.

01:50:43.390 --> 01:50:45.170
Das andere ist, es gibt auch kleine Projekte,

01:50:45.210 --> 01:50:46.950
wo man sich fragt, warum zur Hölle ist das nicht mit drin.

01:50:47.730 --> 01:50:49.050
In 99%

01:50:49.050 --> 01:50:50.930
oder in 98% der Fälle,

01:50:51.490 --> 01:50:52.450
kann auch 100 sein,

01:50:52.890 --> 01:50:54.890
also in 99, sage ich mal,

01:50:55.290 --> 01:50:56.890
liegt das an der Lizenz, weil

01:50:56.890 --> 01:50:58.930
diese Tools irgendwas nutzen, was

01:50:58.930 --> 01:51:00.510
GPL mitbringt, was

01:51:00.510 --> 01:51:02.830
nicht mehr mit der BSD-Lizenz

01:51:02.830 --> 01:51:04.750
kompatibel ist und wo man

01:51:04.750 --> 01:51:06.750
dann ansonsten das, also

01:51:06.750 --> 01:51:08.750
die irgendwas nutzen, was dann aus

01:51:08.750 --> 01:51:10.150
der GPL-Welt kommt

01:51:10.150 --> 01:51:12.810
und das dann... Also um da nochmal

01:51:12.810 --> 01:51:14.570
vielleicht zusammenzufassen, GPL

01:51:14.570 --> 01:51:16.610
tendiert dazu, dass die Lizenzen halt nicht

01:51:16.610 --> 01:51:18.630
kommerziell freien nutzbar sind für alle Zwecke, sondern

01:51:18.630 --> 01:51:20.710
nur privat und BSD

01:51:20.710 --> 01:51:22.530
hat halt für alle Zwecke auch für kommerzielle

01:51:22.530 --> 01:51:24.410
komplett frei verwendet. Hast du schön gesagt.

01:51:24.510 --> 01:51:26.870
Deswegen findest du auch immer Postcards in deinem Auto.

01:51:27.150 --> 01:51:28.670
Nein. Was ist der Unterschied zwischen

01:51:28.670 --> 01:51:30.450
BSD und MIT-Lizenz? Gibt es da überhaupt einen?

01:51:30.530 --> 01:51:32.770
Nein. Ist das quasi dasselbe? Nee, MIT nicht.

01:51:33.770 --> 01:51:34.710
BSD ist Barclay.

01:51:35.090 --> 01:51:36.150
Barclay University.

01:51:36.410 --> 01:51:38.510
Und MIT-Lizenz? Das ist eine andere.

01:51:38.610 --> 01:51:41.570
East Coast versus West Coast,

01:51:41.630 --> 01:51:42.630
ich weiß nicht, aber

01:51:42.630 --> 01:51:45.110
die sind tatsächlich relativ ähnlich, also

01:51:45.110 --> 01:51:46.930
die sind beide sehr liberal.

01:51:47.270 --> 01:51:48.710
Genau wie Apache auch, ist auch sehr liberal.

01:51:48.770 --> 01:51:51.170
Ja, Apache ist auch genau, das ist so das.

01:51:51.250 --> 01:51:53.070
Da gibt es noch so Patentgeschichten, aber das ist auch normal.

01:51:53.130 --> 01:51:55.250
Offiziell heißt die von Postgres auch Postgres-Lizenz,

01:51:55.470 --> 01:51:56.530
aber die BSD-Lizenz.

01:51:56.870 --> 01:51:58.930
Das ist alles von der Universität von Barclay,

01:51:59.530 --> 01:52:00.570
die BSD-Lizenz.

01:52:01.630 --> 01:52:03.170
Und MIT,

01:52:04.090 --> 01:52:04.690
ja, ist halt,

01:52:05.330 --> 01:52:07.330
ja, MIT, ich finde das immer so lustig,

01:52:07.410 --> 01:52:09.550
Harvard und MIT sitzen in der

01:52:09.550 --> 01:52:11.710
Ort, wenn du mal dir überlegst,

01:52:11.770 --> 01:52:13.590
wo liegt das MIT? Jeder weiß, was die

01:52:13.590 --> 01:52:16.110
Harvard-Universität ist und die MIT-Universität

01:52:16.110 --> 01:52:17.230
hat man eigentlich schon mal gehört.

01:52:18.190 --> 01:52:19.310
Die Städte, die sind,

01:52:19.490 --> 01:52:21.490
die liegen tatsächlich nebeneinander und die Stadt

01:52:21.490 --> 01:52:22.070
heißt Cambridge.

01:52:23.330 --> 01:52:25.170
Und da muss man immer aufpassen, wenn man so im

01:52:25.170 --> 01:52:26.730
universitären Unterwegs ist.

01:52:27.590 --> 01:52:29.210
Hat man jetzt

01:52:29.210 --> 01:52:31.090
die echte Cambridge-Universität,

01:52:31.210 --> 01:52:33.170
also die in England, die ja auch nicht ohne ist,

01:52:33.250 --> 01:52:34.770
die will man ja manchmal auch wirklich haben.

01:52:35.350 --> 01:52:37.610
Oder hat man da wirklich wieder MIT und

01:52:37.610 --> 01:52:39.730
Harvard, weil die auch gerne unter

01:52:39.730 --> 01:52:41.750
Cambridge dann irgendwas veröffentlichen.

01:52:41.990 --> 01:52:43.850
Das liegt im Übrigen

01:52:43.850 --> 01:52:45.850
in der Nähe von Boston, falls es noch einer fragt.

01:52:46.970 --> 01:52:47.090
Genau.

01:52:48.550 --> 01:52:49.750
Und, ne, aber das ist,

01:52:49.950 --> 01:52:51.870
die kenne ich jetzt gar nicht, die Lizenz.

01:52:51.950 --> 01:52:53.250
Ich glaube, das ist für mich, also

01:52:53.250 --> 01:52:55.430
MRT sind fast identisch, also du sagst es irgendwie

01:52:55.430 --> 01:52:57.230
Patent. Ja, ja, das ist. Ne, das

01:52:57.230 --> 01:52:59.290
Apache macht noch diese expliziten Geschichten mit den

01:52:59.290 --> 01:53:01.150
Patenten, aber also

01:53:01.150 --> 01:53:03.370
MSD weiß ich jetzt gar nicht genau.

01:53:03.930 --> 01:53:05.630
ist aber auch, vielleicht die liberalste

01:53:05.630 --> 01:53:07.430
ist wahrscheinlich MIT, da ist es eigentlich quasi nur

01:53:07.430 --> 01:53:09.290
Copyleft, da steht nur drin, du musst halt sagen,

01:53:09.430 --> 01:53:11.210
du darfst es nicht entfernen, aber sonst...

01:53:11.210 --> 01:53:12.390
Nicht mal das, glaube ich.

01:53:13.210 --> 01:53:15.230
Die BSD ist, glaube ich, nur, lass meinen Namen

01:53:15.230 --> 01:53:15.590
in Zeitung.

01:53:17.190 --> 01:53:19.150
BSD, es muss Namen drin bleiben, bei MIT ist es völlig egal.

01:53:19.610 --> 01:53:20.970
Ja, ist beim Python übrigens auch so,

01:53:21.050 --> 01:53:23.090
Python hat auch die Python-Lizenz,

01:53:23.170 --> 01:53:24.150
aber es ist auch einfach nur BSD.

01:53:25.470 --> 01:53:27.150
Wir haben irgendwann vor etlichen

01:53:27.150 --> 01:53:29.110
Jahren mal, auf einmal war das alles

01:53:29.110 --> 01:53:31.010
nicht mehr BSD-Lizenz, sondern jedes Projekt hatte

01:53:31.010 --> 01:53:33.370
seine eigene Lizenz, was aber eigentlich die BSD-Lizenz

01:53:33.370 --> 01:53:36.730
Das war, ich nehme an, da gab es irgendwelche Namensgedöns-Geschichten.

01:53:37.130 --> 01:53:37.810
Keine Ahnung.

01:53:38.230 --> 01:53:40.230
Sag auf jeden Fall, von wem es gewesen ist, wenn du das sagst.

01:53:40.310 --> 01:53:40.890
Mach mal so was.

01:53:41.850 --> 01:53:42.750
Ja, irgendwie so.

01:53:42.890 --> 01:53:43.370
Ja, interessant.

01:53:43.990 --> 01:53:47.570
Ja, ist doch schon relevant, wenn man das als Unternehmensgründe nutzen möchte.

01:53:47.570 --> 01:53:51.730
Also ich war mal in einem Unternehmen als Diplomant damals.

01:53:52.130 --> 01:53:57.730
Die hatten wirklich überlegt, aus dem Maschinenbau dann irgendwann das mal,

01:53:57.770 --> 01:54:00.030
wurde das ja weiter automatisiert und so weiter.

01:54:00.150 --> 01:54:02.790
Und die haben dann damals echt diese Diskussion geführt,

01:54:02.890 --> 01:54:04.710
was nehmen wir für Platinen oder was

01:54:04.710 --> 01:54:06.250
machen wir für ein Betriebssystem auf

01:54:06.250 --> 01:54:08.770
unsere Platinen oder auf unsere Hardware

01:54:08.770 --> 01:54:10.670
drauf und da war eine Diskussion Linux

01:54:10.670 --> 01:54:11.850
versus BSD

01:54:11.850 --> 01:54:14.910
und die haben sich dann für BSD entschieden,

01:54:15.870 --> 01:54:16.890
weil ein abgespecktes Linux

01:54:16.890 --> 01:54:18.750
kriegst du ja auch hin und es war damals

01:54:18.750 --> 01:54:19.630
ja auch noch nicht so groß,

01:54:20.650 --> 01:54:22.750
eben wegen der Lizenz, weil die das

01:54:22.750 --> 01:54:24.470
auch ohne Probleme dann in jedes

01:54:24.470 --> 01:54:26.630
der Geräte, die du heute in jedem

01:54:26.630 --> 01:54:28.650
Handel kaufen kannst, auch einfach drunter

01:54:28.650 --> 01:54:30.630
legen kannst und ich meine, viele

01:54:30.630 --> 01:54:32.670
Autos nutzen auch BSD Lizenz, also

01:54:32.670 --> 01:54:37.030
Das ist ganz, ganz spannend, wo du überall BSD drauf hast.

01:54:37.190 --> 01:54:38.450
Das ist sehr, sehr interessant.

01:54:38.910 --> 01:54:39.990
Du kommst ja heute gar nicht mehr dran.

01:54:40.090 --> 01:54:41.610
Früher haben wir uns ja immer noch den Spaß gemacht,

01:54:41.670 --> 01:54:43.790
die Geräte auseinanderzubauen und zu gucken, was da drauf ist.

01:54:44.810 --> 01:54:46.490
Das stellen die Hersteller ja heute,

01:54:46.490 --> 01:54:48.110
kommst du da nicht mehr so ohne weiteres dran.

01:54:48.230 --> 01:54:49.530
Oder du hast eine Rest-API denn irgendwo.

01:54:49.870 --> 01:54:51.910
Ja, du hast halt ganz viel da, BSD.

01:54:52.230 --> 01:54:54.810
Und wenn die dann eine Datenbank brauchen, eine etwas größere,

01:54:54.810 --> 01:54:56.790
dann hast du auch ganz häufig Postgres.

01:55:00.450 --> 01:55:01.330
Das ist interessant.

01:55:01.450 --> 01:55:03.550
wir haben jetzt noch zwei Sachen auf der Liste,

01:55:04.050 --> 01:55:05.510
die da vielleicht ganz gut reinfallen. Also Maria

01:55:05.510 --> 01:55:07.570
wäre das Postgres, wäre vielleicht das. Also da hatten wir

01:55:07.570 --> 01:55:09.850
schon mal kurz. Und das andere war NoSQL.

01:55:10.450 --> 01:55:11.530
Achso, ja, also

01:55:11.530 --> 01:55:13.670
da gibt es jetzt nicht ganz

01:55:13.670 --> 01:55:15.370
viel zu sagen. Es gibt halt neben den

01:55:15.370 --> 01:55:17.410
Relationalen, die sich, also

01:55:17.410 --> 01:55:19.310
diese, ja erstmal ist ja NoSQL

01:55:19.310 --> 01:55:20.530
ist ja Not Only SQL.

01:55:21.430 --> 01:55:22.590
Und da fanden die

01:55:22.590 --> 01:55:25.270
hierarchischen Datenbanksysteme,

01:55:25.270 --> 01:55:27.330
wer das mal gelernt hat,

01:55:27.430 --> 01:55:29.230
hierarchische Datenbanksysteme, sowas wie

01:55:29.230 --> 01:55:31.490
oder auch das Detailsystem.

01:55:31.790 --> 01:55:32.730
Das ist auch ein Datenbanksystem.

01:55:33.330 --> 01:55:35.330
Die waren dann plötzlich NoSQL. Das fanden

01:55:35.330 --> 01:55:37.010
die sich überhaupt nicht mehr mit zurecht,

01:55:37.170 --> 01:55:39.150
weil, ja, not only SQL.

01:55:40.070 --> 01:55:41.390
Und nein, es gibt halt

01:55:41.390 --> 01:55:43.050
tatsächlich sind dann so

01:55:43.050 --> 01:55:45.350
2007 hat das so ein bisschen

01:55:45.350 --> 01:55:47.310
begonnen oder

01:55:47.310 --> 01:55:49.350
seit 2007 hat sich das angefangen

01:55:49.350 --> 01:55:51.370
zu etablieren.

01:55:51.750 --> 01:55:53.350
Meines Wissens sind das

01:55:53.350 --> 01:55:55.850
Dokumentenbasierte,

01:55:55.930 --> 01:55:57.490
von der Technik her Dokumentenbasierte

01:55:57.490 --> 01:55:59.710
Datenbanksysteme und Graf-Datenbanksysteme,

01:56:00.630 --> 01:56:01.870
die grafenbasiert sind.

01:56:02.810 --> 01:56:03.610
Und das grafenbasiert

01:56:03.610 --> 01:56:05.590
habe ich vorhin schon mal so versucht, das sind dann

01:56:05.590 --> 01:56:07.050
so die Klassiker, Kunden,

01:56:07.170 --> 01:56:09.750
die das gekauft haben, haben auch das und das gekauft.

01:56:10.930 --> 01:56:11.750
Das ist

01:56:11.750 --> 01:56:13.110
so das klassische Beispiel dafür.

01:56:13.110 --> 01:56:15.770
Das könnte man wahrscheinlich auch in einer normalen SQL abbilden.

01:56:16.090 --> 01:56:17.630
Ja, da kriegst du aber die Krise bei, wenn du das abbildest

01:56:17.630 --> 01:56:19.570
in einer normalen SQL. Weil die Trails dann zu groß werden

01:56:19.570 --> 01:56:21.610
oder die Joints zu groß werden. Ja, du spielst dann ja

01:56:21.610 --> 01:56:23.490
mit Matrizen am Ende und weißt ja, guck, guck,

01:56:23.570 --> 01:56:25.410
du brauchst ja unendlich viele Tabellen.

01:56:25.830 --> 01:56:26.750
Also da wird es echt,

01:56:27.490 --> 01:56:45.510
Das ist das Grafen-Dingen. Und wenn du dann mal so heute in größere Firmen guckst, ich nenne jetzt keine Namen, das darf ich jetzt ja wahrscheinlich nicht, die haben immer Kombinationen. Also ich sag mal so ein Web-Anbieter, der hat ganz, ganz häufig Kombinationen.

01:56:45.510 --> 01:56:48.190
Also für solche Sachen hat er dann eine Graf-Datenbank

01:56:48.190 --> 01:56:49.770
und ansonsten hat er eine Relationale

01:56:49.770 --> 01:56:51.950
für das ganze Kunden- und Verkaufsabwicklungs-Git,

01:56:51.990 --> 01:56:53.610
dann hat er das Relationale.

01:56:53.910 --> 01:56:56.110
Und was dann immer noch, Material vielleicht auch.

01:56:56.510 --> 01:56:57.970
Und das kann man dann auch verknüpfen.

01:56:58.090 --> 01:57:00.330
Die nutzen ganz viel, meine Erfahrung ist,

01:57:00.410 --> 01:57:03.290
was sie da ganz viel nutzen, ist von Apache,

01:57:03.990 --> 01:57:08.250
das ganze Hadoop mit HBase, HGraph und wie sie alle heißen.

01:57:09.090 --> 01:57:12.690
Also die meisten Firmen nutzen sowieso Maria und Postgres.

01:57:12.690 --> 01:57:15.490
Also du hast nicht mehr nur ein Datenbanksystem,

01:57:15.510 --> 01:57:17.110
dem, du hast halt ganz viele. Und

01:57:17.110 --> 01:57:19.350
dokumentenbasiert ist von daher interessant,

01:57:19.450 --> 01:57:21.130
wir bei Postgres empfehlen ja immer

01:57:21.130 --> 01:57:21.870
Elasticsearch.

01:57:24.230 --> 01:57:25.270
Das ist nicht, dass

01:57:25.270 --> 01:57:26.890
du Dokumente ablegst.

01:57:27.750 --> 01:57:29.210
Also Dokumente könnten jetzt, ich

01:57:29.210 --> 01:57:30.930
nehme immer ganz gerne auch Bilder als

01:57:30.930 --> 01:57:33.150
Beispiel jetzt. Bilder oder

01:57:33.150 --> 01:57:35.250
auch irgendwelche langen Textdokumente.

01:57:35.970 --> 01:57:36.830
PDFs oder so.

01:57:37.910 --> 01:57:39.130
Aber das

01:57:39.130 --> 01:57:41.270
Gute an dokumentenbasierten Baden-Baden

01:57:41.270 --> 01:57:43.330
ist, dass du in den Dokumenten suchen kannst.

01:57:43.490 --> 01:57:45.230
Das heißt, du kannst mir sagen, gib mir alle Bilder,

01:57:45.390 --> 01:57:46.870
die den Farbcode rot haben.

01:57:47.670 --> 01:57:49.090
Oder wo rote Pixel drin sind.

01:57:49.830 --> 01:57:50.910
Das kannst du natürlich nicht.

01:57:51.010 --> 01:57:52.070
In einer relationalen Datenbank

01:57:52.070 --> 01:57:54.030
liest du das Dokument so als Blob ab.

01:57:54.870 --> 01:57:55.910
Und du kannst nur das Dokument,

01:57:55.950 --> 01:57:57.370
du kannst aber nicht reingucken in das Dokument.

01:57:57.370 --> 01:57:59.010
Ich müsste halt vorher beim Speichern reingucken,

01:57:59.090 --> 01:58:00.690
müsste quasi den Link zu dem Dokument

01:58:00.690 --> 01:58:01.650
in die Datenbank schreiben.

01:58:01.890 --> 01:58:03.130
Ja, aber dann weiß man immer noch nicht,

01:58:03.130 --> 01:58:05.230
wo die Farbpixels raus oder ähnliches.

01:58:05.390 --> 01:58:06.850
Ja, die müsste ich ja einfach speichern.

01:58:06.970 --> 01:58:08.470
Nein, aber bei der Dokumentenbasierten

01:58:08.470 --> 01:58:09.510
oder wenn du PDFs,

01:58:09.550 --> 01:58:11.070
dann kannst du in den PDFs auch suchen,

01:58:11.550 --> 01:58:12.830
wenn du da Text hast.

01:58:13.170 --> 01:58:15.470
Wobei das bei PDFs heutzutage wieder schwierig ist,

01:58:15.530 --> 01:58:18.070
weil ganz viele PDFs aus Kopierschutz als Bilder sind.

01:58:18.630 --> 01:58:20.950
Das ist dann auch, ist ätzend, wenn du die kopieren willst.

01:58:21.130 --> 01:58:24.370
Aber das ist so was, wo du dokumentenbasiert

01:58:24.370 --> 01:58:25.650
natürlich super für gebrauchen kannst,

01:58:25.690 --> 01:58:28.090
wenn du in den Dokumenten selber suchen willst.

01:58:29.030 --> 01:58:31.770
Gib mir jetzt Gesichtserkennung, ganz klassisch.

01:58:32.890 --> 01:58:35.470
Das ist so was, wo du dann Dokumenten basiert hast

01:58:35.470 --> 01:58:38.910
mit Farbcode und mit was auch immer.

01:58:40.090 --> 01:58:41.590
Gesichtserkennung wäre jetzt so was.

01:58:42.770 --> 01:58:43.590
wobei ich da nicht weiß.

01:58:44.330 --> 01:58:46.810
Sie speichert ja bestimmte Punkte wahrscheinlich und dann die Winkel

01:58:46.810 --> 01:58:48.850
dazu. Ja, aber das ist jetzt was, was mir einfällt,

01:58:48.970 --> 01:58:50.810
wo du so bei Bildern ganz

01:58:50.810 --> 01:58:52.070
viel machst, das ist das.

01:58:52.550 --> 01:58:54.330
Es gibt natürlich Dokumenten, MongoDB

01:58:54.330 --> 01:58:56.850
ist dokumentenbasiert, MongoDB

01:58:56.850 --> 01:58:58.730
ist natürlich sehr extremst umstritten.

01:59:00.490 --> 01:59:02.770
Wie gesagt, die Firmen, die ich kenne, die haben

01:59:02.770 --> 01:59:05.050
dann da aus der Apache-Geschichte

01:59:05.050 --> 01:59:06.250
Hadoop und so weiter.

01:59:06.470 --> 01:59:07.930
Warum ist MongoDB umstritten?

01:59:12.770 --> 01:59:26.030
Und meine Erfahrung mit MongoDB ist, dass es extrem rammlastig ist und auch sehr rammaggressiv ist.

01:59:26.490 --> 01:59:32.450
Aber es gibt da tatsächlich Tests von großen Firmen, die mit F anfangen oder mit B anfangen.

01:59:32.650 --> 01:59:36.450
Oder ähnlich ist die MongoDB auch wirklich auf die kleinsten Niere auseinandergenommen.

01:59:36.450 --> 01:59:37.750
oder mit G anfangen,

01:59:38.690 --> 01:59:40.470
wo es dann auch mal

01:59:40.470 --> 01:59:41.510
Dokumente dazu gab,

01:59:42.410 --> 01:59:44.870
warum sie das dann jetzt nicht einsetzen.

01:59:46.410 --> 01:59:49.810
was ich halt hatte,

01:59:50.210 --> 01:59:52.450
es gab auch eine Zeit lang Hoster, die gesagt haben,

01:59:52.690 --> 01:59:54.450
du darfst keinen

01:59:54.450 --> 01:59:56.250
Tor-Server auf deinem

01:59:56.250 --> 01:59:58.370
Server machen und keine MongoDB.

01:59:59.470 --> 02:00:00.650
Gerade in VMs,

02:00:00.690 --> 02:00:02.450
weil sie dir den Ramp vom ganzen Host

02:00:02.450 --> 02:00:03.570
mit wegbringen oder ähnliches.

02:00:03.570 --> 02:00:05.290
Auch weil MongoDB am Anfang

02:00:05.290 --> 02:00:07.490
halt keine, defaultmäßig keine Authentifizierung

02:00:07.490 --> 02:00:08.530
hatte, du konntest dich einfach drauf verbinden.

02:00:08.530 --> 02:00:10.030
Ja, irgendwas war da, ja.

02:00:10.350 --> 02:00:12.630
Das war so ähnlich wie bei MySQL auch,

02:00:12.890 --> 02:00:14.050
weil da war es am Anfang auch so,

02:00:14.630 --> 02:00:16.610
naja. Aber wie gesagt, die meisten

02:00:16.610 --> 02:00:18.650
greifen dann aber tatsächlich im professionellen

02:00:18.650 --> 02:00:19.890
Bereich auf diese ganze Apache

02:00:19.890 --> 02:00:22.790
H-Dub, H-Base, 11-Grad-Graf

02:00:22.790 --> 02:00:24.050
und was weiß ich was zurück.

02:00:24.630 --> 02:00:26.790
Neo4j ist, glaube ich, auch H-Graf.

02:00:27.550 --> 02:00:28.430
Das hängt irgendwie

02:00:28.430 --> 02:00:30.710
zusammen. Bei den grafenbasierten

02:00:30.710 --> 02:00:33.030
Elasticsearch

02:00:33.030 --> 02:00:34.270
ist so ein klassisches

02:00:34.270 --> 02:00:36.570
Dokumentendingen zum Suchen in Dokumenten.

02:00:37.090 --> 02:00:38.210
Also da gibt es

02:00:38.210 --> 02:00:40.310
verschiedene. Da müssten wir jetzt auch nochmal eigentlich

02:00:40.310 --> 02:00:41.830
im Einzelnen nochmal, wie man das denn macht.

02:00:41.830 --> 02:00:43.310
Ja, da bin ich aber auch nicht wirklich so.

02:00:43.650 --> 02:00:46.330
Da ist halt das Problem, dass es da ganz viel Software gibt

02:00:46.330 --> 02:00:48.290
und dass du da, deswegen

02:00:48.290 --> 02:00:50.410
sage ich immer, man muss das dann auch heutzutage

02:00:50.410 --> 02:00:52.190
den jungen Menschen beibringen. Es gibt halt

02:00:52.190 --> 02:00:54.190
nicht nur Relationale. Es gibt halt diese

02:00:54.190 --> 02:00:56.050
anderen und wenn ihr die wirklich braucht,

02:00:56.670 --> 02:00:58.190
du kannst die nicht alle im Studium

02:00:58.190 --> 02:01:00.290
lernen. Also da gibt es dann GQL und so weiter.

02:01:00.430 --> 02:01:02.170
Ich weiß nicht, ob das auch sinnvoll ist, die alle

02:01:02.170 --> 02:01:04.190
im Studium zu lernen oder hinterher Kurse dafür

02:01:04.190 --> 02:01:06.190
anzubieten, wie du es programmierst. Gut, wenn du

02:01:06.190 --> 02:01:08.310
jetzt Programmierer wirst, ist das natürlich

02:01:08.310 --> 02:01:10.190
vielleicht sinnvoll, dass du es noch lernst. Ich weiß es nicht.

02:01:10.550 --> 02:01:11.610
Aber wenn man es braucht vielleicht.

02:01:11.910 --> 02:01:14.170
Ja, wenn man es braucht, dann muss man sich

02:01:14.170 --> 02:01:15.910
da mal reinfuchsen. Ich weiß auch nicht, wie viele

02:01:15.910 --> 02:01:18.090
Schulungen es da schon gibt. Also ich weiß, dass

02:01:18.090 --> 02:01:20.090
CouchDB da mal eine ganze Menge gemacht hat im

02:01:20.090 --> 02:01:22.010
Schulungsbereich. Und bei den

02:01:22.010 --> 02:01:23.930
CouchDB ist, glaube ich, auch Dokumenten basiert.

02:01:24.030 --> 02:01:25.310
Für mich jetzt nicht alles täuschen.

02:01:25.610 --> 02:01:27.870
Das ist

02:01:27.870 --> 02:01:30.250
so ein Misch, glaube ich,

02:01:30.250 --> 02:01:31.750
aus beiden. Ja, das glaube ich,

02:01:31.970 --> 02:01:34.090
das ist halt so ein sehr, das kann man

02:01:34.090 --> 02:01:35.990
sehr gut verteilen. Das ist auch mehr, aber

02:01:35.990 --> 02:01:37.390
eigentlich eher so ein Key-Value-Store.

02:01:38.190 --> 02:01:40.030
Aber ja, also es gibt

02:01:40.030 --> 02:01:42.010
ja ganz viele unterschiedliche Dinge. Ich weiß

02:01:42.010 --> 02:01:43.950
nicht. Ich glaube, das ist gar nicht so

02:01:43.950 --> 02:01:45.890
einfach, sich zu überlegen, was man da jetzt

02:01:45.890 --> 02:01:47.710
braucht, wenn man sich damit nicht so auskennt. Ich glaube,

02:01:48.210 --> 02:01:50.010
wenn man sozusagen weiß,

02:01:50.050 --> 02:01:51.930
was man daneben, also wenn man das

02:01:51.930 --> 02:01:52.990
Problem hat, dann weiß man das.

02:01:53.610 --> 02:01:55.570
Wenn man das nicht weiß, sollte man lieber Postkarten sehen.

02:01:55.570 --> 02:01:57.550
Ich habe tatsächlich an der Uni dann so ein bisschen

02:01:57.550 --> 02:01:59.110
die Studierenden mit Nois,

02:01:59.250 --> 02:02:01.670
Quatsch, mit Neo4j spielen lassen.

02:02:02.350 --> 02:02:03.830
Ich habe aber auch eher so einen Zugang

02:02:03.830 --> 02:02:05.590
zu den Grafen als es zu den anderen.

02:02:07.010 --> 02:02:07.870
Weil bei die anderen

02:02:07.870 --> 02:02:09.130
kann man sich auch besser vorstellen.

02:02:09.410 --> 02:02:11.370
Die sind dann auch wahrscheinlich leichter im Selbststuhl.

02:02:11.450 --> 02:02:12.970
Ich habe die also echt mit Neo4j,

02:02:13.170 --> 02:02:15.670
die hatten es mal ein bisschen rumspielen lassen,

02:02:15.750 --> 02:02:17.010
dass sie das mal gesehen haben.

02:02:17.890 --> 02:02:19.990
Und das ist ja auch schon mal was.

02:02:20.130 --> 02:02:21.210
Damit du überhaupt weißt,

02:02:21.370 --> 02:02:23.170
dass du es mal gesehen hast.

02:02:23.590 --> 02:02:25.610
Was würde man denn jetzt nehmen, wenn keiner ein GrafQL mit ein bisschen

02:02:25.610 --> 02:02:27.370
rumspielen will? Was würde man jetzt da drunter schicken?

02:02:27.810 --> 02:02:29.930
Neo4j. Das hat auch eine Oberfläche

02:02:29.930 --> 02:02:30.770
tatsächlich auch.

02:02:31.390 --> 02:02:33.690
Das ist das, womit ich rumgespielt habe.

02:02:33.830 --> 02:02:34.130
jetzt.

02:02:35.790 --> 02:02:37.170
Du meinst GraphQL, das von Facebook?

02:02:38.050 --> 02:02:38.650
Zum Beispiel, ja.

02:02:39.090 --> 02:02:40.470
Das kenne ich gar nicht.

02:02:40.470 --> 02:02:42.270
Ja, das ist irgendwie so eine neue Geschichte,

02:02:42.870 --> 02:02:44.490
so quasi als Alternative zu

02:02:44.490 --> 02:02:45.470
JSON über

02:02:45.470 --> 02:02:47.730
so JSON-API.

02:02:49.070 --> 02:02:50.330
Aber das weiß ich nicht,

02:02:50.410 --> 02:02:52.430
das gibt keine Datenbank, die sowas direkt

02:02:52.430 --> 02:02:54.340
glaube ich. Außer Neo4j?

02:02:54.720 --> 02:02:56.320
Vielleicht kann die das, ich weiß es nicht, vielleicht gibt es

02:02:56.320 --> 02:02:57.580
irgendeinen Adapter oder so, aber ich glaube dieses,

02:02:58.000 --> 02:03:00.360
die Sprache, die die verwenden, irgendwas mit

02:03:00.360 --> 02:03:01.900
Cycle oder weiß ich nicht.

02:03:01.900 --> 02:03:04.360
Es gibt tatsächlich standardisiert das GQL

02:03:04.360 --> 02:03:06.420
mittlerweile, da hat Katana auch ganz viel

02:03:06.420 --> 02:03:07.360
mitgemacht.

02:03:08.600 --> 02:03:10.360
Nein, aber das ist, es ist ja

02:03:10.360 --> 02:03:11.780
erstmal auch wichtig, guck mal,

02:03:12.160 --> 02:03:14.120
ich muss auch nicht jede Programmiersprache kennen,

02:03:14.280 --> 02:03:16.500
aber es ist schon mal schön zu wissen, wie sie heißen

02:03:16.500 --> 02:03:17.800
oder nicht jede Programmiersprache

02:03:17.800 --> 02:03:19.120
programmieren können.

02:03:19.840 --> 02:03:21.980
Ich kann jetzt auch kein Python,

02:03:22.180 --> 02:03:25.420
Und bin ich ganz ehrlich, doch, ich habe mal was mit Python gemacht

02:03:25.420 --> 02:03:26.600
vor gefühlten 100 Jahren.

02:03:27.460 --> 02:03:30.920
Irgendwo ist mir Python mal wirklich ...

02:03:30.920 --> 02:03:31.900
Wahrscheinlich, wenn es länger hält.

02:03:33.000 --> 02:03:36.260
Nee, früher musste man auch schon mal an so Software noch rumspielen,

02:03:36.360 --> 02:03:38.480
damit man irgendwelche Features hatte, die man nicht hatte.

02:03:38.580 --> 02:03:39.940
Ich weiß aber gar nicht mehr, wie das Tool ist,

02:03:40.000 --> 02:03:43.260
wo man das brauchte in Python, was in Python geschrieben war.

02:03:43.260 --> 02:03:48.140
Aber so ähnlich, wie man bei AutoCAD auch erst mal Lisp lernen musste,

02:03:48.300 --> 02:03:51.680
um da irgendwelche Funktionen zum Zeichnen zu machen,

02:03:51.740 --> 02:03:53.720
weil es gab nur eine Linie und kein Kopieren

02:03:53.720 --> 02:03:55.580
oder kein Spiegeln oder so. Das muss man sich selbst

02:03:55.580 --> 02:03:57.740
probieren in Lisp. Und irgendwie war das

02:03:57.740 --> 02:03:59.000
auch, da gab es irgendein Tool.

02:03:59.580 --> 02:04:01.620
Blender ist eins, was Python schon ganz lange

02:04:01.620 --> 02:04:02.020
gemacht hat.

02:04:04.020 --> 02:04:05.720
Also wenn du C kannst, kannst

02:04:05.720 --> 02:04:07.780
du die meisten anderen auch wenigstens halbwegs

02:04:07.780 --> 02:04:08.240
lesen.

02:04:09.260 --> 02:04:12.160
Und es ist nicht so schwer, da irgendwo reinzukommen.

02:04:12.620 --> 02:04:13.540
Postgres ist im Übrigen

02:04:13.540 --> 02:04:14.860
komplett in C geschrieben.

02:04:16.240 --> 02:04:17.680
MariaDB ist so ein Misch

02:04:17.680 --> 02:04:18.760
aus C und C++.

02:04:20.300 --> 02:04:21.720
Ich meine, ich habe da jetzt nicht so viel

02:04:21.720 --> 02:04:23.620
Erfahrung. Ich habe einmal versucht, in MySQL

02:04:23.620 --> 02:04:25.780
einen Bug, den ich gefunden habe, irgendwie zu

02:04:25.780 --> 02:04:27.580
debunken. Das war eher schwierig.

02:04:28.060 --> 02:04:29.660
Also ich fand das so, war so, auch gerade

02:04:29.660 --> 02:04:31.780
diese Swearing-Geschichte war, fand ich

02:04:31.780 --> 02:04:33.840
war, war,

02:04:33.960 --> 02:04:35.260
hat, ich,

02:04:35.640 --> 02:04:37.680
hat jetzt nicht so viel Joy

02:04:37.680 --> 02:04:39.800
bei mir gesparkt, muss ich sagen. Wohin gegen Postgres?

02:04:40.460 --> 02:04:41.820
Sehr gut, kann ich empfehlen. Kann man sich sehr gut

02:04:41.820 --> 02:04:43.660
angucken. Ja, das ist das. Postgres hat da auch

02:04:43.660 --> 02:04:45.720
immer Lob für gekriegt, dass die einen sehr, sehr

02:04:45.720 --> 02:04:47.800
guten Quellcode haben. Sehr gut lesbar

02:04:47.800 --> 02:04:49.720
auch. Aber das liegt natürlich

02:04:49.720 --> 02:04:51.640
auch daran, dass da wirklich einer drüber

02:04:51.640 --> 02:04:53.720
guckt und dir jeden Code, jedes Mal

02:04:53.720 --> 02:04:55.500
den Patch zurückführt, wenn du die Klammer auch nur

02:04:55.500 --> 02:04:56.600
in der falschen Zeile hast.

02:04:56.700 --> 02:04:59.860
Und wenn du dir den Postkastcode

02:04:59.860 --> 02:05:01.660
anguckst, also nur alleine,

02:05:01.760 --> 02:05:03.380
du machst ihn auf in irgendeinem Editor

02:05:03.380 --> 02:05:05.200
und du guckst dir den Postkastcode an

02:05:05.200 --> 02:05:06.940
und du guckst dir irgendeinen anderen Code an.

02:05:09.340 --> 02:05:10.780
Du siehst diesen Unterschied.

02:05:11.120 --> 02:05:12.140
So ein sauberer Code.

02:05:13.060 --> 02:05:14.700
Das ist was wert, ne Jochen?

02:05:15.400 --> 02:05:15.940
Ja, finde ich auch.

02:05:16.440 --> 02:05:18.400
Also früher war immer der Horror, OpenOffice

02:05:18.400 --> 02:05:20.260
zu kompilieren.

02:05:21.640 --> 02:05:35.200
Das war immer ganz schrecklich und MariaDB brauchte einfach immer lange, es kompilierte immerhin durch, aber es brauchte halt auch wahnsinnig lange Postgres-Kompilieren, war auch früher mit alter Hardware schon relativ schnell.

02:05:37.980 --> 02:05:58.720
Und das ist halt der Unterschied zwischen C und C++, dass C++ auch länger zum Kompilieren braucht. Also es gab da, wenn du mal die Gentoo-Leute fragst, die können dir genau sagen, welche Software da besseren Code hat und welche nicht und welche der Horror ist zum Kompilieren. Das ist so, ja. Du hattest noch eine Frage?

02:05:58.720 --> 02:06:06.060
Ich habe noch ein News vergessen, fällt mir da gerade ein. Und zwar wurde von C89 auf C11 geändert in dem Linux-Kernel vom Standard.

02:06:06.300 --> 02:06:09.060
Achso, wow, also richtig moderne Geschichten.

02:06:09.180 --> 02:06:13.680
Ja, das war halt, ja, modern. Aber das war das erste Mal, dass es da irgendwie Diskussionen gab, wo Linus irgendwann eingesetzt ist.

02:06:13.680 --> 02:06:23.480
Also, Unterschiede Postgres MariaDB, wann würde ich was einsetzen? Es gibt ganz viele Bereiche, wo das völlig wurscht ist.

02:06:25.820 --> 02:06:27.560
Wenn ich im GIS-Bereich

02:06:27.560 --> 02:06:29.460
unterwegs bin, würde ich immer

02:06:29.460 --> 02:06:31.340
Postgres nehmen, weil Postgres ist irgendwie

02:06:31.340 --> 02:06:33.540
mit dem PostGIS doch führend.

02:06:33.840 --> 02:06:35.220
Ja, genau. Gibt es auch bei kommerziellen

02:06:35.220 --> 02:06:37.440
Orgel kann das auch nicht.

02:06:37.960 --> 02:06:39.640
Wenn ich im Hochverfügbarkeitsbereich

02:06:39.640 --> 02:06:40.120
bin,

02:06:42.460 --> 02:06:43.460
da ist irgendwie

02:06:43.460 --> 02:06:45.260
majestuell allen anderen schon vor

02:06:45.260 --> 02:06:47.720
Jahrzehnten sowas von dran vorbeigelaufen.

02:06:49.500 --> 02:06:49.960
Und

02:06:49.960 --> 02:06:52.920
also ich kann bei

02:06:52.920 --> 02:06:53.820
MariaDB

02:06:53.820 --> 02:06:57.700
Hochverfügbarkeit, wir reden jetzt

02:06:57.700 --> 02:06:59.240
von Replikation.

02:07:01.780 --> 02:07:03.500
Man darf heute nicht mehr

02:07:03.500 --> 02:07:05.480
Master und Slave sagen aus

02:07:05.480 --> 02:07:07.120
politischen Gründen.

02:07:07.700 --> 02:07:08.980
Man spricht dann heute von

02:07:08.980 --> 02:07:11.460
Primary und Secondary oder

02:07:11.460 --> 02:07:12.800
Primary und Standby.

02:07:13.060 --> 02:07:14.840
Technisch ist es wahrscheinlich dann trotzdem genau nicht.

02:07:14.840 --> 02:07:16.480
Was ich erstmal machen kann

02:07:16.480 --> 02:07:18.840
bei MariaDB, weil es Thread-basiert ist

02:07:18.840 --> 02:07:20.800
in den Verbindungen und nicht Prozess-basiert

02:07:20.800 --> 02:07:22.740
ist, ich kann da einen Master machen

02:07:22.740 --> 02:07:24.540
oder Primary und dann

02:07:24.540 --> 02:07:26.020
10.000 Slaves dahinter hängen.

02:07:26.180 --> 02:07:28.460
10.000. Ihr wisst was.

02:07:28.620 --> 02:07:30.600
Standbys dahinter hängen. Gar kein Problem.

02:07:31.580 --> 02:07:32.660
Oder ich kann natürlich

02:07:32.660 --> 02:07:34.180
auch dann immer einen Standby

02:07:34.180 --> 02:07:36.760
also ich kann immer replizieren

02:07:36.760 --> 02:07:38.400
Standby von Standby von Standby.

02:07:38.680 --> 02:07:41.160
Also kann man so eine Kette aufbauen.

02:07:41.780 --> 02:07:42.700
Aber es ist überhaupt

02:07:42.700 --> 02:07:44.600
kein Problem und das wird auch häufig genug

02:07:44.600 --> 02:07:46.660
gemacht. Ein Master und dann

02:07:46.660 --> 02:07:48.160
mehrere tausend Standbys.

02:07:48.980 --> 02:07:50.040
Machen die Großen alle.

02:07:50.400 --> 02:07:52.160
Und wenn du mal guckst, die meisten Großen,

02:07:52.280 --> 02:07:54.440
meisten ganz Großen haben auch da in diesem

02:07:54.440 --> 02:07:56.340
Bereich immer MariaDB oder

02:07:56.340 --> 02:07:58.260
MySQL halt entsprechend von Oracle,

02:07:58.460 --> 02:07:59.560
aber nichts anderes.

02:08:01.640 --> 02:08:02.160
Bei

02:08:02.160 --> 02:08:04.560
Postgres ist es prozessbasiert

02:08:04.560 --> 02:08:06.400
und da hatten wir ja das, Verbindungen

02:08:06.400 --> 02:08:08.180
sind halt Prozesse, also

02:08:08.180 --> 02:08:10.640
da kriegen dann die Postgres, da kriegen Schnappatmungen

02:08:10.640 --> 02:08:12.260
und du sagst, du willst einen Master

02:08:12.260 --> 02:08:13.780
haben und 1000 Standby.

02:08:15.000 --> 02:08:16.420
Das ist schon mal eine Sache,

02:08:16.680 --> 02:08:17.660
da muss ich mir das überlegen.

02:08:18.720 --> 02:08:20.260
Die Streaming Replication von

02:08:20.260 --> 02:08:22.180
Postgres funktioniert super. Ich habe

02:08:22.180 --> 02:08:22.380
mal

02:08:22.380 --> 02:08:26.380
einen Wettaufsetzen gemacht

02:08:26.380 --> 02:08:27.500
mit einem von

02:08:27.500 --> 02:08:30.020
MariaDB, mit einem der Chefs von

02:08:30.020 --> 02:08:32.040
MariaDB, mit dem Chef von MariaDB

02:08:32.040 --> 02:08:34.220
mit reichlich

02:08:34.220 --> 02:08:35.040
Alkohol dabei

02:08:35.040 --> 02:08:37.580
und wer

02:08:37.580 --> 02:08:39.980
mehr Key Hits braucht zum Aufsetzen

02:08:39.980 --> 02:08:41.880
eines Standbys, und ich hatte

02:08:41.880 --> 02:08:43.880
zwei weniger als er, obwohl das Wort

02:08:43.880 --> 02:08:45.080
Postgres länger ist als

02:08:45.080 --> 02:08:47.000
MariaDB, aber

02:08:47.000 --> 02:08:50.040
das ist relativ simpel.

02:08:50.240 --> 02:08:51.620
Man will eigentlich bei Postgres die

02:08:51.620 --> 02:08:53.080
Streaming-Replication haben.

02:08:55.740 --> 02:08:56.700
Was ich bei,

02:08:57.520 --> 02:08:58.860
ja, man will sie eigentlich haben.

02:09:00.040 --> 02:09:01.640
Dann kann ich bei MariaDB

02:09:01.640 --> 02:09:03.540
auch sowas machen, wie

02:09:03.540 --> 02:09:05.440
ich habe zwei Master.

02:09:07.520 --> 02:09:09.640
Die kann ich theoretisch auch als Master

02:09:09.640 --> 02:09:10.920
Master-Replikation nutzen.

02:09:11.440 --> 02:09:13.480
Das will man aber nicht. Da hat man andere

02:09:13.480 --> 02:09:15.280
Affe-Fakte. Aber ich kann schon mal

02:09:15.280 --> 02:09:17.400
zwei Master aufsetzen und da jeweils ein paar

02:09:17.400 --> 02:09:18.700
tausend Slaves hinterhängen.

02:09:20.540 --> 02:09:21.380
Ich setze die

02:09:21.380 --> 02:09:23.440
als Master-Master auf, das heißt, die replizieren

02:09:23.440 --> 02:09:24.360
gegenseitig.

02:09:25.220 --> 02:09:27.800
Ich nutze die tatsächlich als Master-Slave.

02:09:28.320 --> 02:09:29.400
Das heißt, ich spiele alles,

02:09:29.480 --> 02:09:31.080
was ich schreibe, nur auf den einen Master

02:09:31.080 --> 02:09:31.940
und der repliziert.

02:09:33.000 --> 02:09:35.220
Wenn ich jetzt aber den Wartungsfall habe,

02:09:36.640 --> 02:09:37.380
kann ich den einen

02:09:37.380 --> 02:09:39.080
Master, dann brauche ich nur die IP

02:09:39.080 --> 02:09:40.900
schwenken auf den anderen Master

02:09:40.900 --> 02:09:42.800
und dann kann ich den einen warten.

02:09:42.800 --> 02:09:44.640
Und der zieht sich alles nach, was er

02:09:44.640 --> 02:09:45.400
verpasst hat.

02:09:46.780 --> 02:09:49.120
Und ich muss nichts weiter konfigurieren.

02:09:51.380 --> 02:10:19.600
Das ist das, wie dann auch, das machen auch gewisse weiterführende Tools, das ist jetzt das einfachste Clustering mit Hochverfügbarkeit und Master, Master und, nee, wie heißt das, Failover oder sowas, also, dass ich dann einen Master rausnehme, den kann ich dann warten und dann schwenke ich die IP, also ich schwenke die IP auf den anderen Master, dann wird da einfach weiter, der Anwender merkt da nichts von, das macht Pacemaker, CoroSync,

02:10:19.780 --> 02:10:33.620
Das machen die innerhalb vom Augenblick, die IP schwenken und dann geht das auf dem anderen Master weiter. Dafür ist das sehr, sehr sinnvoll. Das kann ich mit der Streaming-Replication von Postgres nicht. Das gibt die Streaming-Replication nicht her.

02:10:34.800 --> 02:10:54.960
Dann hat man ja erfunden, PostgreSQL, logische Replikation, die kann aber kein DDL, die kann Master, Master und die kann alles mögliche, was man immer so kritisiert, die kann aber kein DDL, das heißt, ich kann damit keine Tabellen erzeugen oder ähnliches.

02:10:55.660 --> 02:11:21.980
Das wird nicht repliziert, nur repliziert, was ich einmal aufgesetzt habe. Wenn ich danach irgendwie eine Tabelle ändere oder mein Datenbankschema ändere, das wird nicht repliziert. Ist natürlich blöd, weil ja jede Software auch mal irgendwie in ihren Updates auch Schemaänderungen mitbringt und müsste ich meine Replikation neu aufsetzen oder da irgendwie rum vorstellen, dass sich die Tabellen, die sich geändert haben, da wieder rein, ist natürlich etwas, das will man eigentlich heutzutage nicht mehr, man will, dass das automatisch geht.

02:11:23.220 --> 02:11:24.380
Ist was geplant?

02:11:25.660 --> 02:11:26.900
Nicht, dass ich wüsste.

02:11:28.820 --> 02:11:30.600
Man will diese Streaming-Replication,

02:11:30.660 --> 02:11:31.300
die ist auch super.

02:11:34.560 --> 02:11:36.320
Aber wie gesagt, die will immer

02:11:36.320 --> 02:11:37.740
ganz zwingend, dass das

02:11:37.740 --> 02:11:40.000
Stand-by-Read-Only ist. Das heißt,

02:11:40.080 --> 02:11:42.020
dieses Master-Master-Setup kann man nicht machen.

02:11:42.120 --> 02:11:43.600
Man kann es, weiß das Gen schon,

02:11:44.080 --> 02:11:46.240
konfigurieren, aber nicht so schön

02:11:46.240 --> 02:11:47.800
einfach nur IP schwenken.

02:11:48.180 --> 02:11:49.260
Man muss da im

02:11:49.260 --> 02:11:52.020
Chorosync oder im Pacemaker

02:11:52.020 --> 02:11:54.000
ein bisschen mehr konfigurieren. Der Pacemaker

02:11:54.000 --> 02:11:55.900
muss ein bisschen mehr machen, um den zweiten

02:11:55.900 --> 02:11:57.000
dann zum Laufen zu kriegen.

02:11:57.580 --> 02:11:58.860
Wenn der Master wird.

02:12:01.860 --> 02:12:03.700
Soweit, so gut. Manchmal braucht man ja auch

02:12:03.700 --> 02:12:05.980
nur zwei Standbys oder so.

02:12:06.660 --> 02:12:07.600
Dann ist das nicht so schlimm.

02:12:07.740 --> 02:12:09.680
Mit den vielen Standbys könnte man ja Postgres

02:12:09.680 --> 02:12:12.020
nehmen. Jetzt hat man aber das nächste

02:12:12.020 --> 02:12:13.940
Problem, dass die Postgres

02:12:13.940 --> 02:12:15.860
Replikation oder das

02:12:15.860 --> 02:12:17.940
Transaktionslog, was das alles irgendwie

02:12:17.940 --> 02:12:19.260
steuert, ist

02:12:19.260 --> 02:12:21.680
von drei Sachen abhängig.

02:12:22.820 --> 02:12:23.940
Fangen wir mit dem an, was

02:12:23.940 --> 02:12:26.360
was heutzutage fast am irrelevantesten

02:12:26.360 --> 02:12:28.120
ist und wo mich die meisten mal fragen, was ist

02:12:28.120 --> 02:12:30.300
es? Es ist Endian-abhängig.

02:12:31.620 --> 02:12:32.100
Und was ist

02:12:32.100 --> 02:12:32.400
das?

02:12:33.880 --> 02:12:35.940
Genau, das war die Sache mit

02:12:35.940 --> 02:12:38.000
diesen Zahlen von rechts nach links oder links

02:12:38.000 --> 02:12:38.960
nach rechts lesen.

02:12:40.240 --> 02:12:42.060
Es gibt Big Endian und Little Endian,

02:12:42.160 --> 02:12:44.300
die meisten heutige Hardware ist Little Endian.

02:12:45.140 --> 02:12:46.040
Du hast kaum noch Big

02:12:46.040 --> 02:12:47.780
Endian. Die alten

02:12:47.780 --> 02:12:49.460
Sunsparks waren Big Endian.

02:12:50.440 --> 02:12:52.000
Die haben einfach da

02:12:52.000 --> 02:12:53.880
die Sachen andersrum drin.

02:12:53.940 --> 02:12:56.620
und ich sage ja, das ist nicht

02:12:56.620 --> 02:12:58.580
mehr ganz so. Dann ist sie,

02:12:58.700 --> 02:13:00.600
auch das ist meistens was, was keinen

02:13:00.600 --> 02:13:02.880
stört, betriebssystemabhängig.

02:13:04.420 --> 02:13:04.700
Wobei

02:13:04.700 --> 02:13:06.520
Betriebssystem heißt Linux

02:13:06.520 --> 02:13:08.560
und nicht SUSE oder Debian,

02:13:08.720 --> 02:13:10.620
sondern Linux versus

02:13:10.620 --> 02:13:12.520
Microsoft oder

02:13:12.520 --> 02:13:14.000
versus

02:13:14.000 --> 02:13:16.600
was auch immer Microsoft da für Betriebssysteme

02:13:16.600 --> 02:13:18.080
hat, BSD.

02:13:18.520 --> 02:13:20.460
Also ich kann nicht replizieren von

02:13:20.460 --> 02:13:22.300
einem Linux-Server auf Microsoft

02:13:22.300 --> 02:13:23.240
oder andersrum.

02:13:23.940 --> 02:13:26.120
das stört die meisten

02:13:26.120 --> 02:13:28.100
auch noch nicht, weil meistens hat man

02:13:28.100 --> 02:13:29.980
sowieso nur...

02:13:29.980 --> 02:13:30.820
Und

02:13:30.820 --> 02:13:33.760
das dritte ist, es ist

02:13:33.760 --> 02:13:35.940
massivst versionsabhängig.

02:13:37.620 --> 02:13:37.940
Und da

02:13:37.940 --> 02:13:39.740
sind wir jetzt an dem Punkt, wenn ich eine

02:13:39.740 --> 02:13:41.820
MariaDB habe, die kann ich hot

02:13:41.820 --> 02:13:43.880
upgraden. Sagen wir, ich

02:13:43.880 --> 02:13:46.100
habe da einen Master

02:13:46.100 --> 02:13:47.700
oder ich habe da zwei Master, ich habe das

02:13:47.700 --> 02:13:49.520
aufgesetzt als Master-Master-System

02:13:49.520 --> 02:13:51.600
und habe da jeweils hinter den Master noch

02:13:51.600 --> 02:13:53.680
fünf, ich habe dann vielleicht noch mal

02:13:53.680 --> 02:13:55.700
drei Slaves hinter den Mastern direkt und die

02:13:55.700 --> 02:13:57.560
haben nochmal zwei Slaves, jeder dahinter

02:13:57.560 --> 02:13:59.580
und so weiter. Ich habe da nur so ein Kettensystem hinter

02:13:59.580 --> 02:14:00.420
mit etlichen Slaves.

02:14:01.640 --> 02:14:03.600
So, dann gehen dann große Firmen hin und die

02:14:03.600 --> 02:14:05.380
sagen dann, es kommt eine neue Version raus,

02:14:05.980 --> 02:14:07.600
die upgraden dann erstmal

02:14:07.600 --> 02:14:09.580
den hintersten Slave bei MariaDB.

02:14:10.580 --> 02:14:11.700
Weil MariaDB

02:14:11.700 --> 02:14:13.600
kann ja problemlos von einer

02:14:13.600 --> 02:14:15.400
niedrigeren, von einer älteren Version in eine

02:14:15.400 --> 02:14:16.940
neuere Version replizieren.

02:14:17.580 --> 02:14:19.640
Das heißt, die gucken erstmal

02:14:19.640 --> 02:14:21.740
beim hintersten Slave oder beim hintersten

02:14:21.740 --> 02:14:23.280
Standby nach, funktioniert alles.

02:14:23.680 --> 02:14:25.780
Wenn da alles funktioniert, dann machen sie

02:14:25.780 --> 02:14:27.480
die nächste Ebene und so weiter.

02:14:27.580 --> 02:14:29.800
Es kann sein, dass dann mittlerweile schon noch eine neue

02:14:29.800 --> 02:14:31.680
Version draußen ist, bis sie den

02:14:31.680 --> 02:14:33.500
Master überhaupt mal upgraden.

02:14:33.960 --> 02:14:35.660
Irgendwann kommen sie dann, schwenken die IP und

02:14:35.660 --> 02:14:37.940
upgraden die Master. Ich kann das komplett

02:14:37.940 --> 02:14:39.780
hot upgraden. Das heißt, ich habe

02:14:39.780 --> 02:14:41.860
ja immer nur eine Maschine, die ich da rausnehme

02:14:41.860 --> 02:14:42.880
aus dem Cluster.

02:14:43.680 --> 02:14:45.540
Und das geht bei Postgres nicht, weil

02:14:45.540 --> 02:14:47.380
ich kann nicht von der niedrigeren Version

02:14:47.380 --> 02:14:49.020
von der älteren in die neuere.

02:14:49.960 --> 02:14:51.840
Das heißt, wenn ich ein Upgrade habe,

02:14:51.920 --> 02:14:53.340
habe ich immer eine Downtime.

02:14:53.680 --> 02:15:02.820
Die kann ich irgendwie natürlich klein halten, wenn ich da noch mit irgendwie, ich baue noch nebenher noch eine logische Replikation oder so weiter, aber ich habe eine Downtime.

02:15:03.580 --> 02:15:09.340
Irgendwann habe ich den Punkt, wo ich mal eine Downtime habe von dem ganzen System.

02:15:11.120 --> 02:15:16.840
Und das ist tatsächlich etwas, was gerade so große Firmen.

02:15:20.080 --> 02:15:21.280
Ja, kann teuer werden dann.

02:15:21.280 --> 02:15:23.340
Ja, nicht nur das. Ja, teuer

02:15:23.340 --> 02:15:25.020
auch. Lass mal die

02:15:25.020 --> 02:15:27.200
Amazon-Seite nur 10 Sekunden

02:15:27.200 --> 02:15:28.540
nicht verfügbar sein.

02:15:29.880 --> 02:15:31.140
Bei Amazon hat das

02:15:31.140 --> 02:15:33.240
auch noch, oder Facebook, 10 Sekunden

02:15:33.240 --> 02:15:33.940
nicht verfügbar.

02:15:34.900 --> 02:15:37.280
Das ist so ähnlich wie gute Zeiten, schlechte Zeiten,

02:15:37.280 --> 02:15:39.240
wenn das Kabelfernsehen ausfällt, kann ich mir

02:15:39.240 --> 02:15:41.340
vorstellen oder so. Habe ich nie

02:15:41.340 --> 02:15:43.280
geguckt, weiß ich nicht, aber ich weiß, ich habe

02:15:43.280 --> 02:15:45.220
mal von Monteuren

02:15:45.220 --> 02:15:47.180
gehört, dass das, also gerade bei

02:15:47.180 --> 02:15:49.280
Kabelfernsehen, dass die Leute da verrückt spielen.

02:15:49.440 --> 02:15:50.680
Also ich kenne das aus Spielefirmen.

02:15:51.280 --> 02:15:53.360
wie bescheuert da Spieler

02:15:53.360 --> 02:15:55.300
werden, wenn da Angriffe nicht gefahren

02:15:55.300 --> 02:15:57.400
werden können. Und du stehst da, das ist doch nur ein Spiel.

02:15:58.540 --> 02:16:01.420
ja, aber lass mal so ganz große Sachen

02:16:01.420 --> 02:16:02.200
da irgendwie,

02:16:02.540 --> 02:16:05.440
das ist, also irgendwann bist du am Punkt,

02:16:05.840 --> 02:16:07.100
da kannst du nicht sagen, okay,

02:16:07.200 --> 02:16:08.480
mit der Downtime kann ich leben.

02:16:10.040 --> 02:16:11.460
Es gibt natürlich andere

02:16:11.460 --> 02:16:12.220
Anwendungen,

02:16:13.560 --> 02:16:15.200
wo du sagst, ja Gott, dann haben wir mal einen Tag

02:16:15.200 --> 02:16:17.300
Downtime, das schaffen wir schon, oder dann haben wir mal

02:16:17.300 --> 02:16:19.160
zwei Stunden Downtime, das kriegen wir hin,

02:16:19.240 --> 02:16:21.040
das kriegen. Wir haben genug Wartungsfenster

02:16:21.040 --> 02:16:23.320
drin, zwei Stunden ist überhaupt gar nicht das Problem.

02:16:23.360 --> 02:16:25.140
Ja, wenn man sich das aussuchen kann, dann kann man irgendwie wirklich

02:16:25.140 --> 02:16:27.200
was nehmen. Du, es gibt ja

02:16:27.200 --> 02:16:29.080
so Business, das passiert nur Montags bis

02:16:29.080 --> 02:16:31.300
Freitags. Da kannst du am Wochenende

02:16:31.300 --> 02:16:32.500
auch mal so Upgrades fahren.

02:16:35.180 --> 02:16:35.580
Durchaus.

02:16:36.160 --> 02:16:37.100
Jetzt nicht gerade in

02:16:37.100 --> 02:16:39.520
einer Einzelhandelsindustrie.

02:16:39.520 --> 02:16:41.380
Da sind ja auch genug Services, einfach Hauptgeschäftszeit

02:16:41.380 --> 02:16:43.160
aus. Du hast ja auch tatsächlich

02:16:43.160 --> 02:16:44.260
so natürliche solche

02:16:44.260 --> 02:16:46.660
Schwankungen, auch nachts

02:16:46.660 --> 02:16:48.820
kann man oft Backups machen, weil

02:16:48.820 --> 02:16:50.940
Das ging ja zur Tagszeit gar nicht.

02:16:51.560 --> 02:16:52.320
Ja, aber das ist lustig,

02:16:52.440 --> 02:16:54.220
was zum Beispiel Auftragsprobleme sein kann,

02:16:54.260 --> 02:16:55.820
dass du nachts die Backups gar nicht mehr machen kannst,

02:16:55.940 --> 02:16:57.980
weil nachts so viele andere Services laufen,

02:16:58.120 --> 02:16:59.080
die halt sonst im Betrieb nicht funktionieren.

02:16:59.240 --> 02:17:00.780
Das habe ich mal gedacht.

02:17:01.040 --> 02:17:01.960
Ich habe einen Kunden,

02:17:02.220 --> 02:17:05.580
der machte Kassensysteme für einen Einzelhandel.

02:17:06.300 --> 02:17:09.040
Und der hatte eine ganz große Kette Einzelhandel.

02:17:10.240 --> 02:17:12.000
So 70.000 Bonds pro Minute.

02:17:12.180 --> 02:17:13.040
Da könnt ihr euch vorstellen,

02:17:13.160 --> 02:17:13.980
Kassenbonds pro Minute.

02:17:13.980 --> 02:17:15.600
Da könnt ihr euch vorstellen, wie groß die Kette war.

02:17:16.820 --> 02:17:19.220
die hatten kaum Wartungsfenster.

02:17:19.340 --> 02:17:20.960
Jetzt denkst du, okay, so ein Geschäft macht ja

02:17:20.960 --> 02:17:22.040
irgendwann abends um 10 zu.

02:17:23.140 --> 02:17:24.980
Ich glaube, das war sogar eins, was um 8 zu

02:17:24.980 --> 02:17:27.260
macht, so generell. Hat sonntags nie auf.

02:17:28.440 --> 02:17:29.040
Samstags vielleicht

02:17:29.040 --> 02:17:30.920
schon um 16. Also du hast da ja

02:17:30.920 --> 02:17:32.900
durchaus nachts nichts laufen. Du kannst

02:17:32.900 --> 02:17:34.860
da ja Wartungen machen oder sonntags. Die hatten

02:17:34.860 --> 02:17:37.040
tatsächlich nur noch einen Tag im Jahr,

02:17:37.140 --> 02:17:38.700
wo die Wartungen machen konnten. Ich glaube, das war

02:17:38.700 --> 02:17:39.860
Ostermontag oder so.

02:17:41.240 --> 02:17:43.060
Und Pfingstmontag oder irgendwie sowas.

02:17:43.900 --> 02:17:45.000
Oder wenn Donnerstag

02:17:45.000 --> 02:17:46.540
dass ein Feiertag war. Das ging glaube ich

02:17:46.540 --> 02:17:48.360
auch nicht um mich, weil

02:17:48.360 --> 02:17:51.240
nämlich diese Einzelhandelskette

02:17:51.240 --> 02:17:52.620
dann immer, wenn die

02:17:52.620 --> 02:17:54.020
Geschäfte geschlossen waren,

02:17:54.700 --> 02:17:56.740
haben die Preisupdates und was weiß

02:17:56.740 --> 02:17:58.620
ich, Warenwirtschaftsupdates gemacht.

02:17:58.740 --> 02:18:00.540
Ohne Ende, aber auf der Datenbank, wenn die

02:18:00.540 --> 02:18:02.480
geschlossen waren, hatten die Geschäfte viel mehr los,

02:18:02.580 --> 02:18:04.760
als wenn die Geschäfte offen hatten und die ganzen Kassen liefen.

02:18:05.340 --> 02:18:06.660
Aber weil die ja die ganzen Ware

02:18:06.660 --> 02:18:08.600
aktualisieren mussten und weiß der

02:18:08.600 --> 02:18:10.480
Kuckuck, das lief dann durch.

02:18:10.480 --> 02:18:12.120
Und so kam das dann wirklich so

02:18:12.120 --> 02:18:14.500
für administrative Dinge, dass das wirklich mal

02:18:14.500 --> 02:18:16.480
down sein konnte, das System,

02:18:16.560 --> 02:18:18.500
da mussten schon mehrere Feiertage hintereinander

02:18:18.500 --> 02:18:20.320
folgen, damit das dann überhaupt noch mal einen Tag

02:18:20.320 --> 02:18:22.620
blieb, so, dass die dann zu hatten.

02:18:23.060 --> 02:18:24.760
Also, deswegen,

02:18:24.900 --> 02:18:26.500
das ist so was, man muss das

02:18:26.500 --> 02:18:28.200
vielleicht auch dokumentieren als Admin,

02:18:28.620 --> 02:18:29.980
dass man da eine Downtime hat.

02:18:30.700 --> 02:18:31.880
Man kann die natürlich,

02:18:32.520 --> 02:18:34.280
man kann das geschickt machen, dass man

02:18:34.280 --> 02:18:35.760
nicht ganz so viel Downtime hat.

02:18:36.240 --> 02:18:38.300
Aber man hat eine Downtime, da kommt man nicht

02:18:38.300 --> 02:18:40.280
drum rum. Und so

02:18:40.280 --> 02:18:42.140
ohne Downtime, ganz ohne Downtime, dieses

02:18:42.140 --> 02:18:44.140
Hot-Upgrade, wie es so wunderschön bei

02:18:44.140 --> 02:18:46.860
Oder es ist halt nicht eingebaut, man muss es dann halt selber machen.

02:18:47.480 --> 02:18:47.800
Was?

02:18:48.160 --> 02:18:49.580
Man muss das dann ja vielleicht einfach selber machen.

02:18:49.800 --> 02:18:51.500
Ich meine, ich kann ja schon zwei Datenbanken laufen haben

02:18:51.500 --> 02:18:53.600
und switche dann halt am Loadbalancer um,

02:18:53.640 --> 02:18:54.580
aber dann machen wir halt einen Loadbalancer an,

02:18:54.580 --> 02:18:55.400
den man da switchen kann.

02:18:56.100 --> 02:18:56.300
Was?

02:18:56.300 --> 02:18:57.160
Das hat ja wahrscheinlich auch nicht jeder.

02:18:58.420 --> 02:19:00.900
Naja, ich kann ja sozusagen eine Postgres,

02:19:01.020 --> 02:19:03.260
nehmen wir an, ich habe eine Postgres-Datenbank

02:19:03.260 --> 02:19:06.640
oder ich möchte die upgraden ohne Downtime,

02:19:06.640 --> 02:19:07.740
ja, dann habe ich halt eine zweite.

02:19:09.140 --> 02:19:11.060
Dann muss ich auf der, die ich upgraden möchte,

02:19:11.220 --> 02:19:12.120
halt muss ich dann irgendwann sagen,

02:19:12.220 --> 02:19:13.280
okay, jetzt darf nicht mehr geschrieben werden,

02:19:13.360 --> 02:19:15.280
switche ich und muss die andere

02:19:15.280 --> 02:19:17.320
sozusagen so lange repliziert haben, bis es

02:19:17.320 --> 02:19:19.420
wieder da ist. Okay, ich habe eine kleine Downtime bestimmt

02:19:19.420 --> 02:19:20.840
und dann switche ich das Ganze um.

02:19:21.660 --> 02:19:23.360
Und du hast halt das Problem,

02:19:23.680 --> 02:19:24.940
dass du, echte

02:19:24.940 --> 02:19:26.900
Hochverfügbarkeit fängt ja bei drei

02:19:26.900 --> 02:19:29.280
Maschinen an, damit du, wenn eine ausfällt,

02:19:29.360 --> 02:19:31.100
immer noch zwei hast und nie eine alleine.

02:19:31.880 --> 02:19:33.160
Du musst ja, wenn du jetzt

02:19:33.160 --> 02:19:35.120
einen, egal, du hast einen Master

02:19:35.120 --> 02:19:37.180
und zehn Standbys, du kannst die nur

02:19:37.180 --> 02:19:39.580
alle zeitgleich upgraden.

02:19:39.580 --> 02:19:41.380
Was in der Regel dazu führt, dass du

02:19:41.380 --> 02:19:43.700
den Master upgradest und die Standbys neu aufsetzt

02:19:43.700 --> 02:19:45.600
auf der neuen Version, aber du kannst

02:19:45.600 --> 02:19:47.460
nicht, du kannst ja nicht, weil die sind ja

02:19:47.460 --> 02:19:49.300
noch auf der alten Version, du kannst nicht in einer

02:19:49.300 --> 02:19:51.500
anderen Version replizieren. Das heißt, du musst

02:19:51.500 --> 02:19:53.660
deinen ganzen Cluster zeitgleich irgendwie,

02:19:54.140 --> 02:19:55.680
das heißt, ganz häufig

02:19:55.680 --> 02:19:57.760
fängst du dann an,

02:19:57.860 --> 02:19:59.420
also meine Erfahrung ist, du fängst dann an,

02:19:59.460 --> 02:20:01.340
du machst dann einfach nur die eine, die Mastermaschine, die

02:20:01.340 --> 02:20:03.420
gradest du ab und die ganzen Standbys setzt

02:20:03.420 --> 02:20:05.160
du neu auf, weil das ist schneller,

02:20:05.400 --> 02:20:07.020
es ist ganz häufig schneller

02:20:07.020 --> 02:20:09.300
als, nicht immer, manchmal

02:20:09.300 --> 02:20:10.980
will sie sie auch einzeln upgraden, aber

02:20:10.980 --> 02:20:13.040
ganz häufig ist es schneller, sie neu

02:20:13.040 --> 02:20:15.220
aufzusetzen. Aber kann man das

02:20:15.220 --> 02:20:16.460
nicht, ja gut.

02:20:17.500 --> 02:20:19.320
Siehst du das Problem? So ein bisschen

02:20:19.320 --> 02:20:20.780
ja, ja. Ich meine gut, muss man

02:20:20.780 --> 02:20:23.040
also wie gesagt, du kannst mit einer,

02:20:23.140 --> 02:20:25.140
wenn du wirklich keinen DDL hast und du

02:20:25.140 --> 02:20:27.200
weißt, diese Nacht kommt auch kein DDL rein.

02:20:27.820 --> 02:20:29.300
Ganz kurz auf Cache-Only stellen?

02:20:29.720 --> 02:20:31.100
Nein, auf logische, kannst du noch

02:20:31.100 --> 02:20:33.000
einen logischen Replikations-Server daneben

02:20:33.000 --> 02:20:35.220
stellen. Da kannst du auch von einer niedrigeren

02:20:35.220 --> 02:20:37.080
in eine höhere replizieren und andersrum,

02:20:37.580 --> 02:20:38.960
dass du dann erstmal logisch

02:20:38.960 --> 02:20:41.000
replizierst, das braucht natürlich ein bisschen das aufzusetzen,

02:20:41.080 --> 02:20:42.260
das kannst du ja im laufenden Betrieb machen.

02:20:43.000 --> 02:20:45.220
Und dann fängst du an

02:20:45.220 --> 02:20:47.160
mit dem

02:20:47.160 --> 02:20:48.860
Upgrade. Dann hast du dann erstmal die

02:20:48.860 --> 02:20:51.120
logische Replikation, die dann weitermacht.

02:20:51.300 --> 02:20:52.940
Da schreibst du rein.

02:20:53.840 --> 02:20:54.960
Und weil du ja logisch

02:20:54.960 --> 02:20:57.060
replizierst und damit kriegst du es dann ein wenig

02:20:57.060 --> 02:20:58.640
niedriger, die Downtime.

02:20:59.280 --> 02:21:00.780
Da musst du aber aufpassen, dass nicht

02:21:00.780 --> 02:21:03.320
zeitgleich deine Software ein Upgrade macht oder ähnliches.

02:21:04.160 --> 02:21:05.060
Wenn deine Software

02:21:05.060 --> 02:21:06.940
so im normalen Tagesgebrauch

02:21:06.940 --> 02:21:08.700
kein DDL braucht, also ganz häufig

02:21:08.700 --> 02:21:10.660
DDL heißt Data Definition Language, das heißt

02:21:10.660 --> 02:21:12.200
alles, was mit Create, Alter und

02:21:12.200 --> 02:21:14.700
Drop zu tun hat oder Grant und Revoke

02:21:14.700 --> 02:21:16.420
zählt da auch noch rein. Also

02:21:16.420 --> 02:21:18.700
wirklich nur Insert, Update, Delete

02:21:18.700 --> 02:21:20.260
und Select machen, mehr nicht.

02:21:21.020 --> 02:21:22.540
Wenn du keine Creates hast

02:21:22.540 --> 02:21:24.640
im Tagesgebrauch, dann könntest

02:21:24.640 --> 02:21:26.560
du sowas machen, weil dann

02:21:26.560 --> 02:21:28.520
hast du ja diese DDLs hast du dann

02:21:28.520 --> 02:21:30.580
ja nur, wenn deine Software, die du dahinter

02:21:30.580 --> 02:21:32.140
hast, ein Upgrade machst. Dann hast du ja

02:21:32.140 --> 02:21:34.460
meistens, wenn du eine Software Upgrade hast, hat

02:21:34.460 --> 02:21:36.440
die auch ein Upgrade in der Änderung

02:21:36.440 --> 02:21:38.520
in der Datenbank. Irgendwie.

02:21:38.700 --> 02:21:41.160
eine Schema-Änderung in der Datenbank, das ist ganz häufig.

02:21:41.720 --> 02:21:43.220
Aber so kriegst du es dann hin.

02:21:43.600 --> 02:21:45.060
Also, dass du die Downtime

02:21:45.060 --> 02:21:46.220
geringer hältst.

02:21:46.680 --> 02:21:48.180
Du kriegst sie nicht ganz weg.

02:21:49.280 --> 02:21:51.020
Du hast immer, irgendwo hast du

02:21:51.020 --> 02:21:52.920
eine Downtime und du musst ja

02:21:52.920 --> 02:21:54.900
danach die Standbys wieder aufsetzen und das

02:21:54.900 --> 02:21:56.840
dauert ja auch und je nachdem, wie viele Leute und

02:21:56.840 --> 02:21:58.720
Manpower du hast. Ja, das kann ich ja vorher machen.

02:21:58.840 --> 02:22:00.920
Ich muss da leben, dass der Repetitions-Lag halt

02:22:00.920 --> 02:22:02.820
ein bisschen größer ist, eventuell.

02:22:03.080 --> 02:22:04.640
Du ziehst das aus dem selben Backup, genau.

02:22:04.980 --> 02:22:06.560
Genau. Ja, du kannst auch einfach

02:22:06.560 --> 02:22:08.640
die Datenbank-Server neu aufsetzen und

02:22:08.640 --> 02:22:10.540
dann aus dem Backup das ziehen und dann

02:22:10.540 --> 02:22:12.600
die Standby ist dahinter. Dann hast du aber auch

02:22:12.600 --> 02:22:13.160
eine Downtime.

02:22:14.820 --> 02:22:16.760
Ohne Downtime kommst du da nicht aus.

02:22:17.000 --> 02:22:18.480
Du kannst dich einfach wegcachen in der Zwischenzeit,

02:22:18.580 --> 02:22:20.400
einfach sagen, okay, Datenbank ab, alles in Cache und dann

02:22:20.400 --> 02:22:22.000
wird der Cache dann zurückgeschrieben.

02:22:23.360 --> 02:22:24.740
Also das ist halt, wie gesagt,

02:22:24.820 --> 02:22:26.720
das ist was, da musst du dir wirklich Gedanken drum machen

02:22:26.720 --> 02:22:28.280
und das ist auch das große

02:22:28.280 --> 02:22:30.720
Aus, wenn ich

02:22:30.720 --> 02:22:32.780
so ein Business habe, ist das

02:22:32.780 --> 02:22:35.040
meiner Erfahrung nach das Aus für PostgreSQL,

02:22:35.180 --> 02:22:36.320
dann wird MariaDB genommen.

02:22:36.560 --> 02:22:58.960
Und das ist dann auch was, wo ich sage, wenn ihr wirklich da so auf 24-7 online verfügbar, das sagt nicht nur ich, das sagen auch die großen Firmen, die haben alle in diesem Bereich MariaDB. Und das ist ja auch, weil es gab, Ericsson hat MySQL Cluster entwickelt. Das ist ein eigenes Produkt, das basiert auf MySQL. Das ist noch immer bei Oracle.

02:23:01.360 --> 02:23:19.340
Das war ursprünglich von Ericsson. Ericsson ist ja nun mal, ihr kennt die Firma Ericsson. Und der ganze Telefonie-Bereich hat das eingesetzt. Und dann kam dieser, wir werden jetzt Oracle. Und dann brauchten die Kunden ja plötzlich auch irgendwie was von Cluster.

02:23:19.340 --> 02:23:37.820
Und MySQL Cluster war sowieso schon Closed Source, glaube ich. Aber jetzt nochmal, 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.

02:23:41.820 --> 02:23:56.320
Und natürlich die großen anderen Firmen, die da auch alle mit drinstecken in dieser Entwicklung von MariaDB. Und die nutzen fast alle MariaDB eben halt wegen dieser Hochverfügbarkeit. Und die haben die auch teilweise mitentwickelt.

02:23:57.380 --> 02:24:20.040
Also da hat Google mit dran rum, beziehungsweise Google hat es eingesetzt, Facebook hat es eingesetzt, wobei das derselbe, teilweise derselbe, dieselbe Person war, aber die haben ja auch teilweise Code zurückgegeben, wenn die irgendwas hatten, ein Feature oder so, haben die das auch an MySQL, also an uns damals zurückgegeben und das wurde dafür entwickelt und da haben einfach alle anderen nicht aufgepasst.

02:24:20.040 --> 02:24:22.260
da ist MySQL schon vor

02:24:22.260 --> 02:24:24.220
zehn Jahren und noch früher

02:24:24.220 --> 02:24:26.260
einfach an allen anderen sowas von

02:24:26.260 --> 02:24:28.240
vorbeigezogen. Und was

02:24:28.240 --> 02:24:30.040
bei Postgres passiert ist, Postgres kann

02:24:30.040 --> 02:24:32.220
jetzt in der Replikation genau das gleiche wie Oracle.

02:24:32.440 --> 02:24:34.340
Mittlerweile kann Oracle mehr. Weil Oracle

02:24:34.340 --> 02:24:36.280
hat ja mittlerweile auch kapiert, dass MySQL

02:24:36.280 --> 02:24:38.260
da mehr kann. Und das ist ja

02:24:38.260 --> 02:24:40.200
ein und dasselbe. Und das echte MySQL liegt

02:24:40.200 --> 02:24:41.880
ja bei Oracle. Das gehört ja Oracle.

02:24:42.400 --> 02:24:44.340
Also meines Wissens, meine Info

02:24:44.340 --> 02:24:46.200
ist, dass Oracle da mittlerweile auch ein bisschen weiter ist.

02:24:46.260 --> 02:24:48.400
Aber Postgres hat mit dieser logischen Replikation

02:24:48.400 --> 02:24:50.340
einfach das entwickelt, was

02:24:50.340 --> 02:24:51.800
Oracle zu dem Zeitpunkt konnte.

02:24:52.920 --> 02:24:54.160
Und das war damals aber schon

02:24:54.160 --> 02:24:56.520
nicht das, was da draußen die Welt

02:24:56.520 --> 02:24:58.340
braucht. Und

02:24:58.340 --> 02:25:00.760
wenn du wirklich so ein 24-7-Business

02:25:00.760 --> 02:25:01.340
hast,

02:25:02.520 --> 02:25:04.260
in der Form würde ich dir immer

02:25:04.260 --> 02:25:05.700
sagen, ne Maria Debi.

02:25:06.780 --> 02:25:08.300
Ja gut, da muss man aber auch

02:25:08.300 --> 02:25:09.900
relativ groß geworden sein.

02:25:10.240 --> 02:25:12.400
Ja, du musst es halt dokumentieren.

02:25:12.500 --> 02:25:14.560
Ich kenne viele Firmen, die Postgres einsetzen

02:25:14.560 --> 02:25:16.440
und die das Problem nicht

02:25:16.440 --> 02:25:18.120
haben. Also das ist nur

02:25:18.120 --> 02:25:19.340
du musst halt gucken. Ich sage ja,

02:25:19.700 --> 02:25:22.080
ansonsten ist mir das immer völlig egal,

02:25:22.160 --> 02:25:22.960
was du einsetzt.

02:25:23.540 --> 02:25:26.260
Ich setze tatsächlich selber auch mal das oder das

02:25:26.260 --> 02:25:28.040
ein. Ich bin da

02:25:28.040 --> 02:25:28.920
einfach faul.

02:25:31.080 --> 02:25:31.760
Ich habe jetzt

02:25:31.760 --> 02:25:34.040
irgendeinen Grund, das Bedürfnis

02:25:34.040 --> 02:25:36.280
PHP mit Postgres einzusetzen.

02:25:37.620 --> 02:25:38.100
Das wäre noch

02:25:38.100 --> 02:25:40.000
spannend. Nochmal, wenn ich

02:25:40.000 --> 02:25:41.960
PHP nutze, weil ich ja auch nicht so

02:25:41.960 --> 02:25:43.420
der Programmierer bin in PHP.

02:25:44.420 --> 02:25:45.860
Warum? Was für ein Grund gibt es für PHP?

02:25:46.300 --> 02:25:47.420
Keine Ahnung, aber

02:25:47.420 --> 02:25:52.120
Dann würde ich dann auch eher, einfach weil, ja, machen wir mal eben mit Maria.

02:25:52.120 --> 02:25:54.300
Du musst auch mal die nächste Majango einsetzen oder einen Python.

02:25:58.420 --> 02:26:01.440
Ich habe mich mal irgendwie letztens wieder mit HTML rumgequält.

02:26:01.720 --> 02:26:03.980
War auch spannend, hatte ich auch ewig nicht gemacht.

02:26:04.360 --> 02:26:07.440
Aber nein, war jetzt ein Beispiel.

02:26:07.740 --> 02:26:14.320
Also es ist so, genau wenn ich ein Tool habe, was ein Datenbanksystem braucht.

02:26:14.860 --> 02:26:37.160
Ich nenne das große Web-Tool, was alle nutzen und keiner es mag, das McDonald's der Web-Tools. Keiner geht hin, aber alle setzen es ein. Ich meine, du kannst das sogar mit beiden benutzen, aber das ist halt für MariaDB oder für MySQL entwickelt als erstes, dann würde ich auch auf MySQL aufsetzen, wenn ich es nutzen würde.

02:26:37.160 --> 02:26:47.280
Also das ist natürlich auch was, auf welchem System ist das Tool als erstes entwickelt, das ist meistens auch das, womit es einfach nur optimaler läuft.

02:26:48.340 --> 02:27:06.800
Das liegt einfach auch daran, dass du als Entwickler natürlich auch nicht so tief reinguckst und du musst da halt, die sind halt in bestimmten Dingen auch komplett anders und du müsstest das komplette SQL teilweise auch umschreiben und dann, ja, also es ist natürlich schön, dass die Tools sagen, wir können mehrere Datenbanksysteme, dass du es dir aussuchen kannst.

02:27:07.160 --> 02:27:09.000
Aber da ich ja beides sehr gut

02:27:09.000 --> 02:27:11.060
kenne und mir das dann im Endeffekt

02:27:11.060 --> 02:27:13.000
egal ist, welches eingesetzt wird, gucke

02:27:13.000 --> 02:27:15.080
ich dann meistens, okay, auf was wurde das Tool

02:27:15.080 --> 02:27:16.860
denn als erstes entwickelt und nehme das.

02:27:17.620 --> 02:27:19.040
Ich weiß gar nicht, bei Django ist es glaube ich

02:27:19.040 --> 02:27:19.880
auch MariaDB.

02:27:20.080 --> 02:27:21.880
Nee, das war von Anfang an Postgres.

02:27:22.780 --> 02:27:24.380
Nee, es war irgendein anderes Tool.

02:27:25.560 --> 02:27:27.000
Bei Ruby und Rails war es

02:27:27.000 --> 02:27:28.420
am Anfang MySQL.

02:27:29.600 --> 02:27:30.960
Das würde ich tatsächlich auch

02:27:30.960 --> 02:27:31.800
mit Postgres nutzen.

02:27:32.620 --> 02:27:33.820
Heutzutage macht das kaum noch jemand.

02:27:34.460 --> 02:27:34.900
Was?

02:27:35.840 --> 02:27:36.840
Rubio und Rails mit

02:27:36.840 --> 02:27:39.860
MariaDB benutzt. Also es geht zwar

02:27:39.860 --> 02:27:41.840
wohl auch, bei Django

02:27:41.840 --> 02:27:43.440
geht es auch, aber das machen halt wenige Leute.

02:27:43.760 --> 02:27:45.380
Ich habe gehört, dass

02:27:45.380 --> 02:27:47.720
der Grund für den Schwenk bei

02:27:47.720 --> 02:27:49.580
vielen war Heroku. Heroku hat

02:27:49.580 --> 02:27:52.280
von Anfang an eigentlich dann auf Postgres gesetzt

02:27:52.280 --> 02:27:53.880
und dann war das halt so

02:27:53.880 --> 02:27:55.460
der Default und die meisten haben ihre

02:27:55.460 --> 02:27:57.720
Rubio und Rails-Geschichten bei Heroku laufen lassen und dann

02:27:57.720 --> 02:27:59.620
ist das halt sich da so eingebürgert. Aber

02:27:59.620 --> 02:28:01.520
da gab es halt so einen Schwenk quasi von

02:28:01.520 --> 02:28:03.680
MariaDB oder MySQL, also damals

02:28:03.680 --> 02:28:05.680
war es MySQL, auf Postgres bei

02:28:05.680 --> 02:28:06.860
Django war es schon immer Postgres.

02:28:07.580 --> 02:28:09.720
Ich vertue mich auch, irgendein anderes Tool war

02:28:09.720 --> 02:28:11.680
Maria. WordPress war immer schon

02:28:11.680 --> 02:28:13.540
Maria. Das ist klassisch.

02:28:14.220 --> 02:28:15.640
Und da gucke ich

02:28:15.640 --> 02:28:17.540
nach. Wobei ich auch manchmal danach gucke,

02:28:17.660 --> 02:28:19.720
auf welcher Maschine setze ich das

02:28:19.720 --> 02:28:21.540
auf. Und wenn das die Maschine

02:28:21.540 --> 02:28:23.760
ist, wo ich Postgres zum Schulungsdatenbanken

02:28:23.760 --> 02:28:25.720
drauf habe, dann nehme ich grundsätzlich eine Maria

02:28:25.720 --> 02:28:27.680
und andersrum, weil sonst erschieße ich mir meine

02:28:27.680 --> 02:28:29.640
Produktiven. Aber mittlerweile gibt es ja

02:28:29.640 --> 02:28:31.400
VMs genug, dass das nicht mehr passiert.

02:28:32.040 --> 02:28:33.560
Oder ist das mit den

02:28:33.560 --> 02:28:35.640
VMs ja auch einfacher geworden, die aufzusetzen?

02:28:36.160 --> 02:28:38.000
dass dir das nicht mehr passiert, aber da bin ich

02:28:38.000 --> 02:28:39.940
Meister drin, dass ich mir in Schulungen dann irgendwelche

02:28:39.940 --> 02:28:42.040
produktiven Datenbanken zerschossen habe oder so.

02:28:42.380 --> 02:28:44.040
Deswegen nehme ich immer das andere System

02:28:44.040 --> 02:28:45.860
dann, weil dann komme ich nicht auf die Idee, das

02:28:45.860 --> 02:28:47.120
zu zerschießen.

02:28:47.960 --> 02:28:50.060
Nein, also mir ist das relativ egal

02:28:50.060 --> 02:28:51.780
und ich bin da ganz pragmatisch und gucke

02:28:51.780 --> 02:28:53.880
einfach, okay, womit kann das Tool

02:28:53.880 --> 02:28:55.300
besser umgehen, weil

02:28:55.300 --> 02:28:57.860
der Rest ist mir egal. Was ich natürlich

02:28:57.860 --> 02:28:59.960
mache, wenn du mir ein Tool gibst

02:28:59.960 --> 02:29:01.960
und das braucht einer dieser Datenbanken und da gibt es

02:29:01.960 --> 02:29:04.040
eine Tuning-Empfehlung, da kannst du dir

02:29:04.040 --> 02:29:06.000
sicher sein, ich tune das ganz anders,

02:29:06.460 --> 02:29:07.520
so wie ich denke.

02:29:09.040 --> 02:29:10.060
Teilweise mache ich es dann

02:29:10.060 --> 02:29:12.080
noch dichter, also wenn dann

02:29:12.080 --> 02:29:13.960
irgendein User gebraucht wird, also ganz

02:29:13.960 --> 02:29:15.500
schlimm ist, wenn ein Super-User gebraucht wird,

02:29:15.620 --> 02:29:17.560
grundsätzlich erstmal ohne Super-User,

02:29:18.040 --> 02:29:19.880
weil Super-User sollte man ja jetzt

02:29:19.880 --> 02:29:21.280
nicht unbedingt für so ein Tool nutzen.

02:29:23.320 --> 02:29:24.160
Und, ja.

02:29:25.480 --> 02:29:25.900
Nee, aber

02:29:25.900 --> 02:29:28.040
das sind so die ganz großen Unterschiede,

02:29:28.080 --> 02:29:29.800
wo ich jetzt wirklich diese zwei unterschieden

02:29:29.800 --> 02:29:31.280
meine, also wenn ich wirklich in dem ganz tiefen

02:29:31.280 --> 02:29:33.060
Hochverfügbarheitsbereich bin, würde ich

02:29:33.060 --> 02:29:35.680
MariaDB nehmen, auch wenn ich im GIST-Bereich

02:29:35.680 --> 02:29:37.220
unterwegs bin, immer Postgres.

02:29:37.920 --> 02:29:39.400
Und im mittleren Bereich

02:29:39.400 --> 02:29:41.440
tun die sich beide nichts. Also da

02:29:41.440 --> 02:29:42.500
ist das völlig egal.

02:29:44.160 --> 02:29:45.360
Da sehe ich weder vor noch

02:29:45.360 --> 02:29:47.440
Nachteile bei dem einen oder dem anderen.

02:29:47.660 --> 02:29:49.520
Das ist halt ein bisschen,

02:29:49.740 --> 02:29:50.640
das funktioniert halt,

02:29:51.300 --> 02:29:53.340
das SQL ist leicht

02:29:53.340 --> 02:29:54.980
anders, der Dialekt und

02:29:54.980 --> 02:29:57.180
bei den Variablen, bei der

02:29:57.180 --> 02:29:59.220
Konfiguration heißen natürlich

02:29:59.220 --> 02:30:00.740
die Variablen zum Teil anders.

02:30:01.280 --> 02:30:03.320
aber. Gut, und dann halt Lizenzen

02:30:03.320 --> 02:30:05.340
und so und dann, ja. Ah ja, Lizenzen

02:30:05.340 --> 02:30:07.240
kommen natürlich auch noch und wenn du natürlich sagst, du willst

02:30:07.240 --> 02:30:09.200
das weiterverkaufen, da frage ich dich,

02:30:09.280 --> 02:30:10.700
was willst du für ein Betriebssystem haben?

02:30:11.180 --> 02:30:13.080
Da bin ich dann sowieso

02:30:13.080 --> 02:30:15.080
diejenige, die das gar nicht mehr entscheiden muss,

02:30:15.180 --> 02:30:16.940
weil dann sind die schon am Betriebssystem vorher

02:30:16.940 --> 02:30:18.660
normalerweise.

02:30:19.820 --> 02:30:20.520
Ja, stimmt, ja.

02:30:20.800 --> 02:30:22.440
Das habe ich gar nicht mehr.

02:30:22.820 --> 02:30:25.000
Ich würde beide niemals

02:30:25.000 --> 02:30:26.800
auf irgendwie Windows laufen lassen.

02:30:28.220 --> 02:30:29.160
Das ist auch noch

02:30:29.160 --> 02:30:31.200
sowas, da hat man mal vor vielen

02:30:31.200 --> 02:30:33.360
ihren Tests gemacht. Nicht ich,

02:30:33.540 --> 02:30:34.800
sondern viele große Firmen.

02:30:35.700 --> 02:30:37.300
Die haben dieselbe

02:30:37.300 --> 02:30:38.500
wohlgemerkt Hardware genommen

02:30:38.500 --> 02:30:41.180
und haben dann geguckt, weil da

02:30:41.180 --> 02:30:43.160
kommt es immer darauf an, wie viel in fünf Minuten auf die

02:30:43.160 --> 02:30:45.080
Festplatte gespeichert werden kann. Also wie viel

02:30:45.080 --> 02:30:47.440
RAM auf die Festplatte ausgespült

02:30:47.440 --> 02:30:49.300
werden kann. Also wie viel aus dem

02:30:49.300 --> 02:30:51.140
Cache auf die Platte kommt. Und da gibt es

02:30:51.140 --> 02:30:52.880
dann immer noch diese Fünf-Minuten-Regel.

02:30:53.380 --> 02:30:55.120
Und die haben dann also mit

02:30:55.120 --> 02:30:57.200
ganz, ganz vielen Tests festgestellt,

02:30:57.340 --> 02:30:58.940
bei Linux war das im Schnitt

02:30:58.940 --> 02:31:00.580
damals bei 8 Gigabyte.

02:31:01.200 --> 02:31:18.500
Und bei Windows 512 Megabyte. Das Problem ist das Journaling, was Windows mitbringt, was das wohl so langsam macht. Und es ist auch tatsächlich so, das ist mir mal aufgefallen, du dachtest irgendwann, du hast nur Apple-Hardware, darf ich das sagen?

02:31:18.720 --> 02:31:20.600
Ja, nicht ausschließlich, aber überwiegend.

02:31:20.740 --> 02:31:28.920
Aber, wie gesagt, die Chinesen haben beim WTCF jetzt festgestellt, ich habe 675 Anschläge, das ist ein Wahnsinn.

02:31:29.400 --> 02:31:33.900
Wenn du das mit Mac und dem LibreOffice machst, dann kann das noch zeitgleich mitschreiben.

02:31:35.200 --> 02:31:38.920
Beim Windows und Word kann ich dann warten, bis mein Text angezeigt wird.

02:31:40.500 --> 02:31:40.980
Tja.

02:31:40.980 --> 02:31:57.520
Das ist tatsächlich so, das habe ich jetzt gerade ausprobiert, aber man merkt es halt nicht, weil die ganzen Leute, die Microsoft nutzen, die merken gar nicht, wie langsam Office ist, weil sie ja nichts anderes kennen.

02:31:58.600 --> 02:32:23.660
Wenn du den dann wirklich mal so intensiv im LibreOffice gibst, erst danach merken sie, dass das langsam ist. Und das liegt in diesem Journaling von Microsoft. Und bei Datenbanken ist das dann natürlich massiv. Und das kannst du nicht abstellen. Ich kenne Microsoft jetzt nicht so gut. Du kannst es abstellen, aber irgendein Dienst stellt das immer wieder an. Aber ein Sechzehntel langsamer. Das Sechzehntel langsamer finde ich schon schwierig.

02:32:27.660 --> 02:32:29.920
auf Microsoft

02:32:29.920 --> 02:32:32.040
kann man auch Datenmarken

02:32:32.040 --> 02:32:33.100
schnell betreiben. Also zum Beispiel,

02:32:33.460 --> 02:32:35.740
das finde ich immer beeindruckend, gibt es auch lange Artikel drüber,

02:32:36.420 --> 02:32:38.180
der Stack von Stack Overflow.

02:32:39.240 --> 02:32:40.120
Stack Overflow war,

02:32:40.240 --> 02:32:41.420
ich weiß nicht, ob es jetzt immer noch sind, aber

02:32:41.420 --> 02:32:43.980
lange auch unter den Top 10 Seiten der Welt und das

02:32:43.980 --> 02:32:45.040
läuft in einem halben Rack.

02:32:45.880 --> 02:32:48.340
Und das zentrale

02:32:48.340 --> 02:32:50.080
Stück Infrastruktur ist dann MS SQL Server.

02:32:50.520 --> 02:32:51.820
Und das geht wohl auch sehr schnell,

02:32:51.920 --> 02:32:53.660
wenn man das richtig macht. Aber das ist halt auch nicht so einfach.

02:32:53.660 --> 02:32:55.560
Da musst du halt entsprechend administrieren

02:32:55.560 --> 02:32:56.960
und da musst du halt gucken.

02:32:57.220 --> 02:32:59.340
Nur das ist halt immer das, was so

02:32:59.340 --> 02:33:01.440
meine Information dazu ist und

02:33:01.440 --> 02:33:03.360
jetzt habe ich aber auch

02:33:03.360 --> 02:33:05.220
die Kunden, die ich betreue, die haben meistens noch

02:33:05.220 --> 02:33:07.000
Linux-Server. Sogar

02:33:07.000 --> 02:33:09.320
meistens, entweder haben sie ein CentOS oder sie haben

02:33:09.320 --> 02:33:11.300
ein Debian oder ein Ubuntu. Das kann ich

02:33:11.300 --> 02:33:13.500
auch meistens nur einschränken. So sehe ich

02:33:13.500 --> 02:33:15.380
ganz, ganz selten und irgendwas

02:33:15.380 --> 02:33:17.120
anderes Linux-mäßiges auch nicht.

02:33:17.460 --> 02:33:19.080
Also das tut sich so, das

02:33:19.080 --> 02:33:21.060
echte Debian, das Ubuntu und dann

02:33:21.060 --> 02:33:23.240
ein CentOS. Das hast du so. Oder ein Reel vielleicht noch.

02:33:23.540 --> 02:33:24.780
Was? Ein Red Hat Enterprise.

02:33:25.560 --> 02:33:46.620
Ja, selten. Selten. Tatsächlich selten. Da hast du ja auch das Problem mit Pakete nachladen. Ich weiß es nicht so genau. Ich hatte mal einmal einen Kunden mit Red Hat Enterprise, da mussten wir es nachinstallieren. Die CD lag 300 Kilometer entfernt. Das war auch sehr lustig.

02:33:46.620 --> 02:33:48.820
also und so, mal eben

02:33:48.820 --> 02:33:50.880
wir ziehen uns das von irgendeinem FDP, gab's

02:33:50.880 --> 02:33:51.880
nicht und

02:33:51.880 --> 02:33:55.280
das war auch sehr lustig

02:33:55.280 --> 02:33:56.940
aber ja, das

02:33:56.940 --> 02:33:58.680
kann halt ja natürlich auch noch passieren, Red Hat

02:33:58.680 --> 02:34:00.540
Enterprise, aber du hast halt selten

02:34:00.540 --> 02:34:02.860
Suse und alles andere, Gentoo und was es da

02:34:02.860 --> 02:34:03.960
alles gibt, hast du auch

02:34:03.960 --> 02:34:05.700
so gut wie gar nicht

02:34:05.700 --> 02:34:08.920
was ich jetzt gehört habe

02:34:08.920 --> 02:34:10.520
was wohl wieder im Kommen ist, ist

02:34:10.520 --> 02:34:11.000
BSD

02:34:11.000 --> 02:34:14.080
ich glaube das war auch schon

02:34:14.080 --> 02:34:16.400
es gab immer Leute, die das lieber gemocht haben, gerade für

02:34:16.400 --> 02:34:18.160
irgendwie wegen ZFS und so.

02:34:19.140 --> 02:34:19.900
Ja, wobei das

02:34:19.900 --> 02:34:22.320
ZFS, das bringt nichts. Das hat man auch

02:34:22.320 --> 02:34:24.340
getestet. Also es ist immer noch XFS

02:34:24.340 --> 02:34:25.840
oder du kannst auch X4 nehmen.

02:34:27.000 --> 02:34:28.320
ZFS bringt gar nichts

02:34:28.320 --> 02:34:29.720
bei Datenbanken, das hat man gedacht.

02:34:29.720 --> 02:34:31.560
Bei Datenbanken, ja, ja. Reiser-FS

02:34:31.560 --> 02:34:32.320
finde ich auch nicht.

02:34:35.440 --> 02:34:35.880
BTRF,

02:34:36.200 --> 02:34:37.820
das Butter-FS, auch nicht.

02:34:37.960 --> 02:34:38.900
Was du da immer...

02:34:38.900 --> 02:34:41.340
War das nicht jemand, der jemand

02:34:41.340 --> 02:34:43.440
umgebracht hat? Was?

02:34:43.840 --> 02:34:45.920
Ja, Hans Reiser hatte

02:34:45.920 --> 02:34:49.440
Ja, der ist tatsächlich

02:34:49.440 --> 02:34:51.680
im Gefängnis gelandet, weil er seine Frau umgebracht hat.

02:34:51.840 --> 02:34:52.900
Aber, ja,

02:34:53.240 --> 02:34:55.260
das sagt jetzt ja noch nichts über die Qualität

02:34:55.260 --> 02:34:56.840
von Matthias' System.

02:34:56.920 --> 02:34:59.540
Nein, also tatsächlich ist meine,

02:35:00.140 --> 02:35:01.040
ich weiß, es gibt

02:35:01.040 --> 02:35:03.340
ganz viele Microsofts, aber da draußen,

02:35:03.420 --> 02:35:05.120
aber tatsächlich bin ich eher in der Linux-Welt

02:35:05.120 --> 02:35:06.240
unterwegs und

02:35:06.240 --> 02:35:09.260
mich buchen auch komischerweise meistens

02:35:09.260 --> 02:35:10.820
die Leute, die einen Linux-Server haben.

02:35:11.860 --> 02:35:13.280
Auch Migrationen, da habe ich

02:35:13.280 --> 02:35:15.020
auch mit Linux, aber natürlich

02:35:15.020 --> 02:35:16.820
musst du das Betriebssystem auch noch ein bisschen

02:35:16.820 --> 02:35:18.600
tunen, das machen wir dann ja auch

02:35:18.600 --> 02:35:20.560
und das ist bei Linux ja,

02:35:21.040 --> 02:35:22.720
das ist auch völlig egal, welches Betriebssystem,

02:35:22.840 --> 02:35:24.680
also ob du da welche Distributionen da hast,

02:35:24.780 --> 02:35:26.380
das ist ein Linux und gut.

02:35:27.660 --> 02:35:28.880
Das ist nur, was ich

02:35:28.880 --> 02:35:31.000
immer, ich kenne mich natürlich,

02:35:31.120 --> 02:35:32.680
weil ich aus der Debian-Ecke

02:35:32.680 --> 02:35:34.620
komme, natürlich mit Debian und Ubuntu

02:35:34.620 --> 02:35:35.400
am besten aus.

02:35:37.560 --> 02:35:38.680
Das heißt, da weiß ich,

02:35:38.860 --> 02:35:41.060
wo ich das Dateisystem finde, auf Anhieb.

02:35:41.580 --> 02:35:42.740
Bei einem SUSE müsste

02:35:42.740 --> 02:35:43.180
ich suchen.

02:35:45.020 --> 02:35:47.200
jetzt nicht, dass es anders funktioniert.

02:35:47.440 --> 02:35:49.040
Es ist nur woanders

02:35:49.040 --> 02:35:51.080
abgelegt oder die

02:35:51.080 --> 02:35:53.120
Konfigurationen liegen woanders oder

02:35:53.120 --> 02:35:55.460
solche feinen Sachen, die Lockfights sind woanders.

02:35:56.300 --> 02:35:57.300
Und man sollte auch immer aus den

02:35:57.300 --> 02:35:59.180
Paketen, die das Betriebssystem mitbringt,

02:35:59.360 --> 02:36:00.520
weiß ich gar nicht,

02:36:00.860 --> 02:36:01.620
soll man das noch?

02:36:03.780 --> 02:36:05.200
Jedenfalls nicht selber kompilieren.

02:36:06.580 --> 02:36:07.360
Was ich

02:36:07.360 --> 02:36:09.240
in der Regel mache, damit ich die neuesten Versionen

02:36:09.240 --> 02:36:10.780
habe und das rate ich auch,

02:36:11.420 --> 02:36:12.980
bei MariaDB gibt es

02:36:12.980 --> 02:36:14.080
ganz cool

02:36:14.080 --> 02:36:16.480
auf

02:36:16.480 --> 02:36:18.320
der Download-Seite, da gibt es

02:36:18.320 --> 02:36:20.460
ein Tool, das ist nur ganz klein verlinkt.

02:36:20.460 --> 02:36:22.440
Da kann man dann angeben, was für ein Betriebssystem man

02:36:22.440 --> 02:36:24.220
hat und welche Version von MariaDB

02:36:24.220 --> 02:36:26.080
und dann kriegt man eine Anleitung.

02:36:26.540 --> 02:36:28.320
Dann kann man auch angeben, von welchem Mirror man das

02:36:28.320 --> 02:36:30.300
ziehen will und dann kriegt man eine Anleitung, wie man das

02:36:30.300 --> 02:36:31.660
dann mal eben installieren kann.

02:36:32.320 --> 02:36:34.360
Sodass es dann auch, wenn man das Betriebssystem

02:36:34.360 --> 02:36:36.140
upgradet oder updatet,

02:36:36.240 --> 02:36:38.320
auch upgedatet wird, also die Minor-Updates

02:36:38.320 --> 02:36:40.380
mitfährt. Und bei Postgres gibt es das

02:36:40.380 --> 02:36:42.320
ähnlich. Und wenn man jetzt

02:36:42.320 --> 02:36:44.200
sagt, okay, das Betriebssystem, ich habe jetzt ein

02:36:44.200 --> 02:36:46.580
LTS und das hat jetzt doch ein sehr altes Datenbanksystem,

02:36:46.720 --> 02:36:48.140
ich will da ein neueres draufnehmen, dann

02:36:48.140 --> 02:36:50.260
nehme ich halt diese Pakete und die

02:36:50.260 --> 02:36:52.080
werden dann passend mit bei Debian

02:36:52.080 --> 02:36:54.160
in die Sourceslisten eingefügt und dann

02:36:54.160 --> 02:36:56.280
kommt dann bei jedem Update, was ich auf dem

02:36:56.280 --> 02:36:57.240
Betriebssystem mache,

02:36:57.880 --> 02:37:00.320
wenn ich da Security Fixes

02:37:00.320 --> 02:37:02.340
oder so habe bei den beiden, dann werden

02:37:02.340 --> 02:37:04.220
die gleich automatisch mit geupdatet. Also

02:37:04.220 --> 02:37:05.560
man soll das nicht mehr selbst

02:37:05.560 --> 02:37:08.200
kompilieren. So wie früher

02:37:08.200 --> 02:37:09.840
machen wir auch in den Schulungen nicht mehr.

02:37:10.440 --> 02:37:11.800
Schön auf Nixos. Was?

02:37:12.180 --> 02:37:12.920
Schön auf Nixos.

02:37:13.640 --> 02:37:15.000
Also ja, du kannst bei mir auch noch,

02:37:15.040 --> 02:37:17.040
ich erkläre dir auch gerne, wie du es kompilierst

02:37:17.040 --> 02:37:18.940
oder wie du da auch noch diverse Sachen,

02:37:19.020 --> 02:37:21.180
die du beim Kompilieren ändern kannst, einstellen kannst.

02:37:21.880 --> 02:37:24.580
Wenn du sowas machst auf ganz kleiner Hardware,

02:37:24.720 --> 02:37:26.620
das passiert so alle Jubiläare mal,

02:37:26.720 --> 02:37:29.460
dass ich mal angefragt werde für PostgreSQL

02:37:29.460 --> 02:37:32.520
aus extrem kleiner Hardware auf irgendwelchen Geräten,

02:37:33.500 --> 02:37:34.600
die dann doch sehr klein sind,

02:37:34.680 --> 02:37:37.680
wo du dann irgendwelche Variablen in C noch ändern musst.

02:37:37.900 --> 02:37:39.020
Auf Nixos sehe ich gerade,

02:37:39.060 --> 02:37:40.600
ist das Service MySQL Enable True,

02:37:40.700 --> 02:37:42.080
damit man mir hier die wie laufen lassen kann?

02:37:42.180 --> 02:37:43.680
Ah, ja.

02:37:43.900 --> 02:37:44.360
Interessant, ja.

02:37:45.940 --> 02:37:47.560
Ja, Python, es hat

02:37:47.560 --> 02:37:49.680
da so ein Problem, Python zu installieren, das ist immer nach wie vor

02:37:49.680 --> 02:37:51.720
schwierig oder wüsste ich jetzt keinen Standardweg,

02:37:51.840 --> 02:37:53.880
wie das geht. Auch wenn ich Python installiere

02:37:53.880 --> 02:37:54.880
oder halt, sagen wir mal, so produktiv,

02:37:55.940 --> 02:37:57.660
also Desktop gibt es vielleicht noch andere Möglichkeiten,

02:37:57.780 --> 02:37:59.500
aber wenn ich es irgendwo auf dem Server veröffentliche,

02:37:59.540 --> 02:38:01.200
ist es tatsächlich momentan auch noch selbbar, weil

02:38:01.200 --> 02:38:02.900
es gibt keine gute Alternative.

02:38:04.540 --> 02:38:05.880
Ja, das ist ja noch total

02:38:05.880 --> 02:38:07.180
abhängig davon, was so eine Umgebung hat.

02:38:08.440 --> 02:38:09.800
Reicht es nicht, was das

02:38:09.800 --> 02:38:10.940
Betriebssystem mitbringt?

02:38:10.940 --> 02:38:12.340
Naja, Debian macht es kaputt.

02:38:12.960 --> 02:38:14.300
Debian macht es leider völlig kaputt.

02:38:14.460 --> 02:38:14.720
Echt?

02:38:14.900 --> 02:38:15.060
Ja.

02:38:17.040 --> 02:38:18.640
Ja, ja, das ist...

02:38:18.640 --> 02:38:20.600
Das ist eines der ungelösteren Probleme,

02:38:20.740 --> 02:38:22.180
in dem man gucken muss, ob da was passiert.

02:38:23.080 --> 02:38:24.460
Ja, weil eigentlich will man das halt

02:38:24.460 --> 02:38:25.880
virtualisiert auch haben, das Python,

02:38:25.980 --> 02:38:28.360
weil man quasi immer nur sein eigenes nutzt und nicht das System Python.

02:38:29.360 --> 02:38:30.720
Weil da sonst komische Sachen passieren

02:38:30.720 --> 02:38:32.380
und dann muss man das eigentlich immer neu

02:38:32.380 --> 02:38:33.340
irgendwo herbekommen.

02:38:35.700 --> 02:38:38.320
Auch bei Django und Co.?

02:38:38.320 --> 02:38:39.100
Ja, ja, klar, natürlich.

02:38:39.760 --> 02:38:41.520
Genau, das ist halt dann...

02:38:41.520 --> 02:38:43.100
Das ist dann aber aufwendig.

02:38:43.600 --> 02:38:45.960
Ja, die Pollen-Story ist da so ein bisschen

02:38:45.960 --> 02:38:48.020
ungelöst, noch ein ungelöstes Problem.

02:38:48.220 --> 02:38:49.180
Das ist ein bisschen schwierig, ja.

02:38:50.060 --> 02:38:51.860
Ja, es gibt da so Tools für, wie PyEnv oder sowas,

02:38:51.920 --> 02:38:53.860
dann sagst du einfach, was du hast, aber du musst halt wieder ein extra

02:38:53.860 --> 02:38:55.880
Tool installieren, was dann halt dir dafür sorgt, dass du dann

02:38:55.880 --> 02:38:56.900
die jeweilige Version hast und so.

02:38:58.400 --> 02:38:58.660
Ja.

02:38:59.680 --> 02:39:01.740
Wir sagen einfach immer, also da sind die wirklich

02:39:01.740 --> 02:39:03.880
beide sehr, sehr gut, was das angeht.

02:39:04.020 --> 02:39:05.800
Gerade auch so den Support für die

02:39:05.800 --> 02:39:07.780
ganzen Linux-Systeme und Distributionen.

02:39:07.780 --> 02:39:25.920
Du kriegst das natürlich jetzt, ich habe das jetzt vorhin mal eben schnell für Debian erklärt, eben halt, weil das war sehr auswendig, aber du kannst dann auch in dem Weg, was habe ich für ein, was habe ich für ein, du kannst auch Red Hat Enterprise angucken oder Center, du kriegst es genau erklärt, du kannst es per Copy und Paste einfach in deine Shell packen.

02:39:25.920 --> 02:39:27.320
Hast du die URL gerade im Kopf?

02:39:27.740 --> 02:39:29.940
Was? Für MariaDB?

02:39:30.480 --> 02:39:30.880
Ja.

02:39:32.120 --> 02:39:33.740
Geh mal auf

02:39:33.740 --> 02:39:36.620
downloads.mariadb.com

02:39:36.620 --> 02:39:37.440
oder org.

02:39:39.420 --> 02:39:40.280
MariaDB.com

02:39:40.280 --> 02:39:41.720
Server Download? Nein.

02:39:42.880 --> 02:39:44.220
MariaDB.com Downloads.

02:39:44.440 --> 02:39:46.140
Ja, zeig mal dann die Ansicht.

02:39:46.560 --> 02:39:47.520
Und da gibt es irgendwo

02:39:47.520 --> 02:39:50.300
Configuration Tool. Nee, das ist es nicht.

02:39:52.220 --> 02:39:54.020
Haben die jetzt die Webseite geändert?

02:39:54.480 --> 02:39:55.380
Möglicherweise, aber ist ja,

02:39:55.540 --> 02:39:56.400
dann gucken wir erst mal.

02:39:56.400 --> 02:39:57.600
Nee, du brauchst doch den Org.

02:40:01.460 --> 02:40:01.900
Download.

02:40:04.660 --> 02:40:05.100
Punkt.

02:40:07.380 --> 02:40:08.400
MariaDB, ich meine

02:40:08.400 --> 02:40:08.920
Maria.

02:40:11.220 --> 02:40:12.440
Gucken wir jetzt einmal live nach.

02:40:12.460 --> 02:40:14.240
Downloads MariaDB.org.

02:40:14.360 --> 02:40:16.100
So, genau da.

02:40:16.280 --> 02:40:17.420
Und da hast du,

02:40:18.660 --> 02:40:20.240
wo ist denn das? Hier auf der Handy-Version

02:40:20.240 --> 02:40:22.000
ist natürlich auch super, ne? Ja, natürlich.

02:40:23.540 --> 02:40:24.300
I'm sorry.

02:40:24.480 --> 02:40:28.160
Wie heißt denn dieses Tool?

02:40:28.420 --> 02:40:29.640
Ich gucke es uns einfach später nach.

02:40:29.880 --> 02:40:32.440
Genau, das kann ich euch noch.

02:40:33.080 --> 02:40:34.740
In der Desktop, also in der

02:40:34.740 --> 02:40:36.720
normalen hätte ich das jetzt, aber es kann auch sein,

02:40:36.820 --> 02:40:38.060
dass sie die Webseite geändert haben.

02:40:38.380 --> 02:40:39.980
Da gibt es jedenfalls ein Configuration-Tool.

02:40:40.220 --> 02:40:41.060
Das heißt auch irgendwie

02:40:41.060 --> 02:40:44.340
Download-Configuration-Tool oder so ähnlich.

02:40:45.200 --> 02:40:46.580
Und dann kannst du das

02:40:46.580 --> 02:40:48.600
so anklicken. Das ist total cool eigentlich.

02:40:48.600 --> 02:40:50.820
Und genau.

02:40:51.780 --> 02:40:52.880
Ja, auf Mac

02:40:52.880 --> 02:40:54.860
habe ich tatsächlich noch nie.

02:40:56.200 --> 02:40:57.000
Ich habe das mal

02:40:57.000 --> 02:40:57.780
installiert.

02:40:59.140 --> 02:41:00.960
Ich weiß nicht mehr, welches schlimmer war als

02:41:00.960 --> 02:41:02.920
das andere. Eins wollte, glaube ich, gar nicht.

02:41:04.200 --> 02:41:05.040
Also das war bei

02:41:05.040 --> 02:41:06.720
beiden nicht so das Gelbe vom Ei.

02:41:06.920 --> 02:41:08.760
Würde ich jetzt auf Mac nicht betreiben.

02:41:09.440 --> 02:41:10.880
Weder das eine noch das andere.

02:41:12.640 --> 02:41:13.540
Also ich...

02:41:13.540 --> 02:41:14.940
Ja, ja, ja.

02:41:15.780 --> 02:41:16.980
Quasi produktiv sowieso

02:41:16.980 --> 02:41:18.680
nicht, aber zum Entwickeln geht es eigentlich

02:41:18.680 --> 02:41:20.820
beides ganz gut. Ich habe nicht so viel Erfahrung

02:41:20.820 --> 02:41:22.640
mit MariaDB, aber ja.

02:41:22.880 --> 02:41:24.660
hab's mal probiert, hat's schon funktioniert.

02:41:25.520 --> 02:41:26.720
Aber, ja. Du kannst es

02:41:26.720 --> 02:41:28.600
beides irgendwie hin, das zu installieren.

02:41:28.620 --> 02:41:29.440
Ja, genau, ne, aber

02:41:29.440 --> 02:41:32.400
Ich mach das dann tatsächlich, dass ich das

02:41:32.400 --> 02:41:34.020
irgendwo auf den Server packe und

02:41:34.020 --> 02:41:36.840
aber ich auch tatsächlich

02:41:36.840 --> 02:41:38.400
mit dem Mac nicht entwickle.

02:41:38.560 --> 02:41:40.760
Also da hab ich tatsächlich noch ein ThinkPad

02:41:40.760 --> 02:41:42.560
und ein Linux und eine Shell und

02:41:42.560 --> 02:41:46.620
das ist von der Tastatur

02:41:46.620 --> 02:41:48.780
auch etwas gruselig, programmieren auf dem Mac.

02:41:48.860 --> 02:41:50.500
Ja, da gibt's Leute, die, ja, oder

02:41:50.500 --> 02:41:52.320
sagen wir mal, das war eine ganze Zeit lang total kaputt.

02:41:52.880 --> 02:41:56.500
Ich bin in dieses Problem auch eingelaufen,

02:41:56.580 --> 02:41:57.120
das war furchtbar.

02:41:57.180 --> 02:42:00.100
Mit dieser schönen F-Bar, die dann irgendwie ausgeblendet

02:42:00.100 --> 02:42:01.440
zum Scrollen, naja.

02:42:01.440 --> 02:42:02.700
Ja, es gab da diverse Probleme.

02:42:03.440 --> 02:42:04.740
Die Touchbar hatte das Problem, es gab keine

02:42:04.740 --> 02:42:06.560
S-Tab-Taste mehr, das war hoher.

02:42:07.380 --> 02:42:08.740
Und gerade als

02:42:08.740 --> 02:42:10.520
wie Ayusa, muss ich sagen, fand ich nicht so gut.

02:42:12.360 --> 02:42:12.760
Genau.

02:42:13.160 --> 02:42:13.740
Ja, so mittel.

02:42:14.200 --> 02:42:16.740
Und eine andere Geschichte, die halt auch total nervig war,

02:42:16.900 --> 02:42:18.160
ist halt, dass von

02:42:18.160 --> 02:42:20.700
2015, also von

02:42:20.700 --> 02:42:21.500
2016 bis

02:42:21.500 --> 02:42:23.760
2021 oder 2020,

02:42:23.920 --> 02:42:25.200
auf jeden Fall Ende 2020,

02:42:25.680 --> 02:42:27.340
waren die Tastaturen alle kaputt und

02:42:27.340 --> 02:42:28.700
da sind die Tasten oft nicht mehr gegangen.

02:42:29.400 --> 02:42:31.340
Und wenn halt irgendeine Tasse nicht mehr geht, ist das auch eher

02:42:31.340 --> 02:42:33.220
nervtötend. Und das Problem ist, man

02:42:33.220 --> 02:42:35.440
kann halt auch nicht, also das war halt,

02:42:36.120 --> 02:42:37.720
ja, um das zu lösen,

02:42:37.820 --> 02:42:39.480
muss das Mainboard getauscht werden. Das heißt, man muss damit

02:42:39.480 --> 02:42:41.160
irgendwie irgendwo hin, dann muss das eingeschickt werden,

02:42:41.240 --> 02:42:43.280
dauert das eine Woche. Und wer mal

02:42:43.280 --> 02:42:45.060
darauf angewiesen ist, dass Rechner funktionieren, ist das natürlich

02:42:45.060 --> 02:42:46.360
eher auch gut.

02:42:47.760 --> 02:42:49.400
Aber wisst ihr was, ich glaube, über Mac-Hardware

02:42:49.400 --> 02:42:50.960
reden wir gleich bei einem Getränk weiter.

02:42:51.160 --> 02:42:53.440
Wir haben heute richtig viel

02:42:53.440 --> 02:42:54.560
gelernt über Datenbank. Vielen Dank.

02:42:55.100 --> 02:42:56.500
Das war echt super.

02:42:58.760 --> 02:42:59.740
Ja, ich würde

02:42:59.740 --> 02:43:01.100
sagen, wir haben alles besprochen.

02:43:01.580 --> 02:43:03.460
Die Picks der Woche lassen wir heute weg, Jochen,

02:43:03.520 --> 02:43:04.060
oder was sagst du?

02:43:05.460 --> 02:43:07.180
Eine Geschichte würde ich vielleicht noch

02:43:07.180 --> 02:43:09.680
ganz nett, wenn man

02:43:09.680 --> 02:43:11.800
so ein bisschen grafischer

02:43:11.800 --> 02:43:13.680
das mag, irgendwie zu sehen, wo man

02:43:13.680 --> 02:43:15.840
eventuell Performance-Probleme hat. Da gibt es für Postgres

02:43:15.840 --> 02:43:17.740
ein schönes Tool, ein kommerzielles Tool,

02:43:17.860 --> 02:43:19.900
PG Mustard. Kann sich mal

02:43:19.900 --> 02:43:21.760
angucken. Ansonsten, ja,

02:43:21.880 --> 02:43:23.740
was ich nicht... Also ja, ich hätte irgendwie noch,

02:43:23.980 --> 02:43:25.520
ich mache ja gerne dann Modelle irgendwie mit

02:43:25.520 --> 02:43:27.280
Pydentic, die man irgendwie wegschreibt und weil das

02:43:27.280 --> 02:43:29.540
zwischendurch ein bisschen langsam war, weil so pur Python

02:43:29.540 --> 02:43:31.520
dann schon manchmal Probleme haben kann, gibt es

02:43:31.520 --> 02:43:33.440
Pydentic Core, das ist in Rust gecodet,

02:43:33.500 --> 02:43:34.940
das macht das Ganze deutlich schneller.

02:43:36.480 --> 02:43:37.940
Ja, das vielleicht noch.

02:43:38.600 --> 02:43:39.620
Ja, dann vielen Dank fürs Zuhören,

02:43:39.720 --> 02:43:41.480
dass ihr eingeschaltet habt. Vielen Dank, dass du da warst nochmal,

02:43:41.620 --> 02:43:43.320
Sanne. Ja, vielen Dank. Wir bleiben uns bewogen,

02:43:43.400 --> 02:43:45.420
schalten uns mal wieder ein und alle

02:43:45.420 --> 02:43:48.060
Feedback, Kritik, Anregungen an hallo-at-python-podcast.de

02:43:48.060 --> 02:43:49.780
Tschüss, bis zum nächsten Mal.
