SlideShare a Scribd company logo
1 of 41
Download to read offline
Dancer und DBIx::Class
Stefan Hornburg (Racke)
racke@linuxia.de
16. Deutscher Perl-Workshop, Hannover, 27. März 2013
racke Dancer und DBIx::Class
16. Deutscher Perl-Workshop, Hannover, 27. März
/ 41
CGI.pm must die ...
racke Dancer und DBIx::Class
16. Deutscher Perl-Workshop, Hannover, 27. März
/ 41
... and we bury DBI alive!
racke Dancer und DBIx::Class
16. Deutscher Perl-Workshop, Hannover, 27. März
/ 41
Dancer und DBIx::Class
racke Dancer und DBIx::Class
16. Deutscher Perl-Workshop, Hannover, 27. März
/ 41
Anwendungen
racke Dancer und DBIx::Class
16. Deutscher Perl-Workshop, Hannover, 27. März
/ 41
eCommerce Software
Magento
Interchange6
racke Dancer und DBIx::Class
16. Deutscher Perl-Workshop, Hannover, 27. März
/ 41
Datenbankadministration
phpmyadmin
phppgadmin
TableEditor
racke Dancer und DBIx::Class
16. Deutscher Perl-Workshop, Hannover, 27. März
/ 41
TableEditor Features
Unterstützung mehrerer Datenbanksysteme
MySQL, PostgreSQL, ...
höherer Abstraktionslevel
modernes Frontend
wenig Quellcode
“einfache” Installation
racke Dancer und DBIx::Class
16. Deutscher Perl-Workshop, Hannover, 27. März
/ 41
Eingabe Datenbankparameter
racke Dancer und DBIx::Class
16. Deutscher Perl-Workshop, Hannover, 27. März
/ 41
Ansicht Produkte
racke Dancer und DBIx::Class
16. Deutscher Perl-Workshop, Hannover, 27. März
/ 41
Ansicht Produkt
racke Dancer und DBIx::Class
16. Deutscher Perl-Workshop, Hannover, 27. März
/ 41
Beziehung Orderline
racke Dancer und DBIx::Class
16. Deutscher Perl-Workshop, Hannover, 27. März
/ 41
Übersicht Dancer::Plugin::DBIC
Anwendung
Konfiguration
UTF-8
Schema erzeugen
racke Dancer und DBIx::Class
16. Deutscher Perl-Workshop, Hannover, 27. März
/ 41
DBIx::Class ohne Dancer Plugin
use Interchange6 : : Schema ;
$schema = Interchange6 : : Schema−>connect ( . . . ) ;
$schema−>r e s u l t s e t ( ’ User ’)−>search ( { . . } ) ;
racke Dancer und DBIx::Class
16. Deutscher Perl-Workshop, Hannover, 27. März
/ 41
DBIx::Class mit Dancer Plugin
use Dancer : : Plugin : : DBIC ;
schema−>r e s u l t s e t ( ’ User ’)−>search ( { . . } ) ;
r e s u l t s e t ( ’ User ’)−>search ( { . . } ) ;
rset ( ’ User ’)−>search ( { . . } ) ;
racke Dancer und DBIx::Class
16. Deutscher Perl-Workshop, Hannover, 27. März
/ 41
Konfiguration
plugins :
DBIC :
default :
dsn : dbi : mysql : interchange6
user : racke
pass : nevairbe
schema_class : Interchange6 : : Schema
racke Dancer und DBIx::Class
16. Deutscher Perl-Workshop, Hannover, 27. März
/ 41
Mehrere Schemas
plugins :
DBIC :
default :
dsn : dbi : mysql : interchange6
user : racke
pass : nevairbe
schema_class : Interchange6 : : Schema
legacy :
dsn : dbi : mysql : interchange5
user : racke
pass : nevairbe
schema_class : Interchange5 : : Schema
racke Dancer und DBIx::Class
16. Deutscher Perl-Workshop, Hannover, 27. März
/ 41
Mehrere Schemas
use Dancer : : Plugin : : DBIC ;
schema( ’ legacy ’)−> r e s u l t s e t ( ’ UserDb ’)−>search ( { . . } ) ;
racke Dancer und DBIx::Class
16. Deutscher Perl-Workshop, Hannover, 27. März
/ 41
UTF-8 für MySQL
plugins :
DBIC :
default :
dsn : dbi : mysql : interchange6
user : racke
pass : nevairbe
schema_class : Interchange6 : : Schema
options :
mysql_enable_utf8 : 1
racke Dancer und DBIx::Class
16. Deutscher Perl-Workshop, Hannover, 27. März
/ 41
Schema dynamisch erzeugen
schema_class fehlt in Konfiguration
DBIx::Class::Schema::Loader
Test und Entwicklung
TableEditor
racke Dancer und DBIx::Class
16. Deutscher Perl-Workshop, Hannover, 27. März
/ 41
Übersicht Dancer::Session::DBIC
Engines
Konfiguration
Serialisierung
Sitzungsablauf
racke Dancer und DBIx::Class
16. Deutscher Perl-Workshop, Hannover, 27. März
/ 41
Engines
Templates
TT, Xslate, Flute, ...
Sitzungen (Sessions)
Storable, Database, DBIC
Logger
File, Syslog
Serialisierer
JSON, YAML, XML
racke Dancer und DBIx::Class
16. Deutscher Perl-Workshop, Hannover, 27. März
/ 41
Konfiguration
session Name der Sessionengine, hier DBIC
session_options Optionen
session_expires Ablaufzeit der Session
racke Dancer und DBIx::Class
16. Deutscher Perl-Workshop, Hannover, 27. März
/ 41
Konfiguration
session : "DBIC"
session_options :
dsn : dbi : mysql : interchange6
user : racke
pass : nevairbe
schema_class : Interchange6 : : Schema
r e s u l t s e t : Session
id_column : sessions_id
data_column : session_data
session_expires : 12 hours
racke Dancer und DBIx::Class
16. Deutscher Perl-Workshop, Hannover, 27. März
/ 41
Konfiguration
set session => ’DBIC ’ ;
set session_options => {schema => schema } ;
racke Dancer und DBIx::Class
16. Deutscher Perl-Workshop, Hannover, 27. März
/ 41
Beispieltabelle
CREATE TABLE ‘ sessions ‘ (
‘ sessions_id ‘ varchar (255) NOT NULL,
‘ session_data ‘ t e x t NOT NULL,
‘ created ‘ datetime NOT NULL,
‘ last_modified ‘ datetime NOT NULL,
PRIMARY KEY ( ‘ sessions_id ‘ )
) ENGINE=InnoDB ;
racke Dancer und DBIx::Class
16. Deutscher Perl-Workshop, Hannover, 27. März
/ 41
Serialisierer
set ’ session_options ’ => {
schema => schema ,
s e r i a l i z e r => sub { YAML: : Dump(@_) ; } ,
d e s e r i a l i z e r => sub { YAML: : Load (@_) ; } ,
} ;
racke Dancer und DBIx::Class
16. Deutscher Perl-Workshop, Hannover, 27. März
/ 41
Sitzungsablauf
alte Sitzungen aus Datenbank löschen
Interchange6::Schema::Resultset::Session
$schema−>r e s u l t s e t ( ’ Session ’)−>expire ( ’ 12 hours ’ ) ;
racke Dancer und DBIx::Class
16. Deutscher Perl-Workshop, Hannover, 27. März
/ 41
Übersicht TableEditor
Installation
Frontend
Anmeldung
Beziehungen
Einschränkungen
Konfiguration
racke Dancer und DBIx::Class
16. Deutscher Perl-Workshop, Hannover, 27. März
/ 41
Installation
g i t clone https : / / github .com/ interchange / TableEditor
cd TableEditor
cpanm .
. / bin / app . pl
racke Dancer und DBIx::Class
16. Deutscher Perl-Workshop, Hannover, 27. März
/ 41
Treiber
DBD::mysql
DBD::Pg
...
racke Dancer und DBIx::Class
16. Deutscher Perl-Workshop, Hannover, 27. März
/ 41
Frontend
Angular
Routes für das Frontend
XHR-Abfragen an REST API
JSON
Bootstrap
Theme
racke Dancer und DBIx::Class
16. Deutscher Perl-Workshop, Hannover, 27. März
/ 41
Routes
get ’ / : class / : id ’ => require_login sub {
# r e t r i e v e database record and add r e l a t i o n s h i p s
. . .
return to_json ( $data , { allow_unknown => 1 } ) ;
} ;
racke Dancer und DBIx::Class
16. Deutscher Perl-Workshop, Hannover, 27. März
/ 41
Anmeldung
Dancer::Plugin::Auth::Extensible
Provider
Unix
DBIC
Datenbank (geplant)
racke Dancer und DBIx::Class
16. Deutscher Perl-Workshop, Hannover, 27. März
/ 41
Beziehungen
might_have
has_many
belongs_to
many_to_many
racke Dancer und DBIx::Class
16. Deutscher Perl-Workshop, Hannover, 27. März
/ 41
Einschränkungen
Primärschlüssel für eine Spalte
Geschwindigkeit (komplexe Schemas)
Fehlerbehandlung
racke Dancer und DBIx::Class
16. Deutscher Perl-Workshop, Hannover, 27. März
/ 41
Konfiguration
Auth::Extensible
DBIC
racke Dancer und DBIx::Class
16. Deutscher Perl-Workshop, Hannover, 27. März
/ 41
Weitere Features
Suche (Solr)
Auswahl Schema
racke Dancer und DBIx::Class
16. Deutscher Perl-Workshop, Hannover, 27. März
/ 41
Entwicklung
https://github.com/interchange/TableEditor
racke Dancer und DBIx::Class
16. Deutscher Perl-Workshop, Hannover, 27. März
/ 41
Dancer2
Plugin::DBIC https://metacpan.org/pod/Dancer2::Plugin::
DBIC
Session::DBIC noch nicht portiert
TableEditor noch nicht portiert
racke Dancer und DBIx::Class
16. Deutscher Perl-Workshop, Hannover, 27. März
/ 41
Slides
Slides: http://www.linuxia.de/talks/pws2014/
dancer-dbic-de-beamer.pdf
racke Dancer und DBIx::Class
16. Deutscher Perl-Workshop, Hannover, 27. März
/ 41

