10 Replies Latest reply on Mar 3, 2005 1:42 AM by Michael Barker

    Store Store (2nd version)

    Michael Barker Apprentice


      I have uploaded a 0.2 version of the Stream Store to the patches wiki, to apply:

      > cd jboss-mail
      > patch -p1 < streamstore-0.2.patch

      Summary of the changes:
      - Removed "Factoryness" of the implementation. The Store is single instance MBean.
      - Support for both connected and disconnected streams. Connected streams will close underlying Connection when the stream is closed.
      - Added a PostgresQL specific implementation that uses the LargeObjectAPI (jar included in patch). This implementation is faster (128MB in 9 seconds vs 15 minutes for MySQL), more robust, and more memory efficient than BDB and MySQL.
      - Will close Jira JBMAIL-21.
      - Lots of general refactoring.

      Open Issues/To do list:
      - What level of transactionality is required for writing the data to the store? Many blob implementations (e.g. PostgresQL & Oracle) prefer to be within a transaction when using blob data. Where abouts should jboss-mail's transaction bounderies be defined?
      - It seems like very few OSS DBs handle blob data well. PostgreSQL is the only one that passes my JUnits reliably. BDB fails with an out of Memory error when trying to write 10MB in 1MB chunks. MySQL basically sucks for blobs. It either doesn't work:


      Or runs increadibly slowly, 2 orders of mangnitude slower than PostgreSQL in some cases. I've basically given up on MySQL 4. The above issues seem to be both problems with the server and not the JDBC driver (that's a whole 'nother can of worms). Might try again when 5 goes final.
      - Compression. Started but still experimental (read, doesn't work).
      - Integration with new MessageStore API (JBMAIL-25).
      - Only unit tested outside of app. server.
      - Do some testing with Oracle.

      I am off on vacation next week, but will attack the above when I get back (La Plagne had a big dump of snow this week. Wahoo!!!)