Squeak DBX

3,884 views

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,884
On SlideShare
0
From Embeds
0
Number of Embeds
421
Actions
Shares
0
Downloads
24
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

×