ixto - business intelligenceeinfach entscheiden.
Blog
Blog

Bessere Datenvisualisierung

Die Unabhängigkeitsabstimmung in Schottland rückt dieses Land aktuell in den Aufmerksamkeitsfokus der Presse. Zur Analyse der Schottischen Wirtschaft erschien in der Zeit dazu diese Woche folgende Grafik, die nachfolgend analysiert und optimiert wird. Dabei liegt der Fokus nicht darauf, mit welchen technische Tools dies zu erreichen ist, sondern auf den einfachen Anpassungen der Grafik.

Weiterlesen

Erstellung einer einfachen Datenverwaltung mit Dynamic Data Entities II

Nachdem im ersten Blogbeitrag (Link) beschrieben wurde, wie eine Webseite mit Dynamic Data Entities erstellt werden kann, werden im zweiten Teil Tipps im Umgang mit diesen gegeben. Geendet hatte der letzte Beitrag mit dem folgenden Problem: Namen der Autoren sind nicht sortiert und es wird nur der Nachname angezeigt.

Weiterlesen

Anbindung von Slowly Changing Dimension an der Faktentabelle mithilfe von binärer Suche (Binary Search)

In diesem Blogbeitrag möchte ich näher erläutern, wie eine Slowly Changing Dimension (kurz SCD) in SSIS mithilfe des Algorithmus der binären Suche (engl. binary search) an die Fakten gebunden werden kann.

 

Weiterlesen

Probleme beim Multicast in SSIS-Paketen

Bei einem SSIS-Projekt mit SQL Server 2008 R2 kam es zum folgenden Problem: Nach einer Datenquelle wurde ein Multicast verwendet, nur leider kamen keine Daten aus der Quelle beim Multicast an. Bei der Fehlersuche zeigte sich, dass Daten an der Datenquelle ankommen müssten, diese allerdings aus einem unbekannten Grund nicht weitergeleitet wurden. Weiterlesen

Erweiterungen der In.Memory Technologien im SQL Server 2014

Mit dem SQL Server 2012 wurden xVelocity und Columnstore Indexes als In.Memory-Technologien eingeführt. Diese Technik ermöglichte es, häufig abgefragte Tabellen zur Beschleunigung häufiger Datawarehouse-Abfragen spaltenbasiert im Hauptspeicher zu speichern.

Im neuen SQL Server 2014 wurde diese Technologie erweitert: Columnstore Indexe werden in Zukunft nicht mehr nur lesbar sein, sondern auch Schreib-Zugriffe ermöglichen (Quelle). Außerdem werden die In.Memory-Fähigkeiten des SQL Servers um eine Engine, die unter dem Codenamen “Hekaton” entwickelt wurde, erweitert. Sie stellt eine für OLTP-Prozesse optimierte In.Memory Technologie dar, mit deren Hilfe nicht mehr nur lesende Analyse-Zugriffe aus dem Hauptspeicher erfolgen können, sondern die es ermöglicht, die schreibende transaktionale Last in den Hauptspeicher zu verlagern.

Zu diesem Zweck werden Filegroups angelegt, die als “Hauptspeicheroptimiert” gekennzeichnet werden und die die Tabellen enthalten, die bei der Erstellung ebenfalls entsprechend markiert wurden. Durch die Verlagerung bestimmter Tabellen in den Speicher kann die Performance bestimmter Prozesse um das bis zu 20-fache beschleunigt werden (Quelle).

Der Vorteil gegenüber Konkurrenzprodukten besteht dabei darin, dass gezielt einzelne Datenbankobjekte in den Speicher verlegt werden können, um so Performance-Bottlenecks gezielt anzugehen. Die Gesamt-Infrastruktur einer Datenbanklösung kann dabei in der Regel bestehen bleiben – bis hin zur Hardware. In.Memory-Lösungen werden dadurch in jeder Größenordnung bezahlbar. Die Syntax für Columnstore-Indexe ist dabei im Vergleich zum SQL Server 2012 unverändert. Neu ist die Syntax für die In.Memory OLTP-Engine. Um die In.Memory-Engine für eine Tabelle zu aktivieren, muss zunächst eine Filegroup angelegt werden, die die entsprechenden Daten enthält:

 

