Das Kon­zept des „vir­tu­el­len Warehou­ses“ mag bei Snow­flake-Ein­stei­gern für etwas Ver­wir­rung sor­gen. Eine Ver­wechs­lung zwi­schen den Arten der Ware­house-Ska­lie­rung kann sich auch in Äuße­run­gen fort­ge­schrit­te­ner Nut­zer ein­schlei­chen. Snow­flake unter­stützt zwei Arten der Ska­lie­rung: ver­ti­kal und hori­zon­tal – und beide die­nen einem unter­schied­li­chen Zweck. Es folgt eine Samm­lung typi­scher Irr­tü­mer (die Über­schrif­ten beschrei­ben Falsch­aus­sa­gen!), die einem im Lern­pro­zess unter­lau­fen kön­nen. Die­ser Bei­trag ist somit vor allem für Leser gedacht, die sich schon etwas mit der Snow­flake-Archi­tek­tur ver­traut gemacht haben.

1. Vir­tu­elle Warehou­ses kön­nen dyna­misch ver­grö­ßert oder ver­klei­nert werden.

Die Größe von vir­tu­el­len Warehou­ses ( im Fol­gen­den nur noch Warehou­ses genannt) kann manu­ell ver­än­dert wer­den, auch wenn bereits Querys lau­fen oder Querys in der War­te­schlange sind. Der Modus „Auto­ma­ti­sche Ska­lie­rung“ steht für ver­ti­ka­les Ska­lie­ren eines Warehou­ses (scale up/down) nicht zur Verfügung.

Ein Medium Warehouse (vier Nodes) wird via manueller, vertikaler Skalierung zu einem Large Warehouse (acht Nodes).
Ein Ware­house der Größe „Medium“ wird manu­ell hoch­ska­liert auf die Größe „Large“.

Auto-Ska­lie­rung steht in der Enter­prise Edi­tion von Snow­flake für hori­zon­tale Ska­lie­rung, also dem Vergrößern/Verkleinern der Anzahl an (gleich­gro­ßen!) Clus­tern in einem Multi-Clus­ter-Ware­house, zur Verfügung.

Ein Multi-Cluster-Warehouse, das ein Medium-Cluster (vier Nodes) enthält, wird via horizontaler Skalierung zu einem Multi-Cluster-Warehouse, das zwei Medium-Cluster enthält.
Die hori­zon­tale Auto-Ska­lie­rung („scale out“) eines Multi-Clus­ter-Warehou­ses (MCW). Ein­zelne Warehou­ses wer­den inner­halb des MCW repli­ziert, jeweils in der­sel­ben Größe. Wer­den Warehou­ses aus einem MCW ent­fernt, so spricht man von „scale in“.

Für ein Multi-Clus­ter-Ware­house (MCW) wird Auto-Ska­lie­rung akti­viert, wenn unter­schied­li­che Werte für die maxi­male und mini­male Anzahl von Clus­tern ange­ge­ben wer­den. In die­sem Modus star­tet und stoppt Snow­flake Clus­ter nach Bedarf, um die Ver­ar­bei­tungs­last im MCW dyna­misch zu verwalten:

  • Wenn die Anzahl der gleich­zei­ti­gen Benut­zer­sit­zun­gen und/oder Abfra­gen für das MCW zunimmt und Abfra­gen auf­grund unzu­rei­chen­der Res­sour­cen in die War­te­schlange tre­ten, star­tet Snow­flake auto­ma­tisch zusätz­li­che Clus­ter bis zu der für das Ware­house fest­ge­leg­ten maxi­ma­len Anzahl.
  • Wenn die Aus­las­tung des MCW abnimmt, fährt Snow­flake die Clus­ter auto­ma­tisch her­un­ter, um die Anzahl der akti­ven Clus­ter und ent­spre­chend die Anzahl der vom MCW ver­brauch­ten Cre­dits zu reduzieren.

Um die Cre­dit-Nut­zung im auto­ma­ti­schen Ska­lie­rungs­mo­dus zu steu­ern, bie­tet Snow­flake die Eigen­schaft SCALING_POLICY an. Diese bestimmt die Ska­lie­rungs­richt­li­nie, die beim auto­ma­ti­schen Star­ten oder Her­un­ter­fah­ren zusätz­li­cher Clus­ter ver­wen­det wird.

