Dieser Podcast ist eine initiative der Development Community des DOAG e.V.

Devs on Tape x DOAG K+A 2023 - Beda Hammerschmidt

Shownotes

Willkommen zu einer neuen Ausgabe von Devs On Tape, wo wir diesmal das Vergnügen haben, Beda Hammerschmidt von Oracle in unserer Runde zu begrüßen. Beda gewährt uns nicht nur einen Blick hinter die Kulissen seiner beeindruckenden Karriere, sondern plaudert auch aus dem Nähkästchen über seine Zeit in der akademischen Welt und seine Leidenschaft für Datenbanken. Er nimmt uns mit auf eine Reise voller internationaler Konferenzen und gibt uns Einblicke in die Entstehung seiner Promotionsthemen, von der Medizininformatik bis hin zur XML-Indizierung.

Mit Beda diskutieren wir die spannenden Facetten von Datenbanktechnologien, ihre Anwendungen und Herausforderungen. Er erzählt uns, wie er als Student mit der digitalen Archivierung medizinischer Bilder begann und welche Bedeutung das Management von XML-Indizierungssystemen für die Forschung hat. Wir beleuchten ebenso die Auswirkungen von NoSQL auf die Informatikausbildung und die Herausforderungen bei der Migration von NoSQL-Datenbanken zu Oracles JSON-basierten Systemen.

Doch es bleibt nicht nur bei technischen Themen: Beda teilt mit uns seine Gedanken zur Zukunft der Datenbanktechnologien und erläutert die Bedeutung von Standardisierung und Patenten in der Entwicklerszene. Darüber hinaus sprechen wir über die Zusammenarbeit zwischen Branchengrößen wie Oracle und MongoDB und den Einfluss von Automobiltechnologien auf das Berufsleben. Zum krönenden Abschluss erwarten uns spannende Ausblicke auf die neuen Features von Oracles Datenbanksystemen. Ein wahrer Ohrenschmaus für alle, die sich für die Schnittstelle zwischen persönlicher Entwicklergeschichte und technologischer Innovation interessieren.

JSON-Format:

Transkript anzeigen

00:00:00: Hallo und herzlich willkommen zu einer neuen Ausgabe von Devs on Tape.

00:00:16: Wieder von der DOAG 2023 in Nürnberg haben wir heute einen Gast.

00:00:21: Ja, wir haben es gerade schon mal in der Probe gehabt, der sehr gut gebildet ist,

00:00:24: der eine wahnsinnig große Karriere hinter sich hat und jetzt als Developer-Weiß-President

00:00:29: oder VP bei Oracle tätig ist und hauptsächlich alles, was nicht mit Datenbank-Tabellen zu tun hat,

00:00:35: verantwortet. Und ja, wir erfahren mal mehr darüber in der Vorstellung von Beda Hammerschmidt.

00:00:41: Hallo Beda.

00:00:42: Hallo, vielen Dank für die nette Vorstellung. Gleich eine Korrektur mit sehr gebildet.

00:00:47: Das mag vielleicht für Jason und XML zu treffen, für die meisten Teile der Welt nicht.

00:00:51: Wenn ich das meinem Sohn vorspielen würde und er hört sehr gebildet, dann lacht er sich kringelig.

00:00:55: Also begrüßt euch herzlich. Moin, moin, wie man aus meiner

00:00:59: Heimat sagt. Aus deiner Heimat, das klingt ganz nach Nordrhein-Westfalen.

00:01:02: Richtig, eigentlich fast Dänemark. Also Flensburg, wenn ich aus dem Fenster gucke, sehe ich Dänemark.

00:01:08: Damals, jetzt bin ich ja in den USA, aber ich habe es moin, moin noch nicht vergessen.

00:01:11: Ja, setz doch gerne mal an. Wir halten dich garantiert nicht für einen Depp und ich bin mir sicher,

00:01:15: dass diese Podcast-Episode dafür sorgen wird, dass unsere Hörer das auch nicht tun.

00:01:19: Aber setz doch gerne deine Vorstellung vor. Was kannst du uns denn noch mehr über dich erzählen und Hörern vor allem?

00:01:23: Ja, also ich bin klassischer Informatiker. Also ich habe Informatik studiert, erst in Heilbronn,

00:01:29: Heidelberg. Das war so ein Studiengang, der lief, also ich habe Medizininformatik studiert. Als ich Informatik studiert habe, galt das noch nicht als ein richtiger Studiengang.

00:01:37: Man musste Nebenfach haben und so typische Medienfächer waren sowas wie Mathematik oder andere Sachen und ich habe mich halt gedacht, ich will was anderes machen und

00:01:44: habe ich Medizininformatik oder Medizin als Nebenfach gehabt und bin dann aber recht schnell nach Lübeck. Da war, also Heilbronn war ein

00:01:50: Fachhochschulstudiengang, wo man am Ende halt ein Unidiplom bekommen hat, weil man doch ein Semester in Heidelberg war. Aber das hat mir da nicht so gut gefallen und ich bin dann an die Uni

00:01:58: nach Heidelberg nach dem zweiten oder ersten Semester und habe dann da auf Diplom weitergemacht und habe dann, bin dann irgendwie zu Datenbanken gekommen. Der Professor hat mich dann überredet zu

00:02:09: promovieren und dann habe ich halt im Datenbankenbereich promoviert.

00:02:13: Da hast du dann gedacht, ja komm, wenn man mich so nett fragt.

00:02:16: War ich so nebenher?

00:02:17: Also mein Chef hatte, also der Professor hatte schon gute Argumente. Da meinte er, dann kann man halt was machen, was einen wirklich interessiert und da muss man auch nicht arbeiten. Da hat man dann halt kein Treff und das war auch zum Teil richtig, was halt richtig gut war.

00:02:28: Es gab damals die Professoren, hat man gesagt, ja die Professoren dürfen ja nicht alle dasselbe Geld kriegen. Es muss ja eine leistungsbezogene Mittelvergabe geben und eine Leistungsmessung. Es gab so Leistungen, war so, ja wie viele Studenten machen ein Diplom oder eine andere Arbeit. Aber eine andere Sache war auch, wie viele Konferenzen man besucht und publiziert. Und das heißt, mein Chef wurde letztlich dafür bezahlt, dass ich auf Konferenzen reise und Vorträge halte. Und das fand ich natürlich genial, auf Steuerzahlerkosten in der Welt rumzufliegen. Mein erster Konferenzvortrag war auf Hawaii.

00:02:55: Wo?

00:02:55: Gibt es diesen Professor noch?

00:02:58: Ja, richtig, richtig. Aber ich war dann wirklich zwei, drei, vier Mal im Jahr in der Welt unterwegs. Ich hatte dann so, trotz Economy Class, so diesen Frequent Flyer Status. Ich habe dann irgendwann mal mich beschwert, der und der hat jetzt hier einen Dienstwagen und meine Freundin jetzt vor Ort gesagt, ja was beklagst du dich? Du hast doch eine Boeing.

00:03:15: Ja.

00:03:27: Ich habe dann irgendwann mal in München oder in Frankfurt. Und München hatte ich ein paar Praktika gemacht. Da habe ich gesagt, die kenne ich ja, die Stadt. Das ist ja nicht so aufregend mehr. Da will ich nochmal ein bisschen im Ausland arbeiten. Aber ich wusste halt, ich wollte nicht eine neue Sprache lernen. Also Englisch konnte ich halt ein bisschen. Und ich wollte auch nicht irgendwie was fachlich anders machen. Und dann habe ich gedacht, warum mache ich nicht nochmal ein Jahr in den USA? Weil ich habe das ja so kennengelernt von den Konferenzen. Es ist halt immer Party. Und dann habe ich gedacht, boah, das scheint ja ein lustiges Land zu sein. Dann gucke ich doch mal, ob ich da einen Job bekomme.

00:03:56: Hauptkriterium Party.

00:03:57: Genau.

00:03:58: Das hört sich nach was für dich an, Kai.

00:04:01: Bitte. Jetzt mach das fast nicht auf, Caro. So, und wie bist du dann letztendlich zu Datenbanken gekommen? Außer dem Prof, der dich auf die Welt geschickt hat.

00:04:27: Ja, genau.

