Persistenz-Frameworks in verschiedenen Programmiersprachen. von Amir Chehade, Malik Dirim und Luisa John

Ähnliche Dokumente
Präsentation mongodb. David Wild

Vorlesung Service and Cloud Computing" 7. Cloud Computing Platform as a Service (PaaS)

Inhaltsverzeichnis. Bernd Müller, Harald Wehr. Java Persistence API 2. Hibernate, EclipseLink, OpenJPA und Erweiterungen ISBN:

Kapitel 14. Objekt-relationales Mapping (ORM) mit Hibernate bzw. Java Persistance API (JPA) Prof. Dr. Wolfgang Weber Vorlesung Datenbanken

als Alternative zu REST Manuel

NoSQL Datenbanken EIN ÜBERBLICK ÜBER NICHT-RELATIONALE DATENBANKEN UND DEREN POTENTIALE IM ALLGEMEINEN UND IN DER INDUSTRIE

Datenzugriffskomponente mit JPA 2.1

Migration der Datenbankzugriffsschnittstelle in Client-/Server-Systemen

Deploy Early oder die richtigen. Zutaten für Ihren Relaunch

Cloud-Provider im Vergleich. Markus

Eclipse und EclipseLink

Thomas Matzner Berater für Systemanalyse Couchbase. Java User Group München

Ruby on Rails Einführung & Überblick

Ruby on Rails. Thomas Baustert Ralf Wirdemann Alternative zur Web-Entwicklung mit Java?

Grundlagen der Web-Entwicklung

Ruby on Rails. Im Rahmen des Seminares Programmiersprachen SS09 Steffen Schildknecht

Inhaltsverzeichnis. Einleitung

Diplomarbeit: Open Source Rapid Web Development Frameworks - Eine Untersuchung der Skalierungsstrategien

Django - ein Python Web-Framework

Inhaltsverzeichnis. Vorwort 13

Profitieren Sie von einer offenen und flexiblen Clouddienstplattform

Grails Ein modernes MVC Framework zur Erstellung von Webanwendungen Gabriel Münch

SODA. Die Datenbank als Document Store. Rainer Willems. Master Principal Sales Consultant Oracle Deutschland B.V. & Co. KG

1. Übersicht Public Cloud Anbieter (PaaS und IaaS)

Dokumentenorientierte Datenbanken - MongoDB

Skalierbare Webanwendungen

Ruby on Rails. Florian Ferrano Ralf Heller Markus Nagel

1.1 Ein neues TYP03 entsteht Das Berlin-Manifesto Die Geburtsstunde von TYP03 Flow (FL0W3) Phoenix aus der Asche 21

Persistenz. Ralf Gitzel

Das diesem Dokument zugrundeliegende Vorhaben wurde mit Mitteln des Bundesministeriums für Bildung und Forschung unter dem Förderkennzeichen

Windows Azure für Java Architekten. Holger Sirtl Microsoft Deutschland GmbH

Configuration Management mit Verbosy OSDC Eric Lippmann

Testgetriebene Web-Entwicklung mit Ruby on Rails

ORACLE CLOUD VERLEIHT ADF ANWENDUNGEN FLÜGEL. Andreas Koop CEO & Consultant Oracle Technologies

Entwicklung einer REST-API zur Erstellung und Konfiguration von Microsoft Teams. Jan Kruse, utilitas GmbH

PHP eine Einführung. Dipl.-Inf. Frank Hofmann. 18. November Potsdam

Kompendium der Web-Programmierung

NHibernate vs. Entity Framework

GIS mit Ruby on Rails

NoSQL mit Postgres 15. Juni 2015

Portal zur Verwaltung von Wohngemeinschaftsfinanzen mit dem Web-Framework Django

Backend. Hochschule Darmstadt, Fachbereich Informatik, Wintersemester 2016/2017. Christopher Dörge, Thomas Sauer, David Müller

Einführung in CouchDB

Objektorientierte Datenbanken

Rene Böing, Alexander Kuhn, Marc Wilmes Einführung in Spring und Hibernate

Enterprise JavaBeans Überblick

SODA Die Datenbank als Document Store Rainer Willems Oracle Deutschland B.V. & Co. KG Dreieich Schlüsselworte

à la Carte KMU - Lösungen im Alltag für Filemaker und das Web

OR-Mapping. WS2008/2009 DBIS/Dr. Karsten Tolle

NoSQL. Einblick in die Welt nicht-relationaler Datenbanken. Christoph Föhrdes. UnFUG, SS

Platform as a Service (PaaS) & Containerization

5. Programmierschnittstellen für XML

(Software) Architektur der Dinge. Roland Graf / Simon Kranzer IKT-Forum 2016 I(o)T for Industry - Von IT zu IoT

NoSQL Andere Wege in der Speicherung von Geodaten?

Datenbankapplikationen mit Ruby on Rails. Datenbanksysteme 2011 Universität Osnabrück Gastvorlesung von Nicolas Neubauer

Agenda. Ausgangssituation (Beispiel) PaaS oder IaaS? Migrationspfade Deep Dives. IaaS via Azure Site Recovery PaaS via SQL Deployment Wizard

Vortrag. Thema: Apache Struts + Tiles

Java Persistence API mit Hibernate

Java.NET Web-Technologien Mobile

