SlideShare a Scribd company logo
Smalltalk
                             Programmer




Ing. Mariano Martínez Peck   marianopeck@gmail.com
SqueakDBX

  The complete and G
                IN to
            E T
open-source solution
         Kdatabase
    A  R
 relational
 M access
SqueakDBX team
Mariano                       Germán
                                         Hernán
                                         Cassinelli
M. Peck   Esteban Lorenzano   Palacios
F.A.Q


 Who are we?

 How did it begin?

 What is actually SqueakDBX?
RDBMS VS. OODB




 Please, don't fight ;)
Anyway, we rather program in
objects and use RDBMS than
  using Java with RDBMS
              ;)
Survey                              1/2
How many times were you forced to use a
particular database?
Survey             2/2
Which databases?
Squeak's current situation
 Only MySQL and PostgreSQL native
 drivers.
 Limited ODBC driver
 Glorp in Squeak
only works with
PostgreSQL
We are in trouble...
 Direct SQL queries: 20%




 Using GLORP: 8.52%
Our goal
 Direct SQL queries: 100%




 Using GLORP: 100%
Our purpose
OpenDBX architecture
Oracle uses oci.h and and libmysqlclient_r.
MySQL uses mysql.h libclntsh.
It has N functions.
       M functions.                           Common API
                                            for all backends!!!
Examples: OCIHandleAlloc(), OCIServerAttach(),
            mysql_real_connect(), mysql_server_end(),
OCISessionEnd(), etc.
mysql_real_query(), etc.
Oracle       MySQL        PosgreSQL        Sqlite       SQLServer
client        client        client         client         client
library       library       library        library        library
Why OpenDBX?
It is fast
Simple to use
Flexible
Cross platform
Asynchronous queries
Specific RDBMS features
Good documentation
Deployment and infrastructure
     PC1              PC2

 Squeak image
                     Database

  OpenDBX


  Database
 Client Library
Smalltalk and C

      Squeak image



                                                   |

      OpenDBX
      #include <stdio.h>
      #include <stdio.h>
      static int mysql_odbx_get_option( odbx_t*)
      static int mysql_odbx_get_option( odbx_t*)
               switch( option )
               switch( option )
      .....
      .....
Smalltalk-C Connector
FFI (Foreign Function Interface)


 Main problem: Locks the entire VM
Squeak ODBC driver queries

                  VM locked
                  time
OpenDBX Connector
FFI (Foreign Function Interface)


 Main problem: Locks the entire VM
 Our solution:
  ✔   Asynchronous queries
  ✔   “Mini” VM locks
  ✔   Retry schema
  ✔   DBXQuerySettings>>timeout:
SqueakDBX queries

            VM locked
            time
Database access in Smalltalk
SqueakDBX                       Smalltalk driver
✔   One for all databases   ✗   One for each database
✔   Less time and effort    ✗   More time and effort
✔   Good performace         ✗   Performance issues?
✔   OSS and proprietary     ✗   Only OSS
✗   Difficult to debug      ✔   Easier to debug
✗   Platform dependent      ✔   Platform independent
✗   FFI locks the VM        ✔   Non-locking
SqueakDBX design