00:04:28: Und dann habe ich dann auch mal ein bisschen mit dem Prof gearbeitet.

00:04:40: Und dann habe ich dann auch mal ein bisschen

00:04:40: Und dann habe ich dann auch mal ein bisschen mit dem Prof gearbeitet.

00:04:52: Und dann habe ich dann auch mal ein bisschen mit dem Prof gearbeitet.

00:04:52: Und dann habe ich dann auch mal ein bisschen mit dem Prof gearbeitet.

00:05:04: Und dann habe ich dann auch mal ein bisschen mit dem Prof gearbeitet.

00:05:04: Und dann habe ich dann auch mal ein bisschen mit dem Prof gearbeitet.

00:05:16: Und dann habe ich dann auch mal ein bisschen mit dem Prof gearbeitet.

00:05:16: Und dann habe ich dann auch mal ein bisschen mit dem Prof gearbeitet.

00:05:28: Und dann habe ich dann auch mal ein bisschen mit dem Prof gearbeitet.

00:05:28: Und dann habe ich dann auch mal ein bisschen mit dem Prof gearbeitet.

00:05:40: Und dann habe ich dann auch mal ein bisschen mit dem Prof gearbeitet.

00:05:40: Und dann habe ich dann auch mal ein bisschen mit dem Prof gearbeitet.

00:05:52: Und dann habe ich dann auch mal ein bisschen mit dem Prof gearbeitet.

00:05:52: Und dann habe ich dann auch mal ein bisschen mit dem Prof gearbeitet.

00:06:04: Und dann habe ich dann auch mal ein bisschen mit dem Prof gearbeitet.

00:06:04: Und dann habe ich dann auch mal ein bisschen mit dem Prof gearbeitet.

00:06:16: Und dann habe ich dann auch mal ein bisschen mit dem Prof gearbeitet.

00:06:16: Und dann habe ich dann auch mal ein bisschen mit dem Prof gearbeitet.

00:06:28: Und dann habe ich dann auch mal ein bisschen mit dem Prof gearbeitet.

00:06:28: Und dann habe ich dann auch mal ein bisschen mit dem Prof gearbeitet.

00:06:40: Und dann habe ich dann auch mal ein bisschen mit dem Prof gearbeitet.

00:06:40: Und dann habe ich dann auch mal ein bisschen mit dem Prof gearbeitet.

00:06:52: Und dann habe ich dann auch mal ein bisschen mit dem Prof gearbeitet.

00:06:52: Und dann habe ich dann auch mal ein bisschen mit dem Prof gearbeitet.

00:07:04: Und dann habe ich dann auch mal ein bisschen mit dem Prof gearbeitet.

00:07:04: Und dabei lädt er ein Lieder bei Napster runter und schreibt irgendwelche Dias ein.

00:07:05: Und dann habe ich dann auch mal ein bisschen mit dem Prof gearbeitet.

00:07:10: Und dann bin ich sozusagen ans Datenbankinstitut gegangen.

00:07:11: Und dann habe ich dann auch mal ein bisschen mit dem Prof gearbeitet.

00:07:16: Und dann bin ich halt irgendwie so zwei, drei

00:07:16: Und dann bin ich halt irgendwie so zwei, drei Gebäude weitergezogen.

00:07:20: Und habe dann diese virtuelle Diaschiene, die halt quasi die Anwendung war,

00:07:23: haben wir quasi jetzt die Datenbank unten drunter mitgesetzt.

00:07:26: Und da gab es so ein Medienarchiv, was man so katalogisieren konnte und diese ganzen Sachen machen.

00:07:31: Also es war eigentlich eine nette Anwendung.

00:07:32: Und wir hatten ja schon gesprochen, der Professor hat mir dann auch gesagt:

00:07:35: "So, dann promoviere doch."

00:07:36: Und dann habe ich halt eben gedacht: "Okay, dann mache ich das einfach weiter.

00:07:38: Ich habe ja Spaß daran und mache daraus einen Doktor."

00:07:40: Und es war relativ schwierig zu publizieren, weil es war so zu einer Zeit,

00:07:45: wo wahrscheinlich gibt es so ein bisschen mehr,

00:07:46: es gibt es heutzutage Konferenzen, die sich genau mit dieser Schnittstelle Informatik und Medizin beschäftigen.

00:07:51: Aber damals war man halt sozusagen so eine Art Bindestrich-Sache.

00:07:55: Also man war weder pure Informatik noch pure Medizin.

00:07:58: Also die Mediziner haben sowieso nicht verstanden, was wir da gemacht haben.

00:08:01: Die sind relativ altmodisch.

00:08:02: Und für die Informatiker war es halt einfach nur eine Anwendung.

00:08:05: Und die verstanden auch nicht die Komplexität dahinter an medizinischer Klassifizierung von Bildmaterial.

00:08:10: Also es war unmöglich zu publizieren.

00:08:12: Ich habe zwar diese eine, diese Hawaii-Publikation, die ging.

00:08:14: Aber sagen wir mal, es war auch nicht so die hochkarrierevolle,

00:08:15: aber es war auch nicht so die hochkarrierevolle,

00:08:15: aber es war auch nicht so die hochkarrierevolle,

00:08:16: aber es war auch nicht so die hochkarrierevolle Konferenz,

00:08:17: mit der man jetzt einen Doktortitel kriegt.

00:08:18: Aber es war ja, wir wurden ja dafür bezahlt zu publizieren.

00:08:21: Der Staat Deutschland hat ja entschlossen, man sollte viel publizieren.

00:08:24: Und dann Quantität und Qualität ist ja nicht dasselbe.

00:08:27: Man könnte es mit dem Ace-Programm vergleichen, glaube ich.

00:08:29: Böse, böse.

00:08:32: Jetzt wird geschnitten gleich.

00:08:33: Gut, dass wir es auf Deutsch machen.

00:08:35: Und dann war mir halt so nach zwei Jahren klar, das wird nichts.

00:08:39: Und dann habe ich halt einen radikalen Schwenk gemacht

00:08:41: und habe halt gesagt, jetzt auf ein ganz klassisches Thema,

00:08:44: damals war XML sehr hot und Datenbanken brauchen Indizes.

00:08:48: Und dann habe ich mir halt überlegt, wie kann man XML indizieren

00:08:51: und dann vielleicht auch so, dass das automatisch passiert,

00:08:54: also dass der Benutzer das gar nicht definieren muss,

00:08:56: sondern dass man quasi den Workload capturt und dann analysiert,

00:09:00: wie man da die besten Indizes machen kann.

00:09:03: Es war auch eine lustige Geschichte, weil ehrlich gesagt war das dasselbe Problem,

00:09:05: wie in den 70er Jahren für relationale Daten gemacht wurden.

00:09:08: Das heißt, ich konnte so die alten Papiere aus den 70er Jahren ausbuddeln

00:09:11: und auf XML anwenden.

00:09:13: Das ist halt, kann man sagen, ein NP-vollständiges Problem.

00:09:16: Und man kann es dann auch schön mathematisch beweisen.

00:09:18: Das ist dann immer gut, wenn man quasi eine Sache in so einer wissenschaftlichen Publikation

00:09:22: sehr kompliziert klingen lassen kann.

00:09:24: Ich wollte gerade sagen, lass uns dann Mathematik und solche Sachen draufwerfen

00:09:28: und dann gucken die Leute schon nicht genug nach.

00:09:30: Genau, es ist die Kunst, einfache Sachen sehr kompliziert auszurücken.

00:09:33: Das wäre eigentlich das Umgekehrte, wäre ja eigentlich besser.

00:09:35: Wenn etwas kompliziert ist, macht das einfacher ausgedrückt,

00:09:37: aber dafür gibt es keinen Doktor.

00:09:39: Und das war dann ein Thema, das lief sehr gut und das habe ich dann anderthalb Jahre gemacht.

00:09:42: Und dann war ich halt Doktor Ing.

00:09:44: Musste man damals an der Uni Lübeck drei, also Doktor Rehnert gab es mit zwei,

00:09:48: Professor und Beisitzer beim Doktor Ing, brauchte aber noch einer mehr.

00:09:52: Und er mochte dann gar nicht, dass ich nur dreieinhalb Jahre gebraucht habe,

