Numero di volte in cui questa domanda viene rivolta alla mia e alla mia squadra, se dovessimo conservare o memorizzare nella cache i dati. Capisco che un po 'di tempo è funzionale requisito che abbiamo bisogno di persistere in DB. Ma nel mio caso non ce n'è.
Ma qui parlo principalmente in termini di scalabilità / esecuzione, mentre il design è migliore. Facciamo un esempio di Parcheggio dove posso mantenere completamente i dati nella cache distribuita con persistenza (se richiesto) come Redis o in DBMS come oracle / MySQL. Per sopravvivere al crash del server / al guasto del nodo, posso mantenere il set di repliche redis.
Quindi la domanda viene qui completamente basata sulle prestazioni che è meglio.
Secondo me ci sono due approcci per selezionarne uno (cache vs DB): -
-
Un modo è l'approccio passivo. Implementa sia l'approccio DB che cache, simula il carico e analizza il risultato. Ma credo che questo approccio richieda tempo. Inoltre, devi avere risorse e hardware per fare lo stesso.
-
La mia domanda è: in che modo è teoricamente possibile analizzare entrambi gli approcci basati su un carico? Considerare che ogni sistema in millisecondi ottiene 10 richieste di parcheggio.
La mia comprensione della strategia basata sulla cache sarà più utile in quanto possiamo salvare le operazioni di I / O. Ma in che modo teoricamente posso calcolare concretamente e avvicinarmi alla conclusione? Come posso calcolare qualcosa del genere La richiesta di 10 K al secondo impiegherà circa questo tempo con persistenza (con questa infrastruttura) e questo molto tempo sull'approccio basato sulla cache (con questa infrastruttura)? Questo potrebbe non essere corretto al 100% ma vicino a quello.
Di seguito è riportato un breve disegno del parcheggio per riferimento
public class ParkingLot
{
Vector<ParkingSpace> vacantParkingSpaces = null;
Vector<ParkingSpace> fullParkingSpaces = null;
int parkingSpaceCount = 0;
boolean isFull;
boolean isEmpty;
.................
}
public class ParkingSpace
{
boolean isVacant;
Vehicle vehicle;
ParkingType parkingType;
int distance;
}
public class Vehicle
{
int num;
}
public enum ParkingType
{
REGULAR,
HANDICAPPED,
COMPACT,
MAX_PARKING_TYPE,
}