2. Ein­zelne Clus­ter eines Multi-Clus­ter-Warehou­ses kön­nen ange­hal­ten werden.

Es ist mög­lich, die Anzahl der Clus­ter in einem Multi-Clus­ter-Ware­house via „scale down“ zu redu­zie­ren, das Anhal­ten ein­zel­ner Clus­ter jedoch nicht. Das Anhal­ten eines Multi-Clus­ter-Warehou­ses fährt alle zuge­hö­ri­gen Com­pu­teres­sour­cen her­un­ter und es wer­den keine Cre­dits mehr verbraucht.

Links: Ein Rechteck, das zwei Quadrate mit je vier Zahnrädern, insgesamt also acht Zahnräder enthält. Es repräsentiert ein Multi-Cluster-Warehouse in Snowflake, das zwei Medium-Cluster enthält.
Alle Zahnräder in diesem Rechteck sind grau, um zu symbolisieren, dass das Warehouse "suspended" ist.

Rechts: Ein Rechteck, das zwei Quadrate mit je vier Zahnrädern, insgesamt also acht Zahnräder enthält. Es repräsentiert auch ein Multi-Cluster-Warehouse, das zwei Medium-Cluster enthält.
In einem Quadrat sind alle vier Zahnräder grau, um zu symbolisieren, dass dieses Cluster "suspended" ist.
Im anderen Quadrat sind alle Zahnräder grün, um zu symbolisieren, dass dieses Cluster im Status "running" ist. 

Der rechte Bildteil zeigt einen in Snowflake nicht möglichen Zustand, deshalb ist er von einem roten "X" durchgestrichen.
Das Anhal­ten ein­zel­ner Clus­ter in einem Multi-Clus­ter-Ware­house ist nicht mög­lich. Beim Anhal­ten eines Warehou­ses sind alle Com­pu­teres­sour­cen betroffen.

Wird ein Ware­house ange­hal­ten, fährt Snow­flake sofort alle im Leer­lauf befind­li­chen Com­pu­teres­sour­cen des Warehou­ses her­un­ter, lässt jedoch zu, dass alle Com­pu­teres­sour­cen, die Anwei­sun­gen aus­füh­ren, so lange fort­ge­setzt wer­den, bis die Anwei­sun­gen abge­schlos­sen sind. Dann wer­den auch diese Res­sour­cen her­un­ter­ge­fah­ren, und der Sta­tus des Ware­house wird in „Sus­pen­ded“ geändert.

3. Das Ver­grö­ßern eines Warehou­ses ver­bes­sert Par­al­le­li­tät, also das gleich­zei­tige Aus­füh­ren von Querys.

Snow­flake unter­stützt zwei Arten der Ska­lie­rung von Warehouses:

  • Ver­ti­ka­les Ska­lie­ren durch Ändern der Größe eines Ware­house.
    Das Ver­grö­ßern eines Warehou­ses ver­bes­sert die Per­for­mance, beson­ders für große, kom­plexe Querys.
  • Hori­zon­ta­les Ska­lie­ren durch Hin­zu­fü­gen von Clus­tern zu einem Multi-Clus­ter-Ware­house (erfor­dert Snow­flake Enter­prise Edi­tion oder höher).
    Multi-Clus­ter-Warehou­ses ver­bes­sern Par­al­le­li­tät. Sie wur­den spe­zi­ell dafür ent­wi­ckelt, War­te­schlan­gen- und Per­for­mance-Pro­bleme zu lösen, die aus einer gro­ßen Anzahl gleich­zei­ti­ger Nut­zer und/oder Anfra­gen resultieren.
Links sieht man ein Large Warehouse (8 Knoten), bei dem ein Query eingeht und ein zweiter in der Warteschlange steht. Rechts sieht man ein Multi-Cluster-Warehouse, das zwei Medium Warehouses enthält. Die beiden Querys werden hier parallel - jeweils von einem der Medium Warehouses - verarbeitet.
Das Ware­house mit acht Kno­ten (Large) würde – in der Theo­rie, Meta­da­ten und Caching aus­ge­nom­men – jeden belie­bi­gen Query schnel­ler ver­ar­bei­ten als ein Ware­house mit vier Kno­ten (Medium), wohin­ge­gen das Multi-Clus­ter-Ware­house mit zwei Clus­tern circa dop­pelt so viele Querys glei­cher Kom­ple­xi­tät aus­füh­ren kann.

