> I would like to add that Ken's *not necessarily* right - if the 
> server is a dedicated CF server then DO USE THE REGISTRY for 
> client variables. The registry provides the greatest performance 
> when using client variables, which is why it is used by default 
> and why it is even an option. Do you think MM made it an option 
> just because it was possible or because it can be highly useful?  
> There are three options for three or more server environments.
> 
> Just plan ahead for it. When you build the server, adjust the 
> registry to grow to around 100MB and it won't slow down and 
> cause the server to crap out. Monitor the size of the registry 
> as well, drop the persistance of client variable data from 90 
> if the registry grows to large or allow the registry to grow 
> larger.
> 
> Just my two cents. I've said it before I'll say it again the 
> next time some SCREAMS that the registry won't work. One users 
> bad experience shouldn't deter all others from the truth.

I guess that the problem with "the truth" is that it can be perceived so
subjectively. I've had quite a few bad experiences with using the registry
for Client variable storage, though - and they haven't all been mine,
personally, but several have been with clients for whom it failed in a
relatively dramatic fashion.

The reason MM (or, more accurately, Allaire) made it an option is that, at
the time, they didn't necessarily know how bad this could be, or more
likely, at the time, you weren't likely to get enough traffic for it to be
so bad. Client variables were introduced in CF 2.0, and they could only be
stored in the registry then. The ability to store them in other places
wasn't introduced until CF 4, I think. Back in those days, heavy use didn't
mean the same as it does now, and very few people were building
line-of-business apps on the web.

As for best performance, yes, the registry may be faster than using a
database. Using cookies will be just as fast, though. Performance, however,
is probably not the only metric most people care about. Reliability is
pretty important to most people, and registry storage is far less reliable
than database storage.

The Windows registry is not your typical database. It's a hierarchical data
store, like an LDAP server, rather than a relational data store. It's not
designed for transactional processing, like a relational database typically
is. The registry is designed to be read often, and written to infrequently.
The typical usage pattern for a Windows app using the registry is to read
the appropriate keys on startup, then write changes to those keys if
necessary on shutdown. That's quite a bit different from constantly writing
to the registry.

There are several weak points with using the registry. It can become
fragmented, just like other files in general. This will slow performance
after time. It can become corrupted - and I've encountered this personally -
requiring a restore and consequently losing all of the client data. It makes
it difficult to migrate an application from one server to another.

In summary, I strongly recommend against using the Registry as a Client
variable data store. I recommend against using a file-based database like
Access for this also - that has its own, very serious, problems.

Dave Watts, CTO, Fig Leaf Software
http://www.figleaf.com/
voice: (202) 797-5496
fax: (202) 797-5444
______________________________________________________________________
Get Your Own Dedicated Windows 2000 Server
  PIII 800 / 256 MB RAM / 40 GB HD / 20 GB MO/XFER
  Instant Activation · $99/Month · Free Setup
  http://www.pennyhost.com/redirect.cfm?adcode=coldfusionb
FAQ: http://www.thenetprofits.co.uk/coldfusion/faq
Archives: http://www.mail-archive.com/cf-talk@houseoffusion.com/
Unsubscribe: http://www.houseoffusion.com/index.cfm?sidebar=lists

Reply via email to