More Related Content

Similar to Dancer und DBIx::Class

Scala und Lift
Scala und LiftScala und Lift
Scala und Liftadesso AG
 
Java 8, mit Lambdas das hohe Lied des Functional Programming singen
Java 8, mit Lambdas das hohe Lied des Functional Programming singenJava 8, mit Lambdas das hohe Lied des Functional Programming singen
Java 8, mit Lambdas das hohe Lied des Functional Programming singengedoplan
 
DSpace as publication platform
DSpace as publication platformDSpace as publication platform
DSpace as publication platformredsys
 
Article - JDK 8 im Fokus der Entwickler
Article - JDK 8 im Fokus der EntwicklerArticle - JDK 8 im Fokus der Entwickler
Article - JDK 8 im Fokus der EntwicklerWolfgang Weigend
 
Back to Basics – Webinar 2: Ihre erste MongoDB-Anwendung
Back to Basics – Webinar 2: Ihre erste MongoDB-AnwendungBack to Basics – Webinar 2: Ihre erste MongoDB-Anwendung
Back to Basics – Webinar 2: Ihre erste MongoDB-AnwendungMongoDB
 
Kuck mal, Node.js! Einstieg für .NET Entwickler mit Visual Studio Code und Ty...
Kuck mal, Node.js! Einstieg für .NET Entwickler mit Visual Studio Code und Ty...Kuck mal, Node.js! Einstieg für .NET Entwickler mit Visual Studio Code und Ty...
Kuck mal, Node.js! Einstieg für .NET Entwickler mit Visual Studio Code und Ty...Gregor Biswanger
 