ALTER DATABASE [db] ADD FILEGROUP [inMemoryFg]

CONTAINS MEMORY_OPTIMIZED_DATA


Hinterher muss der Filegroup eine Datei hinzugefügt werden:

 

ALTER DATABASE [db] ADD FILE

(name=’name’, filename=’c:\data\filename’)

TO FILEGROUP [inMemoryFg] 


Um nun eine Tabelle in den Hauptspeicher zu verlegen, muss lediglich beim Anlegen ein Hash-Key angelegt werden und markiert werden, dass die Tabelle Hauptspeicher-Optimierte Daten enthält:

 

CREATE TABLE [dbo].[TableName]

([…])

WITH ( MEMORY_OPTIMIZED = ON , DURABILITY = SCHEMA_ONLY )

 

Indexe auf In.Memory-Tabellen müssen gemeinsam mit der Tabelle erzeugt werden, die vollständige Syntax sowie mehrere Beispiele zur Benutzung von In.Memory-Optimierten Tabellen finden sich im MSDN.

 

Beim Launch-Event der PASS zum SQL Server 2014 wird die ixto GmbH als eines der ersten Unternehmen überhaupt ein Projekt vorstellen, mit dem wir die Leistungsfähigkeit dieser neuen Technologie demonstrieren können.

RegEx-Performance in SSIS Datenflüssen

Im letzten Beitrag hatten wir empfohlen, reguläre Ausdrücke zu verwenden, wenn Muster in Texten gesucht werden sollen. Dabei hatten wir neben einer kleinen Syntax-Einführung auf eine MSDN-Seite mit Performance-Tipps verwiesen. In diesem zweiten Teil der RegEx-Beiträge möchten wir diese Tipps konkret in den SSIS-Kontext übertragen. Dafür wollen wir zunächst testen, wie hoch der Overhead für die Instanziierung eines RegEx-Objekts im Vergleich zum Aufruf statischer RegEx-Methoden in C# ist. Hinterher möchten wir beide Methoden in einem einfachen SSIS-Datenfluss vergleichen.

Weiterlesen

Dynamische Excel Abfragen mit wechselnden Zellbezügen

Tabellenblätter einer Excel Datei lassen sich ohne weiteres mit Hilfe des Excel Quellen-Editors in SSIS abfragen. Kürzlich stand ich jedoch vor der Herausforderung, dass sich je nach Version der zu ladenden Excel Datei die Quelldaten in anderen Zellen befinden. Ich bin zunächst davon ausgegangen, dass für diese Anforderung die Skriptkomponente verwendet werden muss. Eine Suche in den Tiefen des Internets hat mich eines Besseren belehrt. In diesem Blogbeitrag wird das Erstellen von Excel Abfragen mit verändernden Zellbezügen und das Abfragen einzelner Zellwerte erklärt.

Weiterlesen

Best practice: Parsen über RegEx

In ETL-Prozessen, die sich mit manuell eingegebenen Daten wie Kundendaten oder ähnlichem beschäftigen gibt es fast zwangsläufig irgendwann die Situation, Daten aus einem Textfeld extrahieren zu müssen. Und obwohl das eine fast alltägliche Aufgabe ist, stößt man in real existierenden Projekten immer wieder auf enorm umfangreiche Substring-Methoden zur Erkennung bestimmter Muster. Dabei hat so gut wie jede Programmiersprache dafür ein Konstrukt parat, von dem zwar schon einmal gehört haben dürfte. Leider wird es allerdings leider oft wegen seines vermeintlich komplizierten Syntax oder weil es gerne als “überdimensioniert” betrachtet wird, ignoriert wird: die regulären Ausdrücke (Regular Expressions oder auch RegEx).

Weiterlesen

ImpressumSitemapDatenschutzerklärung