How should the content structure for a Comparison website look like? What is the "right way" to build a community-oriented comparison system in Drupal 7? My primary question is do I need to hand-roll the DB code for this or is there a way to do it with existing Drupal techniques? My secondary question is how would you structure this in Drupal?

The entities of my site are as follows.

User classes:


Administrators (me &lt;=1)
Analysts (trusted community moderators &lt;100)
Authenticated Users (untrusted community content creators &lt;2000)
Anonymous site visitors can view all of the reviews (billions of people :)


Products:


product classes. (e.g. Cameras, Laptops, Mobile Phones, etc). There will be >500 product classes. Analysts can edit and manage product classes by adding product feature types, etc.
products (e.g. Nikon D7000, Canon EOS Rebel, etc) are an instance of a product class. Authenticated Users can add/edit products.
product features are the pre-defined set of features of a product class (e.g. Exposure Metering, Exposure Modes, White Balance, Max Shutter Speed, etc). These are administered by Analysts.
product feature types. Each product feature must be of a certain type like a star rating, text, price, number, url, etc.


My initial solution was to create a custom content-type for each product class, then use Drupal fields for the product features. My concern with this approach is that I don't know how to allow semi-trusted Analysts to create and manage their own product classes and product feature types without giving them administrator privileges. Also, I imagine having hundreds of product classes and so it feels weird to have a custom content-type for each * product class*. 

I'm happy to do it the php-module way, or the pointy-clicky way. How would you approach this?
Your initial solution, having own content types, can also support that content editors can only edit their own content. Define an content type, setup user role for "Analysts", and set the appropriate user permissions for them.

Look at http://www.example.com/admin/people/permissions and http://www.example.com/admin/people/permissions/roles.

I'm assuming you have Drupal 7, but Drupal 6 has more or less the same functionality.