Versione breve : qual è il termine / concetto che descrive la progettazione efficiente della programmazione del livello dati per un accesso efficiente ai dati e quali sono alcune fonti / libri / articoli / sito web che discutono di questo concetto?
Versione lunga : così ho avuto una recente conversazione con lo sviluppatore senior della mia piccola azienda su come e perché accediamo ai dati come facciamo noi. Mi ha detto che era l'aspetto più importante del programma e ha spiegato come è il più grande collo di bottiglia in termini di efficienza se fatto in modo errato. Ha anche detto di non averlo mai imparato dai corsi che ha seguito e non ne ha mai letto in nessun libro, nonostante il fatto che ritenga che sia la prima cosa che sceglie di insegnare agli altri.
Dovrei spiegare che questo è il mio primo anno di programmazione del lavoro, che ho una laurea in ingegneria elettronica, ma non in CS, quindi non saprei se fosse coperto a scuola. Inoltre, il linguaggio in cui lavoro è Java, ma questa domanda era intesa a chiedere informazioni sull'accesso ai dati da qualsiasi lingua in senso generale.
Quindi di cosa sto parlando? Spiegherò attraverso un esempio. Lavoriamo con molti dati, quindi il livello dati è un po 'complicato. Utilizza una combinazione di pattern singleton e pattern di progettazione di fabbrica per ottenere un accesso diverso.
Ad esempio, un oggetto, diciamo che il cliente verrà spesso istanziato come segue:
Customer customer = Customer.getDefaultInstance(CustomerAccessType.LIST)
o
Customer customer = Customer.getDefaultInstance(CustomerAccessType.ONE_RECORD)
o
Customer customer = Customer.getDefaultInstance(CustomerAccessType.LIST_BY_ACCOUNT)
Come avrete già intuito, ogni tipo di accesso accede al database in un modo diverso. Il tipo di accesso LIST per la maggior parte del tempo ha pochissime colonne, quindi anche se sta acquisendo molte righe di dati, in alcuni casi fino a decine di migliaia di record (forse non con i clienti, ma forse qualcosa come ordini da un sito web che puoi immaginare che diventa molto grande), potrebbe contenere solo le chiavi primarie sul tavolo e alcune altre informazioni molto specifiche. Ma quando si modificano dati specifici a cui si accede usando il tipo "ONE_RECORD" e con una sola riga si hanno tutte le colonne della tabella (e molto probabilmente si unisce a molte altre tabelle).
Questo è più evidente che mai quando si guarda uno schermo che dipinge informazioni di fronte a cassieri e le informazioni cambiano costantemente. Le informazioni mostrate potrebbero provenire da una tabella che ha come già accennato, decine di migliaia di record su cui si sta lavorando. Un oggetto di tipo ELENCO catturerà solo le chiavi primarie dalla tabella, quindi solo i record che richiedono la pittura sono accessibili, una riga alla volta e le informazioni vengono dipinte sullo schermo.
Quindi ho due domande a seguito di tutto ciò:
-
Qual è il termine / concetto che descrive la progettazione efficiente della programmazione del livello dati per un accesso efficiente ai dati? La maggior parte dei programmi di grandi dimensioni che devono gestire un sacco di accesso ai dati devono affrontare questi stessi problemi. Sicuramente altri hanno coniato un termine per questo?
-
Quali sono alcune buone risorse per saperne di più su cos'altro è disponibile su questo argomento? Di nuovo, sicuramente altri hanno affrontato questi stessi problemi / colli di bottiglia con cui abbiamo a che fare. Sicuramente altre menti brillanti hanno affrontato il problema e scritto estesamente su di esso, no?
-
Quali sono altri modi in cui forse la tua esperienza personale ti ha mostrato nell'affrontare questo problema, anche se non lo hai mai letto da nessun'altra parte?
Il tuo aiuto e la tua conoscenza sono molto apprezzati,
-Asaf