¿Debo reutilizar los campos de Drupal existentes?
Publicado: 2022-02-16A veces somos capaces de dar consejos muy claros: "¡Haz esto!" o "¡No hagas eso!"
Esta no va a ser una de esas publicaciones de blog.
Drupal te da la posibilidad de reutilizar campos. Si tiene un campo "Imagen", puede elegir usar ese mismo campo en cada tipo de contenido en su sitio. Sin embargo, no siempre está claro si la reutilización de campos es una buena idea. A veces lo es, a veces no lo es.
Aquí hay una descripción general de las ventajas y desventajas a considerar antes de reutilizar los campos de Drupal.
Consejos generales sobre la reutilización de campos
Puede elegir la función "Reutilizar campo existente" cada vez que vaya a "Estructura", luego a "Tipos de contenido" y haga clic en "Administrar campos" para un tipo de contenido.
La documentación de Drupal.org se utiliza para recomendar oficialmente que no reutilice los campos:
Se recomienda crear nuevos campos, en lugar de reutilizar los existentes, a menos que tenga una razón clara para hacerlo.
Sin embargo, ese consejo se ha matizado más en los últimos años, y Drupal dice oficialmente que son ventajas y desventajas.
La documentación de la interfaz de usuario de Drupal Field tiene una sección detallada llamada "Reutilización de campos":
Hay dos razones principales para reutilizar campos. En primer lugar, la reutilización de campos puede ahorrarle tiempo en la definición de nuevos campos. En segundo lugar, la reutilización de campos también le permite mostrar, filtrar, agrupar y ordenar contenido por campo en todos los tipos de contenido. Por ejemplo, el módulo Vistas aportadas le permite crear listas y tablas de contenido. Entonces, si usa el mismo campo en varios tipos de contenido, puede crear una Vista que contenga todos esos tipos de contenido juntos y muestre ese campo, ordenado por ese campo y/o filtrado por ese campo. Hay una razón principal para no reutilizar un campo: diferentes permisos. Por ejemplo, es posible que necesite diferentes roles de usuario para tener diferentes niveles de acceso a un campo, según el tipo de contenido al que se haya agregado. Esto puede ser difícil si reutiliza un campo.
Ventaja: la reutilización de campos puede simplificar su
Sí, puede haber un aumento de velocidad, pero el ahorro de tiempo es muy pequeño. Una ventaja más convincente es que la reutilización de campos a veces puede simplificar la administración del sitio. Web Initiative resume esto muy bien:
La reutilización de campos también puede reducir la complejidad del sistema. En lugar de crear y mantener 10 campos diferentes, los administradores de Drupal mantienen solo dos campos y su documentación. Los administradores de bases de datos solo necesitan mejorar el rendimiento de dos tablas adicionales. KISS es siempre un buen principio.
Definitivamente sería más fácil aplicar permisos, configurar y diseñar elementos a un campo reutilizado en lugar de 10 campos únicos.
Ventaja: parte del contenido funciona bien con campos reutilizados
Volvamos a la documentación de la interfaz de usuario de Drupal Field de nuevo:
La reutilización de campos también le permite mostrar, filtrar, agrupar y clasificar el contenido por campo en todos los tipos de contenido. Por ejemplo, el módulo Vistas aportadas le permite crear listas y tablas de contenido. Entonces, si usa el mismo campo en varios tipos de contenido, puede crear una Vista que contenga todos esos tipos de contenido juntos y muestre ese campo, ordenado por ese campo y/o filtrado por ese campo.
Un escritor de comentarios en la documentación de Drupal.org hace el mismo comentario sobre las vistas. Señalan que las vistas pueden combinar contenido de formas sofisticadas. Por lo tanto, si tiene varios tipos de contenido diferentes, con diferentes campos de fecha, las Vistas pueden combinarlos en una sola vista. Sin embargo, también señalan que Views no es tan sofisticado con la clasificación. Por lo tanto, si tiene varios tipos de contenido diferentes, con diferentes campos de fecha, Views tendrá dificultades para ordenar el contenido en todos esos campos de fecha diferentes.

Desventaja: los campos reutilizados son inflexibles
Brandon Williams en Twitter lo resumió muy bien:
al principio es una buena idea, pero dale unas semanas, los requisitos cambian, terminas creando otros separados de todos modos
En gran medida, si elige campos reutilizados, está limitando los cambios que puede realizar fácilmente en sus datos más adelante. También lleva mucho más tiempo hacer actualizaciones porque necesita editar cada campo individualmente.
Desventaja: los campos reutilizados hacen que los datos sean más difíciles de exportar o migrar
La reutilización de campos podría convertirse en un problema cuando necesite exportar sus datos o cuando necesite migrar a una nueva versión de Drupal u otra plataforma.
Cada campo de Drupal tiene su propia tabla de base de datos, como se muestra a continuación. Extraer esos datos puede ser difícil. El módulo Funciones (la forma más común de exportar datos de Drupal) luchó durante mucho tiempo con los campos compartidos, aunque las versiones actuales pueden manejarlos de manera más efectiva.

Este consejo es similar a nuestros pensamientos sobre el uso de sitios múltiples. Cada vez que comienza a crear dependencias entre bases de código o tablas de bases de datos, agrega complejidad a su sitio.
¿Ventaja o desventaja? Rendimiento
La documentación de Drupal describe un posible beneficio de reutilizar campos:
La reutilización de campos no solo hace que Drupal se ejecute más rápido, sino que también facilita el mantenimiento de su proyecto.
Este hilo sobre Stack Overflow tiene una discusión muy relevante sobre el rendimiento. Incluye este comentario:
Sin embargo, un problema real es la cantidad de campos que tiene. Porque actualmente en Drupal 7, la configuración de campo completa de todos los campos, sin importar si están cargados o no, se obtiene del caché en cada solicitud. He visto sitios con más de 250 campos, donde cargar y deserializar la configuración del campo requiere más de 13 MB de memoria".
Por lo tanto, la reutilización de campos podría brindar pequeñas mejoras en el rendimiento al permitirnos tener un número total de campos más bajo.
Sin embargo, esas pequeñas mejoras pueden perderse en otros lugares. Esto de Iniciativa Web de nuevo:
[campos] complejidad adicional a un sistema Drupal. Al crear un campo nuevo, la definición del campo se agrega a la tabla de clase de campo y la configuración del campo se agrega a la tabla de instancia de campo; mientras tanto, se agrega una nueva tabla a la base de datos de Drupal para almacenar los datos del campo. Las tablas de bases de datos agregan complejidad al sistema. Además, las consultas de nodos incurrirán en expresiones JOIN de tablas a datos de campo. Múltiples JOIN afectarán el rendimiento de la base de datos, ya que MySQL responde mal a las consultas con múltiples JOIN de tablas si no se configura correctamente.
Resumen
Lamentamos que no tengamos una respuesta fácil a esta pregunta. Esta es una pregunta en la que se beneficiará al leer sobre el tema y comprender los pros y los contras. Si está creando un sitio real, valdrá la pena construir el sitio en un entorno de prueba para obtener más información sobre cómo estos pros y contras afectan las necesidades de su sitio.