Das obige linke Ware­house mit acht Kno­ten (Large) wird Query 1 wahr­schein­lich schnel­ler ver­ar­bei­ten als eines der rech­ten Warehou­ses mit vier Kno­ten (Medium). Wenn Query 1 und Query 2 jedoch zum sel­ben Zeit­punkt aus­ge­führt wer­den, dann wird Query 2 wahr­schein­lich zunächst auf die Ver­ar­bei­tung von Query 1 war­ten. Ein Multi-Clus­ter-Ware­house kann jedoch instantan beide Querys par­al­lel ausführen.

4. Ein Multi-Clus­ter-Ware­house kann aus Warehou­ses ver­schie­de­ner Grö­ßen bestehen.

Wenn ein Multi-Clus­ter-Ware­house erstellt wird, müs­sen alle indi­vi­du­el­len Clus­ter die­selbe Anzahl an Kno­ten haben.

Links ein Multi-Cluster-Warehouse mit zwei Medium Warehouses. Rechts, durchgestrichen von einem roten "X", ein Multi-Cluster-Warehouse mit einem Small Warehouse und einem Medium Warehouse. Durchgestrichen, da so etwas in Snowflake nicht möglich ist.
Das Multi-Clus­ter-Ware­house links hat zwei Warehou­ses, beide von der Größe „Medium“. Das Multi-Clus­ter-Ware­house rechts hat Warehou­ses unter­schied­li­cher Grö­ßen, was nicht mög­lich ist.

5. Ein grö­ße­res Ware­house wird einen Query schnel­ler ausführen.

Mög­lich, aber dem ist nicht zwin­gend so. Ein simp­ler Query braucht gege­be­nen­falls nur einen Kno­ten; zudem spie­len andere Fak­to­ren eine Rolle. Um zu ver­mei­den, dass Querys in einer Umge­bung mit vie­len Nut­zern in die War­te­schlange gestellt wer­den, sollte ein Multi-Clus­ter-Ware­house ange­legt wer­den, nicht ein grö­ße­res Warehouse.

Von den 8 Zahnrädern, welche die 8 Knoten des Large Warehouses repräsentieren, wird eines, das durch blaue Farbe hervorgehoben ist, von einem Pfeil umrundet. Der Pfeil symbolisiert den Query, der nur einen Knoten benötigt.
Query 1 benö­tigt nur 1 Kno­ten. Dem­entspre­chend würde eine Ver­grö­ße­rung von L (Large) auf XL nicht in einer bes­se­ren Per­for­mance resul­tie­ren. Die rest­li­chen Kno­ten wer­den hier nicht gebraucht und ver­brau­chen nur Snow­flake-Cre­dits. Ein Ware­house der Größe S oder XS wäre hier güns­ti­ger und effi­zi­en­ter, falls Query 1 bei­spiel­haft ist für den Groß­teil der Querys.

Zudem: Ein Query, den ein Ware­house mit all sei­nen ver­füg­ba­ren Com­pu­teres­sour­cen ver­ar­bei­tet, wird nicht dop­pelt so schnell lau­fen, wenn die Größe die­ses Warehou­ses ver­dop­pelt wird. Warehou­ses haben abneh­men­den Grenz­nut­zen, beson­ders im XL-Bereich. 

6. Das Ver­grö­ßern eines Warehou­ses ver­bes­sert die Per­for­mance eines aktu­ell lang­sam lau­fen­den Querys.

Vir­tu­elle Warehou­ses kön­nen jeder­zeit ver­grö­ßert wer­den, aber dies hat kei­nen Ein­fluss auf bereits lau­fende Querys. Sobald die neuen Com­pu­teres­sour­cen bereit­ge­stellt sind, ste­hen sie zur Ver­fü­gung für Querys, die in der War­te­schlange ste­hen oder neu aus­ge­führt werden.

