Ein Grund für den Erfolg der Open Source Programmiersprache R ist neben dem kontinuierlichen Einsatz der internationalen Entwicklergemeinde das zunehmende Engagement großer Unternehmen. Auch Microsoft hat das Potenzial von R längst erkannt und mit Revolution Analytics einen der führenden R-Spezialisten übernommen. Microsoft bietet Anwendungen und Schnittstellen an, mit denen R bestmöglich integriert werden kann. Die zentralen Bestandteile des R-Portfolios von Microsoft sind Microsoft R Open, der Microsoft R Server, eine R-Anbindung zum SQL Server 2016 und R Tools for Visual Studio:

Abgrenzung von R Open zum Microsoft R Server (Quelle Microsoft)
Abgrenzung von R Open zum Microsoft R Server (Quelle Microsoft)

Microsoft R Open

Microsoft R Open ist ein eigener R Interpreter, der auf eine alternative Library zurückgreift, die für lineare Algebra Funktionen einen Performance-Vorteil durch Multithreading bietet. Darüber hinaus ist in Microsoft R Open das checkpoint Paket (https://mran.revolutionanalytics.com/documents/rro/reproducibility/) integriert – eine Lösung zur Paketverwaltung unter R.

Microsoft R Server (MRS)

Während Open Source R Daten komplett im Arbeitsspeicher lädt und verarbeitet, nutzt MRS das ScaleR Paket, um Daten auf der Festplatte zu speichern und dann in einzelne Chunks zu lesen und zu verarbeiten. Ergänzend bietet MRS Performance-Vorteile durch die Nutzung von Multithreading. Dazu verwendet MRS den selbstentwickelten Datenobjekttyp xdf (External Data Frame). xdfs sind komprimiert, wodurch sie deutlich kleiner sind als beispielsweise csv-Dateien. Schreib- und Leseprozesse nach/von xdf sind jedoch langsamer im Vergleich zu csv. Das Laden einzelner Chunks kann für die meisten R-Funktionen und Analysen eine Herausforderung darstellen, da diese erwarten, dass das gesamte Datenset geladen wird.

Es gibt daher spezielle Funktionen in ScaleR, die mit xdf-Daten umgehen können. Eine Übersicht dieser Funktionen und umgesetzten Algorithmen ist hier zu finden: https://msdn.microsoft.com/en-us/library/mt652103.aspx.

Für Datenmanagementaufgaben wie das Verändern, Hinzufügen und Entfernen von Variablen gibt es die Funktion rxDataStep. Ausgeführte Aktionen werden dem Argument transform als Liste zugewiesen. Bei Funktionen aus externen Paketen gilt zu beachten, dass diese auch extra angegeben werden müssen.

Die Funktionen des ScaleR Paketes sind so geschrieben, dass R-Code nach dem WODA-Prinzip (Write-Once-Deploy-Anywhere) entwickelt werden kann. Hierzu muss lediglich der Kontext der Laufumgebung ausgetauscht werden.

Ergänzend zu ScaleR gibt es mit dem Paket dplyrXdf inzwischen eine Backend-Erweiterung für das beliebte Datenmanagement-Paket dplyr, das den Umgang mit xdf-Dateien ermöglicht.

Bei der Überlegung, ob sich die Nutzung eines xdf-Kontexts lohnt, gilt es zu bedenken, dass durch Lese- und Schreibprozesse zusätzlicher Zeitaufwand entstehen kann. Das bedeutet, dass nicht für jede Datenmenge und jede Analyse direkt ein Performance-Gewinn entstehen muss.

R Client

Der kostenfreie R Client bietet ScaleR-Funktionen und Multithreading mit bis zu zwei Threads. Im Gegensatz zu MRS müssen die Daten aber im Arbeitsspeicher verarbeitet werden.

Der R Client kann genutzt werden, um lokal Analysen zu entwickeln und sie später in einem Produktivsystem wie MRS, SQL Server R Services oder R Server for Hadoop laufen zu lassen.

SQL Server R Services

Mit dem erst seit kurzem verfügbaren Update Microsoft SQL Server 2016 ist Microsoft eine umfangreiche Erweiterung der Datenbanklösung gelungen, die aktuelle Trends wie In-Memory-Betrieb, eine Hadoop Integration für Big Data oder Echtzeitanalysen unterstützt. Ist auf dem Microsoft SQL Server 2016 ein R Client installiert, kann R mit Hilfe von SQL Server R Services auf der Datenbank eingesetzt werden. Dabei stehen zwei mögliche Richtungen zur Verfügung: R-Code kann entweder mit Hilfe von ScaleR aus der R-Session heraus auf der Datenbank ausgeführt werden oder innerhalb einer StoredProcedure definiert werden. Innerhalb einer R-Session ist der Code genauso zu schreiben wie in einem MRS Kontext. Möchte man R-Code innerhalb einer StoredProcedure definieren, greift man auf die Transact-SQL-Funktion sp_execute-external_script zurück.

Tutorials sind unter https://msdn.microsoft.com/en-us/library/mt591993.aspx zu finden.

R Tools for Visual Studio

Mit R Tools for Visual Studio bietet Microsoft ein R-Plugin für seine IDE an, bestehend aus Skriptfenster, Fenster für die Konsole, Objektexplorer, Debugger, Syntax Highlighting und Skript Autovervollständigung. Charmant ist diese Lösung, sobald man in Verbindung mit einer Datenbank arbeitet und zusätzlich den Datenbank Explorer von Visual Studio nutzen kann.

Screenshot: R-Tools for Visual Studio
Screenshot: R-Tools for Visual Studio

Als R-Spezialist und langjähriger Partner von Microsoft und Revolution Analytics unterstützt eoda Kunden und Interessenten von Microsoft von der Beratung bis zur Implementierung der beschriebenen Lösungen.

Für mehr Informationen zu eoda:

Hier entlang.