Raramente estoy en desacuerdo con usuarios conocedores, pero en este caso no puedo evitarlo. En mi opinión, llamar al uso de tablas de bases de datos no centrales una mala práctica per se es simplemente incorrecto.
La elección de si elegir tablas centrales o agregar las propias depende de varios factores.
El tiempo de ejecución de una consulta depende del tamaño de la tabla. Por lo tanto, si planea almacenar cantidades significativas de datos, una tabla separada que atienda solo a este tipo de conjunto de datos específico será inevitablemente la solución más eficiente.
Si almacena muchas publicaciones regulares o CPT junto con estos conjuntos de datos específicos, wp_posts
también wp_postmeta
puede crecer rápidamente.
Para mí, esta elección depende en última instancia de cuán "elegantes" sean los datos. ¿Debería ser compatible con un autor, comentarios, revisiones, extractos o similares? Si es así, iré con CPT y / o funcionalidad principal. Si no, iré con tablas separadas por el uso y la eficiencia de los recursos.
Si la noción de Eugene fuera correcta, ninguno de los complementos bien escritos existentes agregaría sus propias tablas, lo que afortunadamente no es el caso.
El uso de tablas WP core DB es la mejor práctica
$wpdb
clase muy poderosa .wp_options
y al obligar al desarrollador del complemento a considerar cuidadosamente el tipo de datos que se crean / almacenan, CPT? ¿Es una taxonomía? ¿Es post meta?WordPress proporciona un medio para que los complementos agreguen tablas a su base de datos
Sin embargo, para aquellos casos de uso en los que se necesita una tabla de base de datos separada, asegúrese de usar el método que proporciona WordPress para agregar su tabla personalizada a la base de datos de WordPress , especialmente para que pueda aprovechar la
$wpdb
clase poderosa . Tenga en cuenta la información / advertencias que enumera esta entrada del Codex:Por lo tanto, podemos concluir lo siguiente:
fuente
$wpdb
(el uso de ir con tablas no básicas estaba implícito en mi respuesta, no querría perder esa clase)Las tablas de bases de datos no básicas son imprescindibles si sus datos son más complejos que el modelo de publicación de WordPress, va a ser enorme y tiene muchos metadatos que se buscarán.
El formato EAV que WordPress usa para su meta meta no se presta bien a la búsqueda de criterios múltiples.
Si divide su meta en muchas entradas, tendrá numerosas entradas por publicación en la tabla de meta meta, y la búsqueda de cualquier publicación a través de metas será mucho más lenta.
Si almacena todas las metas serializadas en una matriz y la tiene como solo una entrada en el meta meta, esta vez se verá obligado a hacer solo búsquedas de texto dentro de ese meta, y no podrá usar operadores de comparación directamente en su consulta SQL.
No es un gran problema si su complemento no va a tener miles de entradas y meta asociados.
Pero un problema importante si su complemento va a hacer algo grande.
Su situación, un nombre de archivo como entrada independiente y 3 entradas de metadatos adjuntas a esa entrada no parece tan grande. Puede usar la tabla de publicaciones de WordPress y la tabla meta para ello.
PERO, si la gente va a buscar mucho estas 3 metas, ESPECIALMENTE en conjunto, entonces recomendaría que establezca tablas separadas.
Con ese formato, solo una tabla con una sola entrada, que también contiene todas las metas, estaría bien y consultaría a la velocidad del rayo.
Por cierto, si usa tablas de WordPress y también está usando el almacenamiento en caché de consultas, el usuario busca sus datos que se almacenarán en caché con el tiempo e incurrirán en menos carga. Pero eso no sería tan prudente como hacer tablas separadas.
fuente
Puede cargar sus archivos en la biblioteca de medios. Cada elemento en la biblioteca de medios se almacena en la
wp_posts
tabla. Significa que cada archivo puede tener metadatos. Puede guardar tanta información como necesite por cada archivo en lawp_postmeta
tabla utilizando la API de metadatos .Sí, es una mala práctica crear una tabla propia, si en su lugar puede utilizar la funcionalidad principal.
fuente
fuente