The drop is always movingYou know that saying about standing on the shoulders of giants? Drupal is standing on a huge pile of midgetsAll content management systems suck, Drupal just happens to suck less.Popular open source software is more secure than unpopular open source software, because insecure software becomes unpopular fast. [That doesn't happen for proprietary software.]Drupal makes sandwiches happen.There is a module for that

The truth about field storage in Drupal 7

Submitted by nk on Mon, 2010-09-27 04:58

Much to my surprise, someone decided to warm up the old debate about field storage, stating that Drupal 7 will be much less performant because of it. That Drupal 7 is a little slower than Drupal 6 is true, but that's not because of how we store fields (rather because the increased use of rendering) and it's not a terrible slowdown either (one can say it's a win when used wisely because of the render cache).

To recap, in Drupal 6 CCK have either stored field data in columns of a per content type (bundle in D7 terminology) table or in per field tables. For Drupal 7, core only ships with field storage per tables. There are many reasons for this. One, the primary perceived problem with this is JOINing these tables together and then filtering / ordering on more than one is not indexable. While it is true that filtering on multiple tables is not indexable, per bundle storage in itself does not solve everything and leaves a few questions unsolvable.

Yes, there is a per bundle storage module which stores a copy of the default tables into CCK-like per bundle tables. Because it's a copy only, there is no code to migrate between the two storage models (as that's not needed). This migrate code was, of course a real lot of code naturally rife with race conditions. Better not to have that in core. Yes, PBS module is not well maintained but as Drupal 7 will be more widely used I am sure that will change.

And then there is the slight problem when you want to run a query across bundles. Do you want nodes ordered by a field value, regardless of their node type? Good luck writing the necessary merge sort...

Unlimited cardinality, of course, can only be stored as a separate table anyways. Solving this with an artificial cap on cardinality has two challenges: too high and the processing code crawls to a halt, too low and it wont be enough one day.

Commenting on this Story is closed.

Submitted by Anonymous (not verified) on Mon, 2010-09-27 05:34.

I don't think it's fair to respond to Larry's article like that. He was just pulling that as an example. Also, what he says it's fair. Drupal 7 addresses scalability. Of course, if you want performance, install PBS. But you can't evaluate Drupal core based on contrib.

Also, re: Sony BMG/Examiner/Drupal Gardens. Gardens, while being a lot of small sites, is not one small site and thus Gardens has to deal with scalability issues that Joe's Ice Cream Store doesn't have to deal with. BMG is the same. Examiner is a different can of worms, and Larry is not attacking Examiner nor saying where we've gone is bad. All he's doing is posing a series of open-ended questions that we as a community need to answer.

Submitted by Corbacho (not verified) on Mon, 2010-09-27 08:53.

Thanks for showing your point of view. I think debates are healthy, not something to be grumpy about

Submitted by Anonymous (not verified) on Tue, 2010-09-28 01:15.

Unsubscribing from this blog and drupal.

http://drupal4hu.com/node/262#comment-1177

Period. I'm out dude.

Submitted by Газификация (not verified) on Thu, 2010-10-07 04:09.

I want to order your advertising as a contact with you Forgive me for bad English. I live in Russia.

Submitted by 640-802 (not verified) on Tue, 2010-10-26 03:46.

Why do you have problem with 642-384 protected?