Kubusverwerking

 

Gepubliceerd: juli 2016

Is van toepassing op: System Center 2012 SP1 - Service Manager, System Center 2012 R2 Service Manager, System Center 2012 - Service Manager

Wanneer een OLAP-kubus (Online Analytical Processing) is geïmplementeerd en alle partities ervan zijn gemaakt, kan de kubus worden verwerkt zodat deze kan worden bekeken. Het verwerken van een kubus is de laatste stap na de ETL-verwerking (Extraction, Transformation, and Loading). Deze stappen verlopen als volgt:

  1. Uitpakken: gegevens uit het bronsysteem extraheren

  2. Transformeren: functies toepassen om de gegevens om te vormen volgens een standaarddimensieschema

  3. Laden: de gegevens in de datamart laden voor consumptie

  4. Verwerken: de gegevens uit de datamart in de OLAP-kubus laden om te verkennen

De verwerking van een OLAP-kubus vindt plaats wanneer alle aggregaties voor de kubus worden berekend en de kubus wordt geladen met deze aggregaties en gegevens. Dimensie- en feitentabellen worden gelezen en de gegevens worden berekend en in de kubus geladen. Wanneer u een OLAP-kubus ontwerpt, moet u goed nadenken over de verwerking, vanwege het mogelijk aanzienlijke effect dat de verwerking kan hebben in een productieomgeving die miljoenen records kan bevatten. Een volledige verwerking van alle partities in een dergelijke omgeving kan dagen tot zelfs weken duren, waardoor de Service Manager-infrastructuur en kubussen onbruikbaar worden voor eindgebruikers. Een aanbeveling is het verwerkingsschema van niet-gebruikte kubussen uit te schakelen om de overhead van het systeem te verminderen.

Het verwerken van OLAP-kubussen bestaat uit twee afzonderlijke taken:

  1. Dimensieverwerking

  2. Partitieverwerking

Elke OLAP-kubus heeft een bijbehorende verwerkingstaak in de Service Manager-console die volgens een door de gebruiker configureerbare planning wordt uitgevoerd. Elk type verwerkingstaak wordt in de volgende secties beschreven.

Dimensieverwerking

Telkens wanneer een nieuwe dimensie aan de SSAS-database (SQL Server Analysis Server) wordt toegevoegd, moet er een volledig proces op de dimensie worden uitgevoerd om deze in een volledig verwerkte toestand te brengen. Nadat een dimensie is verwerkt, is er echter geen garantie dat deze opnieuw wordt verwerkt wanneer een andere kubus die op dezelfde dimensie is gericht, wordt verwerkt. Doordat de dimensie niet automatisch opnieuw wordt verwerkt, wordt voorkomen dat elke dimensie voor elke kubus opnieuw door Service Manager wordt verwerkt. Dit is vooral zo wanneer de dimensie onlangs verwerkt is, omdat het onwaarschijnlijk is dat er nieuwe gegevens bestaan die nog niet zijn verwerkt. In het Microsoft.SystemCenter.Datawarehouse.OLAP.Base management pack is een singletonklasse gedefinieerd voor het optimaliseren van de efficiëntie van de verwerking, met de naam Microsoft.SystemCenter.Warehouse.Dimension.ProcessingInterval. Hier volgt een voorbeeld van deze klasse:

<!-- This singleton class defines the minimum interval of time in minutes that must elapse before a shared dimension is reprocessed. -->   
<ClassType ID="Microsoft.SystemCenter.Warehouse.Dimension.ProcessingInterval" Accessibility="Public" Abstract="false" Base="AdminItem!System.AdminItem" Singleton="true">  
<Property ID="IntervalInMinutes" Type="int" Required="true" DefaultValue="60"/>  
</ClassType>  

