On Nov 9, 2008, at 11:41 PM, Brian Aker wrote:

On Nov 10, 2008, at 7:27 AM, Jim Starkey wrote:

Philosophically, I'm not sure than inconvenience should be a major consideration when considering architectures. If drizzle could delay blob materialization to the last possible nanosecond in hope it would need to, drizzle would be a great deal more application friendly.

This is something I find more interesting because if we can delay the last moment (or just pass in a fd/offset/length) we can do sendfile tricks to just map from disk to card bypassing memory entirely. This would mean though that an engine laid out a blob on disk as a single object.

Part of he logic in the original protocol was:

SELECT a, b, c

Is that if I asked for the values in that order, I don't want to have to make a second request for a particular member of that set. I have already said "this is what I want, give it to me". The blob fetching has always implied a sort of "but do you really want it?". The blob fetching in Oracle was an original limitations of their design, it just happened to be in MySQL that it didn't have that limitation (though the current twice copy of blob data is ridiculous).


[ Little plug for one of our projects, but I think it is quite relevant to this discussion. ]

The functionality of the BLOB streaming engine (www.blobstreaming.org) already covers quite a bit of this stuff.

The engine:

- Maintains a BLOB repository where BLOBs are stored sequentially on disk (sendfile() possible). - Issues BLOB locators which can be stored in the rows instead of the data. - Allows BLOBs to be streamed in and out of the database using HTTP PUT and GET. - Automatically delays deletion of BLOBs so that they can be "grabbed later".

Replication of the BLOB data is possible in a similar manor described by Mats. However, the BLOB data need not be written to the binary log because it can be retrieved from the repository.

Engines call the BLOB streaming engine's "server-side" streaming API in order to support this functionality. Consistency between databases tables and the repository is maintained using reference counting calls in the API.

Maybe this is an option, and we could create a Drizzle tree with the functionality for testing...

Best regards,

Paul

--
Paul McCullagh
PrimeBase Technologies
www.primebase.org
www.blobstreaming.org
pbxt.blogspot.com




_______________________________________________
Mailing list: https://launchpad.net/~drizzle-discuss
Post to     : [email protected]
Unsubscribe : https://launchpad.net/~drizzle-discuss
More help   : https://help.launchpad.net/ListHelp

Reply via email to