¶ ORM als SQL-Alternative
9 zur Folge 80 von einfach komplex n kleines rundes Jubiläum. Glückwunsch Spuckhardt. Glückwunsch, Gerrit, Ja, aber wir haben jetzt gar nicht so n jubiläumsthema oder irgendwas, ne nee, aber macht ja nix, geht einfach nein weiter nix war folge 100 vielleicht 80 reicht auch nicht für n Jubiläum. Richtig, richtig, richtig. Man kann sich das ersetzen wie man möchte. Folge 100 hab ich das ja schon, Plan muss ich dir noch mal von erzählen, aber es sind ja noch 40 Wochen, wenn ich richtig
rechne. OK, aber trotzdem heute cooles Thema. Die Brücke zwischen Code und Datenbank hast du es genannt und ich hab es ja schon mal erwähnt, Datenbanken sind anscheinend etwas wo die Leute sich gerne einen Podcast drüber informieren, also die Datenbankfolgen die wir gemacht haben einmal so ne grundsätzliche und dann noch mal eine zu Post Grass und so weiter die sind alle ziemlich erfolgreich, also die laufen ganz gut, also könnte das Thema hier sicherlich auch ne breitere
Masse ansprechen als wir es uns vielleicht jetzt gerade noch denken, aber erklär mal, was haben wir vor? Ja, ich wollte mal was vorstellen, was man vielleicht
kennt oder auch nicht. Jetzt nicht so ein, nicht so ein Killerthema so letzte Woche hatten wir json scemer wo ich sagen würde muss man auf jeden Fall kennen und muss man benutzen, hier kann man sich mal angucken, sollte man wissen, dass es das gibt und kann man benutzen wenn man den richtigen Use Case hat und ganz grob gesprochen geht es um genau du hast gesagt die Brücke zwischen Code und Datenbank, ich erklär es mal in ganz einfachen Worten wenn wir Datenbanken haben.
Da sprechen wir von Tabellen und von Abfragesprachen. Ja, also such mir raus in der Tabelle XY. Alle Einträge die zum Beispiel einen Preis haben größer als irgendwas, während ich das so spreche, sprechen wir von von SQL, also von Structured Curry Language und von Datenbanken. Du hast gesagt, wir hatten die Folgen, das ist aber halt diese ganze Sprache, die Art des Denkens mit in Tabellen und Abfragesprachen ist halt relativ konträr oder anders.
Zu der Art des Denkens und Arbeitens im objektorientierten Programmierungssinne, also wenn wir im Quelltext von unseren Anwendungen sind, und also haben wir hier quasi einen Kontrast dieser beiden Welten, und heute wollen wir uns unterhalten über eine Automatik, quasi einen Mapper, eine Zwischensprache, quasi ein Tool, das diese beiden Welten verbindet, automatisch, so dass ich als Entwickler quasi diese Datenbank tabellenwelt.
So ansprechen kann, wie ich es gewohnt bin mit meinen klasseninstanzen Objekten und so weiter und nicht diese Tabellen SQL Sprache im Kopf haben muss und das ganze Ding nennt sich halt Orm Object Relational Mapping, das sagt es im Prinzip Object für die objektorientierte Welt, Relational für die relationale Welt der Tabellen Mapping also vor und zurück in beide in beide Richtungen. Kann man sich vorstellen wieso ne Library oder sowas, die man dann auch benutzt in seinem
Quellcode? Ganz genau, das ist das ja, es ist, es ist immer ne Library ist immer irgendwie nen Tool in Framework Library genau ist selber geschrieben in Codes und ormen aber quasi nen Stück generischer Code den ich quasi als Library, als dependency ja in meine Anwendungen reinhängen kann um mir das Leben einfacher zu machen.
Ja da kommen wir noch drauf ob das ob es das wirklich einfacher macht oder oder anders macht ja sagen wir es mal so anders macht, das ist auf jeden Fall. Ich hab jetzt schon verstanden, dass es quasi ne Alternative dazu ist normale SQL abfragen zu schreiben. Kann ich stattdessen auch so n Object Relation und Mapping quasi einführen?
Ist das so? Kann man das so sagen und du kannst vielleicht noch mal rausstellen was die Unterschiede sind, also wie das eine geht und wie das andere funktioniert. Ja, genau, das ist richtig. Also du kannst, ich sag mal so, wenn man das jetzt mal nicht nutzt, einfach was würde man denn machen? Ja dann dann würde man quasi vom Anwendungscode aus ne Verbindung zu der Datenbank herstellen.
Netzwerkverbindung typischerweise und dann diese SQL Befehle, also die Sprache der die der Datenbanken, die die Tabellen und so weiter verstehen quasi erstellen im Code ne das sind ja dann längere Strings sowas wie insert into users klammer auf Name kommt mal e Mail values Max Mustermann und so weiter wir hatten schon mal eine Folge über die Sprache des SQLS, das ist wirklich auch so eine Art Programmiersprache, die ist jetzt aber weder Python noch Java Script noch Note GS oder
irgendwas ja. Sondern das ist quasi ein von diesen Programmiersprachen, die wir kennen.
Agnostisches Konzept ja, das ist sowieso ne algebraische Sprache, die die ist auch immer gleich, die funktioniert halt für Tabellen und Datenbanken Punkt, ja ich muss dann quasi wenn ich das nicht habe so n Omen, dann muss ich halt quasi wenn ich jetzt Daten holen möchte aus der Datenbank oder auch schreiben, also hier haben wir wieder das Crat, da sieht man schon n paar mal CRUD das sind die Operationen die ich auf einer Datenbank ausführe, also create ich mach n neuen Eintrag.
R Read ich lese irgendwas aus der Datenbank u Update. Ich will irgendwas was da schon da drinne ist, modifizieren,
updaten und d delete. Ja das sind die Operationen die ich mache, dafür gibt es die entsprechenden SQL Statements genau und ich muss halt dann quasi egal in welchem Code bin ob ich jetzt Python bin oder gerade.net oder irgendwas habe, dann muss ich halt quasi diese Welt überbrücken zwischen meinem Code und dieser Datenbank und ich generiere dann quasi irgendwie diese SQL Strings. Die führ ich irgendwie aus und dann kommt irgendwas zurück, was typischerweise auch nicht so
direkt in meinem Code ist. Das ist dann in so einer sehr niedrig liegenden Struktur im besten Fall irgendwie n Array von Arrays und so weiter je nachdem was du abfragst ja und und dann musst du halt quasi. Also du musst dann halt irgendwie das wieder zurück eigentlich in den Code verwandeln, irgendwie Informationen ne genau und der Object Relational Mapper, der versucht genau dieses verwandeln Hinwandeln und Zurückwandeln in eigentlich die Datenstrukturen.
Der Programmiersprache und so weiter und die sind unterschiedlich. In der Programmiersprache versucht das Weg zu abstrahieren, zu automatisieren, quasi so, dass es sich so anfühlt, als hättest du im
Prinzip datenobjekte und so was. Hinweis Heisenberg stellt auf der diesjährigen Hannover Messe aus Nutze die Chance und Triff Burkhard und mich in Halle 17 am Stand b 35 dein gratis Ticket für die Hannover Messe findest du im Link Tree in unseren Shownotes. Wenn du vorbeikommst, haben wir auf jeden Fall einen Kaffee oder ein Kaltgetränk für dich.
Wir freuen uns auf deinen Besuch und nun viel Spaß mit der weiteren Folge. Das hieß ja quasi so, n Orm gäbe es für oder gibt es für jede Programmiersprache, also das eine Ende ist immer ähnlich, also das sind SQL Statements und das andere sind aber programmiersprachenspezifische
ausdrücke. Wenn man sich jetzt n Bild vorstellen will, dann könnte man könnte man n linken Fenster haben, in der Mitte das Orm so als Knoten und rechten Fenster haben und in dem linken Fenster sind die ganzen Programmiersprachen. Die verschiedenen, also Java, Script, Note, JS und so weiter dann haben wir ein Orm und du hast recht Gerrit das Orm muss gemacht werden für jede Programmiersprachentechnologie noch mal neu, weil sich das sehr
dicht in die Programmiersprachen integriert und in dem Orm steckt dann aber wieder also auf dem rechten Fenster jetzt wenn wir in Richtung Datenbanken gucken ist auch schick, das hab ich noch nicht gesagt, ist es aber so, dass auch alle Datenbanken unterstützt werden, wir haben ja schon über Postgress gesprochen, aber es gibt ja viele Datenbanken ja my Sequel Oracle.
Host Grass mongo was weiß ich. Na Mongo passt nicht so gut, aber als als dann aber die ganzen relationalen Datenbanken sag ich mal und und die haben auch leichte Unterschiede, obwohl SQL ja eigentlich ein Standard ist und so, aber so ist die Realität, es gibt leichte Unterschiede auch in Performance und so weiter je nachdem was ich mache zwischen den Datenbanken und das OM abstrahiert ja auch das dann weg weil du du sagst eigentlich nur noch welche Datenbank will ich haben und im
OM ist es dann eigentlich Wurst ob das jetzt nen Postgress ist oder nen my Sequel weil es ist halt diese transparente Kommunikation das Mapping herstellt zwischen meiner Programmiersprache und verschiedenen Datenbanken. Ja aber ja es gibt für jede Programmiersprache mehrere, auch typischerweise Frameworks die immer so ein 23 top Dinger pro Programmiersprache was man so nimmt wenn man dann in ORB nimmt ja Python anders als bei javascript und so weiter also.
Wenn man es jetzt im Einsatz hätte, könnte man auch relativ einfach ne Datenbank austauschen. Also. Solange das eine SQL oder eine relationale Datenbank ist, kann ich einfach migrieren von A zu b und zu C, weil ich ja abstrahiert quasi mit denen spreche. Hast du jetzt 1 der ganz krassen Vorteile genau auf unserem Ohr schon mal rausgesucht.
Es ist das genau, du bist abstrakt unterwegs und deine Business Logic, die du gecoded hast, funktioniert dann austauschbar, egal auf welchem Datenbankbag End, das ist richtig genau, ja. Das stimmt. Wenn das Oam cool ist, und die sind das sind, das können die alle. Ja das das funktioniert so, ja dann kannst du dann quasi das Austauschen, die Datenbank ja da dafür kann es Gründe geben, dass man mal die Datenbank Engine austauscht, ja und dann hast du das relativ zügig migriert und
es funktioniert alles schön. OK, und wenn das Oam cool ist, heißt es gibt viele verschiedene davon, also nicht nur pro Programmiersprache, sondern irgendwie auch unterschiedliche weiß ich nicht Produkte. Genau das ist so. Ja, also es gibt. Es kommt ein bisschen drauf an,
¶ ORM je Programmiersprache
wenn man guckt. Ja, so, jetzt sprechen wir die ganze Zeit über den heißen Brei, wir können ja mal ein paar Namen nennen, was es für OMS so gibt, pro Programmiersprachen Technologie, hier kenne ich nicht alle, natürlich von der Nutzung her, also deswegen lese ich es jetzt einfach mal vor, ich fange mal gleich an mit javascript, weil das unsere Sprache ist. Ein Backend oder beziehungsweise No JS, da gibt es das OM zum Beispiel, das heißt Sequelize sehr bekannt ist das was wir nutzen auch.
Ich find das ich find das sehr flexibel, das ist ziemlich cool, irgendwie gut im Einsatz. Es gibt aber noch n anderes, das heißt Type Arm, wenn man mehr auf der Type Script Schiene unterwegs ist kenn ich nicht, lese es nur vor was ich kenne, dann wieder in Python spring mal die Programmiersprache, es war gerade javascript wenn wir jetzt mal Python gucken, da gibt es zum Beispiel das Django Framework, das kennt man eigentlich nicht als Orm sondern eher als Web Framework sag ich
mal. Damit kann man wundervoll auch Webseiten herstellen, so so n bisschen das das React von von Python sag ich mal. Und da ist es so, dass das Framework schon so stark strukturierte Ideen mitgibt, dass quasi Teil dieses Web Frameworks ist, quasi auch schon Teil der Daten des Datenbanklayers. Ja, denn Gerrit, das ist ja auch was, was also ganz oft das
Pattern ist. Wenn ich im Web bin, dann habe ich halt einen Webserver. Wo liegt denn die Daten für die User, für die Webanwendung, ja die, die liegen ja oft in der relationalen Datenbank, ja und bei beim beim Django ist es so, dass dann alles gleichzeitig mitkommt. Ja, das ist ein Framework und ein Arm in einem.
Sodass ich quasi in der in der Welt dieses Web Frameworks quasi dieses Object Relational Mapping auch schon gleich mit hab ne, da schreib ich halt also auch keine SQL Statements mehr hin, wenn
ich im Django bin. Ne davon muss natürlich das Django lernen, ne aber ein das war ein Beispiel jetzt mal kurz von Python und im in der Programmiersprache Java ist das bekannteste bekannteste was es so gibt ist Hibernate, das hat man vielleicht auch schon mal von Namen gehört, dann haben wirhier.net also die Microsoft Welt dasstack.net die Sharp und die Brüder der Programmiersprachen.
Da gibt es im Entity Framework mit drin, also da ist nen nen Object relational mapper quasi Teil derdes.net Frameworks, teil der Programmiersprache schon fast.
Also das lade ich zwar auch noch hin, das kann ich mir auch suchen, ob ich das nutze oder nicht ja, aber das ist quasi tief tief direkt in die Welt der Programmiersprachen und deren Abhängigkeiten integriertalso.net hat quasi ne Standardimplementierung für nen Orm, das zeigt auch, dass das schon durchaus genutzt wird, ja. Das erstmal dazu was was es so,
was es so gibt. Ja, aber da gibt es halt auch auch bei.net gibt es noch depper und NH hybernate und so weiter es gibt also mehrere Versionen, typischerweise davon und ich muss mir als Entwickler genau angucken, was brauche ich, was will ich, wo sind da die Unterschiede gar nicht so einfach, da muss ich n bisschen Zeit investieren um das rauszufinden, ne? Willst du denn noch weiter in Secolize einsteigen? Weil ich hab jetzt verstanden, das ist das, was wir auch einsetzen.
Ja, musste ich gar nicht, weil ich würde eigentlich eigentlich n bisschen tiefer noch mal kurz einsteigen in wie die grundsätzlich funktionieren. Ist es eigentlich dann wurscht, ob es jetzt seculize ist oder hibernate oder irgendwie, weil jetzt diese, diese, diese ganz kleinen Details wie die sich jetzt die Frameworks an sich unterscheiden, damit wir dann auch über die Sprachen sprechen, das hat viel mit den Datentypen
¶ Funktionsweise
der Programmiersprachen zu tun, wie sie sich dann auch unterscheiden und so, insofern können wir uns von dem Abstraktionslevel lösen, dass wir über Seculize oder irgendeine. Spezifische Lösung sprechen müssen wir können aber noch mal n bisschen angucken, was da wirklich passiert und wie es typischerweise wie das Mapping tatsächlich passiert. Da kann man schon noch mal ne Taschenlampe dran halten, ja. OK. Dann machen wir das und dann besprechen wir das ganz mal ganz
abstrakt. Also wenn man also die, was ich ja gesagt hab, wir wollen die Welt der Tabellen, was haben wir denn entweder den Datenbanken, ja, also wir haben Tabellen, mehrere Tabellen und die Tabellen haben ihren Namen typischerweise ja sowas wie users, fang ich mal an ne oder products. Oder Machines oder so.
Ja, also wir sind noch mal in dieser Excel Welt ne ich hab ne oben Überschrift in Tabelle so und dann hab ich Einträge in der Tabelle das sind die Heroes das heißt wenn ich also bei users hab dann hab ich halt den den den Alfred Müller und die Saskia Meier und so weiter als Einträge in dieser Tabelle ja so und wenn ich jetzt wenn ich jetzt überlegen will wie komm ich denn aus dieser aus dieser Denke und aus diesen, aus diesen Worten,
aus diesem Vokabular in das objektorientierte Vokabular. Vom Programmieren muss ich überlegen, was habe ich denn da überhaupt? Ja, noch mal kurzer kurzer Checkup was haben was heißt objektorientierte
Programmierung? Wir hatten gerade vorher Gerrit und ich haben hier für euch, wir haben vorher philosophiert ob wir überhaupt schon mal eine OOP Folge gemacht haben Object Oriental Programming weil das ist ein ziemlich wichtiges Paradigma in der Softwareentwicklung und wir besprechen es eigentlich immer nur wenn wir es brauchen, vielleicht machen wir noch mal eine eine gesonderte Folge nur dafür ja, aber hier brauchen wir jetzt nicht alles davon, sondern
fast wie immer nur den Unterschied zwischen Klassen und Instanzen. Hab ich glaub ich schon n paar mal gesagt, aber ich sag es jetzt hier noch mal. Also wenn wir programmieren, dann versteht man in einer objektorientierten Welt sowas wie ne Klasse.
Ja und das schreibe ich auch im Code auf, ganz oft heißt das auch Claas, also wenn ich den Quellcode aufschreibe schreibe ich sowas hin wie Claas jetzt nehme ich die auch Users ja für die Nutzer und dann mach ich irgendwie ne geschweifte Klammer auf und irgendwie wieder zu und dann kommt in die Klasse kommen relativ viele Dinger rein ne das wichtige ist es gibt n Konstruktor bei manchen Programmiersprachen auch nen expliziten Destruktor was heißt das?
Ich hab später die Idee, dass die Klasse quasi eine Art Blaupause ist, eine Vorlage, ein Template für verschiedene, dann in Runtime lebende Instanzen dieser Klasse. Ja, und mit dem Konstruktor kann ich quasi sagen, was ist immer die initiale Konfiguration der initiale State, wie man auch sagt von der Instanz dieser Klasse, in dem Fall Users. Ja dann sag ich zum Beispiel ganz in ganz vielen Programmierspannen ist es irgendwie aus sowas wie my user.
Ist gleich new Users, wenn die klasse Users heißt und dann Konfiguration rein und dann kriege ich eine Instanz eines Users. Ja so, man hat sich jetzt überlegt, ich weiß nicht gerad ob du jetzt schon ne Idee hättest was wenn du jetzt weißt, dass du dass es gibt Klassen die sind quasi die Vorlage und Instanzen einer Klasse, das sind die Dinger die die Daten quasi halten und verschiedene es ist relativ liest schon relativ klar wie man das Mappt ja zwischen
den Tabellen und deren Rose. Ja, soll ich sagen. Ja, du solltest es sagen. Ich mal gucken ob das ob ich es ob ich es gut genug erklärt hab die. Die Klasse wird so ne Art Skima sein, also das Datenbankschema. Und während die Instanz halt tatsächlich n einzelner Eintrag dann ist also die die ist. Richtig, aber die Klasse ist dann quasi die Tabelle, um es ganz genau zu sagen.
Ja, also wir haben, wir haben ja bei der bei der Datenbank haben wir das Skima einer Datenbank um das jetzt gerade noch mal
aufzudröseln, wäre ja quasi die. Die ganzheitliche Struktur dieser Datenbank, und die kann ja aus ganz vielen verschiedenen Tabellen bestehen, im einfachsten Fall aus einer, aber es kann auch 445 sein, und die haben auch noch Beziehungen miteinander, und die Programmierklasse entspricht einer Tabelle ja typischerweise, ich würde sagen, das ist in allen Norms so, ja, also das das macht halt auch Sinn, weil die weil die Tabelle ist quasi die Tabelle, Users mit ihren
Einträgen ist quasi die Blaupause für jede Row. Und Instanzen dieser Tabelle Users sind dann tatsächlich das, was in der Tabelle, die also die Rose sind da so funktioniert es und so mapt es sich dann quasi. Das heißt, wenn ich jetzt zum Beispiel nen nen nen User rauskriegen will oder mehrere Users, dann bekomme ich quasi Instanzen von der Klasse in die Hand, willst du es noch einmal wissen?
Im objektorientierten Sinne kann ich auch auf Instanzen nicht nur einfach die Daten haben, da kann ich natürlich auch sagen, ja get Get Data mehr oder weniger, dann kommt quasi die Alexandra. Meyer oder Irgendsowas raus, wenn ich die unter den Users
hab. Ja wenn ich den Vornamen daraus hab, aber ich kann auch ganz viele Methoden aufschreiben, also Instanzen können Methoden haben und damit kann ich jetzt zum Beispiel Sachen machen wie die ganzen anderen Operationen, also Read, Update, Elite und so weiter und ich kann damit filtern und sofort, das wird dann, das wird dann im Code wird dann werden das quasi Methoden einer Instanz. Ja das ist eigentlich ganz spannend, ja. Ja, und ich nehme an, das ist ein bisschen mehr auch als
einfach. Also. Im Endeffekt schon create Read, Update Elite und so, aber auch Kombinationen daraus oder irgendwelche besonderen Formen davon. Ja genau, such mir alle raus die mit Vornamen kürzer 5 Buchstaben haben oder was auch immer. Ja, ja, ja, ja, ganz genau, das kann ich alles, das kann ich dann alles darstellen und im Prinzip werden dann meine Ganzen, also es wird alles gemapt ne, also wenn ich so ne where close hab, wenn ich zum Beispiel sage such mir alle raus
irgendwie die. Wo der Preis irgendwie höher ist als 50€ oder irgend sowas, dann schreib ich das ja auf im im SQL mit so einem Ware Statement und jetzt nehm ich doch da einmal
kurz. Wenn ich jetzt also zum Beispiel in einer javascript Welt bin Programmiersprachenmäßig und hab da irgendeinen Arm wie zum Beispiel Sequelize, dann schreib ich zum Beispiel user Punkt, also user wär dann quasi ne ne ne ne Instanz von dieser von dieser Row und dann sag ich Update und dann kann ich zum Beispiel sagen den den den Namen Maxi. Oder Irgendsowas Where und dann diese ganzen Statements, die schreibe ich aber hin als als
json typischerweise wenn ich im im javascript bin als json Objekte und ich baue quasi das SQL um und muss es dann aber auch neu lernen, dann werden quasi die SQL Wörter Keys von einem json Objekt und die Werte dazu die Values von einem json Objekt hatten wir ja auch viele folgen schon ja und ich ich stell das quasi alles als ja als als als Inhalte dieser Programmiersprache dar, ja. Das heißt aber auch, und jetzt komm ich mal kurz zum kurzen Nachteil, man muss also, wenn
man SQL kann und verstanden hat, ist es auch schön, weil weil SQL ist ja quasi, hatte ich vorher gesagt, standardisiertes Format um mit Datenbanken zu sprechen, also wenn man das gut kann, dann bin ich ja auch schon sehr generisch unterwegs. Ja und jetzt jetzt krieg ich aber auch so n Orden verpasst.
Ja und und die Entwickler dieses Ordens, die haben sich halt eigene Gedanken gemacht jetzt diese ganzen Details von den von diesen Abfrage. Problemen und so weiter und auch dieses Ganze. Es gibt ja auch Joints und so weiter ja, also SQL ist relativ komplex, auch ich kann relativ fette SQL Statements haben und die muss ich jetzt auf einmal neu verstehen als irgendwelche Objekte mit denen wir eine gewisse Struktur haben müssen innerhalb von meiner
Programmiersprache. Also da habe ich dann auch noch mal eine Lernkurve und ich darf da auch nichts falsch machen, weil sonst kommt halt Mist raus oder ich trag halt ein Mist in Datenbank ein, das ist dann immer blöd und bei Datenbank Aktionen muss man genau aufpassen was man da tut. Ja das sollte man. Muss man genau wissen, ne. Also insofern muss man sich so NCRM auch ne Weile angucken und es gut verstanden haben, damit es gut arbeitet, ja.
So NORM, ja. So NORM hab ich CRM gesagt, wahrscheinlich ja genau ich mein ORM da. Hätte ich jetzt sowieso ne Frage. Also OK, wir haben vorhin den Vorteil gesagt, ja, also ein Vorteil datenbankmigration Abstraktion von der eigentlichen Datenbank, aber es bringt ja auch ne Menge Aufwand erstmal mit sich, also beziehungsweise zumindest dann, wenn ich schon SQL kann oder beherrsche. Oder also in welchem Fall macht es denn überhaupt Sinn, das einzusetzen und welchen würdest
du davon abraten? Ja, also man muss jetzt gucken, genau, also anwendungsmäßig, jetzt muss ich gucken, wie will ich denn, dass mein Code aussieht, ja und was wen wen hab ich in meinem Team. Als Entwickler sind alle total fit mit SQL ja kann jeder Entwickler der Softwareentwickler richtig gut SQL lesen verstehen und auch ändern ja weil ich bin ja typischerweise nicht alleine in
¶ Wann lohnt sich ORM
einem Projekt, ja. Und wenn ich jetzt keinen Oron benutze, dann dann wird mein Quelltext halt einfach platt. Irgendwo SQL Statements drin haben. Ja und das das muss halt verstanden werden von Entwicklern und und gewartet werden.
Ja wenn ich jetzt aber Entwickler habe die die vielleicht gar nicht so sattelfest sind mit Tabellentechnik und SQL Krams aber sehr sattelfest sind im objektorientierten Programmieren und so weiter das sieht halt der Code ganz anders aus, der Quellcode, der hat nämlich kein einziges SQL Statement mehr, sondern.
Alles ist irgendwie in diese in in diese normale Welt, die halt sehr viele Entwickler verstehen, weil objektorientierte Programmierung ist halt das, was jeder Softwareentwickler kann, was ich überall mache, auch nicht nur wenn ich mit Datenbanken spreche und nicht ne Rest API baue und so, aber das ist alles aufgebaut, alles aufgebaut in Klassen und Instanzen und Funktionen dieser dann hab ich ne andere Leserlichkeit, dann hab ich n ganz anderes Aussehen meines
Codes, ja weil dieses ganze SQL Krams weg ist. Ja und jetzt muss man auch eine Sache sagen, das ist vor und Nachteil gleichzeitig, je nachdem. Wenn ich zwar so ein bisschen SQL kann, aber nicht so richtig gut, dann werde ich vielleicht abfragen hinschreiben zu Problemen, die nicht die nicht die besten sind.
Ja, denn das ist jetzt auch noch mal wichtig zu verstehen, SQL, also ich kann die gleichen Daten rausziehen mit verschiedenen SQL Statements, wenn die ein bisschen komplizierter werden, weil SQL ja auch wieder so eine Art Programmiersprache ist auf einem ziemlich komplexen Thema sage ich mal, kann ich bessere und schlechtere SQL Statements hinschreiben, ja.
Und die Orms, die generieren ja das ist ne Art Co Generation on the Fly und die die generieren ja die SQL Statements, das machen die auch, also es ist nicht so, dass die dass es jetzt irgendwie was die Datenbanken irgendwas von den Orms wissen, die Datenbanken kriegen ihre SQL Statements ja, also es wird SQL Statement generiert vom Orm und oft können die das sehr gut, die gibt es ja nicht seit gestern ja und dann hab ich so n klassisches Problem, das drück ich aus in in meiner
objektorientierten Welt und es kommt ne sehr hochoptimiertes
SQL sogar raus. Mit einer coolen Abfrage von der Datenbank, das dann sehr schnell ist und manchmal passiert aber genau das Gegenteil. Je nachdem wie ich diesen Code aufschreibe und je nachdem wie gut dieses ORM ist, kann es aber auch sein, dass das jetzt so einer der jetzt so ich sag ich mal hier so einen schwarzen Gürtel in SQL schreiben hat und ein Softwareentwickler der sagt Geh weg mit dem ganzen Abstraktionslayer es dauert mir halt alles lange, weil ich
verlier etwas Zeit sowieso, weil ich eine Abstraktion hinzufüge, weil da irgendwie noch ein Tool hin und her shuffeln muss und so. Der sagt dann, nimm weg den ganzen Ormenscheiß. Ich weiß schon, was ich für SQL Krams schreibe. Ja, und das muss unsere Anwendung Key ist, dass das absolut performant ist. Ja, wir haben eine riesige Tabelle, ich brauche, dass das
schnell ist. So ja kommt auf den Anwendungsfall drauf an. Ja also habe ich eine Firma die drauf basiert ist, dass ich riesige Datenbanken habe, wo ich krasse Abfragen machen muss, die hoch optimiert sind, mache ich es vielleicht lieber per Hand und weiß was ich tue habe krasse SQL Entwickler da. Hab ich aber ne Anwendung die auch ne Datenbank braucht unter anderem ja, aber vieles andere
noch so macht. Und ja ich hab halt auch n paar Juniorentwickler und so und ob das jetzt irgendwie ne 10 Millisekunden länger dauert oder nicht, weil auch gar nicht so viel Daten sind in der Datenbank scheißegal. Ja nehm ich halt n Arm in die Hand und ist alles schön abstrahiert und standardisiert und kann auch der nächste Juniorentwickler irgendwie gut verstehen, macht keinen Fehler gute. Unterscheidung also grundsätzlich generiert so n Arm SQL Statements automatisch.
Kann aber sein, dass es gar nicht das Perfekteste SGL Statement sozusagen auswählt oder generiert das Performanteste und dann hab ich einfach nur ne zwischenschicht. Und wie ist es denn bei uns? Also wenn es Seculize im Einsatz ist? Das heißt wir sind jetzt nicht so wahnsinnig drauf angewiesen, extrem viele und extrem performante, extrem performante um das noch mal zu betonen, Datenbankabfragen zu machen, oder wie ist das oder unsere
Nutzer? Vielleicht magst du mal erläutern wie es überhaupt eingesetzt wird, ja. Also unsere wir, jetzt muss ich noch mal kurz die Zuschauer aufgleisen, die haben ja, wir haben ja dieses Low Coat Tool quasi und wir wollen ja, dass unsere Anwender, die nicht softwareentwickler sind und damit sind wir schon gleich in der Kategorie, die ich gerade gesagt hab, die dann auch nicht
¶ Sequelize in Heisenware
Experten sind, in SQL hinschreiben. Na sicherlich ne. Sicherlich nicht. Ja, die wollen wir aber enablen trotzdem mit Datenbanken zu interagieren, ja, und es ist jetzt auch so, dass man, das muss man, das weiß man jetzt nicht, wo man hier nur zuhört und es noch nicht ausprobiert hat, aber.
Unser Abstraktionslevel wenn wir, wenn wir unsere Zuschauer, Zuschauer, sag ich schon mal unsere Kunden, unsere Nutzer quasi probieren lassen, dann sind das Funktionen, ja Funktionen und wir verstehen auch Klassen und Distanzen. Das heißt, wir sind eigentlich auf der OOP Welt, was wir nach außen hin als Interface zur Verfügung stellen, im Low Code noch weil du du machst halt du codest das nicht, du trackst n
dropsty quasi. Ja, das heißt, für uns liegt das total nahe, die SQL Tabellenwelt. Um zu mappen in die objektorientierte Welt.
Ja, und dann ist es auch ganz einfach, weil dann hab ich, ich hab dann so Funktionen wie create table und dann pack ich da n bisschen Jason rein ne oder get table ja dann hol ich das raus und dann kann ich in den Argumenten von der Funktion kann ich noch n paar Filter setzen, ja dann heißt es bei uns halt einfach mit und wir haben ja schon mal gesagt wir machen alles n Jason da steht da einfach where Doppelpunkt und dann geb ich da irgendwas ein ja und dann funktioniert das schon
ganz geschmeidig ja und und wer macht das für uns unten liegend sequelize ja. Und man kann dann in die Logs gucken und dann sieht man wieder SQL Statements raus purzeln und die Datenbanken entsprechend abfragen. Ja. OK, das heißt, in einer von unseren Nutzern entwickelten App mit unserer Plattform entwickelten App ist das irgendwie mit Verwurschtelt und und und damit drin in dem Fall, dass sie halt unsere eingebaute oder oder integrierte Postgress Datenbank an der Stelle
benutzen. Ja, gibt ja auch Nutzer bei uns, die die Apps ohne relationale Datenbank bauen und mit einer Zeitreihen Datenbank oder was auch immer. Genau. Sorglich vielleicht mal drüber sprechen, ob es da so was ähnliches auch gibt. Aber angenommen, die relationale Datenbank ist im Einsatz, dann ist das da auch mit drin. So ist es.
Wir versuchen quasi das nicht, dass wir unsere Nutzer auch noch an so n an so NSQL Krams sich gewöhnen lassen müssen und es würde auch nicht passen vom Abstraktionslevel ja weil das Problem ist ja, wenn du auch wenn du NSQL Statement machst und dann dann sind ist ja das was da rauskommt ist ja auch sehr unterschiedlich, je nachdem was du in SQL da abfragst. Ja und das das müsstest du ja auch wieder in irgendeinem.
In irgendeinen Objektmappen und so weiter deswegen passt das einfach nicht so. Also wir, also wir wollen einfach gleich diese Ebene überspringen und und und.
SQL ist halt einfach, wieso ne Art Protokoll die Datenbanken und so weiter das das muss schon irgendwie passieren so weil die Datenbanken verstehen das Halt nur ja, aber wir bleiben halt quasi einheitlich irgendwie auf dieser objektorientierten Welt wie als Lowcode, aber auch das könnte jetzt auch ne andere Firma sein, wo ich jetzt auch gesagt hatte die die setzen den Raum ein um halt gleich in dieser Codewelt zu bleiben und jetzt sag ich mal eine Wahrheit, es gibt es gibt natürlich Leute.
Ich selber habe auch mal eine Anwendung geschrieben in meinem vorigen Leben. Jetzt nicht die Heisenware Plattform und so weiter wo ich mich entschieden habe auch direkt also SQL Sachen in den Code zu schreiben und es so zu machen, da gibt es auch kleine Unterstützungstools so, aber das sind dann halt keine Object relational mappers sondern einfach Tools wo ich dann halt SQL Strings machen kann und so ich muss sagen ich finde es mit mit den Orms schon ganz cool,
weil am Ende des Tages wenn man sich dann wieder wenn man sich auf die Finger guckt und sieht was man da geschrieben hat. Als Entwickler, wenn ich SQL Statements Losschieße und die da
Pläne in meinem Code stehen. Es bleibt mir nichts anderes übrig, weil ich bin ja in dieser Welt und ich will ja typischerweise diese Datenbankeninformation auch weiterleiten an der Rest APR oder ich muss ja irgendwie was damit machen ne also fange ich sowieso das an das wieder irgendwie umzuklemmen in Objekte ja und in Klassen und Instanzen und so weiter und dann mache ich quasi nen Poor mans orm ja was
vielleicht? Nicht so umfänglich ist und nicht alles kann so im kleinen Ausschnitt davon, aber doch irgendwie so was wie ich muss es ja sowieso mappen. Ja, und jeder mappt es dann irgendwie und irgendwie anders so weil und dann dann kann dann finde ich, dann kann man auch wenn das gut und schlank ist, dann kann man auch gleichen Ohren nehmen, denn da haben sich Leute sehr viele Jahre lang sehr gut überlegt, wie das grundsätzlich gut zu machen ist.
Ja, ohne dass ich da irgendwie an an den an den Limit komme oder ne Sackgasse da reinlaufe, wo es irgendwie dann auf das eine Konzept nicht mehr in das andere passt, ja. Ja, ist so n bisschen meine Erfahrung.
¶ Cache und andere Vor- und Nachteile
Ja, und jetzt sag ich noch n Nachteil dazu, man kann auch Kopfschmerzen kriegen als Entwickler, weil ich einfach noch ne zwischenebene hab wo auch viel passiert und wo auch manchmal was n bisschen in der schwarzen Box passiert ja weil diese Orms sind manchmal auch so gut, dass die anfangen zu
cashen. Ja jetzt das ist auch wieder Fluch und Segen ja ich mach zum Beispiel 2357 gleiche Abfragen an die Datenbank, weil ich zum Beispiel ganz viele Klienten hab, die das gleiche wissen wollen kurz hintereinander, ja
jetzt. Jetzt kann man sich überlegen, muss ich jetzt wirklich 57 1020 abfragen, wirklich an die Datenbank durchschleifen, um die Daten zu holen oder nehme ich jetzt sowas wie n Cache ja und n Cache in der Informatik ist ja einfach ich, ich benutze halt einfach meinen Speicher den ich hab meinen Arbeitsspeicher und davon hab ich relativ viele Leute auf der Hardware und sag na ja da kommt irgendwie ne Abfrage, die sieht relativ standardmäßig aus, die Cache ich
mal ja also das Ergebnis ja. Und das natürlich innen drin relativ kompliziert. Ich muss dann aufpassen, dass das auch keine schreibende Aktion zwischendurch kam.
Denn wenn ich die Datenbank verändere, den Inhalt, dann ist der Cache invalidiert ja, weil das hab ich ja vorher quasi gespeichert, aber wenn das nicht so ist, ja dann kann ich diese 20 abfragen direkt zurückschicken und sagen, Ah die hab ich schon beim ersten Mal hab ich es abgefragt und mir gemerkt was das Ergebnis ist und die anderen 19 ihr kriegt die direkt alle zurückgeschickt und ich hab die Datenbank gar nicht gefragt weil ich weiß die Datenbank hat sich nicht
geändert. Innerhalb dieser 20 Abfragen und ihr kriegt das direkt zurück. So, und das macht n Arm halt
auch. Ja und das ist auf der einen Seite cool, weil ich jetzt auf jetzt krieg ich aber Performance hin, ja die ich die ich sonst hätte per Hand tippen müssen, das muss ich erstmal alles tippen wenn ich das nicht hab ja und auf der anderen Seite denkst du dir so oh und wenn du das debuggen willst, dann denkst du wieso kommt da jetzt nur ein SQL Statement, wo sind die anderen 19 und so weiter und sofort ja als Entwickler weißt du wenn du so richtig tief dann reingucken
willst versteht man manchmal nicht. Und wenn man es falsch benutzt hat und hat n Bug oder irgendwas verhält sich komisch, brauchst du ewig lang um zu verstehen was ist da los, wer hat das kaputt gemacht, wer ist das om irgendwie komisch oder hab ich das irgendwie komisch bedient
oder was ist hier überhaupt los? Ja also dann quasi dann noch mal wenn ich n Problem hab mit so einem Om wo irgendwas nicht performant ist dann zu verstehen was ist es und es hinzufixen das dauert dann halt manchmal sehr viel länger und weil ich halt 2 Sachen angucken muss als wenn ich es jetzt direkt im SQL hingeschrieben hätte ja da weiß ich ja was los ist oder?
OK, das heißt so n Orm könnte auch mal so weiß ich nicht größere Datenobjekte oder komplette Datenobjekte im Arbeitsspeicher parken, wenn es das für richtig hält, sag ich jetzt mal. Macht es auch. Ja, genau so ist es genauso passiert das ja, es parkt es ja. Aber du sagst kein Thema, weil Arbeitsspeicher ist ja eigentlich genug vorhanden. Also so n so n Ressourcenproblem gibt es nicht, aber auf der anderen Seite, wenn man das hätte, also wenig Arbeitsspeicher weiß ich.
Gibt es ja, soll es ja auch geben, oder? Oder man braucht den anderweitig.
Das kannst du alles konfigurieren, gerät was die machen, ja wieviel die Cashion und so weiter sind dann wieder Konfigurationen von Deinem Framework und so weiter das das kannst du alles machen, aber hier auch die Ansage wir haben wir haben hier n Abstraktionstool das heißt wenn ich jetzt also auf auf einer Edge bin oder irgendsowas hab jetzt hier ich sag mal ich bin auf dem Rasbi oder Irgendsowas und will da ganz dünn was aufsetzen, dann nehm ich
wahrscheinlich keinen Arm in die Hand ja weil braucht halt mehr CPU braucht halt im Schnitt mehr Memory und so weiter und wenn ich jetzt so n ganz engen Use case hab, wo ich aber da implementier ich dann ja auch keine Webanwendung auf dem Raspi. Ja also da mach ich dann vielleicht hab ich ne kleine Datenbank, ne SQ Lite oder irgendsowas wo ich n paar konfigurationsdaten Speicher ja dann da würd ich jetzt auch kein Om einsetzen so ja man muss halt
genau angucken wo setzt man es ein und wo nicht aber es also man kann es schon mal kennen ja dass es sowas gibt das ist so 1 oder 0 ja to om or not to om sag ich mal ja aber das ist das nur ziemlich weit früh entscheiden aber wenn man einmal sagt OK ich geh mal mit so einem om ins Bett. Dann kann man da viel, viel, viel Entwicklerzeit sparen, sag
ich mal. Wenn wenn man es denn wenn man es dann gut durchzieht, ja ich hab auch ein bisschen Kopfschmerzen gehabt mit seculized, Wir hatten auch hier und da Probleme und ich hab lange gebraucht zu verstehen was da los auch so mit Synchronisation und so und hier haben wir auch wieder so, das hatten wir auch schon mal das Thema Single Source of Truth ja und wenn wir jetzt dieses Cashing haben, ich sag es noch mal kurz, ja wir haben die
Datenbank ist die Single Source of Truth Punkt das ist was da drinne ist. Zu jeder Millisekunde ist das was zählt ja. Und unser Orn versucht hat, durch dieses Cachen, das ist quasi noch mal ein Abbild dieser Datenbank, ja, das ist das, was ich sehe als Entwickler.
Ich sehe ja nicht die Datenbank, sondern ich sehe den das, was das Orn mir zurückgibt, ist quasi jetzt meine neue Wahrheit und wenn wenn die Synchronisation Synchronisation zwischen diesen beiden nicht gut funktioniert, habe ich komplett verloren, ja weil dann dann weiß ich nicht mehr ganz genau, was gebe ich denn jetzt zurück? Ja, ist das jetzt irgendwie alter Cash oder was oder wie irgendwo ist die Datenbank?
Das, das muss man einmal hinkriegen, da muss man einmal als Entwickler auch die Sicherheit haben. Ja, ja, das ist schon alles richtig, was das Omnia da so
macht. Ja, und dann habe ich auch, und das sage ich noch mal, dann habe ich auch ganz viele andere Vorteile, weil ich zum Beispiel so es gibt, du hast schon mal von SQL Injection gehört und so, das ist ein Riesenproblem in der Sicherheitstechnik, dass wenn ich SQL Strings erstelle und mir meine Nutzer da Ösen, Schadcode da unterjubeln wollen. Dann kann man, dann kann man quasi, wenn man so ein bisschen weiß, wie das funktioniert, mit diesem SQL aufbauen.
Mit der Code Generation sag ich mal, dann kann man und das nicht sehr gut selber gemacht hat, kann es sein, dass man quasi Datenbanken laggt, dass man Daten rausholen kann, die man hätte eigentlich gar nicht rausholen dürfen an dieser Stelle und auch hier sind orwoms cool, weil das haben die natürlich alles auf dem Zettel, ich frag ja quasi schon an in so einer abstrahierten Welt und was da hinten rauskommt ist auf jeden Fall ein SQL, was nicht. Gehackt sein kann, konnte
vorher. Ich kann da keine SQL Injection wie man so schön sagt erfahren gegen solche Dinger. Es ist halt auch Sicherheitsmäßig auch noch mal n Thema. Ja und auch deswegen noch mal. Also wenn wir wenn wir Locode anbieten, dann ist das genau das richtige Level. Ja du willst das du willst ja die ganzen Sachen wegnehmen. Könnte man wahrscheinlich wieder
entgegenhalten. Da ist ne weitere Komponente in deinem System, was wir dann angriffsfektor mehr oder wie auch immer ne. Aber das Thema SQL Injection ist damit Weggefedert wie sagt man? Abgemüdert. Abgemüdert danke ja weggefiltert OK, prima du was, wir hatten gerade oder ich hatte ganz ganz kurz noch die die Time Series Database erwähnt und da gibt es ja auch noch die die No SQL Datenbanken. Ja wie ist es, wie ist es denn bei denen gibt es da irgendwie verwandte Sachen oder ist das
gar nicht so n Thema? Ich versuch das mal kurz in den in den Kontext zu bringen, also die die Time Series Sachen. Das ist im Prinzip auch nicht so richtig SQL, sondern auf dem eigenen, auf dem eigenen Zähler. Und die haben typischerweise,
¶ Timeseries und NoSQL
also bei denen ist quasi wie soll ich sagen, da ist die die Datenbanktechnologie bringt quasi die Interfaces mit für die Sprachen, die haben so eine Art Orm als Adapter, aber quasi an der Datenbank dran, also der Hersteller der Datenbank, der hat sich quasi für die verschiedenen Programmiersprachen schon Interface überlegt, was auf einem auf einem OOP Konzept basiert. Das Orm ist ja quasi ne Third Party Sache.
Ja ich hab also meine Datenbankenhersteller, die machen meine Datenbanken und die sagen OK ich mach SQL, Mach nach Standard ISO hast du nicht gesehen so und dann gibt es die ganzen Programmiersprachen ne die machen halt ihre Programmiersprachen nach blablabla und die Orms über die wir heute jetzt viel gesprochen haben sind quasi third Party also von externen Nummer von dritten generierte Frameworks, manchmal gehören die auch ganz dicht zur Sprache hab ich gesagt
bei C Sharp ja typischerweise ist es so ja und bei den bei diesen Spezialdatenbanken wie zum Beispiel Influx. Die kommen halt mit einer Abfragesprache selber, die halt gut ist für alle möglichen Programmiersprachen.
Das ist halt dicht an der entwickelt an der Datenbank Technologie dran und die No Secrets Kollegen, die sind deswegen no secret weil sie genau keinen Secret also du brauchst keine SQL mehr dazwischen, das heißt die hast du die die sind sowieso, die verhalten sich sowieso wieso n Ohr ne und manchmal gibt es da auch überhaupt noch so nen billo
omder davor oder irgendwie. Aber da bist du als Coder sowieso so unterwegs, dass du, dass du das sowieso auch in Klassen und Instanzen ausdrückst, was du da machen möchtest mit der Datenbank. Und da wird halt nie irgendein SQL generiert, weil es das Halt nicht braucht von der Datenbanktechnologie. Aber das fühlt sich quasi dann auch an vom Programmieren, als würdest du ein OM benutzen, ne um das mal kurz einzuordnen für wie es vom Softwareentwickler
aussieht, ja o. K was muss man noch wissen über OMS? Was man noch mal kurz über OMS wissen muss, ist halt oder was man da kurz philosophieren könnte. Und ich weiß nicht, wo der Trend
dahin geht. Wir haben ja immer das das disruptive Thema KI, ja die, die ändert ja alles was da gewesen ist und alle alles was man so als Softwareentwickler kennt und wo man viel Arbeit reingesteckt hat und langfristig und so weiter können ja einfach durch KI schnell abgelöst werden, ne und ich muss beweglich so im halben Satz sagen, dass dass man
¶ Einfluss von Generativer KI
jetzt diese ganze orm Thema auch noch mal bedenken muss hinsichtlich von KI, weil ich kann natürlich einer KI auch
mein datenbankproblem schildern. Und die KI auffordern, mir extrem potente SQL Statements rauszulassen und damit damit sind wir jetzt von dem, was ich gesagt hatte mit dem Use Case so. Entwickler können irgendwie nicht gut SQL hinschreiben und so weiter ja dann lass ich halt die KI das SQL hinschreiben ne und ich will den den Koffer nicht aufmachen so ja wenn das das funktioniert natürlich auch nur dann wenn die KI das gut gemacht hat und irgendjemand
muss wieder gucken hat die KI ist das auch wirklich n gutes SQL Statement und so weiter ja aber das ist natürlich einfach noch mal ne andere Dimension. Die wir nicht diskutiert haben heute. Und ich möchte es jetzt auch nicht diskutieren, aber die man sich angucken muss, wenn man es neu entscheidet, ja da hab ich nämlich den dritten Fakt wo ich sage Ohrm nicht Ohrm und KI generiertes SQL und dann bin ich irgendwo das was irgendwie so ne Zwischenlösung ist.
So ja und was da jetzt das Beste ist für mich als für meine Anwendung die ich da machen will weiß ich nicht so genau, muss man genau gucken, ja man muss aber die KI als Powerpaket zum SQL herstellen auch heute in Betracht ziehen, seriös ja das kann ich einfach weglassen, ja. Und das ändert vieles. Das gilt aber ganz generell, oder?
Ja genau, aber überall irgendwo spezialisiert Sprachen oder oder Technologie habe die man vielleicht nicht perfekt beherrscht, aber KI sie zumindest gut beherrscht. Oh perfekt, keine Ahnung. Ja, das ist genau. Und wenn, wenn man es so n bisschen sagen will, also man hat ja, warum gibt es das alles ja so so, also warum haben wir
überhaupt Tools und Entwickler? Ja wir, wir bauen ja, wir haben ja Layer von Layer von Layer, von Layer um uns als Entwickler als Menschen das Leben n bisschen einfacher zu machen. Ja, also wir wir, wir machen ja so Tools, die die machen irgendwas, die sind dann etwas langsamer und machen irgendwas n bisschen abstrakter und generischer wofür damit wir es schneller, einfacher, übersichtlicher, sicherer nutzen können, weil einfach diese ganze riesige Dimensionalität des
Problems runterreduziert wird. So, ja, das haben wir, das haben wir ja jetzt 4050 60 Jahre gemacht, und da gibt es richtig coole Tools, ja, und die sind von Menschenhand erschaffen, getestet, kreiert, also das sind einfach Stunden. Wochen, Monate, Jahre an Entwicklungszeit und Hirnschmalz
reingegangen. Ja, und plötzlich werden diese Tools in Frage gestellt, weil wenn denn was ist KI ja, wenn wenn wenn ich KI kann halt dann quasi auf der niedrigsten Ebene schnell alles das überbrücken was diese Tools gerade für mich machen und zwar aber es aber es doch quasi problemspezifisch
lösen. Ja ich sag ja nicht der KI mach mir n neues orm, sondern ich sag der KI hier ist meine Datenbank, die sieht so aus, hier ist mein spezielles Problem, das sieht so aus, ja. Und jetzt mach doch mal nur für mich hochoptimierte ein hochoptimiertes Interface, was ja nicht nur ein SQS sadment sein muss, ja, aber das Ganze, die ganze AP gegen diese Datenbank zeigt halt der AP, der der der KI und jetzt macht die KI ohne Tooling eine direktes
was wir, was wir sonst sagen würden Wegschmeißcode ja und und das ist total viel Arbeit, weil das alles ein Kleinheitlich da quasi bis runter auf das SQL Level hingeschrieben werden muss. Ist ja der AKI, aber Wurst die ich mein Wir wissen ja alle das da dauert 5 Sekunden dann hat
das das dahin geklatscht. Ja und und das muss ich halt in die Diskussion mit jetzt mit reinnehmen, weil jetzt spart sich die KI diese ganze Abstraktion dieser Tools dazwischen, ja ist es aber vielleicht trotzdem hochoptimierter SQL hochsicher weil die KI weiß was sie tut, im besten Fall ja und jetzt hab ich ja jetzt hab ich halt irgendwie so ne so nen direkten Weg das doch irgendwie sehr schnell zu machen ohne dass es krasser Aufwand ist so. Ich muss mir aber diese ganzen Fragen stellen.
Wer reviewt die KI? Ja und wenn da mal was kaputt ist, wer weiß es dann noch ja zu reparieren und so weiter und sofort ja, aber also trotzdem muss man das halt sich irgendwie. Man kann einfach dieser Frage nicht ausweichen, man muss sich damit als Entwickler heute mit allen möglichen, da hast du recht, das hat mit auch nichts zu tun, das ist für alle Tools relevant. Ja wo KI jetzt gerade halt einfach mal schnell was machen kann, ne. Ist ja total spannend das an so
einem Beispiel zu diskutieren. Ich meine das ist sowieso n Thema was ich noch mal gerne für uns auf die Podcast Agenda nehmen würde, Vibe Coding und und was kann ich an welcher Stelle macht zumindest aus aus deiner aus unserer Sicht Sinn wie einzusteigen aber jetzt auf auf das Beispiel bezogen so n Orm ist was generisches so letzten Endes also zumindest für eine Programmiersprache dann und dann eine Datenbank oder nee alle Datenbanken international genau während der jetzt.
Generierte KI generierte Adapter nichts generisches ist ja, das heißt du hast da rundherum auch keine Community, sondern das ist dein Adapter, deswegen ist es auch wegwerfprodukt, du kannst den einfach wegwerfen so. Ja. Und und du musst den halt selber auch warten und und und verstehen und so weiter und sofort. Das stimmt, aber du hast natürlich und jetzt da n paar Vorteile von diesem KI Ding. Ja du hast natürlich kein Dependency in deinem Code, du musst dich nicht.
Du musst nicht lernen, wie dieses blöde Orm Ding funktioniert und was die Entwickler sich da gedacht haben. Was Best Practices und Design und so weiter ja, du hast ganz schlanken Code, weil das einfach durchimplementiert ist von der KI und so weiter und sofort.
Es hat halt auch klar du musst den Code dann auch warten, die die KI gemacht hat, aber das sind ja vielleicht das ist vielleicht nur nen Hundertstel der Zeilen Code die halt so n fettes orm Ding was halt alles und Gott an der Welt irgendwie können müsste wenn du es bräuchtest ja. Und die KI macht das Halt für dich nur das was du brauchst. Ja, und das ist dann vielleicht irgendwie, wo du, wie das jetzt
zustande gekommen ist. Aber es ist dann vielleicht tatsächlich und weil die Zahlen Code ja hingeschrieben werden, kannst dich ja angucken, ist ja open Source was die KI macht, mehr oder weniger ja und ist vor allen Dingen dann auch deins. Ja das kommt ja auch noch mal dazu.
Du musst jetzt, wenn du jetzt zum Beispiel n arm hast, wo du jetzt ne Open Source Lizenz dran sagst, die dich zwingt deinen ganzen Kram Open Source zu machen, ist vielleicht auch blöd so nimmst halt die KI und lässt es halt machen es deinen Code. Ja heute ist ja noch so, dass Copyright mäßig. Ist ganz ernst ist, ob du das geschrieben hast oder die KI das gemacht hat. Ist ja Wurst.
Das ist genau das gleiche, also das ist schon sehr sehr, da pieksen wir natürlich n sehr spannendes Thema rein. Ne, ja, da könnte man auch jetzt länger philosophieren. Könnte man genau so haben wir nicht, wir wollen ja bei bei der Brücke zwischen Datenbank und und Code oder objektorientierten Code bleiben. Ich glaub, das haben wir geschafft heute. Das das war, das war mir noch mal das Anliegen, einfach das darzustellen, dass es solche Tools gibt und warum es die gibt und was die machen.
Und dann gibt es halt die Leute, die das Nutzen und die nicht, also weil zum Beispiel hier mein Nachbar kurze Anekdote, wir haben ganz oft mal ne Diskussion, mein Nachbar der macht auch Softwareentwicklung kleiner Unternehmer, also stehen wir hier auf dem Flur und Fluchen wieder über unsere OMS, so dass wir, das wäre wie AH, da war irgendwas im Cash und so hab ich nicht gemerkt und hier und war jetzt hab ich endlich den Fehler gefunden so solche Diskussionen entstehen hat wo
man n OM nimmt. Ist auch spannend. Ja, auf der anderen Seite ist es natürlich auch, ist man einfach zügig beim beim entwickeln ne. Der Büronachbar muss wahrscheinlich, der Büronachbar steht ja der Büro, wir stehen nicht im Garten, ne ne ja ne ja. So schlimm, so so schlimm, so so nördlich wohne ich auch nicht das.
Ja, cool pass auf dann dann machen wir heute mal ne Folge unter einer Stunde. Ja und machen den Sack zu und sagen ja danke Euch fürs Zuhören Burkhard, auch danke dir wieder für n cooles Thema ich find auch wenn das wenn das Nieschig ist vielleicht dann. Schaffen wir es trotzdem oder du schaffst es trotzdem, das ja auf irgendwie n generisches Level zu bringen, also dass man da seine seine Learnings draus ziehen kann. Von daher ist das schon gut,
wenn wir das machen. Ja, und es gibt so viel Passwort, Bingo. Ja, wenn jetzt wenn der nächste jetzt mal sagt irgendwie om, dann weiß man halt, ist nicht irgendein komischer Wurm oder irgendwas, sondern ist das jetzt irgendwie das ist n om komisches getönt so. Aber da musst du die ganze Zeit dran denken. So wie. Du die ganze Zeit om sagst du. Brauchst Gott. Murmel om ja ist schon ganz
lustig diese ganzen. 3 Liter Akronym oder genau, aber das ist ja auch ein bisschen die Idee von unserem Podcast, dass wir mal ein bisschen Licht ranbringen an diese ganzen, da wird ja auch viel Schindluder getrieben und Rumgeschmissen mit dem Krams und man weiß es nicht so ganz genau und jetzt weiß man schon mal ziemlich genau, was so ein Orden wirklich ist so. Ja, und der Werkzeugkasten ist wieder ein Tool größer geworden, genau, den man vielleicht so hat.
Cool, dann danke noch fürs Zuhören noch mal und wir hören uns in 2 Wochen bis dahin alles gute. Tschüss aus Hamburg. Einfach komplex wird präsentiert und produziert von Heiseware. Wir freuen uns auf deine Fragen und [email protected] vielen Dank fürs Hören dieser Folge bis Dienstag in 2 Wochen und Tschüss aus Hamburg.