请教问题: D7为何要改成这样的设计?究竟为何考虑,与之前的D6的字段存储设计相比,有何优势?又有何劣势呢? 它的劣势有什么已有的方案去弥补了呢?我们开发人员面对这个劣势还能做什么? 论坛: 有问必答Drupal版本: drupal7 将字段的表分开,还是放到bundle里面,在开始设计的时候 将字段的表分开,还是放到bundle里面,在开始设计的时候,是有过争论的,分表是Drupal7里面字段模块对CCK的一个改进。 优势: (1),整个字段的数据模型是统一的,无论是多值字段,还是单值字段。在CCK里面,两者是分开的。 (2),字段的分表,使得多语言的特性,更方便。使得Drupal能够在字段级别支持多语言。在Drupal7里面,字段对多语言的支持,比属性的多语言,要方便很多。 (3),多个bundle共用一个字段,也是有可能的,分表在这种情况下,也比较方便。 劣势: (1),性能方面,不如都放到一个bundle表中优越。 (2),开发起来,编写起SQL语句,非常麻烦,如果自己写sql,关联字段的话,难度很大。 当然,Drupal7针对这两点,是有改进的,针对系能问题,为bundle层增加了缓存机制,有了缓存以后,看起来就像在一个表里面了。 Drupal7里面有EntityFieldQuery,使得SQL语句的操作方便了很多,而且这个在Drupal8里面,得到了进一步的加强。 开发人员,学好这些新特性就好了,而不是完全写纯SQL语句,不但难于理解,也不好维护。
将字段的表分开,还是放到bundle里面,在开始设计的时候 将字段的表分开,还是放到bundle里面,在开始设计的时候,是有过争论的,分表是Drupal7里面字段模块对CCK的一个改进。 优势: (1),整个字段的数据模型是统一的,无论是多值字段,还是单值字段。在CCK里面,两者是分开的。 (2),字段的分表,使得多语言的特性,更方便。使得Drupal能够在字段级别支持多语言。在Drupal7里面,字段对多语言的支持,比属性的多语言,要方便很多。 (3),多个bundle共用一个字段,也是有可能的,分表在这种情况下,也比较方便。 劣势: (1),性能方面,不如都放到一个bundle表中优越。 (2),开发起来,编写起SQL语句,非常麻烦,如果自己写sql,关联字段的话,难度很大。 当然,Drupal7针对这两点,是有改进的,针对系能问题,为bundle层增加了缓存机制,有了缓存以后,看起来就像在一个表里面了。 Drupal7里面有EntityFieldQuery,使得SQL语句的操作方便了很多,而且这个在Drupal8里面,得到了进一步的加强。 开发人员,学好这些新特性就好了,而不是完全写纯SQL语句,不但难于理解,也不好维护。
将字段的表分开,还是放到bundle里面,在开始设计的时候
将字段的表分开,还是放到bundle里面,在开始设计的时候,是有过争论的,分表是Drupal7里面字段模块对CCK的一个改进。
优势:
(1),整个字段的数据模型是统一的,无论是多值字段,还是单值字段。在CCK里面,两者是分开的。
(2),字段的分表,使得多语言的特性,更方便。使得Drupal能够在字段级别支持多语言。在Drupal7里面,字段对多语言的支持,比属性的多语言,要方便很多。
(3),多个bundle共用一个字段,也是有可能的,分表在这种情况下,也比较方便。
劣势:
(1),性能方面,不如都放到一个bundle表中优越。
(2),开发起来,编写起SQL语句,非常麻烦,如果自己写sql,关联字段的话,难度很大。
当然,Drupal7针对这两点,是有改进的,针对系能问题,为bundle层增加了缓存机制,有了缓存以后,看起来就像在一个表里面了。
Drupal7里面有EntityFieldQuery,使得SQL语句的操作方便了很多,而且这个在Drupal8里面,得到了进一步的加强。
开发人员,学好这些新特性就好了,而不是完全写纯SQL语句,不但难于理解,也不好维护。