.NETUser. René Leupold Patrick Weibel. Group Bern. Follow dnugbe on twitter

Datenbanken und Datenbanktypen Tag 1 : Kapitel 1. Christian Inauen. Lernziele. Entwicklung der Datenbanken.

Grundlagen der Web-Entwicklung INF3172

Mobile Backend in der

Die folgende Tabelle stellt die Grundbegriffe der objektorientierten und der relationalen Welt gegenüber:

Aufbau einer Web 2.0 Community mit Grails

5. Programmierschnittstellen für XML

Aufbau einer Web 2.0 Community mit Grails. DOAG Konferenz + Ausstellung 2010 Nicole Hoock, esentri consulting GmbH

Enterprise JavaBeans Überblick: 12. Session Facade Einleitung 12.2 Problem 12.3 Lösung. Prof. Dr. Björn Dreher Liste V Enterprise JavaBeans 460

pmmda.net 1 Content Ojb.Net NHibernate Gentle.Net Fazit... 4

Java Persistence API. Phillip Ghadir Oliver Tigges

VAADIN, SPRING BOOT & REST

Java-Persistence-API mit Hibernate

Objektorientierte Programmierung

Steffen Bischoff Senior Sales Engineer

Application Designer & Framework unlimited

SaaS Von der Revolution zur Option

Skalierbare Webanwendungen mit Python und Google App Engine

Datenmanagement in Android-Apps. 16. Mai 2013

Open Source Data Center Virtualisierung mit OpenNebula LinuxTag Berlin. Bernd Erk

Foreign Data Wrappers

Open Source Data Center Virtualisierung mit OpenNebula CeBIT Bernd Erk

Wiederholung. Systemtests

Dank Alexa auf Bildschirm, Maus und Tastatur verzichten. DB Systel GmbH Franziska Höcker Small Solutions Berlin

Erstellung eines Frameworks für Shop Systeme im Internet auf Basis von Java

Azure und die Cloud. Proseminar Objektorientiertes Programmieren mit.net und C# Simon Pigat. Institut für Informatik Software & Systems Engineering

OO Programmiersprache vs relationales Model. DBIS/Dr. Karsten Tolle

Rails Ruby on Rails Ajax on Rails. Clemens H. Cap

Übersicht Streams nach Liste Produkte/Themen

SaaS-Referenzarchitektur. iico-2013-berlin

SQL Server 2008 R2 Überblick. Steffen Krause Technical Evangelist

Auf einen Blick. Abfrage und Bearbeitung. Erstellen einer Datenbank. Komplexe Abfragen. Vorwort... 13

Python zur Lösung von AvA Übung 1 VON MORITZ FEY

Schema-Management ohne Schema? Schema-Verwaltung in NoSQL- Datenbanksystemen

Managed Cloud Services. Christian Affolter Managed Cloud Services 11. Mai 2012

Chancen und Wachstumsfelder für PostgreSQL

Praxisbuch Objektorientierung

Internet. HTML Programmierung Grundlagen HTML Programmierung für Fortgeschrittene CGI Programmierung PHP Programmierung Programmieren mit JavaScript

Transkript:

Persistenz-Frameworks in verschiedenen Programmiersprachen von Amir Chehade, Malik Dirim und Luisa John

Inhalt 1. 2. 3. 4. Fragestellung Rückblick: Java a. MySQL b. Hibernate PHP a. Laravel Ruby a....on Rails b. Persistenz 5. 6. 7. Python a. PostgreSQL b. Django Javascript c. MongoDB d. NodeJS e. Mongoose Amazon Web Services f. DynamoDB g. Object Persistence Model 2/73

Ziel / Fragestellung Wie setzen Frameworks in verschiedenen Programmiersprachen das Object Relational Mapping, bzw. das Persistieren von Objektdaten um? 3/73

Java

Java 1995 entwickelt von James Gosling https://de.wikipedia.org/wiki/java_(programmiersprache) 5/73

Java 1995 entwickelt von James Gosling Objekt - Orientiert https://de.wikipedia.org/wiki/java_(programmiersprache) 5/73

Java 1995 entwickelt von James Gosling Objekt - Orientiert Typisierung: stark, statisch https://de.wikipedia.org/wiki/java_(programmiersprache) 5/73

Java 1995 entwickelt von James Gosling Objekt - Orientiert Typisierung: stark, statisch Besonderheit: JVM https://de.wikipedia.org/wiki/java_(programmiersprache) 5/73

Java MySQL

MySQL Relational https://www.mysql.com/de/ https://de.wikipedia.org/wiki/mysql https://logos-download.com/5684-mysql-logo-download.html 7/73

MySQL Relational Strikte Schema https://www.mysql.com/de/ https://de.wikipedia.org/wiki/mysql 7/73

MySQL Relational Strikte Schema Table, Row, Column https://www.mysql.com/de/ https://de.wikipedia.org/wiki/mysql 7/73

MySQL Relational Strikte Schema Table, Row, Column Vorteile: Datenmenge, Performance, Sicherheit https://www.mysql.com/de/ https://de.wikipedia.org/wiki/mysql 7/73

MySQL Relational Strikte Schema Table, Row, Column Vorteile: Datenmenge, Performance, Sicherheit Nachteile: Nicht SQL konform, Lizenz https://www.mysql.com/de/ https://de.wikipedia.org/wiki/mysql 7/73