00:09:55: aber dann war es schon zu spät, da konnte er mich nicht mehr stoppen.

00:09:57: Ich dachte gleich, kommt der Plottwist, dass es wirklich der Doktor der Anatomie ist,

00:10:01: weil er noch ein bisschen länger da in der Hälfte des Tutors war.

00:10:04: War eine lustige Zeit, aber lang ist es her, ja.

00:10:06: Aber das war auch noch, du sprachst jetzt immer von Datenbanken im Generellen,

00:10:11: da kann man jetzt aber keinen konkreten Namen dran schreiben,

00:10:13: das war ja dann nicht die Oracle Datenbank direkt, das war jetzt auch nicht irgendein, war es die DB2?

00:10:18: Das ist mal eine gute Frage.

00:10:20: Also wir haben dann, als es dann mit XML losging, haben wir quasi so einen Prototypen von einer eigenen Datenbank gemacht.

00:10:25: Weil es war, der Fokus war ja die Indizierung, also es war jetzt nicht, dass man sagt,

00:10:29: das übernimmt jetzt alle Datenbank-Funktionalitäten, dass man da notwendigerweise eine Sprache hat

00:10:34: oder auch nur Transaktionen oder so.

00:10:36: Das hätte man sicherlich machen können, da zeigt sich dann wieder der Praktiker.

00:10:40: Aber wenn man halt was publiziert in der wissenschaftlichen Sache, dann ist es halt ein Aspekt

00:10:44: und wenn du dann noch mehr machst, das kannst du natürlich machen, aber das ist nicht unbedingt dann, sagen wir mal, erforderlich.

00:10:49: Das wäre vielleicht eine Sache, wenn man am Institut an einer größeren Aufgabe gemeinsam arbeitet,

00:10:54: aber in dem Institut, wo ich war, war es mehr so, jeder hatte so sein eigenes Thema

00:10:58: und die waren zum Teil auch sehr unterschiedlich so, dass da relativ wenig Cross-Pollination oder sowas stattfand.

00:11:03: Es war jetzt gerade aus dem Grund auch schon mal wichtig, weil wenn man jetzt so technologisch auf die ganzen Sachen guckt,

00:11:08: welche Technologien setzen Studenten denn?

00:11:09: Oder was würden die für Datenbanken nehmen, wenn die irgendwie, lass es die Anwendung sein jetzt für die Übertragung dieser DIA-Daten,

00:11:17: ob es jetzt eine Java-Anwendung ist, welche Datenbank steckt dahinter, mal abgesehen davon, dass es einfach klingt wie Dropbox,

00:11:21: dass die Leute sich einen Ordner machen, die DIAs da reinschmeißen.

00:11:24: Ja, so war es auch.

00:11:25: Auf der anderen Seite ist es ein Client, der hört auf Events und zieht es runter.

00:11:27: Aber wenn jetzt heutzutage Studenten gerade in eine Problemlösung gehen oder eine Doktorarbeit schreiben

00:11:33: und die brauchen eine Datenbank als Grundlage, wo würden sie denn darauf zugreifen?

00:11:38: Das weiß ich jetzt nur, weiß ich nicht ganz genau, weil ich ja die Universität vor langer, langer Zeit verlassen habe

00:11:42: und ich war auch sehr glücklich, dass ich aus dem Business raus war.

00:11:45: Was ich mit Überraschung gehört habe mehrmals, auch schon seit einigen Jahren, ist,

00:11:50: dass man heute quasi Informatik studieren kann, ohne Datenbank gehört zu haben.

00:11:55: Und was häufig dann dazu führt, also ich glaube immer noch, dass nahezu jede echte Anwendung irgendwann eine Datenbank braucht.

00:12:03: Also es gibt wenig Anwendungen oder Informationssysteme ohne Datenbank.

00:12:07: Aber Studenten, die jetzt sagen wir mal sich mit Machine Learning machen oder mit irgendwelchen Algorithmen oder anderen Sachen

00:12:12: oder die haben ein Projekt, steht dann häufig die Datenbank vielleicht nicht im Vordergrund,

00:12:16: sondern das ist dann ein Teil von vielen und dann nimmt man halt irgendwie das, was bequem und schnell zu nutzen ist.

00:12:22: Und da ist glaube ich auch, das ist auch so ein Erfolg dieser NoSQL-Datenbanken, wo man einfach sagt,

00:12:26: ich schmeiße da ein bisschen was rein, Persistenz und ich finde es auch irgendwie wieder.

00:12:30: Und wenn ich 17 Dokumente habe, dann ist es auch relativ effizient, eins von denen wiederzufinden.

00:12:35: Und da denke ich, ja, das ist auch ein bisschen das, was ich jetzt auch noch machen möchte.

00:12:36: Und da denke ich, ist es so, dass viele Studenten SQL vielleicht gar nicht mehr lernen oder lernen müssen oder wie man das sagen will.

00:12:43: Und die gehen dann halt zu einer Firma später, werden eingestellt und da braucht man halt eine Datenbank.

00:12:47: Und dann schauen die vielleicht auch manchmal, was habe ich denn schon mal benutzt?

00:12:50: Oh, ich habe schon mal eine MongoDB benutzt, dann mache ich das doch jetzt mit einer MongoDB zum Beispiel.

00:12:54: Und ja, ein anderer Aspekt, was auch interessant ist, gerade für Anwendungsentwickler ist,

00:12:59: dass diese NoSQL-Datenbanken häufig das auch sehr einfach machen, von der Programmiersprache zu kommunizieren.

00:13:04: Also jetzt sagen wir mal, ein typischer Java-Entwickler.

00:13:05: Der jetzt JDBC nutzt mit einer relationalen Datenbank, der schreibt halt das SQL in einem String in Java.

00:13:12: Also Java guckt in der Regel auch nicht rein.

00:13:14: Das heißt, wenn ich da mein "from" falsch geschrieben habe oder ich habe einen Schreibfehler in irgendeiner Tabelle,

00:13:19: dann kompiliert Java das erstmal und dann habe ich halt einen Laufzeitfehler.

00:13:23: Und dann habe ich halt die Sachen wie mit "prepareStatement" und "bindVariables" und "execute" und so weiter.

00:13:29: Und das ist halt eine Menge Code, den man so zusammenschreiben muss für eine relativ einfache Aufnahme.

00:13:34: Und dann sagt sich dann jemand, wenn ich jetzt hier so eine Art NoSQL-Datenbank/Bitbucket nehme,

00:13:40: dann ist es irgendwie ein "put" und ein "get".

00:13:43: Das ist eine Zeile und das ist dann häufig auch integriert direkt.

00:13:47: Da ist dann irgendwie eine Library oder eine Klasse, die ich runterlade.

00:13:50: Und dann habe ich halt irgendwie mein Objekt, also als Java-Objekt, was jetzt sozusagen die JSON-Collection zum Beispiel darstellt.

00:13:58: Und da habe ich dann sowas wie "inserts" oder "find" oder "delete" und so weiter.

00:14:01: Das heißt, ich habe nicht diese zwei Sprachen, wie ich es bei Java habe.

00:14:03: Wie es ist, wenn ich SQL als String in JDBC zum Beispiel habe.

00:14:08: Das ist das größte Einfallstor für SQL-Injection auch, ne?

00:14:10: Dadurch, dass es nicht geprobt wird, sondern wirklich als String behandelt wird.

00:14:13: Und wenn man das nicht sanitisiert, wenn man da dann versucht, dass es escaped wird.

00:14:16: Ja, da musst du mit "bindVariables" arbeiten.

00:14:17: Genau, wenn ich dann meinen String selber zusammenbaue, klar, dann habe ich natürlich SQL-Injection, ja.

00:14:21: Genau, das passiert dann ja ganz schnell.

00:14:22: Ja, jetzt machen wir eine kleine Zeitreise.

00:14:24: Wir haben vorhin darüber gesprochen, was du dann bei deinem Doktor gemacht hast und welche Thematiken du da angegangen bist.

00:14:29: Jetzt habe ich es gerade eben im Intro schon mal so ein bisschen angedeutet.