Ausrollen von Multi-Tier-Applikationen mit Docker
Ausrollen von Multi-Tier-Applikationen mit DockerAusrollen von Multi-Tier-Applikationen mit Docker
Ausrollen von Multi-Tier-Applikationen mit DockerB1 Systems GmbH
 
SysDB – System DataBase — Ein Datenaggregator für System-Informationen
SysDB – System DataBase — Ein Datenaggregator für System-InformationenSysDB – System DataBase — Ein Datenaggregator für System-Informationen
SysDB – System DataBase — Ein Datenaggregator für System-InformationenSysDB Project
 

Similar to Dancer und DBIx::Class (12)

Scala und Lift
Scala und LiftScala und Lift
Scala und Lift
 
Ruby on Rails SS09 08
Ruby on Rails SS09 08Ruby on Rails SS09 08
Ruby on Rails SS09 08
 
Java 8, mit Lambdas das hohe Lied des Functional Programming singen
Java 8, mit Lambdas das hohe Lied des Functional Programming singenJava 8, mit Lambdas das hohe Lied des Functional Programming singen
Java 8, mit Lambdas das hohe Lied des Functional Programming singen
 
Scala und Lift
Scala und LiftScala und Lift
Scala und Lift
 
DSpace as publication platform
DSpace as publication platformDSpace as publication platform
DSpace as publication platform
 
Einführung in Docker
Einführung in DockerEinführung in Docker
Einführung in Docker
 
PHP-Applikationen mit PEAR
PHP-Applikationen mit PEARPHP-Applikationen mit PEAR
PHP-Applikationen mit PEAR
 
Article - JDK 8 im Fokus der Entwickler
Article - JDK 8 im Fokus der EntwicklerArticle - JDK 8 im Fokus der Entwickler
Article - JDK 8 im Fokus der Entwickler
 
Back to Basics – Webinar 2: Ihre erste MongoDB-Anwendung
Back to Basics – Webinar 2: Ihre erste MongoDB-AnwendungBack to Basics – Webinar 2: Ihre erste MongoDB-Anwendung
Back to Basics – Webinar 2: Ihre erste MongoDB-Anwendung
 
Kuck mal, Node.js! Einstieg für .NET Entwickler mit Visual Studio Code und Ty...
Kuck mal, Node.js! Einstieg für .NET Entwickler mit Visual Studio Code und Ty...Kuck mal, Node.js! Einstieg für .NET Entwickler mit Visual Studio Code und Ty...
Kuck mal, Node.js! Einstieg für .NET Entwickler mit Visual Studio Code und Ty...
 
Ausrollen von Multi-Tier-Applikationen mit Docker
Ausrollen von Multi-Tier-Applikationen mit DockerAusrollen von Multi-Tier-Applikationen mit Docker
Ausrollen von Multi-Tier-Applikationen mit Docker
 
SysDB – System DataBase — Ein Datenaggregator für System-Informationen
SysDB – System DataBase — Ein Datenaggregator für System-InformationenSysDB – System DataBase — Ein Datenaggregator für System-Informationen
SysDB – System DataBase — Ein Datenaggregator für System-Informationen
 

Dancer und DBIx::Class