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
 re...
SqueakDBX team
Mariano                       Germán
                                         Hernán
                      ...
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 wi...
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.
       ...
Why OpenDBX?
It is fast
Simple to use
Flexible
Cross platform
Asynchronous queries
Specific RDBMS features
Good documentat...
Deployment and infrastructure
     PC1              PC2

 Squeak image
                     Database

  OpenDBX


  Databa...
Smalltalk and C

      Squeak image



                                                   |

      OpenDBX
      #include ...
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 ...
SqueakDBX queries

            VM locked
            time
Database access in Smalltalk
SqueakDBX                       Smalltalk driver
✔   One for all databases   ✗   One for each...
SqueakDBX design


SqueakDBX Structure (API)
SqueakDBX Structure (API)

  SqueakDBX Platform
  SqueakDBX Platform

  OpenD...
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                     ...
Benchmark for MySQL
      700

      600

      500

      400
 ms




      300                                          ...
Features
 Mini VM locks
 SqueakDBXPlugin
 Automatic fields conversion
 Configurable logging/trace
 Special RDBMS features
...
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 f...
Glorp progress
 Port from Squeak to Pharo
 First refactor to SqueakDatabaseAccesor
 Driver for native driver
 Driver for S...
Glorp before SqueakDBX
Glorp after SqueakDBX
Special thanks to...

                  Norbert Sendetzky



     GLORP             Alan Knight



                  Stéph...
aConnection execute: 'select * from questions
   where has_answer = true'




Ing. Mariano Martínez Peck      marianopeck@...
Thank you
very much
Squeak DBX
Upcoming SlideShare
Loading in...5
×

Squeak DBX

3,336

Published on

Squeak DBX

Published in: Technology, Education
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
3,336
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
23
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Squeak DBX

  1. 1. Smalltalk Programmer Ing. Mariano Martínez Peck marianopeck@gmail.com
  2. 2. SqueakDBX The complete and G IN to E T open-source solution Kdatabase A R relational M access
  3. 3. SqueakDBX team Mariano Germán Hernán Cassinelli M. Peck Esteban Lorenzano Palacios
  4. 4. F.A.Q Who are we? How did it begin? What is actually SqueakDBX?
  5. 5. RDBMS VS. OODB Please, don't fight ;)
  6. 6. Anyway, we rather program in objects and use RDBMS than using Java with RDBMS ;)
  7. 7. Survey 1/2 How many times were you forced to use a particular database?
  8. 8. Survey 2/2 Which databases?
  9. 9. Squeak's current situation Only MySQL and PostgreSQL native drivers. Limited ODBC driver Glorp in Squeak only works with PostgreSQL
  10. 10. We are in trouble... Direct SQL queries: 20% Using GLORP: 8.52%
  11. 11. Our goal Direct SQL queries: 100% Using GLORP: 100%
  12. 12. Our purpose
  13. 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. 14. Why OpenDBX? It is fast Simple to use Flexible Cross platform Asynchronous queries Specific RDBMS features Good documentation
  15. 15. Deployment and infrastructure PC1 PC2 Squeak image Database OpenDBX Database Client Library
  16. 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. 17. Smalltalk-C Connector FFI (Foreign Function Interface) Main problem: Locks the entire VM
  18. 18. Squeak ODBC driver queries VM locked time
  19. 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. 20. SqueakDBX queries VM locked time
  21. 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. 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
  23. 23. Showtime
  24. 24. Who can use SqueakDBX? An application Glorp Magritte-RDB SqueakSave Moe
  25. 25. Current backends and OS
  26. 26. Benchmark for PostgreSQL 1800 1600 1400 1200 1000 ms 800 SqueakDBX Native 600 400 200 0 Converted Insert Select1000 Insert Select100 tests
  27. 27. Benchmark for MySQL 700 600 500 400 ms 300 SqueakDBX Native 200 100 0 Converted Insert Select1000 Insert Select100 tests
  28. 28. Features Mini VM locks SqueakDBXPlugin Automatic fields conversion Configurable logging/trace Special RDBMS features Multistatements Automatic release of resources
  29. 29. What do we have? Enough unit tests Acceptable test coverage SmallLint runs Good enough design GLORP integration
  30. 30. Documentation Website Documented code Mailing list Benchmarks
  31. 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. 32. Glorp progress Port from Squeak to Pharo First refactor to SqueakDatabaseAccesor Driver for native driver Driver for SqueakDBX (PostgreSQL)
  33. 33. Glorp before SqueakDBX
  34. 34. Glorp after SqueakDBX
  35. 35. Special thanks to... Norbert Sendetzky GLORP Alan Knight Stéphane Ducasse
  36. 36. aConnection execute: 'select * from questions where has_answer = true' Ing. Mariano Martínez Peck marianopeck@gmail.com
  37. 37. Thank you very much
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×