00:14:32: Du arbeitest an allen Themen, sage ich jetzt mal, in der Oracle Datenbank, die jetzt nicht unbedingt Tables betreffen.

00:14:37: Du sprachst von LOBS schon mal im Vorfeld, von JSON natürlich ganz.

00:14:41: Da wollen wir gleich auch mal ein bisschen tiefer noch reinschauen.

00:14:43: Was würdest du denn jetzt beschreiben?

00:14:44: Was ist jetzt aktuell deine Kernarbeit, die du, ich sage jetzt mal, tagtäglich machst?

00:14:49: Also das Team, ich habe ein super Team.

00:14:51: Wir sind in den USA, wir haben Mitarbeiter in Indien, in Mexiko.

00:14:55: Und die Bereiche, die wir abdecken, ist XML, ist JSON, ist halt Oracle Text.

00:15:01: Und LOBS und auch noch so Extensibility und Object Types, die sind auch dabei.

00:15:06: Was jetzt so die tägliche, also natürlich ist es, wir haben Kunden, die all diese Features nutzen.

00:15:12: Und wenn die Probleme haben, dann fixen wir die, also Bugs.

00:15:15: Das gehört einfach dazu.

00:15:17: Aber was so tägliche Aufgabe ist, ist wirklich, was momentan sehr gut läuft, ist halt JSON.

00:15:23: Dass man halt sagt, okay, JSON.

00:15:25: Also ich habe 2013 mit JSON angefangen und ich hätte jetzt gedacht, dieser Hype-Cycle ist eigentlich jetzt schon vorbei.

00:15:30: Aber eigentlich geht es erst richtig los.

00:15:32: Gerade auch mit Oracle 19c, 23c.

00:15:34: JSON wird immer populärer.

00:15:36: Ich hatte so einen lustigen Moment auf dieser Konferenz.

00:15:38: Also ich erinnere mich noch, ich habe hier Papiere eingereicht, die wurden abgelehnt zu JSON.

00:15:43: Und dann wurden die ersten Papiere angenommen und da hatte ich vielleicht fünf, sechs Zuhörer.

00:15:47: Und bevor ich jetzt hier rübergereist bin, wollte ich mir meine Talks, ich habe drei Talks hier, wollte ich mir einen Kalender eintragen.

00:15:54: Ich habe gedacht, ich suche einfach nach JSON, weil das sind meine Talks.

00:15:57: Und dann habe ich da 15 Talks gesehen.

00:15:58: Da habe ich gedacht, oh, was ist das denn?

00:15:59: Ja, die brauchen manchmal so ein bisschen die Community, die braucht so ein bisschen Dinge zu adaptieren.

00:16:05: Jetzt gibt es eine Menge Talks zu JSON und eigentlich braucht man mich hier nicht mehr.

00:16:09: Ich kann mich jetzt hier aufs Essen und Trinken konzentrieren.

00:16:12: Also bitte, das ist jetzt stapelnd wieder.

00:16:14: Ich glaube, wenn man ein Thema über JSON, wenn man einen Talk über JSON hören möchte, dann sollte man das auch definitiv von dir tun.

00:16:20: Aber das sind so die Sachen, die ich auf der Arbeit mache.

00:16:23: Also wir haben momentan auch was, was sehr, sehr, sehr viel Zeit in Anspruch nimmt.

00:16:28: Aber ich meine das positiv, sind so Migrationen von NoSQL-Datenbanken.

00:16:32: Und zwar, wir arbeiten seit vielen Jahren mit Kunden.

00:16:36: Also wir haben massive Workloads auf JSON und wir haben einige Kunden, die New York Stock Exchange darf ich hier nennen,

00:16:42: weil die auf der letzten Cloud World ihre Use Cases präsentiert haben.

00:16:45: Die haben relativ früh erkannt, dass sie JSON, also sie wollten JSON haben und sie haben relativ früh erkannt, dass sie es mit Oracle besser hinkriegen.

00:16:53: Aber es gibt auch eine Menge Kunden, die haben gesagt, oh, JSON, ich nehme jetzt eine NoSQL-Datenbank.

00:16:56: Und was dann sehr häufig passiert ist, dass diese NoSQL-Datenbanken, das sind in der Regel Single-Trick-Ponys, die können eine Sache sehr gut.

00:17:02: Und der Use Case ist aber in der Regel breiter.

00:17:06: Und dann, oh, das geht nicht mit der NoSQL-Datenbank.

00:17:09: Ach, also ich kann ein Beispiel nennen, das war auch schon 2015.

00:17:12: Es war eine sehr, sehr große US-Versicherung.

00:17:14: Die haben sich entschlossen, ihre ganzen Policen als JSON zu modellieren.

00:17:17: Und es macht auch Sinn, weil Policen sind sehr unterschiedlich.

00:17:21: Und sie haben halt gesagt, das ist ein Web-Interface, wir wollen eine Police halt schnell laden können.

00:17:25: Das bisherige Datenmodell bestand so aus 30 bis 40 Tabellen, die alle gejoined werden mussten, weil Policen können sehr unterschiedlich sein.

00:17:32: Deshalb sehr viele verschiedene Tabellen.

00:17:34: Und die haben dann gesagt, okay, wir wollen modernisieren.

00:17:36: Also JSON kommt sehr häufig über Modernisierung ins Spiel.

00:17:39: Und die haben dann gesagt, okay, wir machen JSON.

00:17:41: Und haben dafür eine NoSQL-Datenbank gemacht.

00:17:44: Die haben die Applikation geschrieben.

00:17:45: Die war alles wunderbar.

00:17:46: Also die konnten super ihre Policen, einzelne Police abspeichern und wiederfinden.

00:17:50: Also Bitbucket.

00:17:51: Mhm.

00:17:52: Und dann vier Monate von GoLive.

00:17:54: Hat deren CFO gesagt, er gibt es nicht frei.

00:17:57: Und der Grund war, dass sie am Ende jedes Tages wissen wollten, wie viele Claims, ich weiß nicht, wie es auf Deutsch heißt, also wenn jemand, Schadensfall, wie viele Schadensfälle wurden sozusagen erhoben.

00:18:09: Was ist die Summe dieser Schadenssumme?

00:18:12: Weil er muss quasi dann Aktien verkaufen oder nachkaufen oder irgendwie sowas.

00:18:15: Der will einfach wissen, wo stehen wir finanziell, um dann auf der finanziellen Seite jeden Tag reagieren zu können.

00:18:20: Und er wollte ein anständiges Reporting auf Basis haben.

00:18:22: Richtig.

00:18:23: Und das war dann die Datenbank-Operation über viele verschiedene JSON-Dokumente hinweg.

00:18:26: Und das konnte diese NoSQL-Datenbanken nicht.

00:18:29: Und dann haben die versucht, okay, dann benutzen wir Konnektoren und wir schreiben unseren eigenen Code.

00:18:35: Und es ging so partiell, aber es war nie richtig korrekt.

00:18:38: Und dann kamen die halt so ein bisschen mit Tränen in den Augen zu uns, vier Monate von GoLive.

00:18:43: Nein.

00:18:44: Und sagten so, wir kriegen das nicht hin.

00:18:45: Und dann haben wir gesagt, okay, speichert doch das JSON einfach in der Oracle-Datenbank und macht einen JSON-Table da drauf.

00:18:50: Dann könnt ihr die Werte, die dafür wichtig sind, auch in der Oracle-Datenbank machen.

00:18:51: Ja.

00:18:52: Und dann haben sie dann, was die Werte dafür wichtig sind, einfach extrahieren aus dem JSON.

00:18:55: Und dann sehen eure Daten wie eine Tabelle aus.

00:18:58: Und dann konnten sie das, das haben sie gemacht, also die haben dann migriert.

00:19:02: Die Anwendung musste minimal verändert werden, weil es war ja immer noch JSON.

00:19:06: Die konnten die Policen, die sie schon gespeichert hatten, einfach überführen.

00:19:09: Also keinerlei Änderung am JSON war nötig.

00:19:12: Und dann haben sie halt ein paar JSON-Table Views geschrieben oder Materialized Views.

00:19:16: Und wenn es halt eine Änderung gab auf der Police, wurden halt die relevanten Werte extrahiert und relational zur Verfügung gestellt.

