SlideShare a Scribd company logo
1 of 21
In

2007
I said...
Database interfaces
 for open source
 languages suck
They’re all limited

 They’re all different

They’re all duplicating
 development effort
We need

a common database driver API

    for Perl 6 and Parrot
But what?
Mature, Stable, Functional,
      Object Oriented

Well documented with a test suite

Well known to a wide user base

Well known to driver developers
JDBC
JDBC
No, not Java, just the JDBC API

  The class and method names,
          the semantics
       the documentation
           the test suite
Actually, not plain JDBC

Sanitize the worst influences of Java

Easier to use for dynamic languages
Your Code



         DBI



         DBD



Database Client Library
Your Code
DBI v2 API

                      DBI



                      DBD



             Database Client Library
Your Code
DBI v2 API

                      DBI
DBDI API

                      DBD



             Database Client Library
Your Code
DBI v2 API

                      DBI
DBDI API

                      DBD



             Database Client Library
NO JDBC FOR THIS!

                     Your Code
  DBI v2 API

                        DBI
  DBDI API

                        DBD



USE JDBC       Database Client Library
FOR THIS
2010
java2perl6api

  Generates Perl 6 Role modules that
mirror the API of specified Java Classes

         http://github.com/timbunce/java2perl6
DBDI

A database driver manager and driver
 implementation framework in Perl 6

Uses the roles generated by running
java2perl6api java.sql.DriverManager


        http://github.com/timbunce/DBDI
It Runs!

  A working PostgreSQL driver
      is included in DBDI

It’s very minimal today (July 2010)
but it only took a few hours to write
Next steps?
Build up a class/role hirearchy
   borrowing from open source
         JDBC drivers

Separate driver-specific logic from
driver-independant logic to make it
     easy to implement drivers
Interested?

  Come and join the fun!

    dbdi-dev@perl.org

#dbdi on irc.freenode.org

More Related Content

What's hot

Concurrent paradigms - Paralelism approaches
Concurrent paradigms - Paralelism approachesConcurrent paradigms - Paralelism approaches
Concurrent paradigms - Paralelism approaches
Joel Corrêa
 
Roopa_1Year_6Mont_Java_AndroidExper
Roopa_1Year_6Mont_Java_AndroidExperRoopa_1Year_6Mont_Java_AndroidExper
Roopa_1Year_6Mont_Java_AndroidExper
Roopa Bai
 
Challenges In Dsl Design
Challenges In Dsl DesignChallenges In Dsl Design
Challenges In Dsl Design
Sven Efftinge
 
Павел Фатин и Александр Подхалюзин «Scala plugin for IntelliJ IDEA»
Павел Фатин и Александр Подхалюзин «Scala plugin for IntelliJ IDEA»Павел Фатин и Александр Подхалюзин «Scala plugin for IntelliJ IDEA»
Павел Фатин и Александр Подхалюзин «Scala plugin for IntelliJ IDEA»
e-Legion
 

What's hot (17)

Concurrent paradigms - Paralelism approaches
Concurrent paradigms - Paralelism approachesConcurrent paradigms - Paralelism approaches
Concurrent paradigms - Paralelism approaches
 
Building domain-specific languages with Groovy
Building domain-specific languages with GroovyBuilding domain-specific languages with Groovy
Building domain-specific languages with Groovy
 
Industrial training
Industrial trainingIndustrial training
Industrial training
 
Java project
Java projectJava project
Java project
 
Smartling
SmartlingSmartling
Smartling
 
J2ee architecture
J2ee architectureJ2ee architecture
J2ee architecture
 
Roopa_1Year_6Mont_Java_AndroidExper
Roopa_1Year_6Mont_Java_AndroidExperRoopa_1Year_6Mont_Java_AndroidExper
Roopa_1Year_6Mont_Java_AndroidExper
 
Empathic API-Design
Empathic API-DesignEmpathic API-Design
Empathic API-Design
 
Java
JavaJava
Java
 
Challenges In Dsl Design
Challenges In Dsl DesignChallenges In Dsl Design
Challenges In Dsl Design
 
Introductio to Docker Containers
Introductio to Docker ContainersIntroductio to Docker Containers
Introductio to Docker Containers
 
Павел Фатин и Александр Подхалюзин «Scala plugin for IntelliJ IDEA»
Павел Фатин и Александр Подхалюзин «Scala plugin for IntelliJ IDEA»Павел Фатин и Александр Подхалюзин «Scala plugin for IntelliJ IDEA»
Павел Фатин и Александр Подхалюзин «Scala plugin for IntelliJ IDEA»
 
Java vs python
Java vs pythonJava vs python
Java vs python
 
computer science JAVA ppt
computer science JAVA pptcomputer science JAVA ppt
computer science JAVA ppt
 
Java Introduction
Java IntroductionJava Introduction
Java Introduction
 
Java Intro
Java IntroJava Intro
Java Intro
 
Introduction to Java
Introduction to JavaIntroduction to Java
Introduction to Java
 

