Modelowanie dokumentów wspomagane przez AI
Wzorzec: Użyj AI do projektowania elastycznych schematów dokumentów, które równoważą denormalizację z spójnością danych.
// Zapytanie do asystenta AI"Zaprojektuj schemat MongoDB dla platformy e-commerce z:- Profilami użytkowników z adresami i metodami płatności- Katalogiem produktów z wariantami i inwentarzem- Zamówieniami ze śledzeniem statusu w czasie rzeczywistym- Koszykiem z zarządzaniem sesjąRozważ wzorce odczytu/zapisu i kompromisy denormalizacji"
// AI generuje kompleksowy schemat:// Kolekcja użytkowników z dokumentami osadzonymiconst userSchema = { _id: ObjectId(), email: "user@example.com", profile: { firstName: "Jan", lastName: "Kowalski", phone: "+48123456789" }, addresses: [ { _id: ObjectId(), type: "shipping", street: "ul. Główna 123", city: "Warszawa", country: "Polska", isDefault: true } ], paymentMethods: [ { _id: ObjectId(), type: "card", last4: "1234", expiryMonth: 12, expiryYear: 2025, isDefault: true } ], cart: { items: [ { productId: ObjectId(), variantId: ObjectId(), quantity: 2, price: 29.99, addedAt: ISODate() } ], updatedAt: ISODate() }};
// Kolekcja produktów z bogatymi atrybutamiconst productSchema = { _id: ObjectId(), sku: "PROD-001", name: "Słuchawki bezprzewodowe", slug: "sluchawki-bezprzewodowe-czarne", description: "Słuchawki premium z redukcją szumów", category: ["Elektronika", "Audio", "Słuchawki"],
// Zdenormalizowane dla wydajności brand: { _id: ObjectId(), name: "AudioTech", logo: "https://..." },
// Warianty jako poddokumenty variants: [ { _id: ObjectId(), color: "Czarny", price: 299.99, compareAtPrice: 349.99, inventory: { available: 150, reserved: 10, warehouse: { "WAW": 50, "KRK": 100 } }, images: ["url1", "url2"] } ],
// Zagregowane dane recenzji reviews: { count: 245, average: 4.5, distribution: { 5: 150, 4: 60, 3: 20, 2: 10, 1: 5 } }};
Korzyści:
- Zoptymalizowane pod operacje ciężkie odczytowo
- Minimalizuje złączenia poprzez strategiczną denormalizację
- Wspiera atomowe aktualizacje dokumentów osadzonych
- Skaluje się poziomo dzięki shardingowi