Oh, how I love a good rumble :)

Jim Starkey wrote:
> Jay Pipes wrote:
>> Jim Starkey wrote:
>>  
>>> Ask Bjørn Hansen wrote:
>>>    
>>>> On Nov 9, 2008, at 14:27, Jim Starkey wrote:
>>>>
>>>>      
>>>>> Even if it is inconvenient, it is the way to go.  Why send a 50MB PDF
>>>>> to the client if the client isn't going to actually request it?
>>>>>         
>>>> What's the real use case for that?  If you don't want it, just don't
>>>> ask for it - no?
>>>>       
>>
>>  
>>> First, the storage engine always has to materialize the blob, even if
>>> the record is part of an exhaustive scan and is rejected.      
>>
>> The better solution is to not store the blob in the database, IMHO.
>> Store the metadata about the blob, but not the blob.  Use the filesystem
>> for what it was intended.  Sure, it may make backups slightly more
>> complex, since you need to back up the filesystem and the database for
>> critical data, but this is a minor inconvenience.
>>   
> That's a terrible idea.  It was a terrible idea  in 1983 when it was
> first raised by the DEC Rdb/VMS guys, and it's a worse idea today.

Comparing anything from today to 1983 is a terrible idea.

> The application is talking to a SQL database.  It doesn't know or care
> where the database is.  

Sure it does.  Even if the application only knows "the database is in a
cloud", it still knows "the database is in a cloud" and not "the
database is on my local filesystem".

> How is it going to know where to fetch the
> blob?  

By the metadata about the blob stored, efficiently, in the database.

> How is security supposed to work?

Same way.

> How is backup supposed to
> work?  

By backing up the blobs stored on the filesystem.  I.e. by doing what
sysadmins have been doing for years.

> How is replication supposed to work?

Replicating blobs is silly IMHO.  What purpose does it serve over
putting the blobs on a clustered, distributed, mirrored filesystem such
as BigTable/GFS/HDFS?  Again, why should the database be concerned about
blobs at all?  What is the benefit of storing a blob in a database?

> Why are big things different from small things?  

Because they're, uhm, big.  Cow in fridge sort of thing.  Don't make a
bigger fridge or hope for a smaller cow.  Just don't put the cow in the
fridge when it belongs in the pasture.

> Why use a database to
> keep track of rows when a simple file will suffice?

I don't understand you here.  Could you elaborate?

> Data is data.  All data should be subject to the same availability,
> consistency, and durability constraints. 

Perhaps this is where we most differ.  I don't subscribe to the idea
that all data is equal.  In fact, the design of the storage engine layer
emphasizes this belief: that not all data is the same -- in its
importance or its layout

> Yes, big objects needs more intelligent handling because small
> inefficiencies get magnified thousands of times over.  But this is not
> an argument against big objects, it is an argument for intelligent
> handling of big objects.

Exactly!  My point is that the most intelligent way to handle big
objects is to not handle them in the db. :)

> The MySQL conception of a blob (a pointer embedded in a server record)
> was moronic on the day it was invented.  It hasn't gotten any better in
> the intervening years.

As opposed to a blob repository such as in Falcon or the BlobStreaming
engine?  Sorry, but I still don't see this as "more intelligent" than
storing the blob on a distributed filesystem.

> I think your argument is basically this:  We shouldn't improve blob
> handling because the original implementation was so moronic as to be
> useless for large blobs.
> 
> Well, duh.

No, my argument is don't improve blob handling because we're solving a
problem that has already been solved by using a distributed filesystem.
 If Drizzle is "in the clouds", then we should take for granted that
filesystems such as BigTable/GFS and HDFS are the status quo, and thus
the problem is essentially solved and not something we should be
spending time on.

-j

> (Incidentally, the DEC guys who argued against blobs where the same ones
> who argued against relational databases.  Real men, they believed, used
> CODASYL databases.)
>>  
>>> Second, the
>>> program logic may look at non-blob fields to decide whether or not to
>>> fetch the blob.  For example, both a PDF and HTML translation may be
>>> stored, but not all records have HTML translations.  So the program
>>> selects both and decides on a case by case basis.
>>>    
>>>> At least with InnoDB - IIRC - then you don't even get the page cache
>>>> hit from the data then.
>>>>
>>>> And really - in what kind of application is storing that big blobs a
>>>> good idea?[1]
>>>>       
>>> All modern applications has jpegs and pdfs.  It's part of the
>>> environment.  Some applications even use Word for textual data entry
>>> because that's what 99% of the world uses.  The minimum pdf is about
>>> 50K.  The minimum Word document is about 40K.  Pdfs produced by crappola
>>> scanners are more like 500K.  Jpegs by modern cameras are 1 - 2MB.
>>>
>>> These are bad ideas only if the database is wretched at storing blobs.
>>>     
>>
>> I see your point, but I also don't see the point of prioritizing the
>> performance of blob storage over other things.  IMHO, storing BLOBs in
>> the DB is bad architectural design.  We shouldn't focus efforts on
>> optimizing for poor application design.
>>   
> Your reasoning is both circular and wrong.  Using a database system for
> consistent and reliable data storage is an excellent application design,
> one that we need to foster.  Deciding that some data is less worthy than
> others makes no sense at all.
> 
> Case in point -- an application to import the contents of a cell phone
> into a database.  Are you going to argue that the database is OK for the
> phone book, call history, and text messages but photographs have to be
> stored somewhere else?  And a somewhere else subject to different
> security, backup, and administration policies?  And this is somehow
> supposed to represent "good" application design?
> 
> A single JPEG is worth a thousand words (and a million precious
> three-byte binary words).
> 
> Grumph!
> 
> 
> 

_______________________________________________
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