Persönliche Datenbanken

Was ist eine persönliche Datenbank?

Eine persönliche Datenbank (PDB) ist eine systemeigene, benutzerverwaltete Datenbankinstanz, die automatisch von Snowflake bereitgestellt wird. Sie dient als dedizierter, persönlicher Speicherort, an dem Benutzende ihre eigenen Datenbankobjekte erstellen, organisieren und verwalten können.

Durch die automatische Bereitstellung entfällt die administrative Anforderung, dass Benutzende den Zugriff auf eine freigegebene Datenbank manuell auswählen oder anfordern müssen, wodurch eine dedizierte Entwicklungsumgebung sichergestellt wird. Wenn Benutzende aus dem System gelöscht werden, werden die zugehörige PDB und alle Objekte automatisch an die ACCOUNTADMIN-Eigentümerschaft übertragen.

Vorteile einer PDB

  • Persönliche Projekte organisieren: Benutzende können ihre eigenen Projekte in einer isolierten Umgebung organisieren, was Unordnung und potenzielle Namenskonflikte in freigegebenen Datenbanken reduziert.

  • Einfache Administrations-Governance: Alle dateibezogenen Entwicklungen werden vollständig von RBAC verwaltet.

PDB-Objekttypen

Derzeit unterstützen PDBs zwei primäre Objekttypen, die Benutzenden eine dedizierte Entwicklungsumgebung bieten: Arbeitsbereiche und Notebooks.

Workspaces

Die PDB wird erstellt, wenn ein Benutzender zum ersten Mal mit der Arbeitsbereichs-UI interagiert. Arbeitsbereiche sind dateibasierte Entitäten und erfordern Speicherplatz in einer Snowflake-Datenbank.

Notebooks

PDBs Unterstützung von verwalteten Computediensten für Snowflake Notebooks. Um die Ausführung von Code zu aktivieren, wird automatisch ein von Snowflake verwaltetes Dienstobjekt in der PDB erstellt. Dadurch wird sichergestellt, dass der Ausführungskontext des Notebooks an alle Rollen und Berechtigungen gebunden ist, die der Benutzende bereits besitzt. Dieses Objekt verbindet den Arbeitsbereich mit einem Snowpark Container Services-Computepool (SPCS), sodass Entwickelnde ihren Snowflake Notebooks-Code ausführen können.

Wichtig

Der Benutzende muss über die USAGE-Berechtigung für den zugehörigen Computepool verfügen, bevor ein Dienst zur Ausführung von Code erstellt werden kann. Diese Berechtigung kann von jeder Rolle mit der MANAGE GRANTS-Berechtigung gewährt werden.

Sicherheit

Die Architektur der PDB ist absichtlich einfach gestaltet und hält sich an das Prinzip der niedrigsten Berechtigung, das sicherstellt, dass alle Operationen streng auf den bestehenden Sicherheitskontext des Benutzenden beschränkt sind:

  • Kein neuer Datenzugriff: PDBs bieten keinen neuen oder erweiterten Zugang zu Daten oder zusätzliche Möglichkeiten zur Datenfreigabe. Benutzende können keine Daten aus einer regulären Datenbank in eine PDB verschieben.

  • Berechtigungskontext: Beliebige SQL-Abfragen, die innerhalb eines Arbeitsbereichs ausgeführt werden, werden mit genau demselben Satz von Rollen und Berechtigungen ausgeführt, die der Benutzende bereits besitzt. Dies spiegelt die Ausführungsumgebung einer Standard-Snowflake-Arbeitsbereichsdatei wider.

Bemerkung

Persönliche Datenbanken unterstützen auch persönliche Geheimnisse. Geheimnisobjekte sind ausschließlich Eigentum des Benutzenden. Dadurch wird standardmäßig sichergestellt, dass das Geheimnis privat bleibt, nur für den Benutzenden zugänglich ist und nicht unbeabsichtigt weitergegeben wird.

PDB-Verwaltung und -Sichtbarkeit

Benutzende mit Administratorrechten können die Nutzung von PDBs überwachen und kontrollieren, die dem System und nicht einer Rolle gehören. Die Nutzung einer PDB ist auf den Benutzenden beschränkt, dem diese zugewiesen ist. Objekte innerhalb einer PDB können nicht freigegeben werden.

Sichtbarkeit für Administratoren

Rollen mit der MANAGE GRANTS-Berechtigung haben Zugriff auf alle Objekte innerhalb des Kontos, einschließlich persönlicher Objekte, die einzelnen Benutzenden gehören. Zum Beispiel können Rollen wie ACCOUNTADMIN standardmäßig alle Datenbanken, einschließlich der persönlichen Datenbanken, einsehen. Diese Rollen können auch auf Details zu Schemas und deren Objekten in persönlichen Datenbanken zugreifen.

  • Um Details für alle persönlichen Datenbanken innerhalb eines Kontos anzuzeigen, fragen Sie die DATABASES Ansicht Kontonutzung ab:

    SELECT * FROM SNOWFLAKE.ACCOUNT_USAGE.DATABASES WHERE DATABASE_NAME LIKE 'USER$%'; 
    Copy
  • Um die Objekte anzuzeigen, die in einem bestimmten Arbeitsbereich vorhanden sind, verwenden Sie den folgenden Code:

    SHOW WORKSPACES IN DATABASE "USER$CMEYER"; 
    Copy
  • Um die persönliche Datenbank eines bestimmten Benutzenden anzuzeigen, verwenden Sie den folgenden Code:

    SHOW DATABASES LIKE 'USER$BOBR'; 
    Copy

    Für persönliche Datenbanken lautet der Wert in der kind-Spalte PERSONAL DATABASE.

  • Um Objekte in einer bestimmten persönlichen Datenbank anzuzeigen, verwenden Sie den folgenden Code:

    SHOW OBJECTS IN DATABASE "USER$<username>"; 
    Copy

Löschen von Objekten

  • Um Objekte in einer persönlichen Datenbank zu löschen, verwenden Sie den folgenden Code:

    DROP WORKSPACE "USER$JSMITH_DROP_WS_TEST".PUBLIC."drop_this_ws"; 
    Copy

Hinweise zu Kosten

  • Benutzende können keine Daten in Tabellen in ihren PDBs speichern.

  • Die Speicherkosten spiegeln nur die Größe der Arbeitsbereichsdateien und der zugehörigen Metadaten wider.

Einschränkungen

Benutzende mit Administratorrechten können die folgenden Aufgaben nicht ausführen:

  • Anzeigen von Dateinamen oder Dateiinhalten, die anderen Benutzenden gehören

  • Anzeigen, wie viel Speicherplatz für PDBs verwendet wird. PDBs erscheinen nicht in DATABASE_STORAGE_USAGE_HISTORY.

  • Begrenzen der Nutzung von Speicherplatz für jede PDB.

  • Löschen von PDBs oder Verhindern, dass einzelne Benutzende sie verwenden.

  • Erstellen neuer PDBs. Neue PDBs werden bei Bedarf erstellt, wenn ein Benutzender einen Arbeitsbereich erstellt.