00:19:21: Und sie konnten ihre existierende Risk-Pipeline weiter füttern aus derselben Datenbank heraus.

00:19:28: Und das war natürlich ein Riesenerfolg.

00:19:31: Und das sehen wir, sehe ich relativ häufig.

00:19:33: Also um nochmal zurückzukommen, was mache ich jeden Tag?

00:19:35: Eine Menge Migration von Kunden, die halt vor ein paar Jahren oder vor vielen Jahren auf NoSQL gesetzt haben.

00:19:40: Und die haben zum Teil sehr komplexe Architekturen.

00:19:43: Ein anderes Beispiel ist, da gab es einen Kunden, der hat gesagt, wir wollen Microservices machen.

00:19:47: Wir wollen irgendwie einen Restzugriff auf unsere Kundendaten haben.

00:19:49: Okay.

00:19:50: Kunden sind relational, schreiben wir ein JSON-Programm, äh, schreiben wir ein Java-Programm, das macht darauf JSON, schmeißt es in Kafka-Messaging-Bus, das geht wieder in so eine NoSQL-Datenbank.

00:19:58: Jetzt habe ich vier Teile und meine Daten sind bis zu zwei Minuten alt.

00:20:01: Ja.

00:20:02: Und wenn was kaputt geht, was ist kaputt?

00:20:04: Wen von den vier Leuten will ich haben?

00:20:06: Und die Leute, die es gebaut haben, sind schon längst weiter.

00:20:08: Die konnten sich dann Kafka auf ihren Lebenslauf schreiben und sich dann woanders weiterbewerben.

00:20:11: Und dann ist der arme DBA dann da irgendwie dabei und versucht herauszufinden, wen er anrufen muss, dass es wieder läuft.

00:20:17: Das war auf jeden Fall der einfachere Move von…

00:20:19: Ja.

00:20:20: …Oracle zu sagen, wir machen jetzt eine wirklich in der Tiefe eine super Unterstützung für JSON.

00:20:24: Ja.

00:20:25: Als dass es eine NoSQL-Datenbank gibt, die versucht, ein relationales Layer obendrauf zu setzen, damit man sich diese verschiedenen Punkte sparen kann.

00:20:31: Also es ist ja immer Zusatzsoftware oder Mittelbau dazwischen oder irgendeine Software, die aus diesen…

00:20:35: Naja, ich meine, Oracle gibt es seit 40 Jahren und die haben eine Menge Anwendungsfälle gesehen, lange bevor ich dabei bin.

00:20:40: Das ist einfach optimiert.

00:20:41: Wir haben auch mal mit einer sehr populären NoSQL-Datenbank einen Performance-Vergleich gemacht.

00:20:45: Und NoSQL war ja damals so, wir sind halt schneller.

00:20:48: Wir sind schneller und wir skalieren besser.

00:20:49: Und dafür musst du halt deine Transaktionen aufgeben.

00:20:51: Ist dann Eventual Consistency.

00:20:53: Aber wir sind schneller.

00:20:54: Und dann haben wir halt irgendwann…

00:20:56: Wir haben ja diesen Autonomous JSON Cloud Service gelauncht vor so drei Jahren.

00:21:00: Und dann haben wir halt auch…

00:21:01: Also wenn man sich das Launch-Block anguckt, weiß man auch, mit welcher Daten wir…

00:21:04: Also ein sehr führender Mitbewerber im JSON-Umfeld.

00:21:08: Und dann haben wir halt eine Performance-Messe gemacht.

00:21:10: Und ich habe so überlegt, so okay, unser JSON ist ja komplett dieselben Transaktionen.

00:21:14: Und es ist eine ganz normale Datenbank-Operation.

00:21:17: Und wir machen eine ganze Menge mehr.

00:21:19: Wenn wir mal so schnell sind wie dieses NoSQL-Database, das wäre schon echt gut.

00:21:24: Wahrscheinlich sind wir langsamer.

00:21:25: Und dann haben wir halt einen Industrie-Benchmark laufen lassen.

00:21:28: Und dann kam raus, wir sind schneller.

00:21:30: Und der Grund liegt zum Teil daran, dass wir das JSON ein bisschen effizienter abspeichern.

00:21:36: Vielleicht so 10% oder 20%, warum wir schneller sind.

00:21:39: Aber der Rest ist einfach mit Parallel Execution.

00:21:41: Also einfach, weil das JSON halt in der Oracle-Datenbank läuft.

00:21:44: Und ganz normal parallel ausgeführt werden kann.

00:21:46: Und die Oracle-Datenbank verhält sich halt sehr gut bei massiven Zugriffen.

00:21:51: Also wenn du wirklich auf der Datenbank mit vielen Clients drauf rumhämmerst,

00:21:54: dann skaliert die relativ gut.

00:21:56: Und wenn du dann auch so ein Mixed-Workload hast und da ist JSON dann,

00:22:00: das lief dann einfach.

00:22:01: Und wenn du jetzt sagst, okay, ich habe eine NoSQL-Datenbank und will da relational draufmachen,

00:22:05: dann musst du all die Sachen ja alle neu erfinden.

00:22:07: Also da ist es, wie du schon gesagt hast, leichter für Oracle,

00:22:10: einen JSON-Datentypen hinzuzufügen, als jetzt sagen wir mal für eine JSON-Spezial-Datenbank,

00:22:15: Tabellen hinzuzufügen.

00:22:17: Was ich in dem Zusammenhang auch sehr spannend finde,

00:22:20: das springt jetzt ein ganz kleines Stück auf die neueste Version,

00:22:23: wo ihr auch diese JSON-Duality-View habt,

00:22:26: die ja nochmal eine ganz andere Dimension in genau das hinzufügt,

00:22:29: dass wir dort in der Lage sind, die relationale Datenbankstruktur

00:22:33: mit dem JSON quasi zu verbinden und dadurch auch einfacher zur Verfügung zu stellen.

00:22:38: Kannst du da vielleicht ein paar Insights nachgeben?

00:22:40: Also mich interessiert vor allem natürlich immer, wie war der Prozess dahin?

00:22:44: Also habt ihr in einem großen Raum gesessen und gesagt,

00:22:46: ja, das ist es oder habt ihr…

00:22:48: Ich glaube, das ist schrittweise.

00:22:50: Und du brauchst einen fancy Name vor allem.

00:22:52: Ja, danke.

00:22:53: Ja, gut.

00:22:54: Zum Namen kommen wir noch.

00:22:56: Wie ist das entstanden?

00:22:58: Also ich glaube, es ist so eine, letztlich ist es das Spiel, was wir spielen,

00:23:02: heißt Converged Database.

00:23:04: Und das ist auch, glaube ich, das wirklich der Mehrwert der Oracle dem Kunden liefert,

00:23:09: ist zu sagen, wir wollen halt verschiedene Datenmodelle unterstützen,

00:23:13: aber nicht nur nebeneinander, sondern wirklich auch überführbar.

00:23:16: Also es ist ja nicht nur das, sagen wir mal, Oracle kann Tabelle und JSON,

00:23:20: sondern du kannst ja auch eine Tabelle als JSON sehen oder ein JSON als Tabelle.

00:23:25: Und das war eigentlich immer Teil der ganzen Message, wo man gesagt hat,

00:23:29: wir wollen beide Fälle wirklich überführbar machen.

00:23:33: Und Duality View ist dann im Prinzip die logische Konsequenz.

00:23:37: Also was, wenn man jetzt ganz objektiv da dran guckt, dann sind im Prinzip JSON Duality Views

00:23:42: einfach updatable JSON Views.

00:23:44: Und JSON Views haben wir halt immer gehabt, aber die waren halt nicht updatable.

00:23:47: Oder man hätte halt sich einen Trigger schreiben müssen.

00:23:49: Und dann haben wir halt gesagt, dass wenn du jetzt ein Update drauf machst, gut,

00:23:52: dann können wir vielleicht selber rausfinden, was da drunter gemacht werden soll.

00:23:55: Das Gute war, es war halt ein Projekt, was nicht nur in meinem Team war,

00:23:58: sondern auch in Hoans Organisation.

00:24:00: Und damit hatten wir die Leute von der Transaktionsgruppe und dann konnten wir die Sachen sehr effizient machen.

