Snowflake DCM Projects¶
Snowflake DCM Projects (Database Change Management Projects) ermöglichen einen deklarativen Ansatz für die Verwaltung von Snowflake-Objekten als Code. Sie definieren den gewünschten Zielzustand Ihrer Datenbanken, Schemas, Tabellen und anderen Objekte in den Definitionsdateien, und Snowflake ermittelt und verwendet die erforderlichen Änderungen, um diesen Zustand zu erreichen. Dies ermöglicht versionskontrollierte, wiederholbare Bereitstellungen in verschiedenen Umgebungen, wie z. B. Entwicklung, Staging und Produktion, unter Verwendung eines Erst-Planen-dann-Bereitstellen-Workflows, der bei Infrastructure-as-Code-Tools üblich ist.
Wenn Ihre Definitionen sich wiederholende Muster enthalten, können Sie Ihren Code mithilfe von Jinja-Vorlagen parametrisieren, einschließlich Wörterbücher, Schleifen, Bedingungen und Makros.
Der allgemeine Workflow für das Management eines DCM project ist wie folgt:
Erstellen Sie DCM project-Dateien (
manifest.yml- und SQL-Definitionsdateien) in einem Snowflake-Arbeitsbereich, einem externen Git-Repository oder einem lokalen Verzeichnis.Erstellen Sie ein neues DCM project für jede Zielumgebung.
Definieren Sie Snowflake-Objekte in DCM project-Dateien.
Konvertieren Sie Ihre bestehenden SQL-Bereitstellungsskripte mithilfe des DEFINE-Schlüsselworts (für unterstützte Objekttypen).
(Optional) Fügen Sie gemeinsame oder alternative Vorlagenvariablen und Makros hinzu.
Führen Sie einen DCM PLAN-Befehl aus, um eine Bereitstellung zu simulieren und eine Vorschau der Änderungen anzuzeigen.
Stellen Sie die Projektversion bereit, um Änderungen in Snowflake zu übernehmen.
Überwachen Sie die Projektausführungen.
Iterieren Sie Ihr DCM-Projekt. Aktualisieren Sie die Projektdateien, überprüfen Sie die Planausgabe, und stellen Sie bei Bedarf neue Versionen bereit.
Mit diesem Lebenszyklus können Sie Datenbankänderungen auf kontrollierte, versionierte und überprüfbare Weise erstellen, testen, bereitstellen und überwachen.
Die folgende Abbildung veranschaulicht den oben beschriebenen DCM Projects-Lebenszyklus.
Wichtige Begriffe¶
Im Folgenden finden Sie die wichtigsten Begriffe, die Sie kennen sollten, wenn Sie mit DCM Projects arbeiten.
- Deklarative Definitionen
In DCM Projects definieren Sie den gewünschten Status Ihrer Snowflake-Umgebung, z. B. welche Tabellen, Schemas oder Rollen vorhanden sein sollen, unabhängig vom aktuellen Status der Objekte. Sie geben nicht jeden Schritt an, um sie zu erstellen oder zu ändern. Sie beschreiben, was Sie wollen, und Snowflake erkennt, wie Sie dies umsetzen können.
Insbesondere nutzt DCM Projects DEFINE-Anweisungen mit Vorlagen-Features. Dadurch werden Projektdateien für verschiedene Umgebungen wiederverwendbar und anpassbar. Die Reihenfolge und der Speicherort vonDEFINE-Anweisungen innerhalb eines Projekts haben keinen Einfluss auf die Ergebnisse. Snowflake sammelt und sortiert alle Anweisungen, bevor die Änderungen angewendet werden, sodass Sie sich nicht manuell um die Sequenzierung oder die Abhängigkeiten kümmern müssen.
- DCM-Projektdateien
Ein DCM project basiert auf einer Menge von SQL- undYAML-Quelldateien, die normalerweise in einem Git-Repository oder in Ihrem lokalen Arbeitsbereich verwaltet werden. Sie definieren Snowflake-Objekte, deren Attribute, Beziehungen und Einschränkungen für ein DCM project in Ihren Projektdefinitionsdateien (SQL-Dateien). Sie aktualisieren Ihre Projektdateien in einem Entwicklungsarbeitsbereich. Änderungen werden in Snowflake erst wirksam, wenn Sie sie über ein DCM project-Objekt bereitstellen.
- DCM-Projektobjekt
Ein DCM project ist ein Objekt auf Schemaebene in Snowflake, mit dem Sie die in DCM project-Dateien definierten Objekte bereitstellen und verwalten können. Sie benötigen ein DCM project-Objekt für jede Zielumgebung.
Das DCM project-Objekt wird zur Ausführung von DCM-Befehlen verwendet und speichert die unveränderlichen Artefakte und Definitionsdateien aller ausgeführten Bereitstellungen.
Obwohl ein DCM project ein Objekt auf Schemaebene ist, können Sie damit Objekte in anderen Datenbanken erstellen und verwalten. Sie können auch ein DCM project ausführen, um einen Testlauf der Änderungen an Ihrem Workflow durchzuführen, sodass Sie eine Vorschau der Änderungen anzeigen können, bevor Sie sie bereitstellen.
Anforderungen¶
Verwenden Sie Snowsight, SnowflakeCLI,SQL oder Cortex CLI zum Verwalten von DCM Projects.
Sie benötigen eine Datenbank und ein Schema, in dem Sie Ihre DCM project-Objekte erstellen können.
Speichern Sie Ihre DCM project-Definitionen lokal oder im Snowflake-Arbeitsbereich.
Verwenden Sie Git für die Zusammenarbeit, für die Versionierung und zum Synchronisieren von Änderungen.
Wenn Sie lokale Definitionen mit Snowflake CLI ausführen möchten, benötigen Sie auch die Berechtigung, einen temporären Stagingbereich im Schema Ihres DCM project-Zielobjekts zu erstellen.
Hinweise und Einschränkungen¶
Projektgröße
Derzeit unterstützt DCM Projects bis zu 1.000 Quelldateien und 10.000 gerenderte Objektdefinitionen oder Berechtigungszuweisungen.
Bei mehr als 1.000 Dateien oder 10.000 Definitionen kann es zu Leistungseinbußen und in einigen Fällen zu Ausführungsfehlern kommen.
Die Konsolidierung von Definitionen in weniger Dateien führt im Allgemeinen zu schnelleren Ausführungszeiten von PLAN- und DEPLOY-Befehlen.
Dieses Limit wird während des Zeitraums der öffentlichen Vorschau angehoben, da sich Leistung und Skalierbarkeit weiter verbessern.
Changeset (Änderungssatz)
Sowohl PLAN- als auch DEPLOY-Befehle listen alle DDL-Änderungen innerhalb der
plan_result.json-Datei auf. Das Changeset listet die durchgeführten oder geplanten Operationen auf (CREATE, ALTER, DROP) sowie die einzelnen betroffenen Attribute wie Kommentar, Zeitplan und Timeout.Wichtig
Während der Vorschauphase von DCM Projects ist nicht garantiert, dass das Änderungsset jede einzelne Änderung über alle Eigenschaften jedes Objekts hinweg erfasst.
Vorlagen
Da Definitionsdateien Jinja2-Vorlagen sind, gelten alle Einschränkungen für Jinja2-Vorlagen.
DCM-Vorlagenvariablen sind nicht für sensible Informationen wie Anmeldeinformationen gedacht. Die gerenderten SQL-Definitionen blenden keine Werte aus, die durch Umgebungsvariablen eingefügt wurden.
Wichtige Anwendungsfälle für DCM Projects¶
In diesem Abschnitt werden die wichtigsten Anwendungsfälle für DCM Projects beschrieben und wie sie dazu beitragen, die Herausforderungen zu bewältigen, denen Datenunternehmen in großem Umfang gegenüberstehen. Diese Anwendungsfälle lassen sich je nach Verantwortung des Teams in zwei allgemeine Kategorien einteilen:
DCM Projects für die Infrastrukturverwaltung¶
DCM Projects helfen bei der Bewältigung der folgenden Herausforderungen, auf die Plattformteams häufig treffen:
Wenn Plattformteams eine standardisierte Infrastruktur für mehrere Geschäftsbereiche bereitstellen und warten möchten, können sie DCM Projects verwenden, um einen Standardsatz von Objekten im Code als SQL-Dateien zu definieren. Und mit Jinja kann diese Vorlage parametrisiert (z. B. nach Teamnamen) und mehrfach bereitgestellt werden.
Beispiel: Erstellen eines dedizierten DCM project für jede Geschäftseinheit¶
Ein Ansatz besteht darin, ein dediziertes DCM project für jede Geschäftseinheit zu erstellen, wobei alle Projekte auf dieselben parametrisierten Definitionsdateien verweisen, wie im folgenden definitions.sql-Beispiel gezeigt:
Führen Sie das DCM project mit dem folgenden Befehl aus.
Beispiel: Erstellen eines einzelnen DCM project für mehrere Geschäftsbereiche¶
Bei diesem Ansatz verwalten Sie die Infrastruktur für mehrere Geschäftsbereiche in einem DCM project durch die Verwendung von Schleifen in Ihrer Jinja-Vorlage, wie im folgenden definitions.sql-Beispiel gezeigt:
Führen Sie das DCM project mit dem folgenden Befehl aus.
Dies erleichtert es Plattformteams und Administratoren, Änderungen vorzunehmen wie:
Neues Team zur Liste hinzufügen, um die bestehende Infrastrukturvorlage für dieses Team bereitzustellen.
Ein Team aus der Liste entfernen, um die Infrastruktur dieses Teams zu löschen.
Neue READ_ONLY-Rolle für alle Teams hinzufügen.
Ändern bestimmter Konfigurationen wie z. B. Berechtigungszuweisungen oder Warehouse-Größe über alle Teams hinweg oder für ein bestimmtes Team.
PLAN ausführen, um den aktuellen Status mit den erwarteten Standards zu vergleichen oder erneut bereitzustellen, um die Standards wiederherzustellen.
DCM Projects für Datenpipelines¶
DCM Projects helfen bei der Bewältigung der folgenden Herausforderungen, vor denen Feature-Teams häufig stehen:
Geschäftsbereiche, die ihre Datenpipelines einfach erstellen und verwalten möchten, können DCM Projects verwenden, um deren Geschäftslogik zu definieren, zu testen, bereitzustellen und zu iterieren.
Sie können Folgendes tun:
Verwalten Sie Snowflake-Objekttypen wie Tabellen, dynamische Tabellen, Ansichten, Warehouses, Rollen, Berechtigungen, Datenmetrikfunktionen und Erwartungen – alles in einem Projekt.
Testen und stellen Sie inkrementelle Änderungen an Pipelines bereit. Sie können Konfigurationen ändern, Transformationslogik implementieren und Spalten und Ansichten hinzufügen.
Zeigen Sie eine Vorschau der Datenbeispiele an, um die Transformationslogik zu validieren, bevor Sie Objekte bereitstellen.
Stellen Sie dieselbe Pipeline-Definition in mehreren Umgebungen bereit.
Testen Sie die Erwartungen an die Datenqualität in Umgebungen vor der Produktion, bevor Sie Änderungen in der Produktion vornehmen.
DCM Projects bietet zusätzliche Funktionen für die Erstellung und Verwaltung von Datenpipelines. Weitere Informationen dazu finden Sie unter DCM Projects für Datenpipelines.