MySQL Relational Strikte Schema Table, Row, Column Vorteile: Datenmenge, Performance, Sicherheit Nachteile: Nicht SQL konform, Lizenz Beispiele: NASA, Facebook, Twitter https://www.mysql.com/de/ https://de.wikipedia.org/wiki/mysql 7/73

Java Hibernate/JPA

Hibernate Form und Relation mittels Annotation Entity: Persistenz-Objekt Entity Manager: Verwaltung von Persistenz-Objekten 9/73

Java Hibernate/JPA: Beispiel

Hibernate: Beispiel... 11/73

PHP

PHP PHP = Hypertext Preprocessor (ursprünglich: Personal Home Page Tools) https://en.wikipedia.org/wiki/php https://twitter.com/rasmus 13/73

PHP PHP = Hypertext Preprocessor 1995 entwickelt von Rasmus Lerdorf https://en.wikipedia.org/wiki/php https://twitter.com/rasmus 13/73

PHP PHP = Hypertext Preprocessor 1995 entwickelt von Rasmus Lerdorf Schwach und dynamisch typisiert, meist objektorientiert verwendet https://en.wikipedia.org/wiki/php https://twitter.com/rasmus 13/73

PHP PHP = Hypertext Preprocessor 1995 entwickelt von Rasmus Lerdorf Schwach und dynamisch typisiert, meist objektorientiert verwendet Open Source https://en.wikipedia.org/wiki/php https://twitter.com/rasmus 13/73

PHP PHP = Hypertext Preprocessor 1995 entwickelt von Rasmus Lerdorf Schwach und dynamisch typisiert, meist objektorientiert verwendet Open Source Heutzutage auf fast jedem Server vorinstalliert https://en.wikipedia.org/wiki/php https://twitter.com/rasmus 13/73

PHP Laravel

Laravel Derzeit beliebtestes PHP-Framework https://en.wikipedia.org/wiki/laravel https://laravel.com/ http://www.fullstackradio.com 15/73

Laravel Derzeit beliebtestes PHP-Framework 2011 initiiert von Taylor Otwell https://en.wikipedia.org/wiki/laravel https://laravel.com/ http://www.fullstackradio.com 15/73

Laravel Derzeit beliebtestes PHP-Framework 2011 initiiert von Taylor Otwell MVC, großes Ökosystem, ganz viel Magic https://en.wikipedia.org/wiki/laravel https://laravel.com/ http://www.fullstackradio.com 15/73

Laravel Derzeit beliebtestes PHP-Framework 2011 initiiert von Taylor Otwell MVC, großes Ökosystem, ganz viel Magic Open Source https://en.wikipedia.org/wiki/laravel https://laravel.com/ http://www.fullstackradio.com 15/73

Laravel Derzeit beliebtestes PHP-Framework 2011 initiiert von Taylor Otwell MVC, großes Ökosystem, ganz viel Magic Open Source Vom PHP-Framework Symfony abgeleitet https://en.wikipedia.org/wiki/laravel https://laravel.com/ http://www.fullstackradio.com 15/73

Laravel Persistenz

Laravel Persistenz Erlaubt rohes SQL, einen Query-Builder oder das Laravel Eloquent ORM https://medium.com/@shakyshane/laravel-docker-part-1-setup-for-development-e3daaefaf3c https://laravel.com/docs/5.7 17/73

Laravel Persistenz Erlaubt rohes SQL, einen Query-Builder oder das Laravel Eloquent ORM Unterstützt klassische SQL-Datenbanken (MySQL, PostgreSQL, SQLite, etc...) https://medium.com/@shakyshane/laravel-docker-part-1-setup-for-development-e3daaefaf3c https://laravel.com/docs/5.7 17/73

Laravel Persistenz Erlaubt rohes SQL, einen Query-Builder oder das Laravel Eloquent ORM Unterstützt klassische SQL-Datenbanken (MySQL, PostgreSQL, SQLite, etc...) Unterstützt Caching mit memcached und redis https://medium.com/@shakyshane/laravel-docker-part-1-setup-for-development-e3daaefaf3c https://laravel.com/docs/5.7 17/73

Laravel Persistenz Beispiele

Laravel Beispiel Mit ein bisschen Magic generieren wir uns eine fertige BenutzerAuthentifizierung: https://laravel.com/docs/5.7 19/73

Laravel Beispiel Startseite: https://laravel.com/docs/5.7 20/73

Laravel Beispiel Registrierung: https://laravel.com/docs/5.7 21/73

Laravel Beispiel Login: https://laravel.com/docs/5.7 22/73

Laravel Beispiel Eine Migrations-Datei: php artisan migrate schreibt die Tabelle in die Datenbank. https://laravel.com/docs/5.7 23/73

Laravel Beispiel Eine Factory-Datei: Kann in Seeder-Dateien verwendet werden, um die Datenbank mit festen Werten zu füllen. php artisan db:seed https://laravel.com/docs/5.7 24/73

Laravel Beispiel Eine Model-Datei: Hier werden wir gleich noch Beziehungen konfigurieren. https://laravel.com/docs/5.7 25/73