Similar to Perl 6 DBDI 201007 (OUTDATED, see 201008)

jdbc-130913021409-phpapp01000988www.pptx
jdbc-130913021409-phpapp01000988www.pptxjdbc-130913021409-phpapp01000988www.pptx
jdbc-130913021409-phpapp01000988www.pptx
ssuser8878c1
 
Java Database Connectivity
Java Database ConnectivityJava Database Connectivity
Java Database Connectivity
ireneconje
 

Similar to Perl 6 DBDI 201007 (OUTDATED, see 201008) (20)

Perl6 DBDI YAPC::EU 201008
Perl6 DBDI YAPC::EU 201008Perl6 DBDI YAPC::EU 201008
Perl6 DBDI YAPC::EU 201008
 
DBI for Parrot and Perl 6 Lightning Talk 2007
DBI for Parrot and Perl 6 Lightning Talk 2007DBI for Parrot and Perl 6 Lightning Talk 2007
DBI for Parrot and Perl 6 Lightning Talk 2007
 
jdbc document
jdbc documentjdbc document
jdbc document
 
Jdbc_ravi_2016
Jdbc_ravi_2016Jdbc_ravi_2016
Jdbc_ravi_2016
 
jdbc-130913021409-phpapp01000988www.pptx
jdbc-130913021409-phpapp01000988www.pptxjdbc-130913021409-phpapp01000988www.pptx
jdbc-130913021409-phpapp01000988www.pptx
 
Introduction of java jdbc
Introduction of java jdbcIntroduction of java jdbc
Introduction of java jdbc
 
Introduction of java jdbc
Introduction of java jdbcIntroduction of java jdbc
Introduction of java jdbc
 
Java database programming with jdbc
Java database programming with jdbcJava database programming with jdbc
Java database programming with jdbc
 
Jdbc drivers
Jdbc driversJdbc drivers
Jdbc drivers
 
chapter 5 java.pptx
chapter 5  java.pptxchapter 5  java.pptx
chapter 5 java.pptx
 
Chapter_4_-_JDBC[1].pptx
Chapter_4_-_JDBC[1].pptxChapter_4_-_JDBC[1].pptx
Chapter_4_-_JDBC[1].pptx
 
jdbc Java Database Connectivity ujjwal matoliya jdbc.pptx
 jdbc Java Database Connectivity ujjwal matoliya jdbc.pptx jdbc Java Database Connectivity ujjwal matoliya jdbc.pptx
jdbc Java Database Connectivity ujjwal matoliya jdbc.pptx
 
JDBC Architecture and Drivers
JDBC Architecture and DriversJDBC Architecture and Drivers
JDBC Architecture and Drivers
 
Jdbc architecture and driver types ppt
Jdbc architecture and driver types pptJdbc architecture and driver types ppt
Jdbc architecture and driver types ppt
 
Java Database Connectivity(JDBC) java database
Java Database Connectivity(JDBC) java databaseJava Database Connectivity(JDBC) java database
Java Database Connectivity(JDBC) java database
 
jdbc
jdbcjdbc
jdbc
 
Java Database Connectivity
Java Database ConnectivityJava Database Connectivity
Java Database Connectivity
 
Rollin onj Rubyv3
Rollin onj Rubyv3Rollin onj Rubyv3
Rollin onj Rubyv3
 
JDBC java database connectivity with dbms
JDBC java database connectivity with dbmsJDBC java database connectivity with dbms
JDBC java database connectivity with dbms
 
Jdbc 1
Jdbc 1Jdbc 1
Jdbc 1
 

More from Tim Bunce

More from Tim Bunce (16)

Application Logging in the 21st century - 2014.key
Application Logging in the 21st century - 2014.keyApplication Logging in the 21st century - 2014.key
Application Logging in the 21st century - 2014.key
 
Devel::NYTProf v5 at YAPC::NA 201406
Devel::NYTProf v5 at YAPC::NA 201406Devel::NYTProf v5 at YAPC::NA 201406
Devel::NYTProf v5 at YAPC::NA 201406
 
Perl Memory Use - LPW2013
Perl Memory Use - LPW2013Perl Memory Use - LPW2013
Perl Memory Use - LPW2013
 
Perl at SkyCon'12
Perl at SkyCon'12Perl at SkyCon'12
Perl at SkyCon'12
 
Perl Memory Use 201209
Perl Memory Use 201209Perl Memory Use 201209
Perl Memory Use 201209
 
Perl Memory Use 201207 (OUTDATED, see 201209 )
Perl Memory Use 201207 (OUTDATED, see 201209 )Perl Memory Use 201207 (OUTDATED, see 201209 )
Perl Memory Use 201207 (OUTDATED, see 201209 )
 
Perl Dist::Surveyor 2011
Perl Dist::Surveyor 2011Perl Dist::Surveyor 2011
Perl Dist::Surveyor 2011
 
