Panning information architecture for best performance

rskhanna - December 14, 2008 - 11:29

Hello everyone. Please help with your suggestions.

I am not a developer but a very hands-on subject matter expert.

Having been badly burnt by poor performance in the past, I am trying to pre-empt performance issues. Please suggest what is the ideal way to build the site: through taxonomy, content types (CCK) or what?

Expected load:
50-500 users logged in. Approximately 10 times as many anonymous. This may increase further.

Taxonomy:
1500 terms with ten or so cross references:

For example:
Vocabulary 1: all animals
Vocabulary 2: all countries
Vocabulary 3: mammals (so when we query mammals and all animals in the taxonomy, we get a list of mammals)
Vocabulary 4: Profession of user
Vocabulary 5: Type of User

when we query vocabulary 1, 2 and 3, we get all mammals in a particular country, etc.

We will have almost no graphics. We are a text-based information site.

How would we like to present the information?
1. Based upon:
1. the level of the users knowledge - beginner, intermediate, advanced
2. The profession of the user - Physician, College Professor, Scientist, Student, hobbyist
3. The type of audience - member of Press, Employer, HR Professional
2. Reverse pyramid format - start with the least information needed and then expand based upon the users need. Do not overwhelm the user with info. Look at the principle of google.com. The centerpiece is a big search box. Info then expand from there. We should have something like that - a simple interface that expands and gets more complicated as per the needs of the users.
3. Topical - like "All about Lions"

What would be best for performance: creating vocabularies, building content types through CCK, what do you all recommend?

Hey Rajiv, Usage of

ebizondrupalservices - December 14, 2008 - 17:41

Hey Rajiv,

Usage of complex CCKs does come at a performance cost, since, the tables are not optimized.

I have worked on Drupal performance and could get quite exceptional results with few of the techniques for some of the clients. Here are couple of things, that would make your Drupal site run quite fast:

1) Drupal caching that is already in the core. Drupal caches the mysql queries and ccks and views and taxonomies and thus, in a way compensate for the performance loss that we might get by using CCKs/Views (until and unless we are using lot of CCKs with complex content types)

2) CSS aggregation: comes in the core module. simply, enable it

3) Javascript aggregation: http://drupal.org/project/javascript_aggregator: helps a lot

4) Smart optimizer with Drupal: http://www.programmingbulls.com/another-drupal-performance-enhancing-too...

simple to install and does add lot of positives on YSlow!

5) E-accelerator or APC or any other php compiler that makes php bahave as a compiled language. In certain cases, performance was straight 1.5-2x. I don't have actual results at the moment, but the performance improvement was clearly visible

6) Memcache

7) User modules like advcache and boost and block cache

8) loading images from a static domain

If you still want to go further and looking at your data-requirement (are you having millions of data records?), I can suggest that instead of querying you data from the database, you can query it from memory. For one of our clients, we wrote a Java program that used to load data (I had all the countries, cities of the world, latitudes, longitudes and IP information) in memory and created the APIs that then I queried through my PHP or JSP program. This made my results come in a flash.

Sudeep Goyal,
Ebizon NetInfo Pvt. Ltd.
Delhi, India
http://ebizontek.com
Ph: +91120 4546843
Email: info@ebizontek.com
skype id : sudeep.goyal

Thanks Sudeep

rskhanna - December 16, 2008 - 20:54

I appreciate your comments.

-----------------------------
Rajiv S. Khanna; http://www.immigration.com

 
 

Drupal is a registered trademark of Dries Buytaert.