Laravel Beispiel Einige Beispiel-Queries über das Eloquent ORM: $users = App\User::all(); https://laravel.com/docs/5.7 26/73

Laravel Beispiel Einige Beispiel-Queries über das Eloquent ORM: $users = App\User::all(); $users = App\User::where('active', 1) ->orderby('name', 'desc') ->take(10) ->get(); https://laravel.com/docs/5.7 26/73

Laravel Beispiel Einige Beispiel-Queries über das Eloquent ORM: $user = App\User::where('active', 1)->first(); https://laravel.com/docs/5.7 26/73

Laravel Beispiel Einige Beispiel-Queries über das Eloquent ORM: $user = App\User::where('active', 1)->first(); $user = new User; $user>name = 'David Dude'; $user>save(); https://laravel.com/docs/5.7 26/73

Laravel Beispiel Einige Beispiel-Queries über das Eloquent ORM: $user = App\User::where('active', 1)->first(); $user = new User; $user>name = 'David Dude'; $user>save(); $user = App\User::firstOrCreate(['name' => 'David Dude']) https://laravel.com/docs/5.7 26/73

Laravel Beispiel Wir generieren ein neues Model Lesson. Ein User soll mehrere Lessons haben. https://laravel.com/docs/5.7 27/73

Laravel Beispiel Laravel Doku zu Model-Beziehungen: (Ausschnitt) https://laravel.com/docs/5.7 28/73

Laravel Beispiel Definition der Beziehung User -> Lesson: https://laravel.com/docs/5.7 29/73

Laravel Beispiel Definition der Beziehung Lesson -> User: https://laravel.com/docs/5.7 30/73

Laravel Beispiel Jetzt sind Queries über Beziehungen möglich nach Schema: $lessons = App\User::find(1)->lessons; $lessons = App\User::find(1)->lessons()->where('title', 'foo')->first(); $lessons = App\User::find(1)->lessons()->orderBy('name')->get(); https://laravel.com/docs/5.7 31/73

Ruby

Ruby Rubys eigentliches Ziel ist es zu erfreuen Sprachdesigner, Anwender, Sprachlerner, jeden https://en.wikipedia.org/wiki/ruby_(programming_language) https://www.ruby-lang.org/de/ https://en.wikipedia.org/wiki/yukihiro_matsumoto 33/73

Ruby Rubys eigentliches Ziel ist es zu erfreuen Sprachdesigner, Anwender, Sprachlerner, jeden 1995 entwickelt von Yukihiro Matsumoto https://en.wikipedia.org/wiki/ruby_(programming_language) https://www.ruby-lang.org/de/ https://en.wikipedia.org/wiki/yukihiro_matsumoto 33/73

Ruby Rubys eigentliches Ziel ist es zu erfreuen Sprachdesigner, Anwender, Sprachlerner, jeden 1995 entwickelt von Yukihiro Matsumoto Stark und dynamisch typisiert, objektorientiert https://en.wikipedia.org/wiki/ruby_(programming_language) https://www.ruby-lang.org/de/ https://en.wikipedia.org/wiki/yukihiro_matsumoto 33/73

Ruby Rubys eigentliches Ziel ist es zu erfreuen Sprachdesigner, Anwender, Sprachlerner, jeden 1995 entwickelt von Yukihiro Matsumoto Stark und dynamisch typisiert, objektorientiert Open Source https://en.wikipedia.org/wiki/ruby_(programming_language) https://www.ruby-lang.org/de/ https://en.wikipedia.org/wiki/yukihiro_matsumoto 33/73

Ruby Rubys eigentliches Ziel ist es zu erfreuen Sprachdesigner, Anwender, Sprachlerner, jeden 1995 entwickelt von Yukihiro Matsumoto Stark und dynamisch typisiert, objektorientiert Open Source GitHub, Airbnb, etc. https://en.wikipedia.org/wiki/ruby_(programming_language) https://www.ruby-lang.org/de/ https://en.wikipedia.org/wiki/yukihiro_matsumoto 33/73

Ruby... on Rails

Ruby on Rails Inspiration für die meisten anderen Web-Frameworks anderer Sprachen https://en.wikipedia.org/wiki/ruby_on_rails https://rubyonrails.org/ https://en.wikipedia.org/wiki/david_heinemeier_hansson 35/73

Ruby on Rails Inspiration für die meisten anderen Web-Frameworks anderer Sprachen 2005 entwickelt von David Heinemeier Hansson https://en.wikipedia.org/wiki/ruby_on_rails https://rubyonrails.org/ https://en.wikipedia.org/wiki/david_heinemeier_hansson 35/73

Ruby on Rails Inspiration für die meisten anderen Web-Frameworks anderer Sprachen 2005 entwickelt von David Heinemeier Hansson MVC-Architektur https://en.wikipedia.org/wiki/ruby_on_rails https://rubyonrails.org/ https://en.wikipedia.org/wiki/david_heinemeier_hansson 35/73

Ruby on Rails Inspiration für die meisten anderen Web-Frameworks anderer Sprachen 2005 entwickelt von David Heinemeier Hansson MVC-Architektur Open Source https://en.wikipedia.org/wiki/ruby_on_rails https://rubyonrails.org/ https://en.wikipedia.org/wiki/david_heinemeier_hansson 35/73