Links: Ein Pfeil, der einen Query repräsentiert, umrundet alle vier Zahnräder eines Medium Warehouses. Das soll darstellen, dass dieser Query gerade verarbeitet wird. Die Zahnräder repräsentieren die vier Knoten.

Rechts: Das selbe Warehouse wurde vergrößert und hat nun 8 Zahnräder, also 8 Knoten. Der selbe Query umrundet weiterhin nur die selben 4 Zahnräder, denn die Vergrößerung (vertikale Skalierung) wurde manuell ausgeführt, während der Query schon vom Warehouse verarbeitet wurde.
Wäh­rend Query 1 noch aus­ge­führt wird, wird das Ware­house manu­ell ver­grö­ßert. Weder unter­bricht diese Ände­rung Query 1, noch wird Query 1 dadurch schnel­ler aus­ge­führt. Query 1 wird wei­ter­hin von den initia­len vier Kno­ten ver­sorgt. Um Query 1 von den zusätz­li­chen Com­pu­teres­sour­cen pro­fi­tie­ren zu las­sen, müsste er gestoppt und neu aus­ge­führt werden.

7. Ein­ge­hende Querys wer­den auto­ma­tisch an ein belie­bi­ges, freies und ver­füg­ba­res Ware­house weitergeleitet.

Jeder Query wird von nur einem Ware­house ver­ar­bei­tet, wel­ches über die aktu­elle Sit­zung defi­niert ist – via USE WAREHOUSE oder als Stan­dard­wa­re­house des aktu­el­len Users. Die Option der auto­ma­ti­schen Wei­ter­lei­tung an ein ande­res Ware­house exis­tiert nicht, der Pro­zess ist stets manuell.

Mit der Enter­prise Edi­tion von Snow­flake ist es mög­lich, in einem Multi-Clus­ter-Ware­house neue Clus­ter zu star­ten, um Querys zu ver­ar­bei­ten, die in der War­te­schlange stehen.

Links sieht man zwei Medium Warehouses (jeweils 4 Knoten). Beim oberen Warehouse geht ein Query ein und ein zweiter steht in der Warteschlange.
Rechts sieht man ein Multi-Cluster-Warehouse, das zwei Medium Warehouses enthält. Die beiden Querys werden hier parallel - jeweils von einem der Medium Warehouses - verarbeitet.
Der Unter­schied zwi­schen dem lin­ken Paar Medium-Warehou­ses und dem rech­ten Paar Medium-Warehou­ses ist, dass die bei­den rech­ten Teil eines Multi-Clus­ter-Warehou­ses sind. Die­ses Multi-Clus­ter-Ware­house wird in der lau­fen­den Sit­zung benutzt und kann daher hori­zon­tal ska­lie­ren, um sich der anste­hen­den Query-Last (im Sinne von gleich­zei­ti­gen Anfra­gen, nicht Query-Kom­ple­xi­tät) anzupassen.

Das oben ste­hende Bild könnte zu fol­gen­der Falsch­an­nahme verleiten:

8. Ein Query wird immer in die War­te­schlange gestellt, wenn das Ware­house beschäf­tigt ist.

Auch bei Sin­gle-Clus­ter-Warehou­ses ist die Anzahl der Querys, die par­al­lel ver­ar­bei­tet wer­den kön­nen, abhän­gig von der Größe und Kom­ple­xi­tät eines jeden Querys. Wenn Querys abge­schickt wer­den, berech­net und reser­viert das Ware­house die benö­tig­ten Com­pu­teres­sour­cen, die je Query nötig sind. Nur falls dem Ware­house nicht genü­gend Com­pu­teres­sour­cen ver­blei­ben, um einen Query zu ver­ar­bei­ten, wird die­ser Query in die War­te­schlange gestellt – solange bis andere lau­fende Querys abschlie­ßen und Res­sour­cen frei werden.

Von den 8 Zahnrädern, welche die 8 Knoten des Large Warehouses repräsentieren, werden vier, die durch blaue Farbe hervorgehoben sind, von einem Pfeil, der mit "Query 1" beschriftet ist, umrundet. Dieser Pfeil symbolisiert den Query, der vier Knoten benötigt.

