Synthetische Datengenerierung

Generieren Sie synthetische Daten mit Zufallsgeneratoren, Algorithmen, statistischen Modellen und Large Language Models (LLMs), um reale Daten für die effektive Entwicklung und das Testen von Lösungen zu simulieren.

Synthetische Daten können ein leistungsstarkes Werkzeug bei der Entwicklung und dem Testen von Lösungen sein, insbesondere wenn tatsächliche Daten noch nicht vorhanden sind oder nicht verwendet werden dürfen. Synthetische oder künstlich erzeugte Daten können viele der Merkmale echter Daten aufweisen. Synthetische Daten werden in der Regel mit Zufallsgeneratoren, Algorithmen oder statistischen Modellen erstellt, um die Eigenschaften und Verteilungen echter Daten zu simulieren. Dies kann jedoch komplex sein, um Werkzeuge mit unterschiedlichen Eigenschaften herzustellen oder sich auf diese zu verlassen. Mit der Verfügbarkeit von Large Language Models (LLMs) können relevantere und schemaspezifische Daten generiert werden, die Merkmale berücksichtigen, die in natürlicher Sprache ausgedrückt werden.

Themen

Vorteile der synthetischen Datengenerierung

Die Generierung synthetischer Daten ermöglicht das Auffüllen von Datenbankmetadatenklonen und unterstützt Entwicklungs-, Test- und ML-Projekte, ohne sensible Daten aus ursprünglichen Tabellen zu verwenden.

Die synthetische Datengenerierung bietet folgende Vorteile:
  • Metadatenklone mit synthetischen Daten auffüllen: Ein Metadatenklon repliziert die Struktur einer Datenbank oder eines Schemas, ohne tatsächliche Daten einzuschließen. Select AI ermöglicht die Generierung synthetischer Daten zum Auffüllen dieser Klone, schützt sensible Daten und ermöglicht gleichzeitig die Entwicklung, das Testen und das Erstellen von Vorlagen. Dieser Ansatz unterstützt Performance- und Skalierbarkeitstests.

  • Neue Projekte starten: Beim Starten eines neuen Projekts sind möglicherweise keine Istdaten verfügbar. Synthetische Daten liefern realistische Proben, um Konzepte zu demonstrieren und Unterstützung für Projektvorschläge zu erhalten.

  • Validierung der Benutzererfahrung: Synthetische Daten helfen beim Testen von Benutzeroberflächen, indem sie verschiedene Datasets bereitstellen, um Designfehler, Performance- und Skalierbarkeitsprobleme aufzudecken.

  • Unterstützung von KI- und ML-Projekten: Synthetische Daten sind nützlich, um KI- und ML-Modelle zu trainieren, wenn echte Daten nicht verfügbar oder eingeschränkt sind. LLMs können Daten mit bestimmten Mustern generieren, um das Modelltraining und die Bewertung zu erleichtern.

Synthetische Daten generieren

Verwenden Sie die Funktion DBMS_CLOUD_AI.GENERATE_SYNTHETIC_DATA, um synthetische Daten zu generieren und die Daten mit AI-Aktionen zum Auswählen abzufragen.

Synthetische Datengenerierung überwachen und Fehler beheben

Bei der Generierung großer Datenmengen über viele Tabellen hinweg teilt Select AI Aufgaben zur Generierung synthetischer Daten in kleinere Blöcke auf und führt Aufgaben parallel aus. Der Status jedes Chunks wird in der Tabelle SYNTHETIC_DATA$<operation_id>_STATUS verfolgt.

Vorgänge zur Generierung synthetischer Daten werden in den Tabellen DBA_LOAD_OPERATIONS und USER_LOAD_OPERATIONS protokolliert. Verwenden Sie diese Tabellen, um den Vorgang DBMS_CLOUD_AI.GENERATE_SYNTHETIC_DATA zu überwachen. Weitere Informationen finden Sie unter Ladevorgänge von DBMS_CLOUD verfolgen.

Nachdem Sie die Generierung synthetischer Daten in einer bestimmten Session ausgeführt haben, können Sie die neueste <operation_id> aus USER_LOAD_OPERATION abrufen. Verwenden Sie dazu Folgendes:
SELECT max(id) FROM user_load_operations;

