You are here

请问,关于D7的field表分别建立的问题。

流云 的头像
Submitted by 流云 on 星期四, 2013-02-21 05:06

请教问题:

D7为何要改成这样的设计?究竟为何考虑,与之前的D6的字段存储设计相比,有何优势?又有何劣势呢?

它的劣势有什么已有的方案去弥补了呢?我们开发人员面对这个劣势还能做什么?

论坛:

Drupal版本:

g089h515r806 的头像

将字段的表分开,还是放到bundle里面,在开始设计的时候,是有过争论的,分表是Drupal7里面字段模块对CCK的一个改进。

优势:

(1),整个字段的数据模型是统一的,无论是多值字段,还是单值字段。在CCK里面,两者是分开的。

(2),字段的分表,使得多语言的特性,更方便。使得Drupal能够在字段级别支持多语言。在Drupal7里面,字段对多语言的支持,比属性的多语言,要方便很多。

(3),多个bundle共用一个字段,也是有可能的,分表在这种情况下,也比较方便。

劣势:

(1),性能方面,不如都放到一个bundle表中优越。

(2),开发起来,编写起SQL语句,非常麻烦,如果自己写sql,关联字段的话,难度很大。

 

当然,Drupal7针对这两点,是有改进的,针对系能问题,为bundle层增加了缓存机制,有了缓存以后,看起来就像在一个表里面了。

Drupal7里面有EntityFieldQuery,使得SQL语句的操作方便了很多,而且这个在Drupal8里面,得到了进一步的加强。

 

开发人员,学好这些新特性就好了,而不是完全写纯SQL语句,不但难于理解,也不好维护。