Squeak DBX
Upcoming SlideShare
Loading in...5

Squeak DBX



Squeak DBX

Squeak DBX



Total Views
Views on SlideShare
Embed Views



9 Embeds 391

http://dbxtalk.smallworks.com.ar 279
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