Synthetische Datengenerierung

Generieren Sie synthetische Daten mithilfe von Zufallsgeneratoren, Algorithmen, statistischen Modellen und Large Language Models (LLMs), um echte Daten für die effektive Entwicklung und Prüfung von Lösungen zu simulieren.

Synthetische Daten können ein leistungsfähiges 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 Eigenschaften von realen Daten haben. Synthetische Daten werden in der Regel mit Zufallsgeneratoren, Algorithmen oder statistischen Modellen erstellt, um die Eigenschaften und Verteilungen von realen Daten zu simulieren. Dies kann jedoch komplex sein, um Werkzeuge mit Merkmalen unterschiedlicher Raffinesse herzustellen oder sich darauf 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 Generierung synthetischer Daten

Die synthetische Datengenerierung ermöglicht das Auffüllen von Klonen für Datenbankmetadaten und unterstützt Entwicklungs-, Test- und ML-Projekte, ohne sensible Daten aus ursprünglichen Tabellen zu verwenden.

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 es der synthetischen Datengenerierung, diese Klone zu füllen und vertrauliche Daten zu schützen und gleichzeitig die Entwicklung, das Testen und das Erstellen von Vorlagen zu ermöglichen. Dieser Ansatz unterstützt Performance- und Skalierbarkeitstests.

  • Neue Projekte starten: Beim Start 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 zum Training von KI- und ML-Modellen, wenn echte Daten nicht verfügbar oder eingeschränkt sind. LLMs können Daten mit bestimmten Mustern generieren, um das Modelltraining und -scoring zu erleichtern.

Synthetische Daten generieren

Verwenden Sie die Funktion DBMS_CLOUD_AI.GENERATE_SYNTHETIC_DATA, um synthetische Daten zu generieren und die Daten mit Select AI-Aktionen abzufragen.

Synthetische Datengenerierung überwachen und Fehler beheben

Wenn große Datenmengen über viele Tabellen generiert werden, teilt Select AI Aufgaben zur Generierung synthetischer Daten in kleinere Chunks auf und führt Aufgaben parallel aus. Der Status jedes Chunks wird in der Tabelle SYNTHETIC_DATA$<operation_id>_STATUS verfolgt.

Synthetische Datengenerierungsvorgänge 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 in 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 in einer anderen Session ausgeführten synthetischen Datenvorgänge anzuzeigen, verwenden Sie die Ansicht DBA_LOAD_OPERATIONS.

Status der Generierung synthetischer Daten anzeigen

Die Statustabelle des Synthetischen Datengenerierungsvorgangs 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

Der qualifizierte Name der Tabelle, beispielsweise "ADB_USER"."EMPLOYEES"

BYTES

NUMBER

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

ROWS_LOADED

NUMBER

Tatsächliche Anzahl generierter 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 war.

END_TIME

TIMESTAMP WITH TIME ZONE

Zeitstempel für das Ende der Datengenerierungsaufgabe.
Beispiel: Anzahl der für jede Tabelle generierten Datensätze prüfen

Um die Anzahl der für jede Tabelle generierten Datensätze zu prüfen, 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