Your SlideShare is downloading. ×
Squeak DBX
Upcoming SlideShare
Loading in...5

Thanks for flagging this SlideShare!

Oops! An error has occurred.

Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Squeak DBX


Published on

Squeak DBX

Squeak DBX

Published in: Technology, Education
1 Like
  • Be the first to comment

No Downloads
Total Views
On Slideshare
From Embeds
Number of Embeds
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

No notes for slide


  • 1. Smalltalk Programmer Ing. Mariano Martínez Peck
  • 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%
  • 12. Our purpose
  • 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
  • 23. Showtime
  • 24. Who can use SqueakDBX? An application Glorp Magritte-RDB SqueakSave Moe
  • 25. Current backends and OS
  • 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
  • 30. Documentation Website Documented code Mailing list Benchmarks
  • 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)
  • 33. Glorp before SqueakDBX
  • 34. Glorp after SqueakDBX
  • 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
  • 37. Thank you very much