Slide 1

Slide 1 text

dailyfratze.de 
 Michael Simons @rotnroll666 Düsseldorf, 15. Februar 2018
 INNOQ Vortragsevent 2018

Slide 2

Slide 2 text

2 dailyfratze.de Señor Developer !

Slide 3

Slide 3 text

Senior Consultant 2 dailyfratze.de "

Slide 4

Slide 4 text

2 dailyfratze.de Der Typ, der was mit SQL und Spring macht #

Slide 5

Slide 5 text

DailyFratze™ - Die Idee 3 • Entstanden 2005 zur „Hochzeit“ der Blogs • Vor dem „Selfie-Trend“ • Tägliches Fototagebuch mit albernem Namen • Private Blogplatform • Kommentare • Musik-Tracking dailyfratze.de

Slide 6

Slide 6 text

Integrationen 4 • Twitter • Dropbox • Foursquare / Swarm • (Facebook) dailyfratze.de

Slide 7

Slide 7 text

Nach 13 Jahren Laufzeit Stand heute 5 • ~100 Benutzer • Davon ~30 öffentlich • > 70.000 Bilder • > 50.000 Kommentare • > 20.000 Blogposts • ~150.000 „Scrobbles“ (Log eines gespielten Liedes) dailyfratze.de

Slide 8

Slide 8 text

Drei Versionen 6 • 2005 bis 2006: PHP Skript • 2006 bis 2011: Ruby on Rails • 1.1 bis 2.3 • Ab 2011: Spring ab 3.0 bis aktuell 4.3 dailyfratze.de

Slide 9

Slide 9 text

Variablen und Konstanten 7 • Drei Technologiestacks, teils drastische Unterschiede im Programmiermodell • Das Datenbankmodell ist konstant geblieben! dailyfratze.de

Slide 10

Slide 10 text

Datenbankzugriff 8 • PHP: Selbstgeschriebenes DB-Tool • Ruby on Rails: Active Record • Spring: Hibernate ORM dailyfratze.de

Slide 11

Slide 11 text

Datenbankzugriff 8 • PHP: Selbstgeschriebenes DB-Tool • Ruby on Rails: Active Record • Spring: Hibernate ORM dailyfratze.de

Slide 12

Slide 12 text

Datenbankzugriff 8 • PHP: Selbstgeschriebenes DB-Tool • Ruby on Rails: Active Record • Spring: Hibernate ORM dailyfratze.de

Slide 13

Slide 13 text

Mein Hintergrund: Dinge auf Datenbank-Technologie bauen 9 dailyfratze.de

Slide 14

Slide 14 text

10 1. Konzeptuelles Datenbankschema
 (Entity-Relationship-Diagram) 2. Logisches Datenbankschema
 (Tabellen, Spalten, Datentypen) 3. Physisches Datenbankschema
 (Konkrete Implementierung innerhalb einer spezifischen Datenbank) dailyfratze.de In drei Schritten aus der realen Welt zum Datenbankschema

Slide 15

Slide 15 text

11 Entitäten in dailyfratze.de dailyfratze.de

Slide 16

Slide 16 text

Relation != Beziehung zwischen Entitäten • Edgar F. Codd erfand in den 1970er Jahren das „relationale Model“ • Dabei wird eine Tabelle als Relation bezeichnet und jede ihrer Zeilen als Tupel der Spalten ‣ Relation im Mathetischen Sinne, es werden keine Beziehungen zwischen Objekten gespeichert 12 dailyfratze.de Edgar F. Codd

Slide 17

Slide 17 text

SQL: Structured Query Language • (U.a.) eine Sprache zur Abfrage von Datenbeständen eines relationalen Datenbanksystems • Basiert auf relationaler Algebra • Relationen werden dabei zu neuen Relationen verknüpft ‣ Beziehungen zwischen Dingen entstehen durch Abfragen 13 dailyfratze.de

Slide 18

Slide 18 text

14 Inklusive Transklusion ;) dailyfratze.de Alle Bilder eines Jahrestages

Slide 19

Slide 19 text

15 dailyfratze.de Im selben Alter

Slide 20

Slide 20 text

16 dailyfratze.de „Charts“

Slide 21

Slide 21 text

16 dailyfratze.de „Charts“

Slide 22

Slide 22 text

16 dailyfratze.de „Charts“ https:/ /speakerdeck.com/michaelsimons/datenbankzentrische-anwendungen-mit-spring-boot-und-jooq-3

Slide 23

Slide 23 text

17 Reisetagebuch dailyfratze.de

Slide 24

Slide 24 text

18 dailyfratze.de Twitter-Archive • Suchindex auf Basis von Lucene • basierend auf JPA-Entitäten • plus Hibernate-Search • Mehr:
 http://info.michael-simons.eu/ 2016/09/06/hibernate-search-and- spring-boot-simple-yet-powerful- archiving/

Slide 25

Slide 25 text

Warum nach 5 Jahren von Rails auf Java / Spring gewechselt? 19 • Kein einfacher Migrationsweg von Rails 2.3 auf 3.x • Zeitgleich beruflich nach Ablösetechnologien von Oracle Forms Client / Server gesucht • Alternativen: • Grails • J2EE (Das hieß damals so) • Spring dailyfratze.de

Slide 26

Slide 26 text

Warum Spring? 20 • Flache Lernkurve • Hervorragende Dokumentation • Offene und freundliche Community • „Embracing the web“: Spring MVC als Action- und nicht als Component- oriented framework • Integration von Standards (JPA, JavaMail uvm) dailyfratze.de

Slide 27

Slide 27 text

100% Java 21 • Keine C-Extensions oder externe Programme! • Verzicht auf RMagick / ImageMagick • ImageResize4J (Closed-Source) „high-quality image resizing“
 http://www.imageresize4j.com • Exif-Daten mit dem „Metadata-Extractor“
 https://github.com/drewnoakes/metadata-extractor
 com.drewnoakes:metadata-extractor dailyfratze.de

Slide 28

Slide 28 text

Und was hat es gebracht? 22 • Ich war 2008 mal im Radio (1-Live) $ • Viele neue Freunde im echten Leben • Sowohl Benutzer von dailyfratze.de inklusive Familie… • …als auch in der Java, Spring und SQL-Community • Viele Dinge neben dem Produkt- und Projektgeschäft gelernt • Und gewinnbringend eingesetzt! dailyfratze.de

Slide 29

Slide 29 text

23 dailyfratze.de Bücher • 2015 Peter und Gernot kennen gelernt • Arc42 by Example • Ab 2017: Spring (Boot) Buch geschrieben

Slide 30

Slide 30 text

24 dailyfratze.de Ausblick • Irgendwann mal was mit „Kunst“ machen • Zu PostgresQL migrieren • Version 4 mit 3 bis 4 SCS-Vertikalen schreiben: • Core (Bilder, Blogs) • Musik • Twitter-Integration