1. Modèle polymorphe :
- Concept : Stocke des documents avec des structures différentes au sein d'une même collection. Un champ commun identifie le type de document.
- Cas d'utilisation : Lorsque vous disposez de données associées qui partagent certains champs communs mais qui comportent également des champs distincts en fonction du type. Par exemple, stocker différents types de produits (livres, appareils électroniques, vêtements) dans une seule collection « produits ».
- Exemple :
{ "_id": 1, "type": "book", "title": "The Book", "author": "John Doe" }
{ "_id": 2, "type": "electronics", "name": "Laptop", "brand": "XYZ", "processor": "Intel" }
Copier après la connexion
2. Modèle d'attribut :
- Concept : Utilise des paires clé-valeur pour représenter des attributs qui peuvent varier considérablement d'un document à l'autre.
- Cas d'utilisation : Lorsque vous disposez d'un grand nombre d'attributs facultatifs ou dynamiques qui ne correspondent pas parfaitement aux champs fixes. Cela évite de créer de nombreux champs peu peuplés.
- Exemple :
{ "_id": 1, "name": "Product A", "attributes": { "color": "red", "size": "large", "material": "cotton" } }
{ "_id": 2, "name": "Product B", "attributes": { "weight": "2kg", "power": "100W" } }
Copier après la connexion
3. Modèle de seau :
- Concept : Regroupe les données associées dans un seul document (le « bucket »).
- Cas d'utilisation : Lorsque vous avez une relation un-à-plusieurs où le côté « plusieurs » est relativement petit et fréquemment accessible avec le côté « un ». Cela réduit le nombre de lectures requises.
- Exemple : Stockage des articles de blog avec leurs commentaires dans le même document.
{ "_id": 1, "title": "My Blog Post", "content": "...", "comments": [
{ "author": "User A", "text": "Great post!" },
{ "author": "User B", "text": "I agree." }
]}
Copier après la connexion
4. Modèle aberrant :
- Concept : Stocke les données rarement consultées ou très volumineuses séparément du document principal.
- Cas d'utilisation : Lorsque vous disposez de données rarement utilisées ou qui augmenteraient considérablement la taille du document principal, ce qui aurait un impact sur les performances. Par exemple, stocker séparément de grandes images ou des descriptions détaillées de produits.
- Implémentation :Souvent implémenté à l'aide de GridFS pour des fichiers très volumineux ou en stockant une référence à un document séparé.
5. Modèle calculé :
- Concept : Stocke les valeurs pré-calculées pour éviter des calculs coûteux lors des opérations de lecture.
- Cas d'utilisation : Lorsque vous avez fréquemment accédé à des données nécessitant des calculs complexes. Le stockage de la valeur calculée améliore les performances de lecture au prix d'une complexité d'écriture accrue (vous devez mettre à jour la valeur calculée chaque fois que les données source changent).
- Exemple : Stockage du prix total d'une commande, qui est calculé à partir des prix des articles individuels.
6. Modèle de sous-ensemble :
- Concept : Stocke un sous-ensemble de champs fréquemment consultés dans un document intégré pour une récupération rapide.
- Cas d'utilisation : Lorsque vous disposez d'un document volumineux mais que vous n'avez souvent besoin que d'un petit ensemble de champs. L'intégration de ce sous-ensemble réduit la quantité de données lues sur le disque.
7. Modèle de référence étendu :
- Concept : Combine le référencement avec certains champs clés du document référencé.
- Cas d'utilisation : Lorsque vous avez fréquemment besoin d'informations provenant d'un document associé mais que vous ne souhaitez pas effectuer une recherche distincte à chaque fois. Cela réduit le nombre de requêtes mais introduit une certaine duplication des données.
8. Modèle d'approximation :
- Concept : Stocke une valeur approximative au lieu d'une valeur exacte pour améliorer les performances.
- Cas d'utilisation : Lorsqu'une précision absolue n'est pas requise et que les performances sont essentielles. Par exemple, stocker un décompte estimé au lieu d'effectuer une opération de décompte coûteuse.
9. Modèle d'arbre :
- Concept : Représente des structures de données hiérarchiques (comme des catégories ou des organigrammes) à l'aide de documents ou de références imbriqués.
- Cas d'utilisation : Lorsque vous avez besoin de modéliser des relations arborescentes. Différentes approches existent, comme le référencement parent, le référencement enfant ou l'utilisation d'un tableau d'ancêtres.
10. Modèle de préallocation :
- Concept : Réserve de l'espace pour la croissance future des données dans un document.
- Cas d'utilisation : Lorsque vous savez qu'un document va s'agrandir avec le temps (par exemple, un ensemble d'événements) et que vous souhaitez éviter un redimensionnement fréquent du document, qui peut avoir un impact sur les performances.
11. Modèle de gestion des versions du document :
- Concept : Stocke différentes versions d'un document, vous permettant de suivre les modifications au fil du temps.
- Cas d'utilisation : Lorsque vous devez conserver un historique des modifications apportées à vos données. Cela peut être implémenté en créant de nouveaux documents pour chaque version ou en stockant les versions dans un tableau dans le document principal.
Le choix du bon modèle dépend fortement des exigences spécifiques de votre application, de la structure des données et des modèles d'accès. Souvent, vous utiliserez une combinaison de ces modèles pour obtenir des performances et une maintenabilité optimales.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!