Ruby on Rails Inspiration für die meisten anderen Web-Frameworks anderer Sprachen 2005 entwickelt von David Heinemeier Hansson MVC-Architektur Open Source Setzt stark auf Konventionen und Standards https://en.wikipedia.org/wiki/ruby_on_rails https://rubyonrails.org/ https://en.wikipedia.org/wiki/david_heinemeier_hansson 35/73

Ruby on Rails Persistenz

Ruby on Rails Persistenz Hat Adapter für SQL-Datenbanken (MySQL, PostgreSQL, SQLite, etc...) https://guides.rubyonrails.org/active_record_basics.html https://www.youtube.com/watch?v=oadhy_y8wto https://medium.com/firehydrant-io/developing-a-ruby-on-rails-app-with-docker-compose-d75b20334634 37/73

Ruby on Rails Persistenz Hat Adapter für SQL-Datenbanken (MySQL, PostgreSQL, SQLite, etc...) Verwendet das Active Record Pattern (ein Object Relational Mapping - System) https://guides.rubyonrails.org/active_record_basics.html https://www.youtube.com/watch?v=oadhy_y8wto 37/73

Ruby on Rails Persistenz Hat Adapter für SQL-Datenbanken (MySQL, PostgreSQL, SQLite, etc...) Verwendet das Active Record Pattern (ein Object Relational Mapping - System) Repräsentiert Models (Objekte), ihre Daten, ihre Beziehungen und Hierarchien https://guides.rubyonrails.org/active_record_basics.html https://www.youtube.com/watch?v=oadhy_y8wto https://medium.com/firehydrant-io/developing-a-ruby-on-rails-app-with-docker-compose-d75b20334634 37/73

Ruby on Rails Persistenz Hat Adapter für SQL-Datenbanken (MySQL, PostgreSQL, SQLite, etc...) Verwendet das Active Record Pattern (ein Object Relational Mapping - System) Repräsentiert Models (Objekte), ihre Daten, ihre Beziehungen und Hierarchien Erlaubt OO-Datenbank-Operationen und Validierung https://guides.rubyonrails.org/active_record_basics.html https://www.youtube.com/watch?v=oadhy_y8wto https://medium.com/firehydrant-io/developing-a-ruby-on-rails-app-with-docker-compose-d75b20334634 37/73

Ruby on Rails Persistenz Beispiele

Ruby on Rails Beispiel Generieren eines neuen Models Post (Blog-Post o.ä.) https://guides.rubyonrails.org/active_record_basics.html https://www.youtube.com/watch?v=oadhy_y8wto https://medium.com/firehydrant-io/developing-a-ruby-on-rails-app-with-docker-compose-d75b20334634 39/73

Ruby on Rails Beispiel Erstellte Datei: Model https://guides.rubyonrails.org/active_record_basics.html https://www.youtube.com/watch?v=oadhy_y8wto https://medium.com/firehydrant-io/developing-a-ruby-on-rails-app-with-docker-compose-d75b20334634 40/73

Ruby on Rails Beispiel Erstellte Datei: Migration https://guides.rubyonrails.org/active_record_basics.html https://www.youtube.com/watch?v=oadhy_y8wto https://medium.com/firehydrant-io/developing-a-ruby-on-rails-app-with-docker-compose-d75b20334634 41/73

Ruby on Rails Beispiel Auf Basis der Migration kann eine DB-Tabelle erzeugt werden: $docker-compose run --rm web rails db:migrate https://guides.rubyonrails.org/active_record_basics.html https://www.youtube.com/watch?v=oadhy_y8wto https://medium.com/firehydrant-io/developing-a-ruby-on-rails-app-with-docker-compose-d75b20334634 42/73

Ruby on Rails Beispiel Erweiterte Datei: Schema https://guides.rubyonrails.org/active_record_basics.html https://www.youtube.com/watch?v=oadhy_y8wto https://medium.com/firehydrant-io/developing-a-ruby-on-rails-app-with-docker-compose-d75b20334634 43/73

Ruby on Rails Beispiel CRUD-Logik ist nun abstrahiert. Create-Beispiel: post = Post.create(title: My Title, body: Tells a story ) oder post= Post.new post.title = My Title post.body = Tells a story https://guides.rubyonrails.org/active_record_basics.html https://www.youtube.com/watch?v=oadhy_y8wto https://medium.com/firehydrant-io/developing-a-ruby-on-rails-app-with-docker-compose-d75b20334634 44/73

Ruby on Rails Beispiel CRUD-Logik ist nun abstrahiert. Get-All-Beispiel: posts = Post.all https://guides.rubyonrails.org/active_record_basics.html https://www.youtube.com/watch?v=oadhy_y8wto https://medium.com/firehydrant-io/developing-a-ruby-on-rails-app-with-docker-compose-d75b20334634 45/73

Ruby on Rails Beispiel CRUD-Logik ist nun abstrahiert. Get-One-Beispiel: post = Post.find_by(title: My Title ) https://guides.rubyonrails.org/active_record_basics.html https://www.youtube.com/watch?v=oadhy_y8wto https://medium.com/firehydrant-io/developing-a-ruby-on-rails-app-with-docker-compose-d75b20334634 46/73