00:24:04: Also es war schon so ein Projekt, wo nicht nur die Idee gut ist, sondern wo auch, wo man sieht,

00:24:09: wo verschiedene Leute mit völlig verschiedenen Ideen zusammenarbeiten.

00:24:11: Also mit völlig verschiedenen Background, wenn man die unter einer Mission zusammenführt,

00:24:17: dass man wirklich sehr großartige Sachen machen kann.

00:24:19: Also das ist jetzt in 23c, es ist ein sehr innovatives Release.

00:24:23: Es ist zwar kein Innovation Release, sondern ein Long Term Release,

00:24:27: aber es ist sehr innovativ, was man da alles drin findet.

00:24:30: Wie lange hat die Entwicklung daran gedauert?

00:24:32: Ja, lustig.

00:24:33: Also die Entwicklung hat angefangen, als sie eigentlich abgeschlossen sein sollte.

00:24:37: Also der normale Prozess ist ja so.

00:24:40: Also man hat irgendwie eine Idee und man spezifiziert die.

00:24:44: Und anhand der Spezifikation wird implementiert und getestet und dokumentiert.

00:24:48: Wasserfallmodell, eigentlich klasse.

00:24:51: Und Duality Views, wir haben jede Regel gebrochen, die es gibt im Prozess bei Orc.

00:24:57: Also wir haben viel zu spät angefangen.

00:25:01: Und es war super, weil alle haben kooperiert.

00:25:04: Also es war wirklich so, alle waren bereit.

00:25:06: Muss man auch Hoans wahrscheinlich sehr großes Lob aussprechen,

00:25:09: dass er das so gebackt hat oder auch gepusht hat.

00:25:11: Und dadurch konnten wir halt die Sachen außerhalb des normalen Prozesses

00:25:17: einfach mergen, wenn sie fertig waren.

00:25:19: Also es ist sozusagen wirklich so ein iterativer Prozess, wo man sagt,

00:25:22: Sachen entwickeln sich, werden besser und werden nicht einmal spezifiziert

00:25:26: und dann fertig implementiert.

00:25:28: Und ich glaube, das entspricht auch der Realität.

00:25:30: Es war vielleicht noch eine Anekdote, als es mit Jason losging,

00:25:33: haben wir das standardisiert.

00:25:35: Also alles, was Jason angeht, machen wir relativ offen.

00:25:37: Also wir machen das.

00:25:38: Wir sind Open Source und wir sind Open Standard, sag ich mal.

00:25:40: Das heißt, wenn wir was neu erfinden, wollen wir es nicht nur für Oracle-Kunden lösen,

00:25:44: sondern wir wollen es für relationale Benutzer allgemein lösen.

00:25:47: Das heißt, wir sagen: Hey, es gibt dieses Problem.

00:25:49: Oracle hat darüber nachgedacht, hat die Lösung gefunden.

00:25:52: Und dann sagen wir: Macht ihr alle das auch?

00:25:54: Und das ist auch mit Erfolg, weil Postgres und MySQL haben quasi ihre eigenen

00:25:58: Jason-Extensions weggeworfen und haben gesagt: Wir machen das, was Oracle tut.

00:26:01: Da gibt es jetzt auch ein Jason-Table und diese ganzen Geschichten.

00:26:05: Und bei diesen...

00:26:07: Jetzt habe ich ein bisschen Faden vor.

00:26:09: Die Entwicklung von der Entwicklungszeit von Jason-Duality-View.

00:26:12: Genau.

00:26:13: Und bei dem Standard.

00:26:14: Ja, siehst du, das Hirn funktioniert noch.

00:26:16: Dauert zwar manchmal ein bisschen länger.

00:26:17: Das war der Beweis für deinen Sohn an der Stelle.

00:26:19: Genau.

00:26:20: Also wir sind dann zu IBM.

00:26:21: 2013 haben wir gesagt, wir wollen Jason halt lösen fürs relationale Umfeld.

00:26:25: Also soll ein Standard dabei rauskommen.

00:26:27: Und dann haben wir Brainstorming gemacht mit IBM.

00:26:29: Also IBM hat Almadin Research Labs.

00:26:31: Die sind so wirklich von San Jose auf einem netten Hügel.

00:26:34: Also wirklich abgeschlossen.

00:26:35: Wenn du da bist, bist du da.

00:26:36: Da kannst du auch nicht mal sagen, ich gehe mal zum Imbiss gegenüber, weil da gibt es keinen.

00:26:39: Und da wurden so Sachen wie Festplatten, da wurden gigantische Sachen erfunden.

00:26:43: Und in dem Gebäude waren wir dann und haben halt mit den Leuten von IBM geredet, wie man das standardisiert.

00:26:47: Da war auch der Vater von der DB2 dabei.

00:26:49: Also der Typ, der mit für die DB2-Nahme fällt mir jetzt nicht ein.

00:26:53: Und dann haben wir da halt Whiteboard-Diskussionen über zwei Wochen.

00:26:56: Und die Leute waren alle von XML dabei.

00:26:58: Also es waren quasi von IBM die XML-Leute und von Jason die XML-Leute.

00:27:01: Das heißt, wir hatten Erfahrung, aber auch Fehler gemacht.

00:27:04: Das heißt, Jason ist auch so ein bisschen...

00:27:05: Wahrscheinlich deshalb so gut, weil XML in einigen Sachen wesentlich komplizierter war.

00:27:10: Wir wussten halt, okay, es muss wesentlich leichter sein.

00:27:13: Und dann waren wir halt fertig mit dieser Standardgeschichte.

00:27:16: Und jetzt beginnt der große Unterschied, weil wir waren die Entwickler von Oracle, die da waren.

00:27:21: Und von IBM waren die Standard-Leute da.

00:27:23: Das heißt, deren Endprodukt war der Standard, ein Stück Papier.

00:27:27: Wo war es drauf?

00:27:28: Wir sind zurückgegangen, mussten das programmieren.

00:27:30: Also grundsätzlicher Unterschied.

00:27:32: Und in dem Moment, wo man dann halt wirklich das implementiert,

00:27:34: was man vorher spezifiziert hat,

00:27:36: fällt dir eigentlich erst auf, wo man nicht drüber nachgedacht hat.

00:27:39: Was ja noch ganz gut gewesen wäre.

00:27:42: Und dann haben wir halt gesagt, okay, dann machen wir auch dies, dann machen wir auch das, dann machen wir auch das.

00:27:45: Und ich habe dann irgendwann mal die von IBM gefragt, so:

00:27:48: "Habt ihr was, wie macht ihr das da?"

00:27:50: Und die haben gesagt: "Ja, wir wissen gar nicht, wo das implementiert wird."

00:27:52: "Ja, das ist, glaube ich, in DB2, aber das wurde in China gemacht."

00:27:55: Und wenn du dann halt ein Programmierer bist und du kriegst irgendwie unter der Tür so ein Standard durchgeschoben

00:27:59: und es heißt: "Programmiere den mal", dann programmierst du den halt.

00:28:02: Aber dann...

00:28:03: Vielleicht fällt dir dann irgendwie auch ein, was man besser machen könnte,

00:28:05: aber deine Aufgabe ist es ja, den Standard zu implementieren.

00:28:07: Und dann ist es da irgendwo verloren.

00:28:09: Und Oracle ist halt irgendwie eine Firma, wo du Mädchen für alles bist.

00:28:13: Also wir spezifizieren, wir schreiben den Code, wir fixen dann auch die Bugs

00:28:18: und sind Mädchen, wir patentieren das,

00:28:20: wir sind dann wirklich für weite Bereiche wirklich alleine zuständig.

00:28:24: Spannend.

00:28:26: Und jetzt springe ich einfach nochmal,

00:28:28: weil ich finde, es war ein schönes quasi Schlusswort für die Duality-Konferenz.

00:28:32: Erstmal.

00:28:34: Gucken, was uns noch zurückführt.

00:28:35: Und jetzt wird es ein bisschen spezifischer, aber mir brennt diese Frage einfach unter den Nägeln so ein bisschen.

00:28:42: Es gibt ja das Innovationsrelease, die 21c und es gibt ja das aktuelle Long-Term wahrscheinlich Release, also die 19c.

