Squeak DBX
Upcoming SlideShare
Loading in...5
×

Like this? Share it with your network

Share
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
4,541
On Slideshare
4,141
From Embeds
400
Number of Embeds
9

Actions

Shares
Downloads
21
Comments
0
Likes
1

Embeds 400

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

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 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%
  • 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 marianopeck@gmail.com
  • 37. Thank you very much