La différence entre le catalogue EAV et le catalogue plat est la suivante:
1. Catalogue Eav
EAV est un modèle de base de données de valeurs d'attribut d'entité, dans lequel les données sont entièrement sous forme normalisée. Chaque valeur de données de colonne est stockée dans leur table de types de données respective. Exemple, pour un produit,
l'ID du produit est stocké dans la catalog_product_entity_int
table,
nom du produit dans le catalog_product_entity_varchar
tableau,
prix du produit dans le catalog_product_entity_decimal
tableau,
date de création du produit dans le catalog_product_entity_datetime
tableau,
description du produit dans le catalog_product_entity_text
tableau.
L'EAV est complexe car il rejoint 5-6 tables même si vous souhaitez obtenir les détails d'un seul produit.
Les colonnes sont appelées attributs dans EAV.
2. Catalogue plat
Le modèle plat utilise une seule table, il n'est donc pas normalisé et utilise plus d'espace de base de données. Il efface les frais généraux de l'EAV,
C'est bon en termes de performances, car il ne faudra qu'une seule requête pour charger le produit entier au lieu de joindre 5-6 tables pour obtenir les détails d'un seul produit.
Les colonnes sont appelées champs dans le modèle plat.
Magento a implémenté des indexeurs qui interrogeront périodiquement les collections standard et rempliront les tables de base de données plates au format suivant. Où * est l'identifiant du magasin.
catalog_category_flat_store_*
catalog_product_flat_*
Ces tableaux contiennent des données de produit et de catégorie non normalisées destinées à être en lecture seule. Cela permet à Magento de récupérer les données de catégorie et de produit en une seule requête.
Vous pouvez activer le catalogue plat en accédant à System > Configuration > Catalog > Frontend > Use Flat Catalog Category | Use Flat Catalog Product
. Réglez ceci sur oui.
Si vous ajoutez un nouvel attribut dans la table EAV pour le catalogue. N'oubliez pas d'exécuter la réindexation (System > Configuration > Index Management)
. La réindexation actualise vos tables de catalogue plates.
Pour plus d'informations, veuillez consulter «EAV» et «Flat Catalog» dans Magento
Magento utilise le modèle Entity-Attribute-Value (EAV) pour stocker les données des clients, des produits et des catégories dans sa base de données. Bien que le modèle EAV vous permette d'avoir des attributs complètement extensibles pour ces objets, les attributs d'objet sont stockés dans plusieurs tables plutôt que dans une très grande table.
Étant donné que les attributs sont stockés dans de nombreuses tables - et qui incluent des copies de certains des mêmes attributs - les requêtes SQL peuvent être longues et complexes. La fonctionnalité de catalogue plat crée de nouveaux tableaux à la volée, où chaque ligne contient toutes les données nécessaires sur un produit ou une catégorie.
Dans les versions antérieures de Magento, il était nécessaire de reconstruire le catalogue plat chaque fois que vous apportiez des modifications aux attributs de produit ou aux associations de catégories de produits. Dans cette version, le catalogue plat est mis à jour pour vous, soit toutes les minutes, soit en fonction de votre tâche cron Magento.
Les options de catalogue plat permettent non seulement le catalogue plat et les indexeurs de produits plats, mais également l’indexation des règles de prix du catalogue et du panier. Si vous avez un grand nombre de SKU (500 000 ou plus), Magento peut indexer rapidement les règles de prix du catalogue et du panier si vous activez l'option de produit de catalogue plat.
la source
Les catégories plates ne sont pas mises à jour automatiquement, même dans Magento 1.9.2. Je n'ai pas vérifié 1.9.3, car je reconstruis toujours manuellement les index après les mises à jour en masse (par exemple au niveau du stock).
la source