La maggior parte delle persone hanno familiarità con la frase, quotthis ucciderà due piccioni con una stonequot. Se non you39re, la fase si riferisce ad un approccio che risolve due obiettivi in una sola azione. (Purtroppo, l'espressione stessa è piuttosto sgradevole, come la maggior parte di noi don39t vuole lanciare pietre contro gli animali innocenti) Oggi I39m andando a coprire alcune nozioni di base su due grandi funzionalità di SQL Server: l'indice Columnstore (disponibile solo in SQL Server Enterprise) e Store query SQL. Microsoft effettivamente implementata l'indice Columnstore in SQL 2012 Enterprise, anche se they39ve rafforzata nelle ultime due versioni di SQL Server. Microsoft ha introdotto Store query in SQL Server 2016. Quindi, quali sono queste caratteristiche e perché sono importanti Beh, ho un demo che introdurrà sia le caratteristiche e mostrare il modo in cui ci possono aiutare. Prima di andare avanti, io copro anche questo (e altri SQL 2016 caratteristiche) nel mio articolo CODE Magazine su nuove funzionalità di SQL 2016. Come un'introduzione di base, l'indice Columnstore può contribuire ad accelerare le query che scanaggregate su grandi quantità di dati, e Store Query tracce esecuzioni di query, piani di esecuzione e le statistiche di runtime che you39d normalmente hanno bisogno di raccogliere manualmente. Fidati di me quando dico, questi sono grandi caratteristiche. Per questa demo, I39ll essere utilizzando il database demo di Microsoft Contoso dati di vendita al dettaglio Warehouse. In parole povere, Contoso DW è come quota davvero grande AdventureWorksquot, con le tabelle contenenti milioni di righe. (Il più grande tabella AdventureWorks contiene circa 100.000 righe al massimo). È possibile scaricare il database Contoso DW qui: microsoften-usdownloaddetails. aspxid18279. Contoso DW funziona molto bene quando si desidera verificare le prestazioni su query sulle tabelle di grandi dimensioni. Contoso DW contiene una tabella dei fatti data warehouse standard chiamato FactOnLineSales, con 12,6 milioni di righe. That39s certamente non il più grande tabella di data warehouse del mondo, ma non it39s child39s giocare sia. Supponiamo che io voglio riassumere importo delle vendite di prodotti per il 2009, e classificare i prodotti. Potrei interrogare la tabella dei fatti e unirsi al tavolo Dimensione del prodotto e utilizzare una funzione RANK, in questo modo: Here39s un set di risultati parziali delle prime 10 righe, con vendite totali. Sul mio computer portatile (i7, 16 GB di RAM), la query richiede dovunque da 3-4 secondi per l'esecuzione. Questo potrebbe non sembrare la fine del mondo, ma alcuni utenti potrebbe aspettare risultati quasi immediati (il modo in cui è possibile vedere i risultati quasi immediati quando si utilizza Excel contro un cubo OLAP). L'unico indice momento ho su questo tavolo è un indice cluster su una chiave di vendita. Se guardo il piano di esecuzione, SQL Server offre un suggerimento per aggiungere un indice di copertura al tavolo: Ora, proprio perché SQL Server suggerisce un indice, doesn39t significa che si dovrebbe creare ciecamente indici su ogni quotmissing messaggio indexquot. Tuttavia, in questo caso, SQL Server rileva che stiamo filtrando sulla base di anno, e utilizzando la quantità chiave e vendite dei prodotti. Quindi, SQL Server suggerisce un indice di copertura, con la DateKey come campo chiave dell'indice. Il motivo per cui chiamiamo questo un indice quotcoveringquot è perché SQL Server quotbring lungo la fieldsquot non chiave che abbiamo usato nella query, quotfor il ridequot. Questo doesn39t modo, SQL Server è necessario utilizzare la tabella o l'indice cluster a tutti il motore di database può semplicemente utilizzare l'indice di copertura per la query. indici che coprono sono popolari in alcuni data warehousing e scenari di database di report, anche se essi hanno un costo del motore di database mantenimento delle stesse. Nota: copertura indici sono stati intorno per un lungo periodo di tempo, così ho haven39t ancora coperto l'indice Columnstore e l'archivio di query. Quindi, vorrei aggiungere l'indice di copertura: Se ri-eseguire la stessa query ho incontrato poco fa (quello che aggregata l'importo delle vendite per ogni prodotto), la query a volte sembra correre su un secondo più veloce, e ho un diverso piano di esecuzione, uno che utilizza un Index Seek invece di un indice di scansione (utilizzando il tasto data sul indice di copertura per recuperare le vendite per il 2009). Quindi, prima della Index Columnstore, questo potrebbe essere un modo per ottimizzare la query nelle versioni più vecchie di SQL Server. Si corre un po 'più veloce rispetto al primo, e ottenere un piano di esecuzione con un Indice Seek invece di un indice di scansione. Tuttavia, ci sono alcuni problemi: I due operatori di esecuzione quotIndex Seekquot e quotHash partita (aggregato) quot sia essenzialmente operano quotrow da rowquot. Immaginate questo in una tabella con centinaia di milioni di righe. Correlati, pensare il contenuto di una tabella dei fatti: in questo caso, un valore chiave singola data Andor un valore chiave unico prodotto potrebbe essere ripetuto per centinaia di migliaia di righe (ricordate, la tabella dei fatti ha anche tasti per la geografia, la promozione, venditore , ecc) così, quando la riga di lavoro quotIndex Seekquot e quotHash Matchquot per riga, lo stanno facendo su valori che potrebbero essere ripetuti in molte altre righe. Questo è normalmente dove I39d Segue l'indice di SQL Server Columnstore, che offre uno scenario per migliorare le prestazioni di questa query in modi sorprendenti. Ma prima di farlo, let39s andare indietro nel tempo. Let39s risalgono all'anno 2010, quando Microsoft ha introdotto un add-in per Excel conosciuto come PowerPivot. Molte persone probabilmente ricordo di aver visto demo di PowerPivot per Excel, in cui un utente potrebbe leggere milioni di righe da un'origine dati esterna in Excel. PowerPivot sarebbe comprimere i dati, e di fornire un motore per creare tabelle pivot e grafici pivot che si sono esibiti a velocità strabilianti contro i dati compressi. PowerPivot utilizzato una tecnologia in-memory che Microsoft chiamato quotVertiPaqquot. Questa tecnologia in-memory in PowerPivot sarebbe fondamentalmente prendere affari duplicato valori chiave keyforeign e comprimerli fino a un singolo vettore. La tecnologia in-memory inoltre scanaggregate questi valori in parallelo, in blocchi di diverse centinaia alla volta. La linea di fondo è che Microsoft ha preparato una grande quantità di miglioramenti delle prestazioni in funzione VertiPaq in memoria per noi da usare, a destra, fuori dalla scatola proverbiale. Perché sto prendendo questa piccola passeggiata nostalgiche Perché in SQL Server 2012, Microsoft ha implementato una delle caratteristiche più importanti nella storia del loro motore di database: l'indice Columnstore. L'indice è in realtà un indice in un solo nome: è un modo per prendere una tabella SQL Server e creare un compresso, in memoria columnstore che comprime i valori chiave esterna duplicati fino a valori vettoriali singoli. Microsoft ha inoltre creato un nuovo pool di buffer di leggere questi valori vettoriali compressi in parallelo, creando il potenziale per enormi guadagni di prestazioni. Così, I39m andando a creare un indice columnstore sul tavolo, e I39ll vedere quanto meglio (e più efficiente) l'esecuzione della query, contro la query che va contro l'indice di copertura. Così, I39ll creare un duplicato di FactOnlineSales (I39ll chiamarla FactOnlineSalesDetailNCCS), e I39ll creare un indice columnstore sulla tabella duplicato in questo modo ho won39t interferire con la tabella originale e l'indice di copertura in alcun modo. Avanti, I39ll creare un indice columnstore sulla nuova tabella: Nota diverse cose: I39ve specificato diverse colonne chiave esterna, così come l'importo delle vendite. Ricordate che un indice columnstore non è come un tradizionale indice di riga-store. Non vi è alcun quotkeyquot. Stiamo semplicemente indicando quali Server colonne SQL dovrebbe comprimere e posto in un columnstore in memoria. Per usare l'analogia di PowerPivot per Excel quando creiamo un indice columnstore, we39re dicendo SQL Server per fare essenzialmente la stessa cosa che PowerPivot fatto quando abbiamo importato 20 milioni di righe in Excel utilizzando PowerPivot Quindi, I39ll rieseguire il interrogazione, questa volta usando la tabella FactOnlineSalesDetailNCCS duplicato che contiene l'indice columnstore. Questa interrogazione viene eseguito immediatamente in meno di un secondo. E posso anche dire che, anche se il tavolo aveva centinaia di milioni di righe, sarebbe ancora funzionare alla quotbat proverbiale di un eyelashquot. Potremmo guardare il piano di esecuzione (e in pochi istanti, noi), ma ora it39s tempo per coprire la funzione di query Store. Immaginate per un momento, che abbiamo fatto entrambe le query durante la notte: la query che ha utilizzato il tavolo FactOnlineSales regolare (con l'indice di copertura) e quindi la query che ha utilizzato il tavolo duplicato con l'indice Columnstore. Quando ci registriamo al mattino seguente, we39d piacerebbe vedere il piano di esecuzione per entrambe le query come hanno avuto luogo, così come le statistiche di esecuzione. In altre parole, we39d piace vedere le stesse statistiche che we39d in grado di vedere se abbiamo fatto entrambe le query in modo interattivo in SQL Management Studio, trasformato nel tempo e IO statistiche, e visto il piano di esecuzione subito dopo l'esecuzione della query. Ebbene, that39s ciò che il negozio di query ci permette di fare possiamo accendere (attiva) Query Store per un database, che innescherà SQL Server per l'esecuzione e pianificare le statistiche sulle query negozio in modo da poter visualizzare in un secondo momento. Così, I39m andando a consentire il deposito di query sul database Contoso con il seguente comando (e I39ll anche chiaro qualsiasi caching): Allora I39ll eseguire i due query (e quotpretendquot che li mi sono imbattuto ore fa): Ora let39s finta correvano ore fa. Secondo quello che ho detto, l'Archivio Query catturerà le statistiche di esecuzione. Allora, come faccio a visualizzarle Fortunatamente, that39s abbastanza facile. Se ho espandere il database Contoso DW, I39ll vedere una cartella Query Store. La query Store ha un enorme funzionalità e I39ll cercare di coprire gran parte di essa nei successivi post del blog. Ma per ora, voglio visualizzare le statistiche di esecuzione sulle due interrogazioni, ed esamina in particolare gli operatori di esecuzione per l'indice columnstore. Così I39ll tasto destro del mouse sulla risorsa Top consumo di query ed eseguire questa opzione. Questo mi dà un grafico come quello qui sotto, dove posso vedere il tempo di durata di esecuzione (in millisecondi) per tutte le query che sono stati eseguiti. In questo caso, Query 1 le query sulla tabella originale con l'indice di copertura, e Query 2 era contro il tavolo con l'indice columnstore. I numeri don39t trovarsi l'indice columnstore sovraperformato l'indice Tovaglie originale di un fattore di quasi il 7 a 1. posso cambiare la metrica di guardare il consumo di memoria, invece. In questo caso, si noti che interrogazione 2 (la query indice di columnstore) utilizzato molto di più memoria. Ciò dimostra chiaramente il motivo per cui l'indice columnstore rappresenta quotin-memoryquot tecnologia SQL Server carica l'intero indice columnstore in memoria, e utilizza un pool di buffer completamente diverso con operatori di esecuzione avanzate per elaborare l'indice. OK, così abbiamo alcuni grafici per visualizzare le statistiche di esecuzione possiamo vedere il piano di esecuzione (e operatori di esecuzione) associati a ogni esecuzione Sì, possiamo Se si fa clic sulla barra verticale per la query che ha utilizzato l'indice columnstore, you39ll vedere l'esecuzione piano di sotto. La prima cosa che vediamo è che SQL Server ha eseguito una scansione di indice columnstore, e che ha rappresentato quasi il 100 del costo della query. Si potrebbe dire, quotWait un minuto, la prima query ha utilizzato un indice di copertura ed ha effettuato un indice di ricerca così come può una scansione indice columnstore essere fasterquot That39s una domanda legittima, e there39s fortunatamente una risposta. Anche quando la prima query eseguito un indice cercano, ancora eseguito quotrow da rowquot. Se metto il mouse sopra l'operatore indice di scansione columnstore, vedo un suggerimento (come quella qui sotto), con un'impostazione importante: la modalità di esecuzione è LOTTO (in contrapposizione a remare che è quello che abbiamo avuto con la prima query utilizzando il. indice di copertura). Che modalità LOTTO ci dice che SQL Server sta elaborando i vettori compressi (per i valori chiave esterna che sono duplicati, come ad esempio il prodotto chiave e la chiave data) in lotti di quasi 1.000, in parallelo. Quindi, SQL Server è ancora in grado di elaborare l'indice columnstore molto più efficiente. Inoltre, se metto il mouse sopra il compito Hash Match (aggregato), vedo anche che SQL Server è aggregando l'indice columnstore utilizzando la modalità batch (anche se l'operatore stesso rappresenta una piccola percentuale del costo della query tale) Infine, potrebbe essere chiedendo, quotOK, quindi SQL Server comprime i valori nei dati, tratta i valori come vettori, e leggerli in blocchi di quasi mille valori in parallelo, ma la mia domanda voleva solo i dati per il 2009. quindi è Server SQL scansione sul intero set di dataquot Anche in questo caso, una buona domanda. La risposta è, quotNot reallyquot. Fortunatamente per noi, il nuovo pool di buffer indice columnstore svolge un'altra funzione chiamata eliminationquot quotsegment. In sostanza, SQL Server esaminerà i valori vettoriali per la colonna chiave data nell'indice columnstore, ed eliminare i segmenti che si trovano al di fuori del campo di applicazione del 2009. I39ll fermarsi qui. Nelle successive post del blog I39ll coprire sia l'indice columnstore e Query Conservare in modo più dettagliato. In sostanza, ciò che we39ve visto qui oggi è che l'indice Columnstore può accelerare in modo significativo le query che scanaggregate su grandi quantità di dati, e il negozio di query catturerà le esecuzioni di query e ci permettono di esaminare le statistiche di esecuzione e le prestazioni in seguito. Alla fine, we39d desidera produrre un set di risultati che mostra quanto segue. Notate tre cose: Le colonne essenzialmente ruotano tutti i possibili motivi di ritorno, dopo aver mostrato le vendite ammontano Il set di risultati contiene subtotali dalla settimana terminata (Domenica) data in tutti i clienti (in cui il Cliente è NULL) Il set di risultati contiene un totale complessivo riga (in cui il cliente e la data sono entrambi NULL) in primo luogo, prima di entrare in fine SQL abbiamo potuto usare la capacità pivotmatrix dinamica in SSRS. Avremmo semplicemente bisogno di combinare i due set di risultati da una colonna e allora potremmo nutrire i risultati al controllo della matrice di SSRS, che si diffonderà le ragioni di ritorno attraverso le colonne asse del rapporto. Tuttavia, non tutti usano SSRS (anche se la maggior parte delle persone dovrebbe). Ma anche allora, a volte gli sviluppatori hanno bisogno di consumare i set di risultati in qualcosa di diverso da uno strumento di reporting. Quindi, per questo esempio, let39s assumono vogliamo generare il set di risultati per una pagina di rete web e forse lo sviluppatore vuole quotstrip outquot le righe di totale parziale (dove mi hanno un valore ResultSetNum di 2 e 3) e metterli in una griglia di sintesi. Così la linea di fondo, abbiamo bisogno per generare l'output sopra direttamente da una stored procedure. E come una torsione settimana prossima aggiunta ci potrebbe essere di ritorno Motivo X e Y e Z. Così abbiamo don39t so quante ragioni ritorno ci potrebbe essere. Noi vogliamo che il semplice query per ruotare sui possibili valori distinti per Return Reason. Qui è dove il perno T-SQL ha una restrizione abbiamo bisogno di fornire i valori possibili. Dal momento che won39t sappiamo che fino a run-time, è necessario per generare la stringa di query in modo dinamico utilizzando il modello SQL dinamico. Il modello SQL dinamico consiste nel generare la sintassi, pezzo per pezzo, riporlo in una stringa, e quindi l'esecuzione della stringa alla fine. SQL dinamico può essere difficile, in quanto dobbiamo incorporare la sintassi all'interno di una stringa. Ma in questo caso, è la nostra unica vera opzione se vogliamo gestire un numero variabile di motivi di ritorno. I39ve sempre trovato che il modo migliore per creare una soluzione SQL dinamico è quello di capire che cosa il quotidealquot generato-query sarebbe alla fine (in questo caso, visti i motivi di ritorno siamo a conoscenza).e poi reverse-engineering facendo mettendo insieme una parte alla volta. E così, ecco il SQL cui abbiamo bisogno se sapessimo quei motivi di ritorno (da A a D) sono stati statici e non cambierebbe. La query esegue le seguenti operazioni: combina i dati provenienti SalesData con i dati ReturnData, dove abbiamo quothard-wirequot le vendite di parola come un tipo di azione costituiscono la tabella delle vendite, e quindi utilizzare la Ragione ritorno dal Data ritorno nella stessa colonna ActionType. Questo ci darà una colonna pulita ActionType su cui ruotare. Stiamo combinando le due istruzioni SELECT in un'espressione di tabella comune (CTE), che è fondamentalmente un subquery tabella derivata che poi utilizziamo nella dichiarazione successiva (a PIVOT) Una dichiarazione PERNO contro il CTE, che riassume i dollari per il tipo di azione essendo in uno dei possibili valori Action Type. Si noti che questo isn39t il set di risultati finale. Noi stiamo mettendo questo in un CTE che legge dal primo CTE. La ragione di questo è perché vogliamo fare più raggruppamenti alla fine. La dichiarazione finale SELECT, che legge dal PIVOTCTE, e li combina con una successiva interrogazione contro lo stesso PIVOTCTE, ma dove abbiamo anche implementare due raggruppamenti nei set funzione di raggruppamento in SQL 2008: raggruppamento per la Data di Week End (dbo. WeekEndingDate) raggruppamento per tutte le righe () quindi, se sapessimo con certezza che we39d mai avere più codici motivo di ritorno, che poi sarebbe la soluzione. Tuttavia, dobbiamo tenere conto di altri codici motivo. Quindi abbiamo bisogno di generare quella intera query di cui sopra come un unico grande stringa in cui costruiamo le possibili ragioni di ritorno come un elenco separato da virgole. I39m intenzione di mostrare l'intero codice T-SQL per generare (ed eseguire) la query desiderata. E poi I39ll rompere fuori in parti e spiegare ogni passaggio. Quindi, prima, here39s l'intero codice per generare dinamicamente quello I39ve ottenuto sopra. Ci sono fondamentalmente cinque passi che devono coprire. Passo 1 . sappiamo che da qualche parte nel mix, abbiamo bisogno di generare una stringa per questo nella query: SalesAmount, Reason A, Reason B, Reason C, Reason D0160016001600160 Quello che possiamo fare è costruita una temporanea un'espressione di tabella comune che unisce i quotSales cablati colonna Amountquot con la lista unica di possibili codici motivo. Una volta che abbiamo che in un CTE, possiamo usare la bella piccolo trucco di FOR XML PATH (3939) a crollare le righe in una singola stringa, mettere una virgola davanti a ogni riga che la query legge, e quindi utilizzare roba da sostituire la prima istanza di una virgola con uno spazio vuoto. Questo è un trucco che si può trovare in centinaia di blog SQL. Quindi, questa prima parte costruisce una stringa chiamata ActionString che possiamo usare più in basso. Passo 2 . sappiamo anche che we39ll desidera sommare le colonne ragione generatedpivoted, insieme con la colonna di vendita standard. Così we39ll bisogno di una stringa separata per questo, che I39ll chiamata SUMSTRING. I39ll è sufficiente utilizzare il ActionString originale, e quindi sostituire le staffe esterne con sintassi SUM, più le staffe originali. Fase 3: Ora comincia il vero lavoro. Utilizzando tale query originale come modello, vogliamo generare la query originale (a partire con l'unione dei due tavoli), ma sostituendo tutti i riferimenti a colonne imperniati con le corde che abbiamo generato dinamicamente sopra. Inoltre, anche se non assolutamente necessario, I39ve anche creato una variabile semplicemente qualsiasi combinazioni di avanzamento del carrello returnline che vogliamo inserire nella query generato (per migliorare la leggibilità). Così we39ll costruire l'intera query in una variabile denominata SQLPivotQuery. Fase 4. Continuiamo la costruzione di nuovo la query, concatenando la sintassi possiamo quothard-wirequot con il ActionSelectString (che abbiamo generato dinamicamente per contenere tutti i possibili valori motivo di ritorno) Fase 5. Infine, we39ll generare la parte finale del perno Query, che legge dall'espressione tabella 2 nd comune (PIVOTCTE, dal modello sopra) e genera la finale SELECT per leggere dal PIVOTCTE e combinarlo con un 2 ° letto contro PIVOTCTE a implementare i set di raggruppamento. Infine, possiamo quotexecutequot la stringa utilizzando il sistema di SQL memorizzato proc spexecuteSQL Così si spera si può vedere che il processo a seguito di questo tipo di sforzo è determinare ciò che la query finale sarebbe, in base alla corrente insieme di dati e valori (cioè costruito un modello di query) Scrivere il codice T-SQL necessario per generare quel modello di query come una stringa. Probabilmente la parte più importante è determinare l'insieme unico di valori su cui you39ll PIVOT, e poi crollare in una stringa utilizzando la funzione di roba e la FOR XML PATH (3939) ingannare Così che cosa è sulla mia mente oggi bene, almeno 13 articoli Due estati fa, ho scritto un progetto che si è concentrato BDR (in parte) sul ruolo dell'istruzione e il valore di un buon background di arti liberali non solo per l'industria del software, ma anche per altri settori come bene. Uno dei temi di questo particolare BDR sottolineato un punto di vista fondamentale e illuminata dal famoso architetto software Allen Holub per quanto riguarda le arti liberali. Ill (fedelmente) parafrasando il suo messaggio: ha sottolineato il parallelismo tra la programmazione e la storia lo studio, ricordando a tutti che la storia è la lettura e la scrittura (e ill Aggiungi, individuare modelli), e lo sviluppo del software è anche la lettura e la scrittura (e ancora una volta, identificando modelli ). E così ho scritto un pezzo di opinione che si è concentrato su questo e altri argomenti correlati. Ma fino ad oggi, non ho mai avuto intorno a uno publishingposting esso. Ogni tanto Id pensa di una sua revisione, e Id anche sedersi per qualche minuto e apportare alcune modifiche ad esso. Ma poi la vita in generale sarebbe ottenere nel modo e Id mai finire. Allora, cosa è cambiato Qualche settimana fa, collega CoDe Magazine giornalista e leader del settore Ted Neward ha scritto un pezzo nella sua rubrica fissa, Coder gestito, che ha attirato la mia attenzione. Il titolo di questo articolo è On Liberal Arts. e consiglio vivamente a tutti di leggere esso. Ted discute il valore di un background di arti liberali, la falsa dicotomia tra uno sfondo di arti liberali e il successo nello sviluppo di software, e la necessità di writecommunicate bene. Parla un po 'del suo stesso passato incontri con la gestione del personale HR quanto riguarda la sua carriera scolastica. Si sottolinea inoltre la necessità di accettare e adattarsi ai cambiamenti nel nostro settore, così come le caratteristiche di un software di successo professionale (essere affidabile, pianificazione per il futuro, e imparare a superare il conflitto iniziale con altri membri del team). Quindi è un grande letto, così come lo sono Teds articoli altro codice e post di blog. Inoltre mi ha fatto tornare a pensare mie opinioni su questo (e altri argomenti) come pure, e alla fine mi ha motivato a finire il mio editoriale. Quindi, meglio tardi che mai, ecco il mio attuale Bakers Dozen di riflessioni: Ho un modo di dire: l'acqua congela a 32 gradi. Se siete in un ruolo trainingmentoring, si potrebbe pensare che stai facendo tutto nel mondo per aiutare qualcuno, quando in realtà, stanno solo sentendo una temperatura di 34 gradi e quindi le cose arent solidificazione per loro. A volte ci vuole solo un po 'più di sforzo o altro catalizzatore ideachemical o una nuova prospettiva che significa quelli con istruzione preventiva può attingere a fonti diverse. L'acqua congela a 32 gradi. Alcune persone possono mantenere alti livelli di concentrazione, anche con una stanza piena di gente rumorosa. Im non uno di loro ogni tanto ho bisogno di un po 'di privacy per pensare attraverso una questione critica. Alcune persone descrivono questo come devi imparare a camminare lontano da essa. Detto in altro modo, la sua ricerca dei air. This rarefatte scorsa settimana ho trascorso ore in penombra, sala relax con una lavagna, fino a quando ho pienamente capito un problema. Fu solo allora che ho potuto andare a parlare con altri sviluppatori circa una soluzione. Il messaggio qui è neanche per predicare come si dovrebbe andare sulla tua attività di risolvere i problemi, ma piuttosto per tutti di conoscere i loro punti di forza e ciò che funziona, e li usa a proprio vantaggio il più possibile. Alcune frasi sono come le unghie su una lavagna per me. Utilizzare come un momento insegnamento è uno. (Perché è come le unghie su una lavagna Perché se sei in un ruolo di mentore, di solito si dovrebbe essere in Modalità momento comunque, tuttavia sottilmente). Heres un'altra Non posso davvero spiegare a parole, ma lo capisco. Questo potrebbe sembrare un po 'freddo, ma se una persona veramente non riesco a spiegare qualcosa a parole, forse essi non capiscono. Certo, una persona può avere un senso confuso di come qualcosa funziona posso bluffare la mia strada attraverso descrivere come funziona una macchina fotografica digitale, ma la verità è che io davvero non capisco tanto bene. Vi è un campo di studio noto come epistemologia (lo studio della conoscenza). Una delle basi fondamentali della comprensione se la sua una macchina fotografica o un modello di progettazione - è la capacità di stabilire contesto, di identificare la catena di eventi correlati, gli attributi di tutti i componenti lungo il percorso, ecc Sì, la comprensione a volte è un lavoro molto duro , ma le immersioni in un argomento e la rottura a parte vale la pena. Anche coloro che evitano certificazione riconoscere che il processo di studio per le prove di certificazione contribuirà a colmare le lacune nella conoscenza. Un gestore di database è più probabile di assumere uno sviluppatore di database che può parlare a braccio (e senza sforzo) sui livelli di isolamento delle transazioni e trigger, al contrario di qualcuno che sorta di lo sa, ma fa fatica a descrivere il loro utilizzo. Theres un altro corollario qui. Ted Neward consiglia agli sviluppatori occupano di parlare in pubblico, blogging, ecc concordo 100. Il processo di parlare in pubblico e di blogging che farà di te costringerà a iniziare a pensare a temi e abbattendo le definizioni che si potrebbe avere altrimenti dato per scontato. Alcuni anni fa ho pensato che ho capito l'istruzione MERGE T-SQL abbastanza bene. Ma solo dopo aver scritto a questo proposito, parlando di, rispondere alle domande provenienti da altri che avevano punti di vista che non è mai venuto in mente che il mio livello di comprensione è aumentata in modo esponenziale. So che la storia di un gestore assumente che una volta ha intervistato un authordeveloper per una posizione di contratto. Il gestore assumente era sprezzante di pubblicazioni in genere, e abbaiò il richiedente, quindi, se si sta andando a lavorare qui, preferireste essere scrivere libri o la scrittura di codice Sì, fa male che in qualsiasi settore ci saranno alcuni studiosi puri. Ma ciò che il gestore assumente mancava era le opportunità per il rafforzamento e l'affilatura set di abilità. Durante la pulizia fuori una vecchia scatola di libri, mi sono imbattuto in un tesoro dal 1980: programmatori sul lavoro. che contiene interviste con un giovanissimo Bill Gates, Ray Ozzie, e altri nomi noti. Ogni intervista ed ogni intuizione vale il prezzo del libro. A mio avviso, l'intervista più interessante era con Butler Lampson. che ha dato qualche consiglio potente. Al diavolo l'alfabetizzazione informatica. La sua assolutamente ridicolo. matematica di studio. Imparare a pensare. Leggere. Scrivi. Queste cose hanno un valore più duraturo. Imparare a dimostrare teoremi: Un sacco di prove ha accumulato nel corso dei secoli, che suggerisce questa abilità è trasferibile a molte altre cose. Butler dice la verità. Ill aggiungere a quel punto imparare a giocare diavoli avvocato contro se stessi. Quanto più è possibile la realtà-controllare i propri processi e di lavoro, meglio youll essere. Il grande scientistauthor computer di Allen Holub fatto il collegamento tra lo sviluppo del software e le arti liberali in particolare, il soggetto della storia. Qui è stato il suo punto: che cosa è la storia di lettura e scrittura. Qual è lo sviluppo del software tra le altre cose, la lettura e la scrittura. Ho usato per dare i miei studenti domande saggio T-SQL come test di prova. Uno studente scherzato sul fatto che ho agito più come un professore di diritto. Ebbene, proprio come allenatore Donny Haskins ha detto nel film Glory Road, la strada è difficile. Credo fermamente in una solida base intellettuale per qualsiasi professione. Proprio come le applicazioni possono beneficiare di quadri, gli individui e le loro processi di pensiero possono beneficiare di quadri umani. Quello è la base fondamentale della borsa di studio. C'è una storia che già nel 1970, IBM ha ampliato i loro sforzi di reclutamento nelle maggiori università concentrandosi sulle migliori e più brillanti di laureati arti liberali. Anche allora hanno riconosciuto che i migliori lettori e scrittori potrebbero un giorno diventare programmersystems forti analisti. (Sentitevi liberi di usare questa storia per qualsiasi HR-tipo che insiste sul fatto che un candidato deve avere una laurea informatica) E a proposito della storia: se non altro, è importante ricordare la storia di rilasci di prodotti, se sto facendo il lavoro a un questo è sito client che utilizzano ancora SQL Server 2008 o addirittura (gasp) di SQL Server 2005, devo ricordare quali caratteristiche sono state implementate nelle versioni nel corso del tempo. Mai avere un medico preferito il quale ti è piaciuto perché heshe ha spiegato le cose in parole povere, ti ha dato la verità dritto, e ha guadagnato la vostra fiducia per operare su di voi Queste sono le abilità pazze. e sono il risultato di esperienza e di duro lavoro che vorranno anni e anche decenni per coltivare. Non ci sono garanzie di concentrarsi successo nel lavoro sui fatti, prendere qualche rischio calcolato quando sei sicuro che si può vedere la strada verso il traguardo, lasciare che i chip cadere dove possono, e non perdere mai di vista di essere proprio come quel medico che ha guadagnato la vostra fiducia. Anche se alcuni giorni mi sono inferiori, cerco di trattare il mio cliente ed i loro dati come un medico sarebbe il trattamento di pazienti. Anche se un medico fa più soldi Ci sono molte clichs detesto, ma heres uno io non odio: Non esiste una cosa come una cattiva domanda. Come un ex istruttore, una cosa che ha attirato la mia ira stava sentendo qualcuno criticare un'altra persona per chiedere a un presunto, domanda stupida. Una domanda indica una persona riconosce hanno qualche lacuna nella conoscenza theyre cercando di riempire. Sì, alcune domande sono meglio formulate rispetto ad altri, e alcune domande richiedono ulteriore inquadratura prima di poter rispondere. Ma il viaggio di formare una domanda per una risposta è in grado di generare un processo mentale attiva in altri. Ci sono tutte le cose buone. Molte discussioni buone e proficue origine da una domanda stupida. Io lavoro su tutta la linea in SSIS, SSAS, SSRS, MDX, PPS, SharePoint, alimentazione BI, DAX tutti gli strumenti dello stack Microsoft BI. Ho ancora scrivere del codice di tanto in tanto. Ma che quello che ancora passare così tanto tempo a fare la scrittura di codice T-SQL al profilo dei dati come parte del processo di scoperta. Tutti gli sviluppatori di applicazioni dovrebbero avere buone braciole T-SQL. Ted Neward scrive (correttamente) sulla necessità di adattarsi ai cambiamenti tecnologici. Ill aggiungere che la necessità di adattarsi ai cambiamenti clientemployer. Le aziende cambiano le regole di business. Le aziende acquisiscono altre società (o diventare il bersaglio di un'acquisizione). Le aziende commettono errori nella comunicazione dei requisiti e specifiche. Sì, a volte possiamo giocare un ruolo nel contribuire a gestire tali cambiamenti e, a volte eravamo al volo, non il parabrezza. Questi a volte causano grande dolore per tutti, soprattutto il I. T. persone. Questo è il motivo per cui il fatto termine della vita esiste abbiamo a che fare con esso. Proprio come nessun sviluppatore scrive codice privo di bug ogni volta, non I. T. offerte persona ben con cambio ogni singola volta. Uno dei più grandi lotte Ive ha avuto nei miei 28 anni in questo settore sta mostrando pazienza e moderazione quando i cambiamenti stanno volando da molte direzioni diverse. Qui è dove la mia prima proposta sulla ricerca per l'aria rarefatta può aiutare. Se si riesce ad assimilare i cambiamenti nel vostro processo di pensiero, e senza sentirsi sopraffatti, le probabilità sono youll è una risorsa significativa. Negli ultimi 15 mesi Ive ha avuto a che fare con una quantità enorme di cambiamento professionale. Il suo stato molto difficile a volte, ma Ive ha deliberato che il cambiamento sarà la norma e Ive ha provato a modificare le mie abitudini nel miglior modo possibile per far fronte a frequenti (e incerta) cambiamento. Il suo duro, molto duro. Ma come allenatore Jimmy Duggan ha detto nel film Ragazze vincenti: Naturalmente il suo duro. Se non fosse stato difficile, tutti sarebbero farlo. Il disco, è ciò che rende grande. Un messaggio potente. Theres è parlato nel settore nel corso degli ultimi anni circa condotta a conferenze professionali (e il comportamento in settore nel suo complesso). Molti scrittori hanno scritto rispettati ottimi editoriali sul tema. Heres il mio ingresso, per quello che il suo valore. Its a message to those individuals who have chosen to behave badly: Dude, it shouldnt be that hard to behave like an adult. A few years ago, CoDe Magazine Chief Editor Rod Paddock made some great points in an editorial about Codes of Conduct at conferences. Its definitely unfortunate to have to remind people of what they should expect out of themselves. But the problems go deeper. A few years ago I sat on a five-person panel (3 women, 2 men) at a community event on Women in Technology. The other male stated that men succeed in this industry because the Y chromosome gives men an advantage in areas of performance. The individual who made these remarks is a highly respected technology expert, and not some bozo making dongle remarks at a conference or sponsoring a programming contest where first prize is a date with a bikini model. Our world is becoming increasingly polarized (just watch the news for five minutes), sadly with emotion often winning over reason. Even in our industry, recently I heard someone in a position of responsibility bash software tool XYZ based on a ridiculous premise and then give false praise to a competing tool. So many opinions, so many arguments, but heres the key: before taking a stand, do your homework and get the facts . Sometimes both sides are partly rightor wrong. Theres only one way to determine: get the facts. As Robert Heinlein wrote, Facts are your single clue get the facts Of course, once you get the facts, the next step is to express them in a meaningful and even compelling way. Theres nothing wrong with using some emotion in an intellectual debate but it IS wrong to replace an intellectual debate with emotion and false agenda. A while back I faced resistance to SQL Server Analysis Services from someone who claimed the tool couldnt do feature XYZ. The specifics of XYZ dont matter here. I spent about two hours that evening working up a demo to cogently demonstrate the original claim was false. In that example, it worked. I cant swear it will always work, but to me thats the only way. Im old enough to remember life at a teen in the 1970s. Back then, when a person lost hisher job, (often) it was because the person just wasnt cutting the mustard. Fast-forward to today: a sad fact of life is that even talented people are now losing their jobs because of the changing economic conditions. Theres never a full-proof method for immunity, but now more than ever its critical to provide a high level of what I call the Three Vs (value, versatility, and velocity) for your employerclients. I might not always like working weekends or very late at night to do the proverbial work of two people but then I remember there are folks out there who would give anything to be working at 1 AM at night to feed their families and pay their bills. Always be yourselfyour BEST self. Some people need inspiration from time to time. Heres mine: the great sports movie, Glory Road. If youve never watched it, and even if youre not a sports fan I can almost guarantee youll be moved like never before. And Ill close with this. If you need some major motivation, Ill refer to a story from 2006. Jason McElwain, a high school student with autism, came off the bench to score twenty points in a high school basketball game in Rochester New York. Heres a great YouTube video. His mother said it all . This is the first moment Jason has ever succeeded and is proud of himself. I look at autism as the Berlin Wall. He cracked it. To anyone who wanted to attend my session at todays SQL Saturday event in DC I apologize that the session had to be cancelled. I hate to make excuses, but a combination of getting back late from Detroit (client trip), a car thats dead (blown head gasket), and some sudden health issues with my wife have made it impossible for me to attend. Back in August, I did the same session (ColumnStore Index) for PASS as a webinar. You can go to this link to access the video (itll be streamed, as all PASS videos are streamed) The link does require that you fill out your name and email address, but thats it. And then you can watch the video. Feel free to contact me if you have questions, at kgoffkevinsgoff November 15, 2013 Getting started with Windows Azure and creating SQL Databases in the cloud can be a bit daunting, especially if youve never tried out any of Microsofts cloud offerings. Fortunately, Ive created a webcast to help people get started. This is an absolute beginners guide to creating SQL Databases under Windows Azure. It assumes zero prior knowledge of Azure. You can go to the BDBI Webcasts of this website and check out my webcast (dated 11102013). Or you can just download the webcast videos right here: here is part 1 and here is part 2. You can also download the slide deck here. November 03, 2013 Topic this week: SQL Server Snapshot Isolation Levels, added in SQL Server 2005. To this day, there are still many SQL developers, many good SQL developers who either arent aware of this feature, or havent had time to look at it. Hopefully this information will help. Companion webcast will be uploaded in the next day look for it in the BDBI Webcasts section of this blog. October 26, 2013 Im going to start a weekly post of T-SQL tips, covering many different versions of SQL Server over the years Heres a challenge many developers face. Ill whittle it down to a very simple example, but one where the pattern applies to many situations. Suppose you have a stored procedure that receives a single vendor ID and updates the freight for all orders with that vendor id. create procedure dbo. UpdateVendorOrders update Purchasing. PurchaseOrderHeader set Freight Freight 1 where VendorID VendorID Now, suppose we need to run this for a set of vendor IDs. Today we might run it for three vendors, tomorrow for five vendors, the next day for 100 vendors. We want to pass in the vendor IDs. If youve worked with SQL Server, you can probably guess where Im going with this. The big question is how do we pass a variable number of Vendor IDs Or, stated more generally, how do we pass an array, or a table of keys, to a procedure Something along the lines of exec dbo. UpdateVendorOrders SomeListOfVendors Over the years, developers have come up with different methods: Going all the way back to SQL Server 2000, developers might create a comma-separated list of vendor keys, and pass the CSV list as a varchar to the procedure. The procedure would shred the CSV varchar variable into a table variable and then join the PurchaseOrderHeader table to that table variable (to update the Freight for just those vendors in the table). I wrote about this in CoDe Magazine back in early 2005 (code-magazinearticleprint. aspxquickid0503071ampprintmodetrue. Tip 3) In SQL Server 2005, you could actually create an XML string of the vendor IDs, pass the XML string to the procedure, and then use XQUERY to shred the XML as a table variable. I also wrote about this in CoDe Magazine back in 2007 (code-magazinearticleprint. aspxquickid0703041ampprintmodetrue. Tip 12)Also, some developers will populate a temp table ahead of time, and then reference the temp table inside the procedure. All of these certainly work, and developers have had to use these techniques before because for years there was NO WAY to directly pass a table to a SQL Server stored procedure. Until SQL Server 2008 when Microsoft implemented the table type. This FINALLY allowed developers to pass an actual table of rows to a stored procedure. Now, it does require a few steps. We cant just pass any old table to a procedure. It has to be a pre-defined type (a template). So lets suppose we always want to pass a set of integer keys to different procedures. One day it might be a list of vendor keys. Next day it might be a list of customer keys. So we can create a generic table type of keys, one that can be instantiated for customer keys, vendor keys, etc. CREATE TYPE IntKeysTT AS TABLE ( IntKey int NOT NULL ) So Ive created a Table Typecalled IntKeysTT . Its defined to have one column an IntKey. Nowsuppose I want to load it with Vendors who have a Credit Rating of 1..and then take that list of Vendor keys and pass it to a procedure: DECLARE VendorList IntKeysTT INSERT INTO VendorList SELECT BusinessEntityID from Purchasing. Vendor WHERE CreditRating 1 So, I now have a table type variable not just any table variable, but a table type variable (that I populated the same way I would populate a normal table variable). Its in server memory (unless it needs to spill to tempDB) and is therefore private to the connectionprocess. OK, can I pass it to the stored procedure now Well, not yet we need to modify the procedure to receive a table type. Heres the code: create procedure dbo. UpdateVendorOrdersFromTT IntKeysTT IntKeysTT READONLY update Purchasing. PurchaseOrderHeader set Freight Freight 1 FROM Purchasing. PurchaseOrderHeader JOIN IntKeysTT TempVendorList ON PurchaseOrderHeader. VendorID Te mpVendorList. IntKey Notice how the procedure receives the IntKeysTT table type as a Table Type (again, not just a regular table, but a table type). It also receives it as a READONLY parameter. You CANNOT modify the contents of this table type inside the procedure. Usually you wont want to you simply want to read from it. Well, now you can reference the table type as a parameter and then utilize it in the JOIN statement, as you would any other table variable. Così il gioco è fatto. A bit of work to set up the table type, but in my view, definitely worth it. Additionally, if you pass values from , youre in luck. You can pass an ADO data table (with the same tablename property as the name of the Table Type) to the procedure. For developers who have had to pass CSV lists, XML strings, etc. to a procedure in the past, this is a huge benefit. Finally I want to talk about another approach people have used over the years. SQL Server Cursors. At the risk of sounding dogmatic, I strongly advise against Cursors, unless there is just no other way. Cursors are expensive operations in the server, For instance, someone might use a cursor approach and implement the solution this way: DECLARE VendorID int DECLARE dbcursor CURSOR FASTFORWARD FOR SELECT BusinessEntityID from Purchasing. Vendor where CreditRating 1 FETCH NEXT FROM dbcursor INTO VendorID WHILE FETCHSTATUS 0 EXEC dbo. UpdateVendorOrders VendorID FETCH NEXT FROM dbcursor INTO VendorID The best thing Ill say about this is that it works. And yes, getting something to work is a milestone. But getting something to work and getting something to work acceptably are two different things. Even if this process only takes 5-10 seconds to run, in those 5-10 seconds the cursor utilizes SQL Server resources quite heavily. Thats not a good idea in a large production environment. Additionally, the more the of rows in the cursor to fetch and the more the number of executions of the procedure, the slower it will be. When I ran both processes (the cursor approach and then the table type approach) against a small sampling of vendors (5 vendors), the processing times where 260 ms and 60 ms, respectively. So the table type approach was roughly 4 times faster. But then when I ran the 2 scenarios against a much larger of vendors (84 vendors), the different was staggering 6701 ms versus 207 ms, respectively. So the table type approach was roughly 32 times faster. Again, the CURSOR approach is definitely the least attractive approach. Even in SQL Server 2005, it would have been better to create a CSV list or an XML string (providing the number of keys could be stored in a scalar variable). But now that there is a Table Type feature in SQL Server 2008, you can achieve the objective with a feature thats more closely modeled to the way developers are thinking specifically, how do we pass a table to a procedure Now we have an answer Hope you find this feature help. Feel free to post a comment. Earn the CST Diploma Part-time The Computer Systems Technology (CST) Diploma has provided thousands of career-ready graduates to all IT sectors across Canada. BCIT Computing offers two separate pathways to the CST Diploma, full-time or part-time course-by-course. Intensive full time delivery is two years, or part-time is typically completed by taking two courses per term over a period of six years. Some students may be able to complete three courses per term, however they will need to have a plan approved by the program head. The CSTPTS Diploma starts with a solid foundation of programming and systems development via a series of smaller modular credentials. 1) The first step is to complete Applied Software Development (ASD). It is extremely important that students demonstrate their ability to write code in multiple programming languages at the beginning of this series. 2) The second step is Applied Computer Information Systems (ACIS). Some students may attempt the ASD and ACIS simultaneously. After learning to write code, students then cover operating systems, database, web and English communication. 3) ASD and ACIS are subsets of the Computer Systems Certificate (CSC). which must be completed prior to starting the CSTPTS Diploma. The CSC is equivalent to the first year of the full-time CST Diploma in programming, web, database, math, architecture and technical writing. 4) Built on top of the CSC, the CSTPTS Diploma students cover data communications, advanced operating systems, network design, administration and security. There are nine core courses and seven to ten elective courses needed to complete the 60 unique credits on top of the 60 credits in the CSC. Core requirements include advanced object oriented analysis, algorithm design plus Internet law. Elective courses include advanced software application development, web and mobile, advanced database, analytics and business intelligence. Students who complete the CST Diploma either full-time or part-time may then apply for the Computer Systems Bachelors Degree. CST BTech. CST Diploma graduates from BCIT Computing are highly regarded by industry and have a major competitive advantage. Program Entry Costs amp Supplies Internet and IT Law This hands on course is aimed at BCIT Computing and Business students who want to learn not only about the laws and regulations that apply to the Internet and information technology, but also how to engage intellectual property rights, law and regulation to protect intellectual effort. Topics include privacy, private data collection, property (IPDRM), security, gambling, ethics, the internet of thingseverything (IoT), data, patents, trademarks, domain names, copyright, linking, meta-tags, online contracts, online advertising and marketing. Students receive an overview of law in the modern marketplace, which we practice applying online in a series of non-cumulative exercises, a role play exercise and in discussions. IT Project Management This hands-on course is aimed at BCIT Computing students who want to learn how to develop and implement an IT project plan. Project Management best practices and decisions apply across various IT sectors including: Web and Software Development, Databases and Networking. Topics include: identifying project stakeholders and defining roles and responsibilities of the team, defining scope, devising risks and quality plans, mapping-out a schedule, determining a budget and defining a communication strategy. Participants are introduced to the Microsoft Project software application. Students receive an overview of common project management concepts which they can apply to real world IT projects on time and on budget. Prerequisite: COMP 1002 or equivalent knowledge of a Windows PC, and file management. XML for Web Development XML is a standard for structuring, and storing web information. This course is focused on XML for Web Development for those with an HTML and CSS background. Following on from COMP 1850 this hands-on course will introduce students to Extensible Markup Language (XML). Participants will learn how XML is used within the web and how to integrate XML formats into web page development. Topics include XML syntax, DTD validation, namespaces, XML data modeling, and performing transformations with XSLT and XPath. Upon successful completion of this course, students will have an understanding of the basics of XML for web development and be prepared to move on to more advanced XML courses. Prerequisite: COMP 1850 or equivalent knowledge of HTML5, and CSS3. C Application Development 2 This hands-on intermediate level course assumes students have completed COMP 2617 C Application Development Part 1 with a minimum of 60. Students immediately move into more advanced C11 features. Topics include: operator overloading template classes exception handling the string class and stream processing the Standard Template Library file processing and namespaces. Additional miscellaneous advanced C topics will also be covered. Delivery is face-to face for 3 hours each week plus an online and homework component. Typical students will require about 10 hours per week to study the material and work on assignments outside of class. Upon successful completion, participants will be able to write, test and debug C programs to industry standards and be able to develop significant software applications. Prerequisite: COMP 2617 completion with 60 or better. Applied IT Security Fundamentals IT security is growing area with several domains including both information security and network security. This course replaces COMP 3705 which covered both information security and network security. COMP 3704 will provide a more in depth overview of key topics in information security only and is one of the prerequisites for COMP 4704 Applied Network Security. IT professionals across multiple sectors from software development, database, web, mobile and networks will benefit from the material covered. This hands-on course is led by local industry experts who will share their knowledge and best practices for securing computer systems. Students will complete labs and exercises to experience applied IT security and gain a practical knowledge. Topics will include: security awareness, risk mitigation and control administration, data and application security, cryptography, attack techniques, penetration testing, vulnerability assessment, incident response, disaster recovery, and forensic analysis. In addition, information handling best practices, privacy and regulatory issues are discussed. Upon completion of this course, successful participants will be aware of best practices in IT security and how to implement secure information systems. Network related aspects of IT security are covered in the follow-on course, COMP 4704 ldquoApplied Network Securityquot. Prerequisite: COMP 1002 or equivalent knowledge. Data Communications for CST Following on from COMP 2825 Computer Architecture, students are introduced to the basic concepts and terminology related to data communications, networking and network topologies. COMP 3725 replaces COMP 3721 in the CSTPTS Diploma and is equivalent to the full-time CST Diploma course. Students will learn about the TCPIP protocol suite and the principles of protocols at the physical, data link, network and transport layers, the characteristics of transmission media, analogdigital transmission, multiplexingswitching techniques, basic error detection and correction, elementary data link protocols, flow control and an introduction to routing and congestion control issues. Multiple access protocols, the UDP and TCP protocols, networking and internetworking devices, LANs and WANs will also be discussed. The course has a strong emphasis on data communications at the physical layer and the assignments will reinforce the fundamental concepts and analysis techniques. Upon successful completion, students will be familiar with network protocol implementation using a layered approach and apply basic data communication theory to the design and analysis of networks. Prerequisites: COMP 2825 or COMP 2721 Algorithm Analysis and Design In this hands-on course, Java programming students who have also taken Discrete Math will develop their ability to analyze and design computer algorithms. In particular, learners will analyze the time and space complexity of programs, solve nontrivial programming problems using algorithmic techniques, and prove that their solution is correct. The emphasis will be on developing the practical skills of analysis and design. Topics include: evaluating time and space complexity and designing solutions by using appropriate data structures or applying techniques such as recursion, parsing and graph algorithms. Prerequisites: COMP 2121 and (COMP 2611 or COMP 2613) Object Oriented Analysis and Design This advanced OOAD course follows on from COMP 2831 and is aimed at software analysts, designers and developers who already understand the Software development Life Cycle (SDLC). Through exercises and group work, students first perform Object Oriented Analysis (OOA) to produce a conceptual model of existing information using case studies to identify actors and primary use cases for documentation. Using Object Oriented Design (OOD) students learn how to identify classes and build the domain model. Round trip engineering, reverse engineering and code generation are practised in labs, where the design is converted to functional code. Topics include: design patterns, anti-patterns and General Responsibility Assignment Software Patterns (GRASP). The concepts of phases, iterations, activities and artifacts are emphasized throughout the course. Labs include the use of the Unified Process (UP) which is an extensible framework for iterative and incremental software development process, and the basis of all the modern ldquoAgile methodologiesrdquo. Participants also gain hands-on experience using a case tool, Rational Rose Modeler, to draw most of the Unified Modeling Language (UML) diagrams necessary to support the OOAD activities. Students are introduced to manual and automated software testing. They will learn how to create and execute test scripts using a testing tool. Successful participants will be able to demonstrate the ability to analyse, design and construct sophisticated software applications to industry standards. Prerequisites: COMP 2831 and ability to write executable code in an object oriented programming language. Operating Systems for CST This course replaces COMP 3730 and COMP 4730 and covers the concepts of operating systems. The course is designed for CST Diploma students who understand both C and Java programming. The main focus is on the structure and services of operating systems and how these services are used and implemented. Topics include: processor management, processes and threads, inter-process communication, synchronization, memory management, inputoutput and file management. Labs will include hands-on system programming in UnixLinux. Prerequisites: (COMP 2510 or COMP 2511 or COMP 2717) and (COMP 2721 or COMP 2825) Program Details Graduating amp Jobs Faculty, Advisors amp Staff Contact UsThe denominated currency of the share. Currency Peg A countrys or governments exchange-rate policy of pegging the central banks rate of exchange to another countrys currency. Currency has sometimes also been pegged to the price of gold. Currency pegs allow importers and exporters to know exactly what kind of exchange rate they can expect for their transactions, simplifying trade. Current Liabilities Company declared liabilities which are due to be settled within the current financial year. Current Ratio This is used to calculate the ability of a company to meet its short term debt obligations. It is calculated by dividing its current assets by its current liabilities. The higher the current ratio, the more likely a company will be able to meet its obligations. D Back to top Repayment of bonds or other debt securities on or before their maturity date. RedenominationRenominalisation The process whereby a countrys currency is recalibrated due to significant inflation and currency devaluation. Certain currencies have been redenominated a number of times over the last century for various reasons. A recent example of redenomination was when the euro was introduced and the denomination of many European securities had to be changed to the euro. Registered Security The name given to securities whereby ownership is registered with the issuing company or their agent. Transfer of ownership can only take place with the owners consent. Regulatory News Service (RNS) The London Stock Exchanges service which ensures that price sensitive information from listed companies, and certain other bodies, is distributed to all RNS subscribers at the same time. Relative Strength Index The Relative Strength Index (RSI) measures a share price relative to itself and its recent history. It is calculated as the average of the prices for days where the price rose divided by the average of the prices for days where the price fell. The RSI ranges between 0 and 100. Relevant UK Earnings For most people, this is their salary before tax or, if they are self-employed, their taxable profit. It does not include, for example, interest on savings, dividends on shares or pensions. Relevant UK Individual Includes someone who is resident in the UK at some point in the current tax year or has Relevant UK Earnings. Rematerialisation The process of transferring a security held in electronic form to a certificated form. Retention of Income Accumulation units in a fund do not pay physical dividends. Instead, on the ex-dividend date, the unit price is adjusted upward to reflect the dividend distribution. These adjustments will increase your tax cost for the holding and will appear on your Stock Movements page and your Securities Report as Retention of Income. Retirement Annuity Contract (RAC) Prior to 30th June 1988, people not in pensionable employment (employment where no pension scheme exists) or people who were self employed were able to qualify for tax relief for contributions made to a pension scheme known as a retirement annuity under sections 226 of the Income and Corporation Taxes Act 1970. Although RACs were replaced by personal pension plans from 1st July 1988 those already in force may continue to operate. Return of Capital A return from an investment that is not considered income. The return of capital is when some or all of the money an investor has in an investment is paid back to him or her, thus decreasing the value of the investment. Return on Capital A ratio used in the assessment of the performance of a company and quantifies how well a company generates cash flow relative to the capital it has invested in its business. Return on Capital Employed (ROCE) A measure of the returns that a company is realising from its capital. Calculated as profit before interest and tax divided by the difference between total assets and current liabilities. The resulting ratio represents the efficiency with which capital is being utilised to generate revenue. Rights Issue An offer made by a quoted company to its shareholders to enable them to buy new shares in the company at a discount to the market price. Existing shareholders are usually offered shares in proportion to their existing holding. For example in a one for five rights issue, a shareholder would be invited to buy one new share for every five shares already owned. The new shares are offered at a discount to the current market price. Risk and Reward A ratio used to compare the expected returns of an investment with the amount of risk undertaken to capture these returns. This ratio is calculated mathematically by dividing the amount of profit the investor expects to have made when the position is closed (i. e. the reward) by the amount they could lose if the price moves in an unexpected direction (i. e. the risk). S Back to top The sale date refers to the date on which the holdings were liquidated, or alternatively the target date on which it is planned that the holdings be liquidated. Scrip Dividend The issue of additional shares by a company to shareholders in lieu of a dividend. The shares have an equivalent cash value to the dividend. No dealing charges or stamp duty is payable on the issue of the new shares. Scrip Issue An issue of shares made by a company free of charge to existing shareholders. Also called a fx issue. The Stock Exchange Automated Quotation system (or SEAQ) is a system for trading mid-cap London Stock Exchange (LSE) stocks. Stocks need to have at least two market-makers to be eligible for trading via SEAQ. Only stocks that are not listed on the FTSE100 can be traded on SEAQ. SEATS Plus SEATS Plus is a trading system that handles the trading of all AIM and listed UK equities whose turnover is insufficient for the market making system or the Stock Exchange Electronic Trading Service (SETS). The sector in which the stock is listed on the London Stock Exchange, for example mining, software and computer services. A financial instrument which represents an ownership position in a publicly traded corporation (stock), a creditor relationship with a governmental body or corporation (bond) or rights to ownership as represented by an option. Self employed People who run their own business and take responsibility for its success or failure. They can decide how, when and where they do their work, but can hire other people to do some or all of the work at their own expense. Self Invested Personal Pension (SIPP) The name given to the type of UK-government-approved personal pension scheme, which allows individuals to make their own investment decisions from the full range of investments approved by HM Revenue Customs (HMRC). SIPPs, in common with personal pension schemes, are tax wrappers, allowing tax rebates on contributions in exchange for limits on accessibility. The HMRC rules allow for a greater range of investments to be held than Personal Pension Plans, notably equities and property. Rules for contributions, benefit withdrawal etc. are the same as for other personal pension schemes. The automated trading system introduced in 1997 for the largest companies quoted on the main list of the London Stock Exchange. Trades through SETS match buyers and sellers automatically, cutting out the need for a market maker, theoretically meaning a narrower bid-offer spread. Settlement Payment of cash for securities bought and delivery of securities against payment. Settlement Date The date by which the buyer of a security must pay the seller. The settlement date depends upon the type of security traded. For example, stocks usually have a settlement date three days after the trade date but government bonds must be settled on the next trading day. Share Certificate A certificate which confirms ownership of a shareholding. If shares are held in certificated form, the certificate must be delivered to the market upon sale. Share Incentive Scheme Introduced to the UK in 2000, they offer employees the opportunity to participate in the success of the company for which they work. Contributions are taken directly from salary before tax and national insurance are deducted with the scheme running for a period of 3 years. After 3 years, the saver has several options available. Firstly, they can buy shares in their company at a pre-determined price and then sell them immediately. Secondly, keep the shares purchased or thirdly have the savings returned in full. Share Option A right to buy or sell shares at an agreed price at a time in the future. Shareholders Funds The capital employed in a company, calculated by deducting the book value of the liabilities from the book value of the assets. Also called net assets, net worth and shareholders equity. A unit of ownership in a corporation or financial asset. While owning shares in a business does not mean that the shareholder has direct control over the businesss day-to-day operations, being a shareholder does entitles them to an equal distribution in any profits, if any are declared in the form of dividends. A share can be quoted or unquoted and ordinary or preference shares. Shell Company Non-trading firm formed (and often listed on a stock exchange) as a vehicle to (1) raise funds before starting operations, (2) attempt a takeover, (3) prepare for a public offering of shares, or (4) provide a front for an illegal business. The selling of a security that the seller does not own, or any sale that is completed by the delivery of a security borrowed by the seller. Short sellers assume that they will be able to buy the stock at a lower amount than the price at which they sold short. Small Cap Stock A small-cap stock has a low market capitalisation when compared to those listed on the FTSE100. Investors may perceive a small-cap stock as having greater growth potential than a large-cap stock. A small-cap stock may be more likely than a large company to adopt or create innovative new technologies or services. A small-cap stock often has a lower level of institutional interest, as many funds have limits on the percentage of a company they may own. This in turn increases the trading volatility of a small-cap stock, potentially allowing for more extreme (more profitable) entries and exits. Small Self Administered Scheme (SSAS) A SSAS is a company pension scheme where the members are usually all company directors or key staff. A SSAS is set up by a trust deed which allows membersemployers greater flexibility and control over the schemes assets. The difference between which the price of a stock is bought and sold. Some collective investments, such as Unit Trusts, also operate bidoffer spreads. Stakeholder Pension Plan Stakeholder pensions aim to provide a low-cost, transparent and flexible way for people on low incomes to make additional provisions for their retirement. Money invested in stakeholder pensions is invested in the stock market. On retirement a quarter of the accumulated capital can be taken as a tax-free cash sum, with the balance to be used to purchase an annuity. Stamp Duty Stamp duty is payable on purchases of shares using a stock transfer form, on some transfers of interest in partnerships and on land or property tansactions entered into before 1 Dec 2003. Stamp Duty Reserve Tax (SDRT) SDRT is a tax on shares and securities when you buy through the stock market or a stock broker. Standard Poors An international agency which provides credit ratings and research. State Earnings Related Pension Scheme (SERPS) Introduced in 1978, SERPS was a top up to the basic state pension with the amount received dependent upon the National Insurance Contributions paid. In 2002 it became the State Second Pension. Stepped Preference Shares Preference shares with dividends that increase annually by a specified amount and with a predetermined capital return. Stock Description The name and classification of the security held. The company name is detailed first followed by the abbreviated version of the type of share held (e. g. ORD means Ordinary Share) and then the currency that the share is held in (e. g GBP sterling) Stock Exchange Daily Official List (SEDOL) A unique identifier assigned to all securities trading on the London Stock Exchange and other smaller exchanges in the UK. The SEDOL is seven characters in length and comprises a combination of letters and numbers. Live streaming of share prices is available when logged in and when the portfolio is ordered by holding alphabetically, rather than by a numeric value (which would cause the order of rows to change constantly). The prices you see are those that the traders see on their trading screens. An arrangement of characters (usually letters) representing a particular security listed on an exchange or otherwise traded publicly. When a company issues shares for the first time, it selects an arrangement of characters (usually letters) representing a particular security listed on an exchange or otherwise traded publicly. When a company issues shares for the first time, it selects an available ticker symbol for its securities which is then used to place orders - each symbol is unique. For example, the shares for Microsoft are listed as MSFT. T Back to top A corporate action where one company makes a bid for another. If the target company is publicly traded, the acquiring company will make an offer for the outstanding shares. HMRC apply a number of rules when determining the cost for UK tax purposes. The Tax Cost represents the cost of the holding once such rules have been applied. A FTSE index launched in 1999 by the London Stock Exchange to reflect the growth at that time in internet and technology stocks. To be included, a company must be committed to technological innovation and listed on the exchange. It includes biotechnology companies as well as internet stocks and software companies. The TechMARK 100 is a subset of the TechMARK all-share and both have an upper market cap limit so as to exclude the largest companies. Tender offer An offer to purchase some or all of shareholders shares in a corporation. The price offered is usually at a premium to the market price. Terminal Illness An advanced or rapidly progressing incurable illness. In the opinion of an attending consultant andor Chief Medical Officer the life expectancy of the sufferer would be no more than 12 months. Tax Exempt Special Savings Account a former tax-free savings scheme(available 1991-99). Total Expense Ratio The Total Expense Ratio (TER) accounts for all the costs in running an investment fund. As well as the Annual Management Charge, the TER would include trading fees, legal fees, auditor fees and other operational expenses. The TER is expressed as a percentage and is calculated by dividing the monetary cost of running the fund by the funds total assets. Tracker Fund An index fund that tracks a broad market index or a segment of it. Such a fund invests in all, or a representative number, of the securities within the index. Also know as an index fund. Trade Cut-off The time by which you must place your trade on the website in order for it to execute within the next available valuation point. Trade Price The last known trading price. Trade Time The time at which the last deal for the security was completed. Trade Type The coding applied to the trade confirming the transaction that has been completed. A - An automatic trade generated by the system through automatic execution. U - Uncrossing Trade - this is used for the single uncrossing trade, detailing the total executed volume and uncrossing price as a result of a SETS auction. N - Negotiated Trade - LSE uses an Automated Trading Service (ATS) to execute our real-time online deals. Restrictions imposed by the ATS may mean that certain stocks or order sizes cannot be traded automatically. If this is the case then you will be given the option to place a Negotiated Trade order. The order will be forwarded electronically and securely to our dealing team. They will manually execute your order as soon as possible and at the best price available in the market at the time of dealing. O - Ordinary Trade - the transaction that was not covered by any of the other trade types listed. T - Over the Counter Trade - a security which is not traded on an exchange, usually due to an inability to meet listing requirements. S - Systematic Internalises - are obliged to publish prices for trading with their customers and are allowed to improve prices when dealing in retail size or with retail clients. CT - The trade reported for a transaction previously executed automatically through the order book. LC - Late Correction - the error trade reported that has been last corrected. OC - OTC Trade correction. SC - SI trade Correction. Trade Volume The quantity of the security traded at the last known price. Transfer Value The monetary amount available which can be moved to another financial product. For example, the proceeds of a Cash ISA can be transferred to a Stocks and Shares ISA. Refers to the direction of security prices. An uptrend is a succession of higher highs and higher lows. A downtrend is a succession of lower highs and lowers lows. Trends are classified as Major (one year or longer), Intermediate (one to six months) and Minor (one month or less). U Back to top Underlying Asset In a derivative or warrant, the security, property, or other asset that gives value to the derivative or warrant. For example, in an option giving the right to buy stock in a share, the underlying asset is the share. An underlying asset may mean many things, such as a physical commodity, a security, a piece of land, or part of a business. Unit Price Latest price of fund holdings. Unit Trust Unit trusts are collective funds that allow private investors to pool their money in a single fund, thus spreading their risk across a range of investments, getting the benefit of professional fund management, and reducing their dealing costs. Unit trusts are open-ended in contrast to investment trusts, which are closed funds. Different trusts have different investment objectives: for example investing for income or growth, in small companies or large, and in different geographical regions. Unquoted Shares Unquoted shares are shares which are not traded on stock exchanges or other regulated financial markets. The current value of the total number of shares listed for the security. Value Investing The strategy of selecting stocks that trade for less than their intrinsic values. Value investors actively seek stocks of companies that they believe the market has undervalued. They believe the market overreacts to good and bad news, resulting in stock price movements that do not correspond with the companys long-term fundamentals. The result is an opportunity for value investors to profit by buying when the price is deflated. View as Pop-Out A comprehensive view of the investments in your account. Volatility The extent to which the price of a security or commodity, or the level of a market, interest rate or currency, changes over time. High volatility implies rapid and large upward and downward movements over a relatively short period of time low volatility implies much smaller and less frequent changes in value. The amount of trading sustained in a security or in the entire market during a given period. Especially heavy volume may indicate that important news has just been announced or is expected. W Back to top The W-8BEN form is provided by the United States Internal Revenue Service (IRS), and its purpose is to allow non-US persons to receive a reduced rate of taxation on any US-sourced income. For the purposes of share-dealing, US-sourced income refers to income (dividends, interest etc) received from businesses registered or incorporated within the US. If you require a W-8BEN form or a replacement W-8BEN form, please contact us and we will issue you one, alternatively you can download the form here. For an example of how to complete the W-8BEN please see here. A certificate, usually issued along with a bond or preferred stock, entitling the holder to buy a specific amount of securities at a specific price at some point in the future. The set price is usually higher than the price of the security at the time the warrant is issued. In the case that the price of the security rises to above that of the warrants exercise price, then the investor can buy the security at the warrants exercise price and resell it for a profit. Otherwise, the warrant will simply expire or remain unused. Warrants are listed on options exchanges and trade independently of the security with which they are issued. The percentage of the investment applied to your basket of funds. X Back to top Charles Stanley Direct is a trading name of Charles Stanley amp Co. Limited. Registered in England No 1903304. Registered Office: 55 Bishopsgate, London EC2N 3AS. Authorised and regulated by the Financial Conduct Authority (No. 124412). Member of the London Stock Exchange. Prices, News and Fundamentals provided by Thomson Reuters. Investors should be aware that past performance is not a reliable indicator of future results and that the price of shares and other investments, and the income derived from them, may fall as well as rise and the amount realised may be less than the original sum invested. Capital at risk. Income derived may fall or rise and you may get back less than invested.
No comments:
Post a Comment