Ruby on Rails Beispiel Wir erstellen ein neues Model mit einer Beziehung: $... g(enerate) resource comment post:references body:text https://guides.rubyonrails.org/active_record_basics.html https://www.youtube.com/watch?v=oadhy_y8wto https://medium.com/firehydrant-io/developing-a-ruby-on-rails-app-with-docker-compose-d75b20334634 47/73

Ruby on Rails Beispiel Erstellte Datei: Model https://guides.rubyonrails.org/active_record_basics.html https://www.youtube.com/watch?v=oadhy_y8wto https://medium.com/firehydrant-io/developing-a-ruby-on-rails-app-with-docker-compose-d75b20334634 48/73

Ruby on Rails Beispiel Erstellte Datei: Migration https://guides.rubyonrails.org/active_record_basics.html https://www.youtube.com/watch?v=oadhy_y8wto https://medium.com/firehydrant-io/developing-a-ruby-on-rails-app-with-docker-compose-d75b20334634 49/73

Ruby on Rails Beispiel Update von Post, um die Beziehung zu reflektieren: https://guides.rubyonrails.org/active_record_basics.html https://www.youtube.com/watch?v=oadhy_y8wto https://medium.com/firehydrant-io/developing-a-ruby-on-rails-app-with-docker-compose-d75b20334634 50/73

Ruby on Rails Beispiel Jetzt sind Abfragen über Beziehungen möglich, z.b.: comments = Post.find_by(title: My Title ).comments https://guides.rubyonrails.org/active_record_basics.html https://www.youtube.com/watch?v=oadhy_y8wto https://medium.com/firehydrant-io/developing-a-ruby-on-rails-app-with-docker-compose-d75b20334634 51/73

Python

Python Universelle Programmiersprache https://en.wikipedia.org/wiki/python_(programming_language) https://en.wikipedia.org/wiki/guido_van_rossum 53/73

Python Universelle Programmiersprache 1991 entwickelt von Guido van Rossum https://en.wikipedia.org/wiki/python_(programming_language) https://en.wikipedia.org/wiki/guido_van_rossum 53/73

Python Universelle Programmiersprache 1991 entwickelt von Guido van Rossum Stark und dynamisch typisiert https://en.wikipedia.org/wiki/python_(programming_language) https://en.wikipedia.org/wiki/guido_van_rossum 53/73

Python Universelle Programmiersprache 1991 entwickelt von Guido van Rossum Stark und dynamisch typisiert Open Source https://en.wikipedia.org/wiki/python_(programming_language) https://en.wikipedia.org/wiki/guido_van_rossum 53/73

Python Universelle Programmiersprache 1991 entwickelt von Guido van Rossum Stark und dynamisch typisiert Open Source Extrem flexibel, leicht zu erlernen https://en.wikipedia.org/wiki/python_(programming_language) https://en.wikipedia.org/wiki/guido_van_rossum 53/73

Python PostgreSQL

PostgreSQL Relational https://de.wikipedia.org/wiki/postgresql https://www.postgresql.org/ 55/73

PostgreSQL Relational Open - Source https://de.wikipedia.org/wiki/postgresql https://www.postgresql.org/ 55/73

PostgreSQL Relational Open - Source Vorteile: SQL Konform, programmatisch erweiterbar, Geometrische Datentypen https://de.wikipedia.org/wiki/postgresql https://www.postgresql.org/ 55/73

PostgreSQL Relational Open - Source Vorteile: SQL Konform, programmatisch erweiterbar, Geometrische Datentypen Nachteile: Performance, Popularität https://de.wikipedia.org/wiki/postgresql https://www.postgresql.org/ 55/73

PostgreSQL Relational Open - Source Vorteile: SQL Konform, programmatisch erweiterbar, Geometrische Datentypen Nachteile: Performance, Popularität Beispiele: Netflix, Spotify, Uber, Reddit, Twitch, Instagram https://de.wikipedia.org/wiki/postgresql https://www.postgresql.org/ 55/73

Python Django

Django Neben Flask das beliebteste Framework https://en.wikipedia.org/wiki/django_(web_framework) https://en.wikipedia.org/wiki/adrian_holovaty https://en.wikipedia.org/wiki/simon_willison https://www.djangoproject.com/ 57/73

Django Neben Flask das beliebteste Framework 2005 veröffentlicht von Adrian Holovaty und Simon Willison https://en.wikipedia.org/wiki/django_(web_framework) https://en.wikipedia.org/wiki/adrian_holovaty https://en.wikipedia.org/wiki/simon_willison https://www.djangoproject.com/ 57/73

Django Neben Flask das beliebteste Framework 2005 veröffentlicht von Adrian Holovaty und Simon Willison MVC, großes Ökosystem, ganz viel Magic https://en.wikipedia.org/wiki/django_(web_framework) https://en.wikipedia.org/wiki/adrian_holovaty https://en.wikipedia.org/wiki/simon_willison https://www.djangoproject.com/ 57/73

Django Neben Flask das beliebteste Framework 2005 veröffentlicht von Adrian Holovaty und Simon Willison MVC, großes Ökosystem, ganz viel Magic Open Source https://en.wikipedia.org/wiki/django_(web_framework) https://en.wikipedia.org/wiki/adrian_holovaty https://en.wikipedia.org/wiki/simon_willison https://www.djangoproject.com/ 57/73

