Interesting, never tried compressing the data, sounds like that might be a nice addon.. Do you have any performance numbers you can share? I posted some performance numbers on one of my implementations some time ago.
I found the thread here: http://lists.mysql.com/mysql/206337 On Tue, 3 Jul 2007, Rick James wrote: > And while you are at it, you may as well compress the chunks. You machine > probably can compress/uncompress faster than it can write/read disk. I use > Perl's Zlib::Compress or PHP's equivalent instead of Mysql's function for 2 > reasons: > * The network traffic is compressed. > * Mysql puts an unnecessary extra byte on end of the string (ok, this is > totally insignificant) > > And definitely compress each chunk separately. It seems that those library > routines slow down (excessive memory realloc??) after about 50K. That is, > you can probably compress 20 50K chunks faster than 1 1M chunk. > > My implementation did File <-> Database -- the huge blob was never > instantiated completely in RAM, only one chunk at a time. (Imagine trying > to store a 50GB file.) > > > -----Original Message----- > > From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] > > Sent: Tuesday, July 03, 2007 2:08 PM > > To: Rick James > > Cc: 'Paul McCullagh'; 'Ann W. Harrison'; 'MySQL List' > > Subject: RE: Blob data > > > > > > Rick is dead on correct, I call I chunking blob data.. There is an > > article here on a simple implementation: > > > > http://www.dreamwerx.net/phpforum/?id=1 > > > > I've had hundreds of thousands of files in this type of storage before > > with no issues. > > > > > > On Tue, 3 Jul 2007, Rick James wrote: > > > > > I gave up on putting large blobs in Mysql -- too many > > limits around 16MB. > > > > > > Instead I broke blobs into pieces, inserting them with a > > sequence number. > > > > > > Added benefit: Does not clog up replication while huge > > single-insert is > > > being copied over network and reexecuted on slaves. > > > > > > > -----Original Message----- > > > > From: Paul McCullagh [mailto:[EMAIL PROTECTED] > > > > Sent: Wednesday, June 27, 2007 2:57 AM > > > > To: Ann W. Harrison > > > > Cc: MySQL List; MySQL Internal > > > > Subject: Re: Blob data > > > > > > > > Hi Ann, > > > > > > > > Currently, the thoughts on how to make the BLOB > > references secure go > > > > like this: > > > > > > > > The BLOB reference consists of 2 components: The first > > component is > > > > basically an index used to find the BLOB on the server. The second > > > > component is a random number generated when the BLOB is created. > > > > > > > > The random number acts as an "authorization code", and is checked > > > > when the BLOB is requested. So if the authorization code > > supplied in > > > > the BLOB reference does not match the code stored by the > > server for > > > > that BLOB, then the BLOB is not returned. > > > > > > > > If the authorization code is a 4-byte number, then the chances of > > > > getting the correct code for any particular BLOB is 1 in > > 4 billion. > > > > This makes it practically impossible to "discover" a BLOB by > > > > generating BLOB references and requesting them from the server. > > > > > > > > However, it does mean that once you have a valid BLOB reference it > > > > remains valid until the BLOB is deleted. So you can pass it > > > > around to > > > > your friends, or post it on the internet if you like. > > > > > > > > In order to prevent this (it will depend on the site, as > > to whether > > > > this is required), it would be possible to add a dynamic > > > > component to > > > > the BLOB reference which has a certain lifetime (for example, it > > > > expires after a certain amount of time, or when a database > > > > session is > > > > closed). > > > > > > > > Such a component would have to be added to the BLOB > > reference URL by > > > > the storage engine on the fly. So, as the SELECT result is being > > > > generated, the dynamic component is added to the BLOB references > > > > returned in the rowset. > > > > > > > > Security of the BLOB streaming stuff is one of the major > > issues, so > > > > further comments, questions and ideas are welcome! > > > > > > > > Best regards, > > > > > > > > Paul > > > > > > > > On Jun 26, 2007, at 4:36 PM, Ann W. Harrison wrote: > > > > > > > > > Paul McCullagh wrote: > > > > >> > > > > >> It will also be possible to store the BLOBs > > "out-of-row". In this > > > > >> case, only a BLOB reference is stored in the row. The > > > > reference is > > > > >> basically a URL which can be used to retrieve the data. So when > > > > >> you do an SQL SELECT which includes a BLOB column, the > > resulting > > > > >> rowset does not contain the data, just the BLOB > > reference (URL). > > > > > > > > > > How does this work with access privileges? Can you > > just send random > > > > > numbers in the URL until you start seeing blob data? > > > > > > > > > > Best regards, > > > > > > > > > > > > > > > Ann > > > > > > > > > > > > -- > > > > MySQL Internals Mailing List > > > > For list archives: http://lists.mysql.com/internals > > > > To unsubscribe: > > > > http://lists.mysql.com/[EMAIL PROTECTED] > > > > > > > > > > > > > > > > > -- > > > MySQL General Mailing List > > > For list archives: http://lists.mysql.com/mysql > > > To unsubscribe: > > http://lists.mysql.com/[EMAIL PROTECTED] > > > > > > -- MySQL General Mailing List For list archives: http://lists.mysql.com/mysql To unsubscribe: http://lists.mysql.com/[EMAIL PROTECTED]