problema Abbiamo un certo numero di clienti diversi che ottengono un numero di file di prezzi diversi, ogni cliente può quindi avere anche diversi stili di file di prezzo, ad esempio i clienti possono avere solo due colonne, prodotto e prezzo. Alcuni clienti possono avere fino a 20-30 campi ognuno di questi campi può esistere in diverse tabelle nel database. Anche il numero di prodotti all'interno del file può variare anche alcuni con solo un paio di centinaia di altri con oltre 10k. Questi file devono quindi essere eseguiti ogni ora per mantenere aggiornati lo stock e i prezzi. In media ci sono circa 50 diversi formati di file per 180 file di prezzo, quindi in totale i 9000 file dispari da scrivere.
Soluzione corrente La mia soluzione corrente per questo è due tabelle. Una tabella con tutti i prodotti all'interno di ciascuno dei file di prezzo insieme con i prezzi in varie valute. E un'altra tabella / vista con tutti i possibili attributi del prodotto. La chiave primaria è il codice prodotto, quindi altri campi, ad esempio una breve descrizione, una descrizione lunga, codici prodotto alternativi ecc.
Il programma carica quindi entrambe le tabelle in memoria:
ConcurrentDictionary<PRODUCT_CODE, ConcurrentDictionary<COLUMN_NAME, VALUE>>
Ho quindi la tabella delle definizioni dei prezzi. La tabella quindi specifica il formato del file di prezzo per eample, il file di prezzo x ha colonna ' Product_Code', 'Price_GBP', 'Description'
il programma, quindi itera (parallelo) attraverso i prodotti all'interno del file di prezzo corrente e cattura le colonne dal dizionario concorrente in memoria. Oltre alle colonne nel dizionario, ci sono tutte le colonne "Programmabili", ad esempio 'RRP - price_gbp *1.4'
. Basta semplicemente passare a un caso di scambio per vedere cosa deve fare con queste colonne.
Problema Il mio problema è che il numero di attributi del prodotto sta diventando molto grande e il numero di file di prezzo e formati di prezzo e i clienti che desiderano questi file è quasi 10 volte piegato negli ultimi due anni scrivo questo sistema Quindi, come puoi immaginare, il suo tempo di esecuzione non è così rapido come prima.
Non riesco comunque a pensare di renderlo più veloce, ordinato e "a prova di futuro".