Abbiamo tutti sentito parlare di forza vendita e sugarcrm e di sistemi come questo. Sfortunatamente sul mio posto di lavoro ci è stato chiesto di scrivere un sistema simile (piuttosto che una licenza o un acquisto). Fondamentalmente il database è abbastanza grande. Pensa a moduli come: Gruppi aziendali, clienti, programmi, progetti, sottoprogetti e gestione dei problemi. In termini semplici, un gruppo aziendale ha uno o più clienti. Un programma ha uno o più progetti. Un progetto ha uno o più sottoprogetti. E un problema può essere creato su molti sottoprogetti.
Ovviamente il sistema è un po 'più complesso ma, invece di elencare ogni singolo modulo, ritengo sia meglio mantenerlo semplice. In ogni caso, il sistema nel suo stato attuale ha solo due risorse su cui lavorare (fondamentalmente dobbiamo fare tutto: CSS, database, jquery, asp.net e C #). Abbiamo iniziato bene definendo le pagine del master e del footer dell'interfaccia utente in modo tale che possiamo riutilizzarle in tutte le nostre pagine.
Ora arriva la parte difficile. Il sistema avrà circa 4k utenti finali con il 5-10% di utenti concorrenti. Ci stiamo chiedendo se ha senso memorizzare nella cache i dati del nostro database (per esempio 5-10 minuti) piuttosto che colpire continuamente il nostro database. Il motivo è che alcune di queste pagine potrebbero avere 5-10 filtri di ricerca associati alla pagina. Immagina ogni volta che viene effettuata una selezione da una casella di ricerca quanti colpi del database. Anche alcuni di questi campi di ricerca sono in cascata, quindi selezionando ad esempio un menu a discesa iniziale è possibile sovrapporre diverse caselle a discesa sotto di essi.
È sbagliato memorizzare nella cache perché non trovo troppi articoli sul fatto che sia una buona idea o meno. Ricorda che il sistema è simile a un sistema CRM in cui gestiamo i nostri vari clienti, progetti, sottoprogetti, problemi, ecc.