Nick, But RAM -- even virtual RAM -- has a relatively limited capacity, so its usefulness for image caching is very limited unless you're employing a joint system of memory-cached keys pointing to disk-cached files. And even these can become quickly saturated in image-intensive systems.
Many times people think their memory caching is working like a charm until they monitor their system metrics and see that they're not using physical RAM the way they thought they were, which sometimes results in less performance than if they were simply serving directly from disk. This is assuming a typical 32-bit system. Respectfully, Adam Phillip Churvis Certified Advanced ColdFusion MX 7 Developer BlueDragon Alliance Founding Committee Get advanced intensive Master-level training in C# & ASP.NET 2.0 for ColdFusion Developers at ProductivityEnhancement.com ----- Original Message ----- From: Nick McClure To: CF-Community Sent: Monday, February 19, 2007 3:07 PM Subject: RE: Storing images in DB. I didn't say disk caching, usually I cache to ram, either on the server, or the load balancer. > -----Original Message----- > From: Adam Churvis [mailto:[EMAIL PROTECTED] > Sent: Monday, February 19, 2007 2:57 PM > To: CF-Community > Subject: Re: Storing images in DB. > > Nick, > > You wouldn't employ disk caching if it weren't coming from the DB > because the files would already be written to disk in their native > format, so we must be talking about two different things. > > And yes, your CMS might store static page elements as binaries in the > database, and it does make sense. SharePoint 2007 does, which is > precisely why it also employs both disk caching and page output > caching. In fact, each image, JavaScript file, cascading style sheet, > or other page element is stored as a binary in the database with > SharePoint 2007. That's what makes solid centralized management of > complex content possible. > > So if I was forced to use replication to transport content changes, I > would still immediately disk cache (just convert and write out to disk) > those images and serve directly from IIS, rather than expend all those > resources going through all those extra layers. Update timestamps > could be employed to track only those images and other assets that had > changed since the previous update, and the system could just write > those to disk and ignore the rest. > > In fact, we have a commercial product we created over a year ago that > hasn't been launched yet that can handle this sort of thing > transparently in the background in realtime as images are added, > updated, or deleted. It's called FileRobot, and it can be extended > using the .NET Framework to do just about anything you want with any > kind of file, from running complicated RegEx on text contents to > performing XSLT transformations, image manipulations, file copies, FTP, > etc. Just haven't had the time to put it out there yet. We've been > using it in production on very heavy load systems with literally > millions of images, and it works great. > > Respectfully, > > Adam Phillip Churvis > Certified Advanced ColdFusion MX 7 Developer > BlueDragon Alliance Founding Committee > > > > Get advanced intensive Master-level training in > C# & ASP.NET 2.0 for ColdFusion Developers at > ProductivityEnhancement.com > > ----- Original Message ----- > From: Nick McClure > To: CF-Community > Sent: Monday, February 19, 2007 2:02 PM > Subject: RE: Storing images in DB. > > > Yes, never with CF, but I've done it before, and I've employed > caching > techniques both on the server and on the load balancer to assist, but > I'd do > that even it they weren't coming from the DB. > > You don't put static page images in the DB, that doesn't make sense, > but if > you are wanting to replicate the data to multiple locations, it seems > silly > to have to replicate file content when SQL Server has this stuff > built in. > > How would you replicate data and images across multiple locations? > > > -----Original Message----- > > From: Adam Churvis [mailto:[EMAIL PROTECTED] > > Sent: Monday, February 19, 2007 1:30 PM > > To: CF-Community > > Subject: Re: Storing images in DB. > > > > Nick, > > > > Have you ever tried this *under load* with either a large number of > > images on a single web page, a single large image, or a combination > of > > these? It all seems about the same on the work bench, but it's a > whole > > different story under load, which is all that really matters. This > is > > why Microsoft itself employs sophisticated caching schemes to > eliminate > > the need to touch the database for binaries any more than it > absolutely > > has to. > > > > Also, look at every single step of what *actually* happens when you > > retrieve binary data from the database, serve it, and convert it. > > You're being a bit too simplistic when you mention the pointer > stored > > in the table, as if that somehow makes it like a direct file > retrieval > > from disk. There's a lot of work that's done to make this happen, > and > > it does make a difference that you'll notice under a realistic > load. > > > > Respectfully, > > > > Adam Phillip Churvis > > Certified Advanced ColdFusion MX 7 Developer > > BlueDragon Alliance Founding Committee > > > > > > > > Get advanced intensive Master-level training in > > C# & ASP.NET 2.0 for ColdFusion Developers at > > ProductivityEnhancement.com > > > > ----- Original Message ----- > > From: Nick McClure > > To: CF-Community > > Sent: Monday, February 19, 2007 10:44 AM > > Subject: RE: Storing images in DB. > > > > > > We aren't talking about static page images, those types of images > > should be > > on the web server. He is looking for a way to ensure that the > data > > and the > > images aren't kept separate from each other. > > > > In an environment such as this, keeping the images in the > database is > > a > > great idea. The data is stored in a fairly similar way, binary > data > > such as > > this isn't stored in the tables, the table only holds a pointer > to > > the > > actual data. The performance change from accessing the images via > a > > networked file server vs a database isn't going to be major for a > > small > > percentage of images. > > > > > > > > > -----Original Message----- > > > From: Adam Churvis [mailto:[EMAIL PROTECTED] > > > Sent: Monday, February 19, 2007 10:25 AM > > > To: CF-Community > > > Subject: Re: Storing images in DB. > > > > > > Listen to Rick. And picture in your minds the two very > different > > pipes > > > needed to retrieve, process (or not) and serve, and the > mechanisms > > > through which each must pass, and how the system's resources > react > > to > > > each. Think about how database-persisted binary data is > physically > > > stored, retrieved, delivered, and converted. > > > > > > Even systems like SharePoint rely on a combination of disk > caching > > and > > > page output caching after the first retrieval of a page's > > constituent > > > parts from the database. Database storage is for management > > > convenience only; a sophisticated scheme is employed to get > those > > > assets out on disk as regular files and then serve them from > there. > > > > > > Respectfully, > > > > > > Adam Phillip Churvis > > > Certified Advanced ColdFusion MX 7 Developer > > > BlueDragon Alliance Founding Committee > > > > > > > > > > > > Get advanced intensive Master-level training in > > > C# & ASP.NET 2.0 for ColdFusion Developers at > > > ProductivityEnhancement.com > > > > > > > > > > > > > > > > > > > ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~| Create Web Applications With ColdFusion MX7 & Flex 2. Build powerful, scalable RIAs. Free Trial http://www.adobe.com/products/coldfusion/flex2/ Archive: http://www.houseoffusion.com/groups/CF-Community/message.cfm/messageid:228363 Subscription: http://www.houseoffusion.com/groups/CF-Community/subscribe.cfm Unsubscribe: http://www.houseoffusion.com/cf_lists/unsubscribe.cfm?user=89.70.5