Zwei weitere Zahnräder, ebenfalls blau hervorgehoben, werden von einem Pfeil, der mit "Query 2" beschriftet ist, umrundet. Dieser Pfeil symbolisiert den Query, der zwei Knoten benötigt.

Zwei Zahnräder sind grün und werden von keinem Pfeil umrundet. Sie symbolisieren die noch unbenutzten Computeressourcen.
Ein vir­tu­el­les Ware­house der Größe 8 (Large) reser­viert nur vier Kno­ten für Query 1. Ein wei­te­rer ein­ge­hen­der Query kann die übri­gen unge­nutz­ten Kno­ten nut­zen. Sollte es genug Com­pu­teres­sour­cen für Query 1 und Query 2 geben, kann ein ein­zel­nes Ware­house beide Querys par­al­lel ausführen.

Um voll­au­to­ma­ti­sier­tes Ska­lie­ren zwecks Par­al­le­li­tät zu akti­vie­ren, emp­fiehlt Snow­flake Multi-Clus­ter-Warehou­ses: Querys, die nor­ma­ler­weise in die War­te­schlange gestellt wür­den, wer­den auto­ma­tisch umge­lei­tet und aus­ge­führt von einem ande­ren Clus­ter im sel­ben Ware­house – ohne manu­el­les Eingreifen.

9. Multi-Clus­ter-Warehou­ses kön­nen zwi­schen einer mini­ma­len und maxi­ma­len Anzahl an Kno­ten skalieren.

Die – bei Erstel­lung eines MCW kon­fi­gu­rier­ba­ren – Para­me­ter MAX_CLUSTER_COUNT und MIN_CLUSTER_COUNT (Werte zwi­schen 1 und 10) bezie­hen sich auf die Anzahl der Ein­zel-Clus­ter-Warehou­ses, nicht die Anzahl der Ser­ver­kno­ten. Jedes Clus­ter in einem vir­tu­el­len Ware­house muss die­selbe Anzahl an Ser­ver­kno­ten haben, sprich, die­selbe „Größe“ haben.

Links: Ein Quadrat, das vier Zahnräder enthält. Es repräsentiert ein Multi-Cluster-Warehouse, das ein Medium-Cluster (vier Knoten) enthält.

Rechts: Ein Rechteck, das acht Zahnräder enthält. Es repräsentiert ein Multi-Cluster-Warehouse, das zwei Medium-Cluster enthält.

Vom linken Multi-Cluster-Warehouse ausgehend, zeigt ein Pfeil auf das rechte Multi-Cluster-Warehouse.

Er ist beschriftet mit "Automatisches horizontales Skalieren".
Das Mul­ti­clus­ter wurde von einem Clus­ter auf zwei Clus­ter ska­liert (scale out), jedes mit der­sel­ben Größe (Medium). Für die Auto-Ska­lie­rung beträgt die mini­male Clus­ter­zahl hier 1, die maxi­male Clus­ter­zahl kann zwi­schen 2 und 10 liegen

10. Ein Multi-Clus­ter-Ware­house hilft, einen kom­ple­xen Query schnel­ler zu verarbeiten.

Multi-Clus­ter-Warehou­ses hel­fen dabei, viele Querys par­al­lel zu ver­ar­bei­ten. Ein sin­gu­lä­rer Query wird immer von einem sin­gu­lä­ren Ware­house ver­ar­bei­tet, ergo spielt nur die Größe eine Rolle, nicht die Anzahl der Clus­ter. Die Per­for­mance eines kom­ple­xen Querys könnte durch ein grö­ße­res Ware­house pro­fi­tie­ren. Eine große Anzahl von Clus­tern ist in die­sem Fall egal.

Links: Ein Quadrat, das vier Zahnräder enthält. Es repräsentiert ein virtuelles Warehouse mit vier Knoten. 
Ein Pfeil, der dicker ist als die Pfeile in anderen Bildern, um einen komplexen Query zu symbolisieren, zeigt von links auf das Quadrat. Dies symbolisiert, dass der Query eingeht und von dem virtuellen Warehouse verarbeitet wird.