Django Neben Flask das beliebteste Framework 2005 veröffentlicht von Adrian Holovaty und Simon Willison MVC, großes Ökosystem, ganz viel Magic Open Source Vom PHP-Framework Symfony abgeleitet https://en.wikipedia.org/wiki/django_(web_framework) https://en.wikipedia.org/wiki/adrian_holovaty https://en.wikipedia.org/wiki/simon_willison https://www.djangoproject.com/ 57/73

Python Django: Beispiele

Django: Beispiel Keine Getter & Setter https://en.wikipedia.org/wiki/django_(web_framework) https://en.wikipedia.org/wiki/adrian_holovaty https://en.wikipedia.org/wiki/simon_willison https://www.djangoproject.com/ 59/73

Django: Beispiel Keine Getter & Setter Filter Annotation https://en.wikipedia.org/wiki/django_(web_framework) https://en.wikipedia.org/wiki/adrian_holovaty https://en.wikipedia.org/wiki/simon_willison https://www.djangoproject.com/ 59/73

Django: Beispiel Keine Getter & Setter Filter Annotation Objekt erhält ein zuvor nicht definiertes Feld https://en.wikipedia.org/wiki/django_(web_framework) https://en.wikipedia.org/wiki/adrian_holovaty https://en.wikipedia.org/wiki/simon_willison https://www.djangoproject.com/ 59/73

JavaScript

JavaScript 1995 von Brendan Eich entwickelt https://de.wikipedia.org/wiki/javascript https://de.wikipedia.org/wiki/brendan_eich 61/73

JavaScript 1995 von Brendan Eich entwickelt multipragmatisch https://de.wikipedia.org/wiki/javascript https://de.wikipedia.org/wiki/brendan_eich 61/73

JavaScript 1995 von Brendan Eich entwickelt multipragmatisch Typisierung: schwach, dynamisch https://de.wikipedia.org/wiki/javascript https://de.wikipedia.org/wiki/brendan_eich 61/73

JavaScript MongoDB

MongoDB Nicht-relational https://de.wikipedia.org/wiki/mongodb https://www.mongodb.com/de https://cacm.acm.org/magazines/2017/5/216320-mongodbs-javascript-fuzzer/abstract 63/73

MongoDB Nicht-relational Collection, Document, Field https://de.wikipedia.org/wiki/mongodb https://www.mongodb.com/de https://cacm.acm.org/magazines/2017/5/216320-mongodbs-javascript-fuzzer/abstract 63/73

MongoDB Nicht-relational Collection, Document, Field Keine Schema https://de.wikipedia.org/wiki/mongodb https://www.mongodb.com/de https://cacm.acm.org/magazines/2017/5/216320-mongodbs-javascript-fuzzer/abstract 63/73

MongoDB Nicht-relational Collection, Document, Field Keine Schema Vorteile: Flexible Datensätze https://de.wikipedia.org/wiki/mongodb https://www.mongodb.com/de https://cacm.acm.org/magazines/2017/5/216320-mongodbs-javascript-fuzzer/abstract 63/73

MongoDB Nicht-relational Collection, Document, Field Keine Schema Vorteile: Flexible Datensätze Nachteile: Komplexe Transaktionen & Relationen https://de.wikipedia.org/wiki/mongodb https://www.mongodb.com/de https://cacm.acm.org/magazines/2017/5/216320-mongodbs-javascript-fuzzer/abstract 63/73

MongoDB Nicht-relational Collection, Document, Field Keine Schema Vorteile: Flexible Datensätze Nachteile: Komplexe Transaktionen & Relationen Beispiele: Bosch, ebay, BuzzFeed https://de.wikipedia.org/wiki/mongodb https://www.mongodb.com/de https://cacm.acm.org/magazines/2017/5/216320-mongodbs-javascript-fuzzer/abstract 63/73

JavaScript NodeJS

NodeJS Framework zur entwicklung von Webanwendung https://nodejs.org/en/about/resources/ https://de.wikipedia.org/wiki/npm_(software) https://de.wikipedia.org/wiki/node.js https://nodejs.org/en/ 65/73

NodeJS Framework zur entwicklung von Webanwendung npm zur Einbindung von Modulen https://nodejs.org/en/about/resources/ https://de.wikipedia.org/wiki/npm_(software) https://de.wikipedia.org/wiki/node.js https://nodejs.org/en/ 65/73

NodeJS Framework zur Entwicklung von Webanwendung npm zur Einbindung von Modulen mongoose für mongodb Flexible Schema Custom Validation Discriminators https://nodejs.org/en/about/resources/ https://de.wikipedia.org/wiki/npm_(software) https://de.wikipedia.org/wiki/node.js https://nodejs.org/en/ 65/73

JavaScript Mongoose: Beispiele

Mongoose: Beispiel Schema & Model statt Klasse https://nodejs.org/en/about/resources/ https://de.wikipedia.org/wiki/npm_(software) https://de.wikipedia.org/wiki/node.js https://nodejs.org/en/ 67/73

Mongoose: Beispiel Schema & Model statt Klasse Referenz auf andere Entität über Id Embedded Documents https://nodejs.org/en/about/resources/ https://de.wikipedia.org/wiki/npm_(software) https://de.wikipedia.org/wiki/node.js https://nodejs.org/en/ 67/73