PL/Perl - New Features in PostgreSQL 9.0 201012
PL/Perl - New Features in PostgreSQL 9.0 201012PL/Perl - New Features in PostgreSQL 9.0 201012
PL/Perl - New Features in PostgreSQL 9.0 201012
 
PL/Perl - New Features in PostgreSQL 9.0
PL/Perl - New Features in PostgreSQL 9.0PL/Perl - New Features in PostgreSQL 9.0
PL/Perl - New Features in PostgreSQL 9.0
 
DBI Advanced Tutorial 2007
DBI Advanced Tutorial 2007DBI Advanced Tutorial 2007
DBI Advanced Tutorial 2007
 
Devel::NYTProf v3 - 200908 (OUTDATED, see 201008)
Devel::NYTProf v3 - 200908 (OUTDATED, see 201008)Devel::NYTProf v3 - 200908 (OUTDATED, see 201008)
Devel::NYTProf v3 - 200908 (OUTDATED, see 201008)
 
Perl Myths 200909
Perl Myths 200909Perl Myths 200909
Perl Myths 200909
 
DashProfiler 200807
DashProfiler 200807DashProfiler 200807
DashProfiler 200807
 
DBD::Gofer 200809
DBD::Gofer 200809DBD::Gofer 200809
DBD::Gofer 200809
 
Devel::NYTProf 2009-07 (OUTDATED, see 201008)
Devel::NYTProf 2009-07 (OUTDATED, see 201008)Devel::NYTProf 2009-07 (OUTDATED, see 201008)
Devel::NYTProf 2009-07 (OUTDATED, see 201008)
 
Perl Myths 200802 with notes (OUTDATED, see 200909)
Perl Myths 200802 with notes (OUTDATED, see 200909)Perl Myths 200802 with notes (OUTDATED, see 200909)
Perl Myths 200802 with notes (OUTDATED, see 200909)
 

Recently uploaded

Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
panagenda
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 

Recently uploaded (20)

Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfRansomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdf
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot ModelNavi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu SubbuApidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 

Perl 6 DBDI 201007 (OUTDATED, see 201008)

  • 2. Database interfaces for open source languages suck
  • 3. They’re all limited They’re all different They’re all duplicating development effort
  • 4. We need a common database driver API for Perl 6 and Parrot
  • 6. Mature, Stable, Functional, Object Oriented Well documented with a test suite Well known to a wide user base Well known to driver developers
  • 8. JDBC No, not Java, just the JDBC API The class and method names, the semantics the documentation the test suite
  • 9. Actually, not plain JDBC Sanitize the worst influences of Java Easier to use for dynamic languages
  • 10. Your Code DBI DBD Database Client Library
  • 11. Your Code DBI v2 API DBI DBD Database Client Library
  • 12. Your Code DBI v2 API DBI DBDI API DBD Database Client Library
  • 13. Your Code DBI v2 API DBI DBDI API DBD Database Client Library
  • 14. NO JDBC FOR THIS! Your Code DBI v2 API DBI DBDI API DBD USE JDBC Database Client Library FOR THIS
  • 15. 2010
  • 16. java2perl6api Generates Perl 6 Role modules that mirror the API of specified Java Classes http://github.com/timbunce/java2perl6
  • 17. DBDI A database driver manager and driver implementation framework in Perl 6 Uses the roles generated by running java2perl6api java.sql.DriverManager http://github.com/timbunce/DBDI
  • 18. It Runs! A working PostgreSQL driver is included in DBDI It’s very minimal today (July 2010) but it only took a few hours to write
  • 20. Build up a class/role hirearchy borrowing from open source JDBC drivers Separate driver-specific logic from driver-independant logic to make it easy to implement drivers
  • 21. Interested? Come and join the fun! dbdi-dev@perl.org #dbdi on irc.freenode.org

Editor's Notes

  1. Database interfaces for Java, C#, VB etc also suck, but are much more functional Perl has its own database drivers, as do Python, Ruby, PHP, tcl etc etc Just about every open source language has its own database drivers Some even have more than one set of database interfaces and drivers
  2. They're All limited Most provide access to a fraction of database client functionality They're All different Even the ones modelled on the DBI differ in significant ways They're All duplicating development effort So much more could be achieved if the same effort was focussed on fewer drivers that could be shared across languages Diversity is good, but this is madness.
  3. All drivers can implement the common API, then any parrot language can use any driver
  4. We need an API that is...
  5. The only good fit is the Java JDBC API “JDBC is the new ODBC” So I'm proposing that the JDBC API specification be the common database driver API for Parrot The goal being to be able to use the official JDBC docs as the primary docs for the API
  6. The only good fit is the Java JDBC API “JDBC is the new ODBC” So I'm proposing that the JDBC API specification be the common database driver API for Parrot The goal being to be able to use the official JDBC docs as the primary docs for the API
  7. The only good fit is the Java JDBC API “JDBC is the new ODBC” So I'm proposing that the JDBC API specification be the common database driver API for Parrot The goal being to be able to use the official JDBC docs as the primary docs for the API
  8. Language interface layer adapts the JDBC API to the particular needs of that language