Deze singletonklasse bevat de eigenschap IntervalInMinutes, die beschrijft hoe vaak een dimensie moet worden verwerkt. Deze eigenschap is standaard ingesteld op 60 minuten. Als een dimensie bijvoorbeeld om 15:05 is verwerkt, en om 15:45 een andere kubus die op dezelfde dimensie is gericht wordt verwerkt, wordt de dimensie niet opnieuw verwerkt. Een nadeel van deze benadering is de grotere kans op dimensiesleutelfouten. Er is een mechanisme voor opnieuw proberen dat dimensiesleutelfouten afhandelt door de dimensie en vervolgens de kubuspartitie opnieuw te verwerken. Meer informatie over kunt u vinden in de sectie 'Veelvoorkomende problemen bij het opsporen van fouten en het oplossen van problemen' in het onderwerp Problemen met OLAP-kubussen oplossen.

Nadat een dimensie volledig is verwerkt, wordt een incrementele verwerking met ProcessUpdate uitgevoerd. De enige andere tijd waarop ProcessFull wordt uitgevoerd, is wanneer een dimensieschema wordt gewijzigd, omdat dat tot gevolg heeft dat de dimensie weer een niet-verwerkte status krijgt. Denk eraan dat wanneer ProcessFull op een dimensie wordt uitgevoerd, alle betrokken kubussen en hun partities hierna een niet-verwerkte status hebben, en ze bij hun volgende geplande start volledig moeten worden verwerkt.

Partitieverwerking

Over partitieverwerking moet zorgvuldig worden nagedacht, omdat het het opnieuw verwerken van een grote partitie erg langzaam is en veel CPU-resources verbruikt op de server waar SSAS wordt gehost. Partitieverwerking duurt in het algemeen langer dan dimensieverwerking. Anders dan dimensieverwerking heeft het verwerken van een partitie geen bijwerkingen op andere objecten. De enige twee typen verwerking die worden uitgevoerd op System Center 2012 – Service Manager OLAP-kubussen zijn ProcessFull en ProcessAdd.

Net als bij dimensies, moet bij het maken van nieuwe partities in een OLAP-kubus de taak ProcessFull worden uitgevoerd om de partitie in een staat te brengen waarin er gegevens uit kunnen worden opgevraagd. Omdat een ProcessFull-taak een dure bewerking is, moet u alleen een ProcessFull-taak uitvoeren wanneer dat nodig is, bijvoorbeeld wanneer u een partitie maakt of wanneer er een rij is bijgewerkt. In scenario's waarin rijen zijn toegevoegd en geen rijen zijn bijgewerkt, kan Service Manager een ProcessAdd-taak uitvoeren. Hierbij maakt Service Manager gebruik van watermerken en andere metagegevens. Om precies te zijn worden de tabellen etl.cubepartition en etl.tablepartition ondervraagd om te bepalen welk type verwerking moet worden uitgevoerd.

Het volgende diagram illustreert hoe Service Manager op basis van de watermerkgegevens bepaalt welk type verwerking moet worden uitgevoerd.

Diagram van kubusverwerking

Wanneer een ProcessAdd-taak wordt uitgevoerd, beperkt Service Manager het bereik van de query met behulp van watermerken. Als de waarde van InsertedBatchId bijvoorbeeld 100 is en de waarde van WatermarkBatchId 50, laadt de query alleen gegevens uit de datamart waar InsertedBatchId groter is dan 50 en kleiner dan 100.

Ten slotte is het belangrijk eraan te denken dat Service Manager geen handmatige verwerking van OLAP-kubussen met SSAS of Business Intelligence Development Studio ondersteunt. Wanneer kubussen worden verwerkt met andere methoden dan degene die System Center 2012 – Service Manager biedt, waaronder de cmdlets Service Manager-console en Service Manager, worden de watermerktabellen niet bijgewerkt. Daarom is het mogelijk dat er problemen met de gegevensintegriteit kunnen optreden. Als u de kubus per ongeluk handmatig hebt verwerkt, is een mogelijke oplossing de verwerking van de OLAP-kubus op dezelfde manier handmatig ongedaan te maken. Er wordt dan automatisch een ProcessFull-taak uitgevoerd wanneer Service Manager de kubus de volgende keer verwerkt, omdat de partities een niet-verwerkte status hebben. Hierdoor worden alle watermerken en metagegevens op de juiste wijze bijgewerkt, zodat mogelijke integriteitsproblemen worden opgelost.

Zie ook

OLAP-kubussen begrijpen