I believe that Mckoi supports streamable blobs.
Keep up the good work.
PostgreSQL has an interface called the LargeObjectAPI:
I have built an implementation of the Store that talks directly to it and from my tests it works really well (128MB in 1MB chunks in about 12s). They don't have support for the JDBC3 Blob interface, well not yet:
Oracle is also another that we should definitely support. Once I get the store committed I will start a Wiki page with information regarding status of the various dbs that I have tested.
I'll post more, I talked to the mysql guy who wrote their JDBC driver at JBossWorld (shameless plug for next year I guess? ;-)) and he told me how to work around this with MySQL simulated sql locators.
Before you embark on that, can I ask you to have a look at the current org.jboss.mail.store implemenation (the old one will suffice, but it will be updated this weekend). I went through most of the pain of using the MySQL emulated locators when I had my very first attempts at implementing the store. In fact the Blob[Input/Output]Stream classes were written to solve this very problem.
Also MySQL blobs are very buggy, see this thread:
Apparently they have fixed Bug 8096, but haven't indicated which release it will be in. Also they suck when it comes to performance. Try loading a 128MB blob in 1MB pieces and watch the MySQL process eat itself (takes around 15 minutes). From the work I have done so far it looks like most of the problems are not so much with the JDBC driver by the database. I should really get on the mailing list and bitch a little louder about blob support.
Ahh..I'll hook you up with Mark and see what we can come up with.
My orginal development with MySQL was using connector 3.1.5-gamma. I have retested with 3.1.7 (final). Much better, bug 8096 is fixed (bug 7745 is still outstanding) and performance is now at acceptable levels.
Guys, why rely on MySQL? It is well known (and well documented) that MySQL is a VERY weak database.
For instance, see this link....
On any meaningful workload (especially with large objects), Postgres is faster, and it's way less buggy. Save yourselves the trouble, and use a real DB. I'm not in any way connected to Postgres, but it just kills me to see perfectly good projects rendered almost useless by a bad choice of backend DB.
I also hear that JBoss has some sort of special deal with MySQL (they are planning to use MySQL to back their portal for the jboss.org website), and I would like to point out that this is not wise. Wikipedia (less than a month ago) came very close to losing everything (modulo tape backups) because they used MySQL, which isn't truly ACID.
Sorry about the rant, but friends don't let friends trust their data to MySQL.
Bla bla bla. You don't like MySQL. I don't like database XYZ. We will support as many dbs as is feasible and at the highest performance feasible. For now, I'd like that to be Hypersonic (for testing purposes), BerkleyDB JE, MySQL, PostgreSQL, and Oracle. Eventually I'd like to add MS SQL Server, Informix and Sybase to that. Once we get that far then we'll add support on an as needed basis. Besides, most comes for free with Hibernate....its the blobby stuff that doesn't.
MySQL is a JBoss Inc. partner. They are thoroughly nice and helpful guys. And this mail you so carefully used to disparage them is already served from MySQL. The JBoss Forums have been stored using MySQL pretty much from the beginning. (Yes there have been occassional problems because of Blob support and we weren't using InnoDB because we had to migrate, but life involves pain).
In my experience, MySQL is a more than adeuate DB though it has its issues like any other. In my experience, all databases have bad remote protocols and horrid blob support :-) so I grant you the bar isn't high.
Honestly I'm reasonably agnostic, I just want to see us support (in JBoss Mail Server) what people are already using.