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
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
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
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)