SqueakDBX Structure (API)
SqueakDBX Structure (API)

  SqueakDBX Platform
  SqueakDBX Platform

  OpenDBX Connector
  OpenDBX Connector
                            {
                            {
                               DBXConnection
                               DBXConnectionSettings
                               DBXResultSet
                               DBXPlatform
                               DBXResult
                               DBXSpecialOptions
                               DBXRow
                               DBXErrorSeverity
                               ...
                               DBXTimeSpec
                               ...

    FFI
    FFI      SqueakDBXPlugin
             SqueakDBXPlugin


          OpenDBX
Showtime
Who can use SqueakDBX?

 An application
 Glorp
 Magritte-RDB
 SqueakSave
 Moe
Current backends and OS
Benchmark for PostgreSQL
      1800

      1600

      1400

      1200

      1000
 ms




      800                                                 SqueakDBX
                                                          Native
      600

      400

      200

        0
                    Converted Insert         Select1000
             Insert                Select100
                              tests
Benchmark for MySQL
      700

      600

      500

      400
 ms




      300                                                SqueakDBX
                                                         Native
      200

      100

       0
                   Converted Insert         Select1000
            Insert                Select100
                             tests
Features
 Mini VM locks
 SqueakDBXPlugin
 Automatic fields conversion
 Configurable logging/trace
 Special RDBMS features
 Multistatements
 Automatic release of resources
What do we have?
 Enough unit tests
 Acceptable test coverage
 SmallLint runs
 Good enough design
 GLORP integration
Documentation
Website
Documented code
Mailing list
Benchmarks
What will come
 Complete Glorp refactor and integration
 More backends in more OS
 Large objects support
 Better SPs and functions support
 Continue with SqueakDBXPlugin
 Try Alien FFI
 Port to Smalltalk/X ?
Glorp progress
 Port from Squeak to Pharo
 First refactor to SqueakDatabaseAccesor
 Driver for native driver
 Driver for SqueakDBX (PostgreSQL)
Glorp before SqueakDBX
Glorp after SqueakDBX
Special thanks to...

                  Norbert Sendetzky



     GLORP             Alan Knight



                  Stéphane Ducasse
aConnection execute: 'select * from questions
   where has_answer = true'




Ing. Mariano Martínez Peck      marianopeck@gmail.com
Thank you
very much
Squeak DBX

More Related Content

What's hot (20)

NoSQL and JavaScript: a Love Story
NoSQL and JavaScript: a Love StoryNoSQL and JavaScript: a Love Story
NoSQL and JavaScript: a Love Story
Alexandre Morgaut
 
Requery overview
Requery overviewRequery overview
Requery overview
Sunghyouk Bae
 
User defined-functions-cassandra-summit-eu-2014
User defined-functions-cassandra-summit-eu-2014User defined-functions-cassandra-summit-eu-2014
User defined-functions-cassandra-summit-eu-2014
Robert Stupp
 
Kotlin @ Coupang Backed - JetBrains Day seoul 2018
Kotlin @ Coupang Backed - JetBrains Day seoul 2018Kotlin @ Coupang Backed - JetBrains Day seoul 2018
Kotlin @ Coupang Backed - JetBrains Day seoul 2018
Sunghyouk Bae
 
Hector v2: The Second Version of the Popular High-Level Java Client for Apach...
Hector v2: The Second Version of the Popular High-Level Java Client for Apach...Hector v2: The Second Version of the Popular High-Level Java Client for Apach...
Hector v2: The Second Version of the Popular High-Level Java Client for Apach...
zznate
 
Spring data requery
Spring data requerySpring data requery
Spring data requery
Sunghyouk Bae
 
Objective-C Is Not Java
Objective-C Is Not JavaObjective-C Is Not Java
Objective-C Is Not Java
Chris Adamson
 
Linq
LinqLinq
Linq
Easy Communication & Technology
 
Kotlin @ Coupang Backend 2017
Kotlin @ Coupang Backend 2017Kotlin @ Coupang Backend 2017
Kotlin @ Coupang Backend 2017
Sunghyouk Bae
 
XQuery Design Patterns
XQuery Design PatternsXQuery Design Patterns
XQuery Design Patterns
William Candillon
 
Cassandra 3.0
Cassandra 3.0Cassandra 3.0
Cassandra 3.0
Robert Stupp
 
JUnit5 and TestContainers
JUnit5 and TestContainersJUnit5 and TestContainers
JUnit5 and TestContainers
Sunghyouk Bae
 
Slickdemo
SlickdemoSlickdemo
Slickdemo
Knoldus Inc.
 
wtf is in Java/JDK/wtf7?
wtf is in Java/JDK/wtf7?wtf is in Java/JDK/wtf7?
wtf is in Java/JDK/wtf7?
Scott Leberknight
 
Meetup cassandra sfo_jdbc
Meetup cassandra sfo_jdbcMeetup cassandra sfo_jdbc
Meetup cassandra sfo_jdbc
zznate
 
Slick: Bringing Scala’s Powerful Features to Your Database Access
Slick: Bringing Scala’s Powerful Features to Your Database Access Slick: Bringing Scala’s Powerful Features to Your Database Access
Slick: Bringing Scala’s Powerful Features to Your Database Access
Rebecca Grenier
 
April 2010 - JBoss Web Services
April 2010 - JBoss Web ServicesApril 2010 - JBoss Web Services
April 2010 - JBoss Web Services
JBug Italy
 
The CoFX Data Model
The CoFX Data ModelThe CoFX Data Model
The CoFX Data Model
Rainer Stropek
 
Cassandra 3.0 Awesomeness
Cassandra 3.0 AwesomenessCassandra 3.0 Awesomeness
Cassandra 3.0 Awesomeness
Jon Haddad
 
Building .NET Apps using Couchbase Lite
Building .NET Apps using Couchbase LiteBuilding .NET Apps using Couchbase Lite
Building .NET Apps using Couchbase Lite
gramana
 
NoSQL and JavaScript: a Love Story
NoSQL and JavaScript: a Love StoryNoSQL and JavaScript: a Love Story
NoSQL and JavaScript: a Love Story
Alexandre Morgaut
 
User defined-functions-cassandra-summit-eu-2014
User defined-functions-cassandra-summit-eu-2014User defined-functions-cassandra-summit-eu-2014
User defined-functions-cassandra-summit-eu-2014
Robert Stupp
 
Kotlin @ Coupang Backed - JetBrains Day seoul 2018
Kotlin @ Coupang Backed - JetBrains Day seoul 2018Kotlin @ Coupang Backed - JetBrains Day seoul 2018
Kotlin @ Coupang Backed - JetBrains Day seoul 2018
Sunghyouk Bae
 
Hector v2: The Second Version of the Popular High-Level Java Client for Apach...
Hector v2: The Second Version of the Popular High-Level Java Client for Apach...Hector v2: The Second Version of the Popular High-Level Java Client for Apach...
Hector v2: The Second Version of the Popular High-Level Java Client for Apach...
zznate
 
Objective-C Is Not Java
Objective-C Is Not JavaObjective-C Is Not Java
Objective-C Is Not Java
Chris Adamson
 
Kotlin @ Coupang Backend 2017
Kotlin @ Coupang Backend 2017Kotlin @ Coupang Backend 2017
Kotlin @ Coupang Backend 2017
Sunghyouk Bae
 
JUnit5 and TestContainers
JUnit5 and TestContainersJUnit5 and TestContainers
JUnit5 and TestContainers
Sunghyouk Bae
 
Meetup cassandra sfo_jdbc
Meetup cassandra sfo_jdbcMeetup cassandra sfo_jdbc
Meetup cassandra sfo_jdbc
zznate
 
Slick: Bringing Scala’s Powerful Features to Your Database Access
Slick: Bringing Scala’s Powerful Features to Your Database Access Slick: Bringing Scala’s Powerful Features to Your Database Access
Slick: Bringing Scala’s Powerful Features to Your Database Access
Rebecca Grenier
 
April 2010 - JBoss Web Services
April 2010 - JBoss Web ServicesApril 2010 - JBoss Web Services
April 2010 - JBoss Web Services
JBug Italy
 
Cassandra 3.0 Awesomeness
Cassandra 3.0 AwesomenessCassandra 3.0 Awesomeness
Cassandra 3.0 Awesomeness
Jon Haddad
 
Building .NET Apps using Couchbase Lite
Building .NET Apps using Couchbase LiteBuilding .NET Apps using Couchbase Lite
Building .NET Apps using Couchbase Lite
gramana
 

Similar to Squeak DBX (20)

DBXTalk: Smalltalk Relational Database Suite
DBXTalk: Smalltalk Relational Database SuiteDBXTalk: Smalltalk Relational Database Suite
DBXTalk: Smalltalk Relational Database Suite
Mariano Martínez Peck
 
MySQL Tech Café #8: MySQL 8.0 for Python Developers
MySQL Tech Café #8: MySQL 8.0 for Python DevelopersMySQL Tech Café #8: MySQL 8.0 for Python Developers
MySQL Tech Café #8: MySQL 8.0 for Python Developers
Frederic Descamps
 
DBXTalk
DBXTalkDBXTalk
DBXTalk
ESUG
 
Develop PHP Applications with MySQL X DevAPI
Develop PHP Applications with MySQL X DevAPIDevelop PHP Applications with MySQL X DevAPI
Develop PHP Applications with MySQL X DevAPI
Dave Stokes
 
Python and MySQL 8.0 Document Store
Python and MySQL 8.0 Document StorePython and MySQL 8.0 Document Store
Python and MySQL 8.0 Document Store
Frederic Descamps
 
Dbms & prog lang
Dbms & prog langDbms & prog lang
Dbms & prog lang
Tech_MX
 
Postgres database Ibrahem Batta
Postgres database Ibrahem BattaPostgres database Ibrahem Batta
Postgres database Ibrahem Batta
Ibrahem Batta
 
My sql technical reference manual
My sql technical reference manualMy sql technical reference manual
My sql technical reference manual
Mir Majid
 
Why MariaDB?
Why MariaDB?Why MariaDB?
Why MariaDB?
Colin Charles
 
Database programming
Database programmingDatabase programming
Database programming
Shree M.L.Kakadiya MCA mahila college, Amreli
 
Hw09 Sqoop Database Import For Hadoop
Hw09   Sqoop Database Import For HadoopHw09   Sqoop Database Import For Hadoop
Hw09 Sqoop Database Import For Hadoop
Cloudera, Inc.
 
2017 biological databasespart2
2017 biological databasespart22017 biological databasespart2
2017 biological databasespart2
Prof. Wim Van Criekinge
 
2016 02 23_biological_databases_part2
2016 02 23_biological_databases_part22016 02 23_biological_databases_part2
2016 02 23_biological_databases_part2
Prof. Wim Van Criekinge
 
Mx Odbc
Mx OdbcMx Odbc
Mx Odbc
fire9
 
DBXTalk - Smalltalks 2011
DBXTalk - Smalltalks 2011DBXTalk - Smalltalks 2011
DBXTalk - Smalltalks 2011
Guille Polito
 
HTTP, JSON, JavaScript, Map&Reduce built-in to MySQL
HTTP, JSON, JavaScript, Map&Reduce built-in to MySQLHTTP, JSON, JavaScript, Map&Reduce built-in to MySQL
HTTP, JSON, JavaScript, Map&Reduce built-in to MySQL
Ulf Wendel
 
MySQL Shell - The Best MySQL DBA Tool
MySQL Shell - The Best MySQL DBA ToolMySQL Shell - The Best MySQL DBA Tool
MySQL Shell - The Best MySQL DBA Tool
Miguel Araújo
 
Php &amp; my sql - how do pdo, mysq-li, and x devapi do what they do
Php &amp; my sql  - how do pdo, mysq-li, and x devapi do what they doPhp &amp; my sql  - how do pdo, mysq-li, and x devapi do what they do
Php &amp; my sql - how do pdo, mysq-li, and x devapi do what they do
Dave Stokes
 
External Language Stored Procedures for MySQL
External Language Stored Procedures for MySQLExternal Language Stored Procedures for MySQL
External Language Stored Procedures for MySQL
Antony T Curtis
 
Sql
SqlSql
Sql
YUCHENG HU
 
DBXTalk: Smalltalk Relational Database Suite
DBXTalk: Smalltalk Relational Database SuiteDBXTalk: Smalltalk Relational Database Suite
DBXTalk: Smalltalk Relational Database Suite
Mariano Martínez Peck
 
MySQL Tech Café #8: MySQL 8.0 for Python Developers
MySQL Tech Café #8: MySQL 8.0 for Python DevelopersMySQL Tech Café #8: MySQL 8.0 for Python Developers
MySQL Tech Café #8: MySQL 8.0 for Python Developers
Frederic Descamps
 
DBXTalk
DBXTalkDBXTalk
DBXTalk
ESUG
 
Develop PHP Applications with MySQL X DevAPI
Develop PHP Applications with MySQL X DevAPIDevelop PHP Applications with MySQL X DevAPI
Develop PHP Applications with MySQL X DevAPI
Dave Stokes
 
Python and MySQL 8.0 Document Store
Python and MySQL 8.0 Document StorePython and MySQL 8.0 Document Store
Python and MySQL 8.0 Document Store
Frederic Descamps
 
Dbms & prog lang
Dbms & prog langDbms & prog lang
Dbms & prog lang
Tech_MX
 
Postgres database Ibrahem Batta
Postgres database Ibrahem BattaPostgres database Ibrahem Batta
Postgres database Ibrahem Batta
Ibrahem Batta
 
My sql technical reference manual
My sql technical reference manualMy sql technical reference manual
My sql technical reference manual
Mir Majid
 
Hw09 Sqoop Database Import For Hadoop
Hw09   Sqoop Database Import For HadoopHw09   Sqoop Database Import For Hadoop
Hw09 Sqoop Database Import For Hadoop
Cloudera, Inc.
 
Mx Odbc
Mx OdbcMx Odbc
Mx Odbc
fire9
 
DBXTalk - Smalltalks 2011
DBXTalk - Smalltalks 2011DBXTalk - Smalltalks 2011
DBXTalk - Smalltalks 2011
Guille Polito
 
HTTP, JSON, JavaScript, Map&Reduce built-in to MySQL
HTTP, JSON, JavaScript, Map&Reduce built-in to MySQLHTTP, JSON, JavaScript, Map&Reduce built-in to MySQL
HTTP, JSON, JavaScript, Map&Reduce built-in to MySQL
Ulf Wendel
 
MySQL Shell - The Best MySQL DBA Tool
MySQL Shell - The Best MySQL DBA ToolMySQL Shell - The Best MySQL DBA Tool
MySQL Shell - The Best MySQL DBA Tool
Miguel Araújo
 
Php &amp; my sql - how do pdo, mysq-li, and x devapi do what they do
Php &amp; my sql  - how do pdo, mysq-li, and x devapi do what they doPhp &amp; my sql  - how do pdo, mysq-li, and x devapi do what they do
Php &amp; my sql - how do pdo, mysq-li, and x devapi do what they do
Dave Stokes
 
External Language Stored Procedures for MySQL
External Language Stored Procedures for MySQLExternal Language Stored Procedures for MySQL
External Language Stored Procedures for MySQL
Antony T Curtis
 

More from ESUG (20)

Words words words... Automatic detection of word repetition
Words words words... Automatic detection of word repetitionWords words words... Automatic detection of word repetition
Words words words... Automatic detection of word repetition
ESUG
 
ShowUs: Compiling with inlining Druid + Opal = DrOpal
ShowUs: Compiling with inlining Druid + Opal = DrOpalShowUs: Compiling with inlining Druid + Opal = DrOpal
ShowUs: Compiling with inlining Druid + Opal = DrOpal
ESUG
 
Show us your Prokject #esug2024: "Gregg Shorthand"
Show us your Prokject #esug2024: "Gregg Shorthand"Show us your Prokject #esug2024: "Gregg Shorthand"
Show us your Prokject #esug2024: "Gregg Shorthand"
ESUG
 
Slides from ShowUs #esug2024: "QuickTalk: Multicultural Microwiki"
Slides from ShowUs #esug2024: "QuickTalk: Multicultural Microwiki"Slides from ShowUs #esug2024: "QuickTalk: Multicultural Microwiki"
Slides from ShowUs #esug2024: "QuickTalk: Multicultural Microwiki"
ESUG
 
Pharo GitLab Example: This is a simple Pharo Smalltalk pipeline example
Pharo GitLab Example: This is a simple Pharo Smalltalk pipeline examplePharo GitLab Example: This is a simple Pharo Smalltalk pipeline example
Pharo GitLab Example: This is a simple Pharo Smalltalk pipeline example
ESUG
 
Show us your Project @ ESUG2024: Security cards
Show us your Project @ ESUG2024: Security cardsShow us your Project @ ESUG2024: Security cards
Show us your Project @ ESUG2024: Security cards
ESUG
 
Phausto: fast and accessible DSP programming for sound and music creation in ...
Phausto: fast and accessible DSP programming for sound and music creation in ...Phausto: fast and accessible DSP programming for sound and music creation in ...
Phausto: fast and accessible DSP programming for sound and music creation in ...
ESUG
 
Modest-Pharo: Unit Test Generation Based on Traces and Metamodels
Modest-Pharo: Unit Test Generation Based on Traces and MetamodelsModest-Pharo: Unit Test Generation Based on Traces and Metamodels
Modest-Pharo: Unit Test Generation Based on Traces and Metamodels
ESUG
 
GLOSS - A GLSP1 Model Server on the Smalltalk Platform
GLOSS - A GLSP1 Model Server on the Smalltalk PlatformGLOSS - A GLSP1 Model Server on the Smalltalk Platform
GLOSS - A GLSP1 Model Server on the Smalltalk Platform
ESUG
 
Smalltalk JIT Compilation: LLVM Experimentation
Smalltalk JIT Compilation: LLVM ExperimentationSmalltalk JIT Compilation: LLVM Experimentation
Smalltalk JIT Compilation: LLVM Experimentation
ESUG
 
Towards resilience against highly dynamic challenges for Wireless Sensor Netw...
Towards resilience against highly dynamic challenges for Wireless Sensor Netw...Towards resilience against highly dynamic challenges for Wireless Sensor Netw...
Towards resilience against highly dynamic challenges for Wireless Sensor Netw...
ESUG
 
SoSAF: A Pharo-Based Framework for Enhancing System-Of-Systems Dependencies A...
SoSAF: A Pharo-Based Framework for Enhancing System-Of-Systems Dependencies A...SoSAF: A Pharo-Based Framework for Enhancing System-Of-Systems Dependencies A...
SoSAF: A Pharo-Based Framework for Enhancing System-Of-Systems Dependencies A...
ESUG
 
Pyramidion : a framework for Domain-Specific Editor
Pyramidion : a framework for Domain-Specific EditorPyramidion : a framework for Domain-Specific Editor
Pyramidion : a framework for Domain-Specific Editor
ESUG
 
Intentional Benchmarking of Dynamic Languages
Intentional Benchmarking of Dynamic LanguagesIntentional Benchmarking of Dynamic Languages
Intentional Benchmarking of Dynamic Languages
ESUG
 
MethodProxies: A Safe and Fast Message-Passing Control Library
MethodProxies: A Safe and Fast Message-Passing Control LibraryMethodProxies: A Safe and Fast Message-Passing Control Library
MethodProxies: A Safe and Fast Message-Passing Control Library
ESUG
 
Runtime Type Collection and its usage in Code Transpiling
Runtime Type Collection and its usage in Code TranspilingRuntime Type Collection and its usage in Code Transpiling
Runtime Type Collection and its usage in Code Transpiling
ESUG
 
Inlined Code Generation for Smalltalk. From IWST2024
Inlined Code Generation for Smalltalk. From IWST2024Inlined Code Generation for Smalltalk. From IWST2024
Inlined Code Generation for Smalltalk. From IWST2024
ESUG
 
Redesigning FFI calls in Pharo: Exploiting the baseline JIT for more performa...
Redesigning FFI calls in Pharo: Exploiting the baseline JIT for more performa...Redesigning FFI calls in Pharo: Exploiting the baseline JIT for more performa...
Redesigning FFI calls in Pharo: Exploiting the baseline JIT for more performa...
ESUG
 
gt4llm: Software Development with LLMs in Glamorous Toolkit
gt4llm: Software Development with LLMs in Glamorous Toolkitgt4llm: Software Development with LLMs in Glamorous Toolkit
gt4llm: Software Development with LLMs in Glamorous Toolkit
ESUG
 
Attack chains construction: Towards detecting and preventing Pharo vulnerabil...
Attack chains construction: Towards detecting and preventing Pharo vulnerabil...Attack chains construction: Towards detecting and preventing Pharo vulnerabil...
Attack chains construction: Towards detecting and preventing Pharo vulnerabil...
ESUG
 
Words words words... Automatic detection of word repetition
Words words words... Automatic detection of word repetitionWords words words... Automatic detection of word repetition
Words words words... Automatic detection of word repetition
ESUG
 
ShowUs: Compiling with inlining Druid + Opal = DrOpal
ShowUs: Compiling with inlining Druid + Opal = DrOpalShowUs: Compiling with inlining Druid + Opal = DrOpal
ShowUs: Compiling with inlining Druid + Opal = DrOpal
ESUG
 
Show us your Prokject #esug2024: "Gregg Shorthand"
Show us your Prokject #esug2024: "Gregg Shorthand"Show us your Prokject #esug2024: "Gregg Shorthand"
Show us your Prokject #esug2024: "Gregg Shorthand"
ESUG
 
Slides from ShowUs #esug2024: "QuickTalk: Multicultural Microwiki"
Slides from ShowUs #esug2024: "QuickTalk: Multicultural Microwiki"Slides from ShowUs #esug2024: "QuickTalk: Multicultural Microwiki"
Slides from ShowUs #esug2024: "QuickTalk: Multicultural Microwiki"
ESUG
 
Pharo GitLab Example: This is a simple Pharo Smalltalk pipeline example
Pharo GitLab Example: This is a simple Pharo Smalltalk pipeline examplePharo GitLab Example: This is a simple Pharo Smalltalk pipeline example
Pharo GitLab Example: This is a simple Pharo Smalltalk pipeline example
ESUG
 
Show us your Project @ ESUG2024: Security cards
Show us your Project @ ESUG2024: Security cardsShow us your Project @ ESUG2024: Security cards
Show us your Project @ ESUG2024: Security cards
ESUG
 
Phausto: fast and accessible DSP programming for sound and music creation in ...
Phausto: fast and accessible DSP programming for sound and music creation in ...Phausto: fast and accessible DSP programming for sound and music creation in ...
Phausto: fast and accessible DSP programming for sound and music creation in ...
ESUG
 
Modest-Pharo: Unit Test Generation Based on Traces and Metamodels
Modest-Pharo: Unit Test Generation Based on Traces and MetamodelsModest-Pharo: Unit Test Generation Based on Traces and Metamodels
Modest-Pharo: Unit Test Generation Based on Traces and Metamodels
ESUG
 
GLOSS - A GLSP1 Model Server on the Smalltalk Platform
GLOSS - A GLSP1 Model Server on the Smalltalk PlatformGLOSS - A GLSP1 Model Server on the Smalltalk Platform
GLOSS - A GLSP1 Model Server on the Smalltalk Platform
ESUG
 
Smalltalk JIT Compilation: LLVM Experimentation
Smalltalk JIT Compilation: LLVM ExperimentationSmalltalk JIT Compilation: LLVM Experimentation
Smalltalk JIT Compilation: LLVM Experimentation
ESUG
 
Towards resilience against highly dynamic challenges for Wireless Sensor Netw...
Towards resilience against highly dynamic challenges for Wireless Sensor Netw...Towards resilience against highly dynamic challenges for Wireless Sensor Netw...
Towards resilience against highly dynamic challenges for Wireless Sensor Netw...
ESUG
 
SoSAF: A Pharo-Based Framework for Enhancing System-Of-Systems Dependencies A...
SoSAF: A Pharo-Based Framework for Enhancing System-Of-Systems Dependencies A...SoSAF: A Pharo-Based Framework for Enhancing System-Of-Systems Dependencies A...
SoSAF: A Pharo-Based Framework for Enhancing System-Of-Systems Dependencies A...
ESUG
 
Pyramidion : a framework for Domain-Specific Editor
Pyramidion : a framework for Domain-Specific EditorPyramidion : a framework for Domain-Specific Editor
Pyramidion : a framework for Domain-Specific Editor
ESUG
 
Intentional Benchmarking of Dynamic Languages
Intentional Benchmarking of Dynamic LanguagesIntentional Benchmarking of Dynamic Languages
Intentional Benchmarking of Dynamic Languages
ESUG
 
MethodProxies: A Safe and Fast Message-Passing Control Library
MethodProxies: A Safe and Fast Message-Passing Control LibraryMethodProxies: A Safe and Fast Message-Passing Control Library
MethodProxies: A Safe and Fast Message-Passing Control Library
ESUG
 
Runtime Type Collection and its usage in Code Transpiling
Runtime Type Collection and its usage in Code TranspilingRuntime Type Collection and its usage in Code Transpiling
Runtime Type Collection and its usage in Code Transpiling
ESUG
 
Inlined Code Generation for Smalltalk. From IWST2024
Inlined Code Generation for Smalltalk. From IWST2024Inlined Code Generation for Smalltalk. From IWST2024
Inlined Code Generation for Smalltalk. From IWST2024
ESUG
 
Redesigning FFI calls in Pharo: Exploiting the baseline JIT for more performa...
Redesigning FFI calls in Pharo: Exploiting the baseline JIT for more performa...Redesigning FFI calls in Pharo: Exploiting the baseline JIT for more performa...
Redesigning FFI calls in Pharo: Exploiting the baseline JIT for more performa...
ESUG
 
gt4llm: Software Development with LLMs in Glamorous Toolkit
gt4llm: Software Development with LLMs in Glamorous Toolkitgt4llm: Software Development with LLMs in Glamorous Toolkit
gt4llm: Software Development with LLMs in Glamorous Toolkit
ESUG
 
Attack chains construction: Towards detecting and preventing Pharo vulnerabil...
Attack chains construction: Towards detecting and preventing Pharo vulnerabil...Attack chains construction: Towards detecting and preventing Pharo vulnerabil...
Attack chains construction: Towards detecting and preventing Pharo vulnerabil...
ESUG
 

Recently uploaded (20)

Build your own NES Emulator... with Kotlin
Build your own NES Emulator... with KotlinBuild your own NES Emulator... with Kotlin
Build your own NES Emulator... with Kotlin
Artur Skowroński
 
Outdated Tech, Invisible Expenses – How Data Silos Undermine Operational Effi...
Outdated Tech, Invisible Expenses – How Data Silos Undermine Operational Effi...Outdated Tech, Invisible Expenses – How Data Silos Undermine Operational Effi...
Outdated Tech, Invisible Expenses – How Data Silos Undermine Operational Effi...
Precisely
 
Partner Tableau Next Product First Call Deck.pdf
Partner Tableau Next Product First Call Deck.pdfPartner Tableau Next Product First Call Deck.pdf
Partner Tableau Next Product First Call Deck.pdf
ssuser3d62c6
 
AI Unboxed - How to Approach AI for Maximum Return
AI Unboxed - How to Approach AI for Maximum ReturnAI Unboxed - How to Approach AI for Maximum Return
AI Unboxed - How to Approach AI for Maximum Return
Merelda
 
NVIDIA’s Enterprise AI Factory and Blueprints_ Paving the Way for Smart, Scal...
NVIDIA’s Enterprise AI Factory and Blueprints_ Paving the Way for Smart, Scal...NVIDIA’s Enterprise AI Factory and Blueprints_ Paving the Way for Smart, Scal...
NVIDIA’s Enterprise AI Factory and Blueprints_ Paving the Way for Smart, Scal...
derrickjswork
 
STKI Annual Israel IT Market Study 2025 .
STKI Annual Israel IT Market Study 2025 .STKI Annual Israel IT Market Study 2025 .
STKI Annual Israel IT Market Study 2025 .
Dr. Jimmy Schwarzkopf
 
"AI in the browser: predicting user actions in real time with TensorflowJS", ...
"AI in the browser: predicting user actions in real time with TensorflowJS", ..."AI in the browser: predicting user actions in real time with TensorflowJS", ...
"AI in the browser: predicting user actions in real time with TensorflowJS", ...
Fwdays
 
Dr Schwarzkopf presentation on STKI Summit A
Dr Schwarzkopf presentation on STKI Summit ADr Schwarzkopf presentation on STKI Summit A
Dr Schwarzkopf presentation on STKI Summit A
Dr. Jimmy Schwarzkopf
 
The fundamental misunderstanding in Team Topologies
The fundamental misunderstanding in Team TopologiesThe fundamental misunderstanding in Team Topologies
The fundamental misunderstanding in Team Topologies
Patricia Aas
 
John Carmack’s Slides From His Upper Bound 2025 Talk
John Carmack’s Slides From His Upper Bound 2025 TalkJohn Carmack’s Slides From His Upper Bound 2025 Talk
John Carmack’s Slides From His Upper Bound 2025 Talk
Razin Mustafiz
 
Artificial Intelligence (Kecerdasan Buatan).pdf
Artificial Intelligence (Kecerdasan Buatan).pdfArtificial Intelligence (Kecerdasan Buatan).pdf
Artificial Intelligence (Kecerdasan Buatan).pdf
NufiEriKusumawati
 
Introducing High Availability: Business Continuity for Every NAS User
Introducing High Availability: Business Continuity for Every NAS UserIntroducing High Availability: Business Continuity for Every NAS User
Introducing High Availability: Business Continuity for Every NAS User
QNAP Marketing
 
Automating Call Centers with AI Agents_ Achieving Sub-700ms Latency.docx
Automating Call Centers with AI Agents_ Achieving Sub-700ms Latency.docxAutomating Call Centers with AI Agents_ Achieving Sub-700ms Latency.docx
Automating Call Centers with AI Agents_ Achieving Sub-700ms Latency.docx
Ihor Hamal
 
AI in Java - MCP in Action, Langchain4J-CDI, SmallRye-LLM, Spring AI
AI in Java - MCP in Action, Langchain4J-CDI, SmallRye-LLM, Spring AIAI in Java - MCP in Action, Langchain4J-CDI, SmallRye-LLM, Spring AI
AI in Java - MCP in Action, Langchain4J-CDI, SmallRye-LLM, Spring AI
Buhake Sindi
 
Interactive SQL: SQL, Features of SQL, DDL & DML
Interactive SQL: SQL, Features of SQL,  DDL & DMLInteractive SQL: SQL, Features of SQL,  DDL & DML
Interactive SQL: SQL, Features of SQL, DDL & DML
IsakkiDeviP
 
AI and Gender: Decoding the Sociological Impact
AI and Gender: Decoding the Sociological ImpactAI and Gender: Decoding the Sociological Impact
AI and Gender: Decoding the Sociological Impact
SaikatBasu37
 
Managing Geospatial Open Data Serverlessly [AWS Community Day CH 2025]
Managing Geospatial Open Data Serverlessly [AWS Community Day CH 2025]Managing Geospatial Open Data Serverlessly [AWS Community Day CH 2025]
Managing Geospatial Open Data Serverlessly [AWS Community Day CH 2025]
Chris Bingham
 
How to Integrate FME with Databricks (and Why You’ll Want To)
How to Integrate FME with Databricks (and Why You’ll Want To)How to Integrate FME with Databricks (and Why You’ll Want To)
How to Integrate FME with Databricks (and Why You’ll Want To)
Safe Software
 
Assurance Best Practices: Unlocking Proactive Network Operations
Assurance Best Practices: Unlocking Proactive Network OperationsAssurance Best Practices: Unlocking Proactive Network Operations
Assurance Best Practices: Unlocking Proactive Network Operations
ThousandEyes
 
I’d like to resell your CloudStack services, but...
I’d like to resell your CloudStack services, but...I’d like to resell your CloudStack services, but...
I’d like to resell your CloudStack services, but...
ShapeBlue
 
Build your own NES Emulator... with Kotlin
Build your own NES Emulator... with KotlinBuild your own NES Emulator... with Kotlin
Build your own NES Emulator... with Kotlin
Artur Skowroński
 
Outdated Tech, Invisible Expenses – How Data Silos Undermine Operational Effi...
Outdated Tech, Invisible Expenses – How Data Silos Undermine Operational Effi...Outdated Tech, Invisible Expenses – How Data Silos Undermine Operational Effi...
Outdated Tech, Invisible Expenses – How Data Silos Undermine Operational Effi...
Precisely
 
Partner Tableau Next Product First Call Deck.pdf
Partner Tableau Next Product First Call Deck.pdfPartner Tableau Next Product First Call Deck.pdf
Partner Tableau Next Product First Call Deck.pdf
ssuser3d62c6
 
AI Unboxed - How to Approach AI for Maximum Return
AI Unboxed - How to Approach AI for Maximum ReturnAI Unboxed - How to Approach AI for Maximum Return
AI Unboxed - How to Approach AI for Maximum Return
Merelda
 
NVIDIA’s Enterprise AI Factory and Blueprints_ Paving the Way for Smart, Scal...
NVIDIA’s Enterprise AI Factory and Blueprints_ Paving the Way for Smart, Scal...NVIDIA’s Enterprise AI Factory and Blueprints_ Paving the Way for Smart, Scal...
NVIDIA’s Enterprise AI Factory and Blueprints_ Paving the Way for Smart, Scal...
derrickjswork
 
STKI Annual Israel IT Market Study 2025 .
STKI Annual Israel IT Market Study 2025 .STKI Annual Israel IT Market Study 2025 .
STKI Annual Israel IT Market Study 2025 .
Dr. Jimmy Schwarzkopf
 
"AI in the browser: predicting user actions in real time with TensorflowJS", ...
"AI in the browser: predicting user actions in real time with TensorflowJS", ..."AI in the browser: predicting user actions in real time with TensorflowJS", ...
"AI in the browser: predicting user actions in real time with TensorflowJS", ...
Fwdays
 
Dr Schwarzkopf presentation on STKI Summit A
Dr Schwarzkopf presentation on STKI Summit ADr Schwarzkopf presentation on STKI Summit A
Dr Schwarzkopf presentation on STKI Summit A
Dr. Jimmy Schwarzkopf
 
The fundamental misunderstanding in Team Topologies
The fundamental misunderstanding in Team TopologiesThe fundamental misunderstanding in Team Topologies
The fundamental misunderstanding in Team Topologies
Patricia Aas
 
John Carmack’s Slides From His Upper Bound 2025 Talk
John Carmack’s Slides From His Upper Bound 2025 TalkJohn Carmack’s Slides From His Upper Bound 2025 Talk
John Carmack’s Slides From His Upper Bound 2025 Talk
Razin Mustafiz
 
Artificial Intelligence (Kecerdasan Buatan).pdf
Artificial Intelligence (Kecerdasan Buatan).pdfArtificial Intelligence (Kecerdasan Buatan).pdf
Artificial Intelligence (Kecerdasan Buatan).pdf
NufiEriKusumawati
 
Introducing High Availability: Business Continuity for Every NAS User
Introducing High Availability: Business Continuity for Every NAS UserIntroducing High Availability: Business Continuity for Every NAS User
Introducing High Availability: Business Continuity for Every NAS User
QNAP Marketing
 
Automating Call Centers with AI Agents_ Achieving Sub-700ms Latency.docx
Automating Call Centers with AI Agents_ Achieving Sub-700ms Latency.docxAutomating Call Centers with AI Agents_ Achieving Sub-700ms Latency.docx
Automating Call Centers with AI Agents_ Achieving Sub-700ms Latency.docx
Ihor Hamal
 
AI in Java - MCP in Action, Langchain4J-CDI, SmallRye-LLM, Spring AI
AI in Java - MCP in Action, Langchain4J-CDI, SmallRye-LLM, Spring AIAI in Java - MCP in Action, Langchain4J-CDI, SmallRye-LLM, Spring AI
AI in Java - MCP in Action, Langchain4J-CDI, SmallRye-LLM, Spring AI
Buhake Sindi
 
Interactive SQL: SQL, Features of SQL, DDL & DML
Interactive SQL: SQL, Features of SQL,  DDL & DMLInteractive SQL: SQL, Features of SQL,  DDL & DML
Interactive SQL: SQL, Features of SQL, DDL & DML
IsakkiDeviP
 
AI and Gender: Decoding the Sociological Impact
AI and Gender: Decoding the Sociological ImpactAI and Gender: Decoding the Sociological Impact
AI and Gender: Decoding the Sociological Impact
SaikatBasu37
 
Managing Geospatial Open Data Serverlessly [AWS Community Day CH 2025]
Managing Geospatial Open Data Serverlessly [AWS Community Day CH 2025]Managing Geospatial Open Data Serverlessly [AWS Community Day CH 2025]
Managing Geospatial Open Data Serverlessly [AWS Community Day CH 2025]
Chris Bingham
 
How to Integrate FME with Databricks (and Why You’ll Want To)
How to Integrate FME with Databricks (and Why You’ll Want To)How to Integrate FME with Databricks (and Why You’ll Want To)
How to Integrate FME with Databricks (and Why You’ll Want To)
Safe Software
 
Assurance Best Practices: Unlocking Proactive Network Operations
Assurance Best Practices: Unlocking Proactive Network OperationsAssurance Best Practices: Unlocking Proactive Network Operations
Assurance Best Practices: Unlocking Proactive Network Operations
ThousandEyes
 
I’d like to resell your CloudStack services, but...
I’d like to resell your CloudStack services, but...I’d like to resell your CloudStack services, but...
I’d like to resell your CloudStack services, but...
ShapeBlue
 

Squeak DBX

  • 1. Smalltalk Programmer Ing. Mariano Martínez Peck marianopeck@gmail.com
  • 2. SqueakDBX The complete and G IN to E T open-source solution Kdatabase A R relational M access
  • 3. SqueakDBX team Mariano Germán Hernán Cassinelli M. Peck Esteban Lorenzano Palacios
  • 4. F.A.Q Who are we? How did it begin? What is actually SqueakDBX?
  • 5. RDBMS VS. OODB Please, don't fight ;)
  • 6. Anyway, we rather program in objects and use RDBMS than using Java with RDBMS ;)
  • 7. Survey 1/2 How many times were you forced to use a particular database?
  • 8. Survey 2/2 Which databases?
  • 9. Squeak's current situation Only MySQL and PostgreSQL native drivers. Limited ODBC driver Glorp in Squeak only works with PostgreSQL
  • 10. We are in trouble... Direct SQL queries: 20% Using GLORP: 8.52%
  • 11. Our goal Direct SQL queries: 100% Using GLORP: 100%
  • 13. OpenDBX architecture Oracle uses oci.h and and libmysqlclient_r. MySQL uses mysql.h libclntsh. It has N functions. M functions. Common API for all backends!!! Examples: OCIHandleAlloc(), OCIServerAttach(), mysql_real_connect(), mysql_server_end(), OCISessionEnd(), etc. mysql_real_query(), etc. Oracle MySQL PosgreSQL Sqlite SQLServer client client client client client library library library library library
  • 14. Why OpenDBX? It is fast Simple to use Flexible Cross platform Asynchronous queries Specific RDBMS features Good documentation
  • 15. Deployment and infrastructure PC1 PC2 Squeak image Database OpenDBX Database Client Library
  • 16. Smalltalk and C Squeak image | OpenDBX #include <stdio.h> #include <stdio.h> static int mysql_odbx_get_option( odbx_t*) static int mysql_odbx_get_option( odbx_t*) switch( option ) switch( option ) ..... .....
  • 17. Smalltalk-C Connector FFI (Foreign Function Interface) Main problem: Locks the entire VM
  • 18. Squeak ODBC driver queries VM locked time
  • 19. OpenDBX Connector FFI (Foreign Function Interface) Main problem: Locks the entire VM Our solution: ✔ Asynchronous queries ✔ “Mini” VM locks ✔ Retry schema ✔ DBXQuerySettings>>timeout:
  • 20. SqueakDBX queries VM locked time
  • 21. Database access in Smalltalk SqueakDBX Smalltalk driver ✔ One for all databases ✗ One for each database ✔ Less time and effort ✗ More time and effort ✔ Good performace ✗ Performance issues? ✔ OSS and proprietary ✗ Only OSS ✗ Difficult to debug ✔ Easier to debug ✗ Platform dependent ✔ Platform independent ✗ FFI locks the VM ✔ Non-locking
  • 22. SqueakDBX design SqueakDBX Structure (API) SqueakDBX Structure (API) SqueakDBX Platform SqueakDBX Platform OpenDBX Connector OpenDBX Connector { { DBXConnection DBXConnectionSettings DBXResultSet DBXPlatform DBXResult DBXSpecialOptions DBXRow DBXErrorSeverity ... DBXTimeSpec ... FFI FFI SqueakDBXPlugin SqueakDBXPlugin OpenDBX
  • 24. Who can use SqueakDBX? An application Glorp Magritte-RDB SqueakSave Moe
  • 26. Benchmark for PostgreSQL 1800 1600 1400 1200 1000 ms 800 SqueakDBX Native 600 400 200 0 Converted Insert Select1000 Insert Select100 tests
  • 27. Benchmark for MySQL 700 600 500 400 ms 300 SqueakDBX Native 200 100 0 Converted Insert Select1000 Insert Select100 tests
  • 28. Features Mini VM locks SqueakDBXPlugin Automatic fields conversion Configurable logging/trace Special RDBMS features Multistatements Automatic release of resources
  • 29. What do we have? Enough unit tests Acceptable test coverage SmallLint runs Good enough design GLORP integration
  • 31. What will come Complete Glorp refactor and integration More backends in more OS Large objects support Better SPs and functions support Continue with SqueakDBXPlugin Try Alien FFI Port to Smalltalk/X ?
  • 32. Glorp progress Port from Squeak to Pharo First refactor to SqueakDatabaseAccesor Driver for native driver Driver for SqueakDBX (PostgreSQL)
  • 35. Special thanks to... Norbert Sendetzky GLORP Alan Knight Stéphane Ducasse
  • 36. aConnection execute: 'select * from questions where has_answer = true' Ing. Mariano Martínez Peck marianopeck@gmail.com
  翻译: