Virtual Warehouses sind das zentrale Werkzeug in Snowflake, um Workloads auf flexible Weise zu skalieren. Aufgrund seiner Plattformunabhängigkeit ist WhereScape jedoch nicht auf die Nutzung von Virtual Warehouses optimiert. Im Folgenden werden die Schritte aufgezeigt, um WhereScape dennoch um eine solche Funktionalität zu erweitern.
Bedeutung der Virtual Warehouses
Virtual Warehouses sind das zentrale Werkzeug in Snowflake, um vorliegende Workloads auf flexible Art und Weise zu skalieren und zu parallelisieren. Die Anzahl und Nutzungsweise von Virtual Warehouses hängt dabei stark vom vorliegenden Use Case ab. So wird oftmals differenziert zwischen
- Virtual Warehouses für Entwicklungs-, Test- und Produktionsumgebungen
- Virtual Warehouses für die Art der Workloads, u. a. Lese- und Schreibzugriffe
- Virtual Warehouses für große und kleine Workloads
Essentielle Anforderung an eine Data-Warehouse-Automatisierungslösung für Snowflake ist es daher oftmals, die Menge der von einem Virtual Warehouse genutzten Datenbankobjekte individuell konfigurieren zu können. Die feinste (jedoch nicht unbedingt sinnvollste) Granularität ist dabei, für jede Tabelle ein individuelles Warehouse zur Beladung zu bestimmen.
WhereScape RED bietet hierfür aufgrund seiner Plattformunabhängigkeit standardmäßig jedoch nur eine Option: Das Virtual Warehouse wird in der ODBC-Verbindung angegeben, über die später eine Verbindung zum Data Warehouse hergestellt wird. Alle Tabellen des eigenen Data Warehouse werden im Anschluss mithilfe eines einzigen Virtual Warehouse beladen, und Workloads – zum Beispiel zur Beladung von Hubs, Links und Satelliten in Data-Vault-Modellen – können nicht separiert werden.
Großer Vorteil von WhereScape RED ist hier die beliebige Anpassung an individuelle Anforderungen und Use Cases mithilfe von Templates, Extended Properties sowie Parametern, was wir im Folgenden nutzen werden, um die Festlegung auf ein einziges Virtual Warehouse aufzubrechen.
Funktionserweiterung von WhereScape
Um eine Virtual-Warehouse-Nutzung in WhereScape RED zu integrieren, muss das Tool durch Templates und Extended Properties erweitert werden. Das Ziel der nachfolgenden Ausführungen ist, dass pro Tabellenobjekt ein Virtual Warehouse mithilfe einer Extended Property gesetzt werden kann. Im Anschluss wird diese von den Beladungstemplates der Tabellenobjekte ausgelesen und zu Beginn einer jeden Prozedur ein USE-WAREHOUSE-Befehl an Snowflake übergeben.
1. Hinzufügen einer Extended Property
Im ersten Schritt muss eine neue Extended Property über Tools > Extended Properties > Maintain Extended Properties > New angelegt werden. Es ist wichtig, bei Datenbanken „Other“ auszuwählen und bei den Objekttypen diejenigen zu wählen, für die eine spätere individuelle Warehouse-Nutzung möglich sein soll.
2. Überprüfung und Pflege der Extended Property
Im zweiten Schritt wird die Extended Property manuell mit einem Wert – also einem Virtual-Warehouse-Namen – versehen. Hierzu navigiert man von einem Objekt über Properties > Extended Properties zur entsprechenden Übersichtsseite und trägt einen Wert in die im vorherigen Schritt angelegte Extended Property ein. Im Beispiel wird dem Hub h_categories ein Virtual Warehouse mit dem Namen WH_HUBS zugewiesen.
Tipp: Für eine weitere Automatisierung können die Virtual-Warehouse-Namen über Model Conversion Rules in 3D generiert und automatisch eingepflegt werden, sodass der manuelle Pflegeaufwand entfällt.
3. Anpassung der für die Beladung zuständigen Templates
Im dritten Schritt müssen die Templates angepasst werden, die für die Beladung der in Schritt 1 gewählten Objekttypen zuständig sind. Nachfolgender Code liest den für ein Objekt hinterlegten Virtual-Warehouse-Namen aus und sendet einen USE-WAREHOUSE-Befehl an Snowflake. Er sollte natürlich zu Beginn des entsprechenden Templates eingefügt werden, sodass alle nachfolgenden Befehle vom entsprechenden Virtual Warehouse ausgeführt werden.
Falls kein Virtual-Warehouse-Name gewählt ist, wird das in der ODBC-Verbindung hinterlegte Warehouse standardmäßig für alle in der Prozedur enthaltenen Befehle genutzt.
4. Neugenerierung der Prozeduren
Im letzten Schritt werden die Prozeduren eines Objektes über Properties > Update Procedure > Regenerate neu generiert, sodass der dem Template hinzugefügte Code Anwendung findet.
Hinweis: Ob die Entwicklung erfolgreich verlaufen ist, kann mithilfe des History-Reiters in Snowflake überprüft werden. Stößt man eine Prozedur in WhereScape an, so müsste dort zum einen der USE-WAREHOUSE-Befehl zu finden sein. Zum anderen müssten die weiteren Befehle der entsprechenden Prozedur statt von dem in der ODBC-Verbindung hinterlegten Virtual Warehouse von dem in der Extended Property definierten Virtual Warehouse ausgeführt werden.
Templates, Extended Properties und Parameter sind mächtige Instrumente, um WhereScape RED an beliebige Anforderungen individuell anzupassen. Der vorliegende Beitrag hat in diesem Zusammenhang gezeigt, wie Templates und Extended Properties in Kombination genutzt werden können, um Tabellen bzw. deren Ladeprozeduren innerhalb von WhereScape ein Virtual Warehouse zuweisen zu können.
Falls Du Interesse an weiteren Informationen hast oder auch Unterstützung im Umgang mit WhereScape benötigst, komm gerne auf uns zu!