00:28:51: Und ich hatte mal gelesen, dass man, weil du bist ja auch für LOBs zuständig, sag ich mal,

00:28:57: da hat man ja früher in der 19er hat man ja JSON beispielsweise noch in CLOB-Spalten abgespeichert.

00:29:00: Mhm.

00:29:01: Und ich hatte irgendwann mal auch gelesen, dass man jetzt ja auch in der 21er und dann auch in der 23er einen JSON-Datentyp hat,

00:29:08: der auch deutlich effizienter abspeichert und irgendwie Speicher-, also nicht so speichergierig ist und so.

00:29:14: Ja.

00:29:15: Kannst du dazu vielleicht so ein ganz bisschen mal anreißen?

00:29:17: Ja, ja.

00:29:18: Technische Frage, sehr gerne.

00:29:19: Also JSON ist, also es gibt zwei verschiedene Antworten darauf, die sich ergänzen.

00:29:23: Das eine ist erstmal, wie repräsentiere ich JSON?

00:29:25: Und JSON, wenn wir uns JSON angucken, ist es ja meistens ein Text.

00:29:28: Also wenn man das visualisiert als Mensch, ist es ein Text.

00:29:30: Und in einem Text kann ich Syntaxfehler machen.

00:29:32: Ich kann quasi eine Klammer vergessen oder zu viel zumachen.

00:29:35: Das heißt, wenn ich JSON als Text abspeichere, muss ich es parsen.

00:29:38: Und JSON ist ja auch schemaflexibel.

00:29:40: Das heißt, und es gibt keine Ordnung in Objekten zum Beispiel, wenn ich jetzt nach einem JSON suche, wo irgendwie das Feld A 15 ist und das Feld A gibt es gar nicht, muss ich das Dokument bis zum Ende durchsuchen.

00:29:52: Mhm.

00:29:53: Wenn ich das als Text abspeichere.

00:29:54: Und wir haben dann uns ein Binärformat überlegt.

00:29:56: Das nennt sich OSIM.

00:29:57: Wir haben ehrlich gesagt jedes andere Binärformat.

00:29:59: Avro, Protocol Buffers, Parquet, Beeson von MongoDB haben wir sogar implementiert.

00:30:07: Es ist sogar in der Datenbank, aber es ist nicht dokumentiert.

00:30:09: Und wir haben uns dann entschlossen, das Format ist nicht gut.

00:30:12: Also MongoDBs eigenes Format ist nicht besonders gut, weil sie nicht springen können.

00:30:17: Also wir haben dann überlegt, wir brauchen ein Format für die Datenbank.

00:30:20: Und was heißt für die Datenbank?

00:30:21: Du willst halt schnell zu Werten springen können.

00:30:23: Und du willst auch erstmal wissen, ob der Wert überhaupt da ist.

00:30:26: Also in diesem Beispiel, ich suche, wo der Wert A 15 ist.

00:30:28: Und den Wert A gibt es gar nicht.

00:30:30: Dann will ich ja nicht durchsuchen.

00:30:31: Ich will ja sofort wissen, das A gibt es nicht.

00:30:33: Das heißt, wir trennen dieses JSON in drei verschiedene Sachen.

00:30:35: Wir sagen, es gibt so eine Art Header.

00:30:37: Da sind alle Feldnamen erstmal spezifiziert.

00:30:39: Dann gibt es die Werte, die mit diesen Feldnamen assoziiert sind.

00:30:43: Und dann so eine Strukturinformation, bei der wir aber springen können.

00:30:46: Das heißt, wenn ich jetzt so eine Anfrage habe, finde mir etwas, wo A 15 ist, dann können wir direkt zum Wert 15 springen.

00:30:52: Und wir haben das nicht nur in der Datenbank gemacht, sondern wir haben auch sozusagen den, also der JSON-Datentyp ist ja auch standardisiert.

00:30:57: Osten ist open sourced worden.

00:31:00: Und wir haben es dann auch für Java und JDBC implementiert.

00:31:03: Und wir haben Schnittstellen in JDBC, wo du sozusagen dieses Osten direkt bis zum Client gehst.

00:31:07: Und wenn ich da sage A 15, springt es auch da.

00:31:09: Also sozusagen diese Performance ist wirklich end-to-end.

00:31:12: So, das ist sozusagen die Query-Geschwindigkeit.

00:31:14: Der andere Punkt ist Update-Geschwindigkeit.

00:31:16: Wenn ich jetzt ein Dokument habe und ich ändere einen Wert, dann will ich ja nicht das gesamte JSON neu schreiben.

00:31:22: Wie MongoDB zum Beispiel.

00:31:24: Sondern dann will ich ja, was weiß ich, ich habe ein 1 MB Dokument.

00:31:26: Ändere irgendwie ein paar Bits, dann will ich ja nicht 1 MB schreiben, sondern nur ein paar Bits.

00:31:30: Und das haben wir in diesem Format halt auch gemacht.

00:31:32: Das nennt sich halt Osten.

00:31:33: Also das ist das Format.

00:31:35: Abspeichern ist es immer noch auf Lob-Infrastruktur.

00:31:38: Aber den haben wir auch optimiert.

00:31:40: Also wir haben so einen neuen Lob gemacht.

00:31:42: Der nennt sich Value-Based Lob.

00:31:44: Ich weiß nicht, ob der schon dokumentiert ist, aber wird wahrscheinlich irgendwann sein.

00:31:47: Und zwar haben wir uns überlegt, wie sollten Lobs eigentlich funktionieren.

00:31:50: Und Lobs wurden eigentlich in so einer Zeit erfunden, wo Multimedia so ein Use Case war.

00:31:55: Also Lobs haben eine relativ leistungsfähige API.

00:31:59: Ich kann zum Beispiel Musik in der Oracle-Datenbank speichern.

00:32:02: Und ich kann mir dann einen Lob-Locator holen und anfangen sozusagen zu streamen.

00:32:07: Ich kann dann Pause drücken, nächste Woche wiederkommen und wieder auf Play drücken.

00:32:11: Und die Datenbank hätte sich sozusagen gemerkt, wo ich gewesen bin über diesen Lob-Locator.

00:32:15: Natürlich sehr, sehr stark, aber vom Funktionsumfang sehr aufwendig.

00:32:19: Aber es führt dazu, dass die Datenbank halt diese Lob-Locator akkumuliert.

00:32:22: Weil sie weiß ja nicht, ob der Client sie noch braucht.

00:32:24: Also man kann natürlich vom Client jetzt sagen, okay, ich brauche diesen Lob nicht mehr.

00:32:27: Aber viele Anwendungen haben das dann vergessen.

00:32:29: Und dann hattest du halt diese Ineffizienzen bei den Lobs.

00:32:32: Und dann haben wir halt gesagt, wir wollen so eine Art Value-Based-Lob machen.

00:32:35: Ich habe den immer Mob genannt.

00:32:37: Also Lob steht ja für Large Object.

00:32:39: Ich habe gesagt, so ja, wir sollten Mob machen, so Medium Object.

00:32:42: Aber Mob, ich glaube nicht, dass wir das als Mob dokumentieren.

00:32:46: Unsere Stimme hast du, glaube ich.

00:32:49: Das heißt jetzt Value-Based-Lob.

00:32:51: Und Value-Based heißt im Prinzip, ich kann den einmal lesen.

00:32:53: Also ich habe nicht diese API, wo ich sagen kann, ich will jetzt rumseeken.

00:32:57: Weil beim JSON ist es ja auch so, ich will das ganze JSON haben.

00:33:00: Ich will ja nicht irgendwie da durchstreamen oder morgen wiederkommen und sagen, ich will noch den anderen Teil.

00:33:04: Das heißt, diese ganze darunter liegende Lob-Infrastruktur wurde auch von der Performance dann deutlich optimiert.

00:33:10: Also das wurde in Release 20 hinzugefügt.

00:33:13: Ich weiß gar nicht, wie viele Hörer überhaupt wissen, dass es mal Oracle 20 gab.

00:33:17: Also ich weiß auch nicht.

00:33:18: Eine Woche lang.

00:33:19: Ich habe es auch nicht.

