¿Qué tan mala es la solución EAV para una tienda en línea?

eav

Se enfrentó a un problema cuando hay diferentes tipos de productos (la ropa y los televisores tienen pocos parámetros idénticos). Veo 3 soluciones al problema.
Serialized LOB es la más fácil, pero no hay búsqueda
EAV - no es una implementación difícil, no hay problemas al actualizar la base de datos. En general, algo así. Pero link escribe que no es muy bueno.
Bueno, la opción más difícil y costosa (en el tiempo) es dividir las mercancías en diferentes tablas



En realidad tienen pensamientos? ¿Cómo hacerlo conveniente para mí como programador para no rehacer todo y hacerlo conveniente para las personas? Base de datos

link dice que Magento usa EAV - g
Respuestas
lizzie pingpank
La mayoría de las deficiencias indicadas en el flujo de pila se corrigen mediante una lógica empresarial bien construida. Esto se puede ver en el ejemplo del mismo Magento.

Lo único que vale la pena destacar es que al cambiar a EAV, debes evaluar si el juego vale la pena.

Si la estructura de categorías y / o tipos de productos es relativamente constante y rara vez cambia, entonces tiene sentido usar tablas planas (como lo indica la tercera opción), porque tal esquema es mucho más productivo y más fácil de implementar.

Si la estructura del directorio es muy dinámica, debería utilizar EAV, ya que en este caso, se guardarán los recursos que se gastan en modificar / eliminar solicitudes en tablas planas. Pero al mismo tiempo, será necesario pensar bien en el sistema de almacenamiento en caché, ya que La complejidad específica del muestreo de datos en una entidad es significativamente mayor que en otros esquemas.

Él mismo hace mucho que eligió EAV para sí mismo y nunca lo ha lamentado.
EAV ahora es más fácil de implementar. Las mercancías ya son un montón. hay ordenes Es rehacer mucho. en EAV, puedo coser algo en el código, por ejemplo, no PropertyName sino PropertyID (y esto es enumeración). ¿Y qué leer sobre el almacenamiento en caché? Por ejemplo, hay 5,000 productos, ¿almacenan todo en caché y actualizan el caché cuando el producto cambia? - pandit
emily gilstrap
La solución más sencilla es utilizar bases de datos orientadas a documentos, como MongoDB / CouchDB.
La tienda ya está escrita y funciona :( así que el problema es la transición - mike g
msslam
Magento se ha negado a usar EAV en versiones recientes. Nos cambiamos al piso habitual.
¿Y cómo lo hicieron? ¿Es imposible que todos los tipos de productos hagan una mesa con anticipación? - ekram motawieh
Al crear un tipo de producto, lo más probable es que se elabore una nueva tabla. EAV - desaceleración - yannis
¿De qué versión es? 1.4.1 - eav como es. - john snead