Microsoftilla on tällä hetkellä SQL Serverin tuotantoversiossa eli SQL Server 2012:ssä muutama tärkeä teknologia, jotka nopeuttavat niin tietovarastokyselyjä kuin tiedon reaaliaikaista analysointiakin. Näitä ovat xVelocity Analytics Engine ja xVelocity Columnstore Index.

xVelocity Analytics Engine on upotettu sekä PowerPivot for Excel 2010/2013 -komponenttiin (Excel 2010 vaatii erikseen ilmaiseksi ladattavan lisäosan, Excel 2013 sisältää tämän teknologian sisäänrakennettuna) että PowerPivot for SharePoint -teknologiaan. Toisin sanoen, muistinvaraista analyysia ja tietojen yhdistelyä voi ensin tehdä työasemalla Excelissä. Etuna on tuttu käyttöliittymä, tehokas datan sarakepohjainen pakkaus ja täysin dynaamiset laskentasäännöt, joiden avulla voidaan toteuttaa omia mittareita ja KPI-arvoja. Excelillä voi myös rakentaa suoraan PowerPivotista avustettuna näyttäviä raportteja. PowerPivot for Excelillä tehty muistinvarainen analyysi ja tietomalli tietolähteineen voidaan siirtää serverille SharePoint-komponenttiin yksinkertaisesti tallentamalla Excel-tiedosto SharePoint-palvelimelle. Tällöin sama Excel-tiedosto ylläpitää tietomallia ja ajastetusti virkistettävää dataa serverillä.Tarvittaessa tämä tietomalli tietolähteineen ja metadatoineen (Tabular BI Semantic Model, eli semanttinen malli) voidaan helposti siirtää varsinaiseen SQL Server 2012 Analysis Services Tabular Mode -instanssiin, jolloin palvelimella on täysin itsenäinen, muistinvarainen analyysitietokanta.

xVelocity Columnstore Index on SQL Server 2012:n Enterprise Editionin ja Parallel Data Warehousen sarakepohjaisesti pakattu indeksityyppi, joka nopeuttaa erityisesti tietovarastosta tehtävien aggregointikyselyiden suoritusnopeutta dramaattisesti. Nykyisessä versiossa on kuitenkin rajoitteena se että taulua jossa Columnstore Index on kytkettynä päälle ei voi päivittää vaan indeksi täytyy ETL-latausten ajaksi poistaa. Seuraavassa SQL Serverin versiossa tuetaan Columnstore Indexillä indeksoidun taulun reaaliaikaista päivittämistä. Samoin on mahdollista rakentaa nk. Clustered Columnstore Index (klusteroitu sarakepakattu indeksi). Toisin sanoen koko taulu on fyysisesti sarakepakattu ja muistinvaraiset teknologiat osaavat hyödyntää tätä.

TP (Transactional Processing) -työkuormaa varten seuraavaan SQL Serverin versioon tulee myös in-memory relational database -teknologia eli aiemmin tällä viikolla blogikirjoituksessani mainittu Hekaton -teknologia. Kaikki sovellukset jotka toimivat SQL Serverin tulevaa versiota vasten, voivat hyödyntää suoraan in-memory -ominaisuuksia. Palvelimella on syytä olla paljon muistia koska kaikkien niiden tietokantaobjektien joiden halutaan olevan in-memory -moodissa tulee mahtua kokonaisuudessaan serverin muistiin. Koko tietokannan ei kuitenkaan tarvitse mahtua kerrallaan muistiin. Eli muistinvaraisuus määritellään taulutasolla ja on otettavissa lennosta käyttöön.

Tallennettujen proseduurien muistinvaraisuudesta seuraava tehokkuus Hekatonissa perustuu natiiviin konekoodiin. Nykyiseltään T-SQL tallennetut proseduurit käännetään datastruktuureiksi, jotka tulkataan SQL Serverin kyselymoottorissa (Query Engine). Hekaton-teknologiaa käytettäessä kyselyt ja proseduurien logiikka käännetään suoraan natiiviksi konekoodiksi ja käännösvaiheessa tehdään myös agressiivista koodin optimointia. Tämä mahdollistaa tallennetun proseduurin ajamisen natiivin koodin nopeudella.

Microsoft on tehnyt muistinvaraisten teknologioiden kehittämisessä yhteistyötä mm. yhdysvaltalaisten teleoperaattoreiden sekä pankki- ja finanssialan yritysten kanssa. Teknologia sai demoineen loistavaa palautetta PASS Summit 2012 -tapahtumassa Seattlessa tällä viikolla.

Mielenkiintoista! :)

T. Marko