Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Dancer und DBIx::Class
Stefan Hornburg (Racke)
racke@linuxia.de
16. Deutscher Perl-Workshop, Hannover, 27. März 2013
racke...
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, Hannov...
TableEditor Features
Unterstützung mehrerer Datenbanksysteme
MySQL, PostgreSQL, ...
höherer Abstraktionslevel
modernes Fro...
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 Per...
DBIx::Class ohne Dancer Plugin
use Interchange6 : : Schema ;
$schema = Interchange6 : : Schema−>connect ( . . . ) ;
$schem...
DBIx::Class mit Dancer Plugin
use Dancer : : Plugin : : DBIC ;
schema−>r e s u l t s e t ( ’ User ’)−>search ( { . . } ) ;...
Konfiguration
plugins :
DBIC :
default :
dsn : dbi : mysql : interchange6
user : racke
pass : nevairbe
schema_class : Inter...
Mehrere Schemas
plugins :
DBIC :
default :
dsn : dbi : mysql : interchange6
user : racke
pass : nevairbe
schema_class : In...
Mehrere Schemas
use Dancer : : Plugin : : DBIC ;
schema( ’ legacy ’)−> r e s u l t s e t ( ’ UserDb ’)−>search ( { . . } )...
UTF-8 für MySQL
plugins :
DBIC :
default :
dsn : dbi : mysql : interchange6
user : racke
pass : nevairbe
schema_class : In...
Schema dynamisch erzeugen
schema_class fehlt in Konfiguration
DBIx::Class::Schema::Loader
Test und Entwicklung
TableEditor
...
Übersicht Dancer::Session::DBIC
Engines
Konfiguration
Serialisierung
Sitzungsablauf
racke Dancer und DBIx::Class
16. Deutsc...
Engines
Templates
TT, Xslate, Flute, ...
Sitzungen (Sessions)
Storable, Database, DBIC
Logger
File, Syslog
Serialisierer
J...
Konfiguration
session Name der Sessionengine, hier DBIC
session_options Optionen
session_expires Ablaufzeit der Session
rac...
Konfiguration
session : "DBIC"
session_options :
dsn : dbi : mysql : interchange6
user : racke
pass : nevairbe
schema_class...
Konfiguration
set session => ’DBIC ’ ;
set session_options => {schema => schema } ;
racke Dancer und DBIx::Class
16. Deutsc...
Beispieltabelle
CREATE TABLE ‘ sessions ‘ (
‘ sessions_id ‘ varchar (255) NOT NULL,
‘ session_data ‘ t e x t NOT NULL,
‘ c...
Serialisierer
set ’ session_options ’ => {
schema => schema ,
s e r i a l i z e r => sub { YAML: : Dump(@_) ; } ,
d e s e ...
Sitzungsablauf
alte Sitzungen aus Datenbank löschen
Interchange6::Schema::Resultset::Session
$schema−>r e s u l t s e t ( ...
Übersicht TableEditor
Installation
Frontend
Anmeldung
Beziehungen
Einschränkungen
Konfiguration
racke Dancer und DBIx::Clas...
Installation
g i t clone https : / / github .com/ interchange / TableEditor
cd TableEditor
cpanm .
. / bin / app . pl
rack...
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. De...
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...
Anmeldung
Dancer::Plugin::Auth::Extensible
Provider
Unix
DBIC
Datenbank (geplant)
racke Dancer und DBIx::Class
16. Deutsch...
Beziehungen
might_have
has_many
belongs_to
many_to_many
racke Dancer und DBIx::Class
16. Deutscher Perl-Workshop, Hannover...
Einschränkungen
Primärschlüssel für eine Spalte
Geschwindigkeit (komplexe Schemas)
Fehlerbehandlung
racke Dancer und DBIx:...
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
...
Entwicklung
https://github.com/interchange/TableEditor
racke Dancer und DBIx::Class
16. Deutscher Perl-Workshop, Hannover,...
Dancer2
Plugin::DBIC https://metacpan.org/pod/Dancer2::Plugin::
DBIC
Session::DBIC noch nicht portiert
TableEditor noch ni...
Slides
Slides: http://www.linuxia.de/talks/pws2014/
dancer-dbic-de-beamer.pdf
racke Dancer und DBIx::Class
16. Deutscher P...
Upcoming SlideShare
Loading in …5
×

Dancer und DBIx::Class

542 views

Published on

DBIx::Class ist mit Sicherheit einer der größten Schätze von "Modern Perl"
und bietet schnelle und komfortable Datenbankabfragen.

Ebenso erleichtert Dancer das Erstellen von Webanwendungen mit einer leicht
verständlichen Programmierung.

Wie können beide zusammen genutzt werden? Zunächst mit dem DBIC Plugin für
Dancer. Mit diesem können mehrere DBIx::Class Schemas innerhalb der
Dancer-Anwendung verwenden werden.

Um auch die Dancer-Sessions in der Datenbank zu speichern, habe ich eine Engine für Dancer und DBIC geschrieben.

Außerdem werde ich ein Projekt vorstellen, mit dem man einfach den Inhalt
von Datenbanken mittels eines DBIx::Class Schemas editieren kann.

Published in: Software
  • Be the first to comment

  • Be the first to like this

Dancer und DBIx::Class

  1. 1. 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
  2. 2. CGI.pm must die ... racke Dancer und DBIx::Class 16. Deutscher Perl-Workshop, Hannover, 27. März / 41
  3. 3. ... and we bury DBI alive! racke Dancer und DBIx::Class 16. Deutscher Perl-Workshop, Hannover, 27. März / 41
  4. 4. Dancer und DBIx::Class racke Dancer und DBIx::Class 16. Deutscher Perl-Workshop, Hannover, 27. März / 41
  5. 5. Anwendungen racke Dancer und DBIx::Class 16. Deutscher Perl-Workshop, Hannover, 27. März / 41
  6. 6. eCommerce Software Magento Interchange6 racke Dancer und DBIx::Class 16. Deutscher Perl-Workshop, Hannover, 27. März / 41
  7. 7. Datenbankadministration phpmyadmin phppgadmin TableEditor racke Dancer und DBIx::Class 16. Deutscher Perl-Workshop, Hannover, 27. März / 41
  8. 8. 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
  9. 9. Eingabe Datenbankparameter racke Dancer und DBIx::Class 16. Deutscher Perl-Workshop, Hannover, 27. März / 41
  10. 10. Ansicht Produkte racke Dancer und DBIx::Class 16. Deutscher Perl-Workshop, Hannover, 27. März / 41
  11. 11. Ansicht Produkt racke Dancer und DBIx::Class 16. Deutscher Perl-Workshop, Hannover, 27. März / 41
  12. 12. Beziehung Orderline racke Dancer und DBIx::Class 16. Deutscher Perl-Workshop, Hannover, 27. März / 41
  13. 13. Übersicht Dancer::Plugin::DBIC Anwendung Konfiguration UTF-8 Schema erzeugen racke Dancer und DBIx::Class 16. Deutscher Perl-Workshop, Hannover, 27. März / 41
  14. 14. 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
  15. 15. 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
  16. 16. 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
  17. 17. 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
  18. 18. 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
  19. 19. 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
  20. 20. 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
  21. 21. Übersicht Dancer::Session::DBIC Engines Konfiguration Serialisierung Sitzungsablauf racke Dancer und DBIx::Class 16. Deutscher Perl-Workshop, Hannover, 27. März / 41
  22. 22. 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
  23. 23. 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
  24. 24. 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
  25. 25. Konfiguration set session => ’DBIC ’ ; set session_options => {schema => schema } ; racke Dancer und DBIx::Class 16. Deutscher Perl-Workshop, Hannover, 27. März / 41
  26. 26. 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
  27. 27. 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
  28. 28. 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
  29. 29. Übersicht TableEditor Installation Frontend Anmeldung Beziehungen Einschränkungen Konfiguration racke Dancer und DBIx::Class 16. Deutscher Perl-Workshop, Hannover, 27. März / 41
  30. 30. 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
  31. 31. Treiber DBD::mysql DBD::Pg ... racke Dancer und DBIx::Class 16. Deutscher Perl-Workshop, Hannover, 27. März / 41
  32. 32. 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
  33. 33. 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
  34. 34. Anmeldung Dancer::Plugin::Auth::Extensible Provider Unix DBIC Datenbank (geplant) racke Dancer und DBIx::Class 16. Deutscher Perl-Workshop, Hannover, 27. März / 41
  35. 35. Beziehungen might_have has_many belongs_to many_to_many racke Dancer und DBIx::Class 16. Deutscher Perl-Workshop, Hannover, 27. März / 41
  36. 36. 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
  37. 37. Konfiguration Auth::Extensible DBIC racke Dancer und DBIx::Class 16. Deutscher Perl-Workshop, Hannover, 27. März / 41
  38. 38. Weitere Features Suche (Solr) Auswahl Schema racke Dancer und DBIx::Class 16. Deutscher Perl-Workshop, Hannover, 27. März / 41
  39. 39. Entwicklung https://github.com/interchange/TableEditor racke Dancer und DBIx::Class 16. Deutscher Perl-Workshop, Hannover, 27. März / 41
  40. 40. 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
  41. 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

×