Mongoose: Beispiel Schema & Model statt Klasse Referenz auf andere Entität über Id Embedded Documents discriminator https://nodejs.org/en/about/resources/ https://de.wikipedia.org/wiki/npm_(software) https://de.wikipedia.org/wiki/node.js https://nodejs.org/en/ 67/73

Mongoose: Beispiel Schema & Model statt Klasse Referenz auf andere Entität über Id Embedded Documents discriminator https://nodejs.org/en/about/resources/ https://de.wikipedia.org/wiki/npm_(software) https://de.wikipedia.org/wiki/node.js https://nodejs.org/en/ 67/73

Mongoose: Beispiel Schema & Model statt Klasse Referenz auf andere Entität über Id Embedded Documents discriminator Striktheit wird selbst bestimmt https://nodejs.org/en/about/resources/ https://de.wikipedia.org/wiki/npm_(software) https://de.wikipedia.org/wiki/node.js https://nodejs.org/en/ 67/73

Amazon Web Services seit 2006 in Betrieb https://upload.wikimedia.org/wikipedia/commons/thumb/5/5c/ AWS_Simple_Icons_AWS_Cloud.svg/ 2000px-AWS_Simple_Icons_AWS_Cloud.svg.png https://aws.amazon.com/de/about-aws/ 69/73

Amazon Web Services seit 2006 in Betrieb bietet IT-Infrastrukturservices ( Cloud Computing ) an https://upload.wikimedia.org/wikipedia/commons/thumb/5/5c/ AWS_Simple_Icons_AWS_Cloud.svg/ 2000px-AWS_Simple_Icons_AWS_Cloud.svg.png https://aws.amazon.com/de/about-aws/ 69/73

Amazon Web Services seit 2006 in Betrieb bietet IT-Infrastrukturservices ( Cloud Computing ) an 3 Arten von Cloud Computing Infrastructure as a Service (IaaS) Platform as a Service (PaaS) Software as a Service (SaaS) https://aws.amazon.com/de/about-aws/ https://upload.wikimedia.org/wikipedia/commons/thumb/5/5c/ AWS_Simple_Icons_AWS_Cloud.svg/2000px-AWS_Simple_Icons_AWS_Cloud.svg.png 69/73

Amazon Web Services seit 2006 in Betrieb bietet IT-Infrastrukturservices ( Cloud Computing ) an 3 Arten von CC Infrastructure as a Service (IaaS) Platform as a Service (PaaS) Software as a Service (SaaS) genutzt u.a. von Airbnb, Samsung und Toyota 69/73

DynamoDB ein NoSQL-Datenbankservice, und damit nicht-relational https://cdn.markomedia.com.au/wp-content/ uploads/2015/03/dynamodb.svg_.png https://aws.amazon.com/de/nosql/?nc1=f_cc 71/73

DynamoDB ein NoSQL-Datenbankservice, und damit nicht-relational benutzt Schlüssel-Wertmodell und Dokumentmodell (JSON) https://cdn.markomedia.com.au/wp-content/ uploads/2015/03/dynamodb.svg_.png https://aws.amazon.com/de/nosql/?nc1=f_cc 71/73

DynamoDB ein NoSQL-Datenbankservice, und damit nicht-relational benutzt Schlüssel-Wertmodell und Dokumentmodell (JSON) Vorteil: flexibel, skalierbar https://cdn.markomedia.com.au/wp-content/ uploads/2015/03/dynamodb.svg_.png https://aws.amazon.com/de/nosql/?nc1=f_cc 71/73

DynamoDB ein NoSQL-Datenbankservice, und damit nicht-relational benutzt Schlüssel-Wertmodell und Dokumentmodell (JSON) Vorteil: flexibel, skalierbar Nachteil: Amazon rechnet pro Anfrage ab https://cdn.markomedia.com.au/wp-content/ uploads/2015/03/dynamodb.svg_.png https://aws.amazon.com/de/nosql/?nc1=f_cc 71/73

DynamoDB ein NoSQL-Datenbankservice, und damit nicht-relational benutzt Schlüssel-Wertmodell und Dokumentmodell (JSON) Vorteil: flexibel, skalierbar Nachteil: ACID-Eigenschaften Zugriff über Konsole, Interface oder API https://cdn.markomedia.com.au/ wp-content/uploads/2015/03/dynamodb.svg_.png https://aws.amazon.com/de/nosql/?nc1=f_cc 71/73

aws Objektpersistenzmodell

Objektpersistenzschnittstelle ein High-Level Interface für Java und.net Anwendungen ordnet clientseitigen Klassen DynamoDB-Tabellen zu DynamoDBContext-Klasse ermöglicht Verbindung zu DB für CRUD-Operationen und Abfragen (Queries) Nachteil: das funktioniert nur auf bestehenden Tabellen; zum Erstellen, Bearbeiten und Löschen von Tabellen braucht man ein weiteres Framework https://docs.aws.amazon.com/de_de/amazondynamodb/latest/developerguide/programming.sdkoverview.html https://docs.aws.amazon.com/de_de/amazondynamodb/latest/developerguide/dotnetsdkhighlevel.html 73/73

Vielen Dank für eure Aufmerksamkeit