00:33:20: Echt?

00:33:21: Nein, nein.

00:33:22: Also Release 20 wurde dann gekannt wegen Covid.

00:33:24: Dann hieß es halt, Covid ist da, die Leute haben jetzt keine Zeit abzugraden.

00:33:28: Und dann wurde es halt verschoben auf 21.

00:33:30: Aber deshalb muss man, um JSON-Type zu nutzen, muss man halt die Kompatibilität auf 20 setzen.

00:33:35: Die Frage haben sich dann bestimmt schon die einen oder anderen schon mal gestellt.

00:33:40: Also es gab für eine Woche gab es Oracle Release 20.

00:33:43: Ja.

00:33:44: Okay.

00:33:45: Gut.

00:33:46: Und also so wie du das eben beschrieben hast.

00:33:48: Ich denke natürlich, also ich denke immer aus meiner relationalen Brille.

00:33:51: Weil ich, es ist einfach das, was ich kenne.

00:33:53: Und in dem Zusammenhang kenne ich natürlich auch so ein paar Vorurteile, die einige auch

00:33:58: schon geäußert haben.

00:33:59: Sowas wie eben JSON, das kann man halt nicht durchsuchen richtig.

00:34:03: Das kann man vielleicht nicht richtig indizieren und so.

00:34:05: Und das, was du vorhin auch beschrieben oder eben beschrieben hattest, wie der, wie ihr

00:34:09: den Datentypen jetzt aufgebaut habt und so, hört sich das ja auch schon so, finde ich,

00:34:13: so ein bisschen wie so eine Indizierung an.

00:34:15: Da habt ihr sicherlich auch schon was implementiert.

00:34:18: Also vorweg.

00:34:19: JSON ist ein weiteres Werkzeug, was wir, was Datenbank, ist ja nicht eine Oracle, sondern

00:34:24: was Datenbank oder Entwickler nutzen können.

00:34:26: Ja.

00:34:27: Das heißt nicht, dass man jetzt alles mit JSON macht oder das alles mit JSON besser

00:34:31: oder schneller oder wie auch immer es ist.

00:34:33: Wie mit einem Hammer.

00:34:34: Ein Hammer ist für gewisse Sachen gut da, sollte man nicht mit Schrauben in die Wand

00:34:37: drehen.

00:34:38: Und ja, wir können natürlich JSON indizieren.

00:34:41: Wir haben verschiedene Möglichkeiten, das zu indizieren.

00:34:44: Also man kann, wenn man will, rein mit JSON entwickeln.

00:34:48: Wie mit einer MongoDB.

00:34:49: Die Oracle Datenbank ist ja auch MongoDB-kompatibel über diese MongoDB-API.

00:34:53: Das heißt, ich kann im Prinzip, das ist ein Teil von ORDS, also in der Cloud, wenn ich

00:34:58: jetzt ein Autonomous Database habe, ist es quasi schon, sagen wir mal, als Service da.

00:35:02: Automatisch, wenn ich jetzt on-premise bin, kann ich mir ORDS installieren und diese Mongo

00:35:06: API freischalten und ich kann dann meine Mongo-Applikation gegen die Oracle Datenbank fahren und kann

00:35:11: dann zum Beispiel auch SQL darüber ausführen oder Änderungen in SQL ausführen und ich

00:35:15: sehe es dann in meinen Mongo-Collections.

00:35:17: Also das geht.

00:35:18: Es ist dann manchmal wirklich eine Frage der Präferenz.

00:35:22: Und ich sehe meine, also ich will nicht in so ein Linux versus Windows oder so eine Geschichte

00:35:27: reinkommen.

00:35:28: Also ich sage einfach, meine Aufgabe ist es, die beste JSON-Datenbank der Welt zu bauen

00:35:33: und der Kunde kann dann wählen.

00:35:35: Und ich sehe manchmal Anwendungsfälle, gerade erst vor zwei Wochen, mit JSON, komplett flaches

00:35:41: JSON-Objekt.

00:35:42: Warum macht ihr überhaupt JSON?

00:35:43: Ja, das ist, warum auch immer.

00:35:45: Also ich belehre dann nicht die Frage.

00:35:46: Ich belehre dann nicht die Kunden, aber ich stelle mir dann schon die Frage, warum habt

00:35:49: ihr dafür JSON genommen?

00:35:50: Hätte man genauso gut relational machen können.

00:35:51: Manchmal ist es noch ein bisschen schlimmer so mit XML.

00:35:53: So XML ist irgendwie out.

00:35:56: Wobei XML in meinen Augen komplett gültige Anwendungsfälle hat.

00:36:00: Also wenn ich Dokumente habe, also XML kann ja Daten und sowohl Content darstellen.

00:36:05: Das heißt, ich kann am XML-Dokument diese Mixed Content, ich kann sagen, das ist FAD

00:36:08: gedruckt, das ist unterstrichen und so weiter.

00:36:10: Das kann ich in JSON nicht.

00:36:11: Wenn dann die Leute anfangen, sozusagen mit JSON Dokumentenfälle zu lösen, also mit Textdokumente

00:36:15: mache ich damit, dann sage ich mir so, würde ich eher nicht machen.

00:36:19: Aber ja, XML ist alt und wir machen das jetzt alles mit JSON.

00:36:22: Also es gibt, es ist, wir sind auch so ein bisschen so eine Modeindustrie.

00:36:25: Und da sehe ich auch so ein bisschen, dass es so überschwingt, dass die Leute dann JSON

00:36:29: nutzen für Sachen.

00:36:30: Und in Oracle ist es ja auch kein entweder oder, sondern die meisten Kunden haben irgendwie

00:36:34: eine Tabelle und sagen, oder viele Kunden, in der Vergangenheit waren es vielleicht 80

00:36:39: Prozent, die sagen, ich habe eigentlich eine relationale Applikation, aber ich brauche ein

00:36:42: bisschen Schema-Flexibilität.

00:36:44: Also anstatt jetzt zu sagen Flex Voucher 1, Flex Voucher 2, also wo man auf Vorrat 20 Strings

00:36:51: und 20 Nummern und 20 Datum hinzumacht und dann nicht weiß, was drin ist, kann man auch

00:36:56: sagen, ich mache einfach ein JSON-Feld und wenn ich dann irgendwie Flexibilität brauche,

00:37:00: tue ich das ins JSON rein.

00:37:01: Also das ist ein sehr, sehr gängiger Anwendungsfall.

00:37:04: So 80 Prozent ist vor ein paar Jahren.

00:37:05: Jetzt habe ich gesagt, wir machen so viel Mongo-Migration, jetzt ist vielleicht nur

00:37:08: noch 50 Prozent.

00:37:09: Also wir sehen ganz stark diese JSON-only Use Cases.

00:37:13: Und ja, es gibt halt eine Menge Anwendungsentwickler, die wollen keine SQL schreiben und die sagen,

00:37:17: ich mache halt alles in JSON.

00:37:19: Ich schreibe sogar meine Anschragen in JSON.

00:37:21: Das ist ja das, was die Mongo-API macht.

00:37:23: Also der Anwender sagt halt, alle meine Daten sind JSON und alle meine Queries sind auch

00:37:27: JSON.

00:37:28: Und dann sagen wir halt, okay, wir gucken jetzt diese Query an und wir übersetzen die

00:37:31: ins SQL.

00:37:32: Also die Datenbank sieht niemals, wo das herkam.

00:37:35: Das ist quasi wie so eine Schicht oberhalb der Datenbank und eine Datenbank kommt in

00:37:38: SQL an.

00:37:39: Das heißt, der Optimizer kann das auch optimieren und Indizes oder Materialization kann das

00:37:42: auch optimieren.

00:37:43: Und dann kann er auch die Datenbank auch optimieren.

00:53:43: Vielen Dank.

Neuer Kommentar

Dein Name oder Pseudonym (wird öffentlich angezeigt)
Mindestens 10 Zeichen
Durch das Abschicken des Formulars stimmst du zu, dass der Wert unter "Name oder Pseudonym" gespeichert wird und öffentlich angezeigt werden kann. Wir speichern keine IP-Adressen oder andere personenbezogene Daten. Die Nutzung deines echten Namens ist freiwillig.