Rechts: Ein Rechteck, das zwei Quadrate mit je vier Zahnrädern, insgesamt also acht Zahnräder enthält. Es repräsentiert ein Multi-Cluster-Warehouse, das zwei Medium-Cluster enthält.
Ein Pfeil, der dicker ist als die Pfeile in anderen Bildern, um einen komplexen Query zu symbolisieren, zeigt von links auf eines der vier Zahnräder enthaltenden Quadrate. Dies symbolisiert, dass der Query eingeht und von einem Medium Warehouse des Multi-Cluster-Warehouses verarbeitet wird.
Für die Aus­füh­rung des (kom­ple­xen) Query 1 spielt es nicht wirk­lich eine Rolle, ob ein Medium-Ware­house oder ein Multi-Clus­ter-Ware­house mit zwei Medium-Warehou­ses benutzt wird. Der Query wird wei­ter­hin bloß einem der bei­den indi­vi­du­el­len Warehou­ses (mit je vier Ser­ver­kno­ten) zugeteilt.

11. Ein Query kann von mehr als einem Ware­house ver­ar­bei­tet werden

Ein Query kann nur von einem vir­tu­el­len Ware­house ver­ar­bei­tet wer­den. Bevor Abfra­gen und DML-Anwei­sung in einer lau­fen­den Sit­zung aus­ge­führt wer­den kön­nen, muss stets ein Ware­house ange­ge­ben wer­den (DDL USE WAREHOUSE … oder via Snow­sight GUI). Die­ses Ware­house wird so lange alle Querys aus­füh­ren, bis ein neues Ware­house ange­ge­ben und aus­ge­führt wird. Es ist jedoch mög­lich, dass ein Query von einem ande­ren Clus­ter in die­sem vir­tu­el­len Ware­house aus­ge­führt wird, sofern es ein Multi-Clus­ter-Ware­house ist. Es ist nicht mög­lich zu bestim­men, wel­ches Clus­ter das ist, aber Querys in der War­te­schlange kön­nen einem ande­ren akti­ven Clus­ter zuge­teilt wer­den, wenn die übri­gen Clus­ter gerade belegt sind.

Links: Ein Rechteck, das zwei Quadrate mit je vier Zahnrädern, insgesamt also acht Zahnräder enthält. Es repräsentiert ein Multi-Cluster-Warehouse in Snowflake, das zwei Medium-Cluster enthält.
Ein Pfeil mit der Aufschrift "Query 1" zeigt von links auf eines der - vier Zahnräder enthaltenden - Quadrate. Dies symbolisiert, dass der Query eingeht und von einem Medium Warehouse des Multi-Cluster-Warehouses verarbeitet wird.

Rechts: Ein Rechteck, das zwei Quadrate mit je vier Zahnrädern, insgesamt also acht Zahnräder enthält. Es repräsentiert auch ein Multi-Cluster-Warehouse, das zwei Medium-Cluster enthält.
Ein Pfeil mit der Aufschrift "Query 1" spaltet sich auf und zeigt von links auf beide der - vier Zahnräder enthaltenden - Quadrate. Dies symbolisiert, dass der Query eingeht und von beiden Medium Warehouses des Multi-Cluster-Warehouses verarbeitet wird. Da dies in Snowflake nicht möglich ist, ist der rechte Bildteil von einem roten "X" durchgestrichen,
Query 1 kann nur von einem Ware­house aus­ge­führt wer­den, selbst wenn zusätz­li­che Com­pu­teres­sour­cen die Per­for­mance stei­gern wür­den. Es ist nicht mög­lich, zusätz­li­che Res­sour­cen von einem ande­ren Ware­house zur Ver­fü­gung zu stellen.

Snow­flake und saracus consulting

An die­ser Stelle ein wenig Eigen­wer­bung zu unse­ren kom­men­den „Snow­flake-Mona­ten“. Wir bie­ten regel­mä­ßig kos­ten­lose Snow­flake Basic und Advan­ced Web­i­nare an, in wel­chen wir Snow­flake und seine Eigen­ar­ten vor­stel­len sowie Best Prac­ti­ces und Lösun­gen prä­sen­tie­ren. Die bei­den Web­i­nare sind auch als aus­führ­li­ches Semi­nar buch­bar, wel­che erheb­lich detail­lier­ter sind.