07.07.2016

StretchDB - Die Datenbank wächst in die Cloud

Technical Value

Mit StretchDB hat Microsoft dem SQL Server 2016 ein Feature hinzugefügt, das eine nahezu beliebige Erweiterung von Datenbanken in der Cloud ermöglicht. Dabei lassen sich vollständige Datenbanken wie auch einzelne Tabellen ganz oder teilweise in die Azure DB auslagern, ohne dass sich auf Abfrageseite etwas ändert. Abfragen an eine solche Tabelle werden automatisch vom Cross Platform Query Optimizer angepasst, sodass Teile lokal und Teile in der Cloud ausgeführt werden und das Ergebnis gemeinsam zurück geliefert wird.

Eine Möglichkeit von StretchDB besteht zum Beispiel darin, historische Daten ("Cold Data"), die man kaum nutzt, in die Cloud zu verschieben, während aktuelle Daten ("Hot Data") On-Premise vorgehalten werden. So wird die On-Premise-Datenbank entlastet und dennoch bleiben auch die historischen Daten permanent im direkten Zugriff.

Historische Daten mit StretchDB auslagernIm Folgenden ein konkretes Beispiel für die Auslagerung historischer Daten mit Stretch DB. Wir erzeugen zunächst eine Tabelle:

  1. CREATE TABLE dbo.stammdaten
  2.  
  3. (
  4.  
  5. id int identity(1,1),
  6.  
  7. name nvarchar(50),
  8.  
  9. vorname nvarchar(50),
  10.  
  11. jahr int
  12.  
  13. )

Diese befüllen wir mit 1.000.000 zufälligen Daten:

  1. with f10 AS
  2.  
  3. (
  4.  
  5. SELECT * FROM
  6.  
  7. ( VALUES
  8.  
  9.   (0),(1),(2),(3),(4),(5),(6),(7),(8),(9)
  10.  
  11. ) AS B (f)
  12.  
  13. )
  14.  
  15. , f1000 AS
  16.  
  17. (
  18.  
  19. SELECT
  20.  
  21. f = a.f+b.f*10+c.f*100
  22.  
  23. FROM f10 a
  24.  
  25. CROSS JOIN f10 b
  26.  
  27. CROSS JOIN f10 c
  28.  
  29. )
  30.  
  31. , f1000000 AS
  32.  
  33. (
  34.  
  35. SELECT
  36.  
  37. f= a.f + b.f*1000
  38.  
  39. FROM f1000 a
  40.  
  41. CROSS JOIN f1000 b
  42.  
  43. )
  44.  
  45. INSERT INTO dbo.stammdaten
  46.  
  47. (name, vorname, jahr)
  48.  
  49. SELECT
  50.  
  51. nachname = NCHAR(CAST(65+26 * RAND( ABS(CHECKSUM(CAST(NEWID() AS VARCHAR(100)))) ) AS INT))
  52.  
  53. + NCHAR(CAST(65+26 * RAND( ABS(CHECKSUM(CAST(NEWID() AS VARCHAR(100)))) ) AS INT))
  54.  
  55. + NCHAR(CAST(65+26 * RAND( ABS(CHECKSUM(CAST(NEWID() AS VARCHAR(100)))) ) AS INT))
  56.  
  57. + NCHAR(CAST(65+26 * RAND( ABS(CHECKSUM(CAST(NEWID() AS VARCHAR(100)))) ) AS INT))
  58.  
  59. ,vorname =
  60.  
  61. NCHAR(CAST(65+26 * RAND( ABS(CHECKSUM(CAST(NEWID() AS VARCHAR(100)))) ) AS INT))
  62.  
  63. + NCHAR(CAST(65+26 * RAND( ABS(CHECKSUM(CAST(NEWID() AS VARCHAR(100)))) ) AS INT))
  64.  
  65. + NCHAR(CAST(65+26 * RAND( ABS(CHECKSUM(CAST(NEWID() AS VARCHAR(100)))) ) AS INT))
  66.  
  67. + NCHAR(CAST(65+26 * RAND( ABS(CHECKSUM(CAST(NEWID() AS VARCHAR(100)))) ) AS INT))
  68.  
  69. ,jahr = CAST( 2000+16*RAND( ABS(CHECKSUM(CAST(NEWID() AS VARCHAR(100)))) ) AS INT)
  70.  
  71. FROM f1000000

Das Script erzeugt Daten wie folgt: clip_image001 Wir wollen nun alle Daten vor 2010 in die Cloud auslagern. Dazu aktivieren wir auf der Datenbank über Tasks die Funktion „Stretch“: clip_image003 Im folgenden Dialog können wir auswählen, ob eine ganze Tabelle oder Teile ausgelagert werden sollen: Auslagerung von Daten mit StretchDB Und nun lässt sich die Regel erstellen, die wir anwenden wollen: clip_image007 Tabelle auswählen: clip_image009 Azure konfigurieren: clip_image011 Abschließen: clip_image013 Der Assistent erledigt nun alle erforderlichen Schritte: clip_image015 Im Hintergrund werden nun alle Daten < 2010 Richtung AzureDB verschoben. Nach der Verteilung machen wir ein COUNT(*) auf die verschiedenen Zeitbereiche: clip_image018 Der Execution Plan auf diese verteilte Tabelle zeigt uns nun, dass der Query Optimizer die Aufgaben verteilt. Neben den lokalen TableScans fragt er als Remote Query die AzureDB ab. clip_image020

Fazit:

StretchDB lässt die Grenzen zwischen onPremise und AzureDB verschwinden und ermöglicht eine leicht zu administrierende Erweiterung einer lokalen Datenbank mit den Kapazitäten der Cloud.

Teilen auf

Newsletter Anmeldung

Abonnieren Sie unseren Newsletter!
Lassen Sie sich regelmäßig über alle Neuigkeiten rundum ORAYLIS und die BI- & Big-Data-Branche informieren.

Jetzt anmelden