Um die synthetischen Datenvorgänge anzuzeigen, die in einer anderen Session ausgeführt werden, verwenden Sie die Ansicht DBA_LOAD_OPERATIONS.

Status der Generierung synthetischer Daten anzeigen

Die Statustabelle des Vorgangs zur Generierung synthetischer Daten zeigt den Fortschritt jeder Tabelle und den entsprechenden Chunk an. Die Spalte STATUS_TABLE in USER_LOAD_OPERATIONS oder DBA_LOAD_OPERATIONS zeigt den Namen der Statustabelle an. Der Tabellenname lautet SYNTHETIC_DATA$<operation_id>_STATUS und enthält die folgenden Spalten:

Name Datentyp Beschreibung

ID

NUMBER

Eindeutige ID des Datensatzes.

NAME

VARCHAR2

Qualifizierter Name der Tabelle, z.B. "ADB_USER"."EMPLOYEES"

BYTES

NUMBER

Gewünschte Anzahl Datensätze für diese Datengenerierungsaufgabe

ROWS_LOADED

NUMBER

Tatsächliche Anzahl der generierten Datensätze.

CHECKSUM

VARCHAR2

Startwert für den Primärschlüssel während dieser Datengenerierungsaufgabe.

LAST_MODIFIED

TIMESTAMP WITH TIME ZONE

Zeitstempel, der angibt, wann der Datensatz zuletzt geändert wurde.

STATUS

VARCHAR2

Status der Datengenerierungsaufgabe. Die gültigen Werte sind:
  • COMPLETED
  • FAILED
  • PENDING
  • SKIPPED

ERROR_CODE

NUMBER

Fehlercode, wenn die Datengenerierungsaufgabe nicht erfolgreich ist.

ERROR_MESSAGE

VARCHAR2

Fehlermeldung, wenn die Aufgabe nicht erfolgreich ist.

END_TIME

TIMESTAMP WITH TIME ZONE

Zeitstempel, der das Ende der Datengenerierungsaufgabe markiert.
Beispiel: Anzahl der Datensätze prüfen, die für jede Tabelle generiert wurden

Um die Anzahl der Datensätze zu prüfen, die für jede Tabelle generiert wurden, geben Sie Folgendes aus:

SELECT name, SUM(rows_loaded) FROM synthetic_data$<operation_id>_status group by name;

Fragen Sie ROWS_LOADED ab, um zu bestätigen, wie viele Zeilen für jeden Chunk geladen werden, und SUM(ROWS_LOADED) für Zeilen für jede Tabelle.

BEGIN
    DBMS_CLOUD_AI.GENERATE_SYNTHETIC_DATA(
        profile_name => 'GENAI',
        object_list => '[{"owner": "ADB_USER", "name": "DIRECTOR","record_count":150},
                         {"owner": "ADB_USER", "name": "MOVIE_ACTOR","record_count":300},
                         {"owner": "ADB_USER", "name": "CLASSES", "user_prompt":"all in fall semester","record_count":5},
                         {"owner": "ADB_USER", "name": "ACTOR","record_count":220},
                         {"owner": "ADB_USER", "name": "MOVIE","record_count":50}]'
    );
END;
/
 
 
-- Check loaded rows for each chunk
SQL> SELECT name, rows_loaded FROM synthetic_data$141_status order by name;
NAME                           ROWS_LOADED
------------------------------------------
"ADB_USER"."ACTOR"                        188
"ADB_USER"."ACTOR"                         32
"ADB_USER"."CLASSES"                        5
"ADB_USER"."DIRECTOR"                     150
"ADB_USER"."MOVIE"                         50
"ADB_USER"."MOVIE_ACTOR"                   38
"ADB_USER"."MOVIE_ACTOR"                  114
"ADB_USER"."MOVIE_ACTOR"                  148
 
 
 
-- Check loaded rows for each table
SQL> SELECT name, SUM(rows_loaded) FROM synthetic_data$141_status group by name;
 
NAME                      SUM(ROWS_LOADED)
------------------------------------------
"ADB_USER"."DIRECTOR"                     150
"ADB_USER"."MOVIE_ACTOR"                  300
"ADB_USER"."CLASSES"                        5
"ADB_USER"."ACTOR"                        220
"ADB_USER"."MOVIE"                         50