Squeak DBX
Upcoming SlideShare
Loading in...5

Squeak DBX



Squeak DBX

Squeak DBX



Total Views
Views on SlideShare
Embed Views



9 Embeds 395

http://dbxtalk.smallworks.com.ar 283
http://www.squeakdbx.org 59
http://localhost 17
http://smallworks.com.ar 13
http://squeakdbx.smallworks.com.ar 8
http://dbxtalk.smallworks.eu 6
http://www.slideshare.net 5
http://squeakdbx.org 3
https://www.coursesites.com 1



Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
Post Comment
Edit your comment

Squeak DBX Squeak DBX Presentation Transcript

  • 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