Tabellen
Tabellen definieren die Struktur Ihrer Daten.
Sie können neue Daten in Ihre Tabellen laden oder an einem vorhandenen Speicherort auf Daten verweisen. Sie können feingranulierte Zugriffskontrollberechtigungen für Tabellen definieren, indem Sie Tabellenberechtigungen erstellen.
Tabellen können entweder extern oder verwaltet werden.
Externe Tabellen
Eine externe Tabelle definiert eine Struktur für Daten, die an einem Speicherort gespeichert sind, der nicht von Oracle AI Data Platform verwaltet wird. Wenn Sie eine externe Tabelle in der AI Data Platform erstellen, wird der Metadatenlebenszyklus von AI Data Platform verwaltet. Wenn Sie eine externe Tabelle löschen, wird nur die Tabellendefinition gelöscht. Die von der externen Tabelle referenzierten Daten werden nicht gelöscht.
Stellen Sie sicher, dass Ihre Benutzer über die folgenden IAM-Policys verfügen, die zum Erstellen externer Tabellen erforderlich sind:
allow group <GroupName> to read buckets in compartment id <external-data-CompartmentId>
allow group <GroupName> to inspect objects in compartment id <external-data-CompartmentId>Für externe Tabellen sind zusätzliche IAM-Policys erforderlich. Weitere Informationen finden Sie unter IAM-Policys für Oracle AI Data Platform.
Verwaltete Tabellen
Eine verwaltete Tabelle definiert eine Struktur für Daten, die in der AI Data Platform gespeichert sind und nur von AI Data Platform-Benutzern aufgerufen werden können.
Wenn Sie eine verwaltete Tabelle löschen, werden die Tabellendefinition und die Tabellendaten gelöscht.
Unterstützte Tabellenformate
Tabellen können dateibasierte Formate wie CSV, JSON, Avro, Parquet und ORC oder Transaktionstabellenformate wie Delta und Apache Iceberg verwenden. Iceberg-Tabellen verwenden die Hadoop-Katalogimplementierung, um Tabellenmetadaten in Oracle Cloud Infrastructure Object Storage zu verwalten.
| Formatieren | Beschreibung | Verwendung |
|---|---|---|
| Durch Kommas getrennte Werte (CSV) | Die Daten werden als Textdatei mit einem angegebenen zeilenbasierten Dateiformat gespeichert, um die Daten zu strukturieren. Normalerweise ist die erste Zeile in der Datei eine Kopfzeile, die Spaltennamen für die Daten enthält. | Wird zum Austausch von tabellarischen Daten zwischen Systemen verwendet. Jede Zeile in der Datei ist eine Zeile in einer Tabelle. |
| JavaScript Object Notation (JSON) | Daten werden in einem textbasierten Standardformat gespeichert, um strukturierte Daten basierend auf der JavaScript-Objektsyntax darzustellen. JSON unterstützt Listen mit Objekten oder hierarchischen Strukturen. | Wird in Stream-Anwendungen verwendet. JSON vereinfacht die Speicherung von zugehörigen Daten mit komplexen Beziehungen in einem einzigen Dokument und vermeidet eine chaotische Listenkonvertierung in ein relationales Datenmodell. Beachten Sie, dass JSON nicht teilbar ist. |
| Avro | Daten werden in einem zeilenbasierten Binärformat gespeichert, während das Schema im JSON-Format gespeichert wird, um die Dateigröße zu minimieren und die Effizienz zu maximieren. Avro unterstützt die Schemaentwicklung zuverlässig, indem es hinzugefügte, fehlende und geänderte Felder verwaltet. So kann alte Software neue Daten lesen und neue Software alte Daten lesen. Wird auch als Datenserialisierungssystem bezeichnet. | Wird für die Datenspeicherung verwendet, da Avro-Dateien teilbar und komprimierbar sind. Der serialisierte zeilenbasierte Speicher ist ideal für umfangreiche Schreibvorgänge, wie das Einfügen von Daten in die AI Data Platform. Avro ist auch eine gute Wahl, wenn die Schemaentwicklung bei Schreibvorgängen mit hoher Geschwindigkeit kritisch ist. |
| Parquet | Die Daten werden in einem spaltenförmigen Datenformat gespeichert und sind hochkomprimierbar und spaltbar. Parkett ist für das Paradigma Write Once Read Many (WORM) optimiert. Es schreibt langsam, liest aber unglaublich schnell, besonders wenn Sie nur auf eine Teilmenge von Spalten zugreifen. | Wird zur Lösung von Big Data-Problemen verwendet, da Komprimierungsalgorithmen mit dem Spaltendatenformat besser funktionieren. Sie können Big Data in verschiedenen Formaten speichern, wie Bildern, Videos, Dokumenten und strukturierten Datentabellen. Parkett ist eine gute Wahl für schwere Arbeitslasten beim Lesen von Datenteilen. Beispiel: Wenn das Dataset viele Spalten enthält, Sie aber nur auf eine Teilmenge von Spalten zugreifen möchten. Ideal, wenn Sie von Spark abhängig sind oder wenn mehrere Services auf dieselben in Object Storage gespeicherten Daten zugreifen sollen. |
| Optimierte Zeilenspalte (ORC) | Daten werden in Zusammenstellungen von Zeilen in einer einzelnen Datei im Spaltenformat gespeichert. | Wird für die parallele Verarbeitung von Zeilen-Collections in einem Cluster verwendet. Ideal, wenn Lesetransaktionen mehr sind als Schreibtransaktionen oder wenn die Komprimierung Priorität hat. |
| Delta | Daten werden in einem spaltenförmigen Format gespeichert, das Parquet-Datendateien um ein JSON-dateibasiertes Transaktionslog für ACID-Transaktionen und skalierbare Metadatenbehandlung erweitert. | Wird für die Transaktionsunterstützung verwendet. |
| Iceberg | Ein offenes Tabellenformat, das Parquet-Datendateien über versionierte Metadaten, Manifeste und Snapshots verwaltet. AI Data Platform verwendet die Iceberg Hadoop-Katalogimplementierung. | Wird für ACID-Transaktionen, gleichzeitige Lese- und Schreibvorgänge, Schema- und Partitionsentwicklung, Zeitreiseabfragen, Aktualisierungen auf Zeilenebene, Upserts und Snapshot-Verwaltung verwendet. |
Unterstützte Datentypen
| Datentyp | Beschreibung |
|---|---|
| Byte-Typ | Stellt vorzeichenbehaftete 1-Byte-Ganzzahlen dar. Der Zahlenbereich liegt zwischen -128 und 127. |
| Kurztyp | Stellt vorzeichenbehaftete 2-Byte-Ganzzahlen dar. Der Zahlenbereich liegt zwischen -32768 und 32767. |
| Ganzzahltyp | Stellt vorzeichenbehaftete 4-Byte-Ganzzahlen dar. Der Zahlenbereich liegt zwischen -2147483648 und 2147483647. |
| Long-Typ | Stellt vorzeichenbehaftete 8-Byte-Ganzzahlen dar. Der Zahlenbereich reicht von -9223372036854775808 bis 9223372036854775807. |
| Float-Typ | Stellt Gleitkommazahlen mit einer 4-Byte-Präzision dar. |
| DoubleType | Stellt Gleitkommazahlen mit doppelter Genauigkeit von 8 Byte dar. |
| Dezimaltyp | Stellt mit Vorzeichen versehene Dezimalzahlen mit beliebiger Genauigkeit dar. Wird intern von java.math.BigDecimal unterstützt. Ein BigDecimal-Wert besteht aus einem unskalierten Ganzzahlwert mit beliebiger Genauigkeit und einer 32-Bit-Ganzzahlskala. |
| Stringtyp | Stellt Zeichenfolgenwerte dar. |
| VarcharType (Länge) | Eine Variante von StringType mit einer Längenbegrenzung. Das Schreiben von Daten schlägt fehl, wenn die Eingabezeichenfolge die Längenbegrenzung überschreitet. |
| CharType (Länge) | Eine Variante von VarcharType (Länge), die feste Länge ist. Beim Lesen der Spalte vom Typ CharType(n) werden immer Zeichenfolgenwerte der Länge n zurückgegeben. Beim Vergleich der Eigenschaftstypspalte wird die kurze Spalte auf die längere Länge aufgefüllt. |
| Binärtyp | Stellt Bytefolgenwerte dar. |
| Boolescher Typ | Stellt boolesche Werte dar. |
| Datumstyp | Stellt Werte dar, die Werte der Felder Jahr, Monat und Tag ohne Zeitzone enthalten. |
| TimestampType | Zeitstempel mit lokaler Zone (TIMESTAMP_LTZ). Es stellt Werte dar, die Werte der Felder Jahr, Monat, Tag, Stunde, Minute und Sekunde mit der lokalen Zeitzone der Session enthalten. Der Zeitstempelwert stellt einen absoluten Zeitpunkt dar. |
| ZeitstempelNTZType | Zeitstempel ohne Zeitzone (TIMESTAMP_NTZ). Es stellt Werte dar, die Werte aus den Feldern Jahr, Monat, Tag, Stunde, Minute und Sekunde enthalten. Alle Vorgänge werden ohne Berücksichtigung einer Zeitzone durchgeführt. |
| YearMonthIntervalType (startField, endField) | Stellt ein Jahr-Monatsintervall dar, das aus einer zusammenhängenden Teilmenge von MONAT, Monaten innerhalb von Jahren [0..11] und JAHR, Jahren im Bereich [0..178956970] besteht. |
| DayTimeIntervalType (startField, endField) | Stellt ein Tagesintervall dar, das aus einer zusammenhängenden Teilmenge von SECOND, Sekunden innerhalb von Minuten und möglicherweise Bruchteilen einer Sekunde besteht [0..59.999999], MINUTE, Minuten innerhalb von Stunden [0..59], STUNDEN, Stunden innerhalb von Tagen [0..23] und TAG, Tage im Bereich [0..106751991]. |
| ArrayType(elementType, containsNull) | Stellt Werte dar, die eine Folge von Elementen mit dem Typ elementType enthalten. containsNull wird verwendet, um anzugeben, ob Elemente in einem ArrayType-Wert Nullwerte aufweisen können. |
| MapType(keyType, valueType, valueContainsNull) | Stellt Werte dar, die aus einer Gruppe von Schlüssel/Wert-Paaren bestehen. Der Datentyp der Schlüssel wird durch keyType beschrieben, und der Datentyp der Werte wird durch valueType beschrieben. Für einen MapType-Wert dürfen Schlüssel keine Nullwerte aufweisen. valueContainsNull wird verwendet, um anzugeben, ob Werte eines MapType-Wertes Nullwerte aufweisen können. |
| StructType(Felder) | Stellt Werte mit der Struktur dar, die durch eine Folge von StructFields (Feldern) beschrieben wird. |
| StructField(Name, dataType, auf Null setzbar) | Stellt ein Feld in einem StructType dar. Der Name eines Feldes wird durch den Namen angegeben. Der Datentyp eines Feldes wird durch dataType angegeben. Dieser Wert wird verwendet, um anzugeben, ob Werte dieser Felder Nullwerte aufweisen können. |
Einschränkungen
Die folgenden Einschränkungen gelten für Tabellen in AI Data Platform:
- Sie können keine externe Tabelle für Datendateien oder Verzeichnisse in/auf einem Volume definieren.
- Sie können keine externe Tabelle in einem Bucket und/oder seinem Verzeichnis definieren, das bereits für eine andere externe Tabelle oder ein externes Volume verwendet wird
- Ansichten können nicht im Masterkatalog angezeigt/gelistet werden.
Schemaentwicklung
Mit der Schemaentwicklung in Oracle AI Data Platform können Benutzer mit den erforderlichen Berechtigungen eine verwaltete Tabelle mit SQL in einem Notizbuch aktualisieren.
Dies ist nützlich, wenn sich eine Tabellendefinition im Laufe der Zeit ändert, um neue Spalten, entfernte Spalten, umbenannte Spalten, Partitionsänderungen oder Tabellenumbenennungen zu unterstützen, ohne das Dataset neu zu erstellen. Die unterstützten Formate sind Parquet, Avro und Delta.
Unterstützte Operationen
- Tabelle umbenennen: Wird für Delta, Parquet, Avro und Iceberg unterstützt
- Spalten hinzufügen: Wird für Delta, Parquet, Avro und Iceberg unterstützt
- Spalten löschen: Wird für Delta und Iceberg unterstützt; wird für Parquet und Avro nicht unterstützt
- Spalten ändern oder umbenennen: Wird für Delta und Iceberg unterstützt; wird für Parquet und Avro nicht unterstützt
- Spalten ersetzen: Wird für Delta und Iceberg unterstützt
- Partitionen hinzufügen: Wird für Parquet und Avro über DDL unterstützt. Für Delta und Iceberg werden Partitionen automatisch erstellt, wenn Daten geschrieben werden. Einzelne Partitionen werden nicht über DDL hinzugefügt. Iceberg unterstützt das Hinzufügen von Feldern zur Partitionsspezifikation mit
ALTER TABLE ... ADD PARTITION FIELD. - Drop-Partitionen: Wird für Parquet und Avro über DDL unterstützt. Entfernen Sie für Delta die relevanten Daten, und führen Sie VACUUM aus. Iceberg unterstützt nicht das Löschen einzelner Partitionen über DDL. Löschen Sie stattdessen die relevanten Zeilen. Iceberg unterstützt das Entfernen von Feldern aus der Partitionsspezifikation mit
ALTER TABLE ... DROP PARTITION FIELD. - Datentyp ändern: Wird für Parquet oder Avro nicht unterstützt. Delta erfordert möglicherweise eine CTAS- oder Overrite-Schema-Workaround. Iceberg unterstützt nur kompatible Typpromotions, wie
INTbisBIGINT,FLOAT to DOUBLE, und erhöht die Dezimalgenauigkeit überALTER TABLE. Eingeschränkte oder inkompatible Konvertierungen werden nicht unterstützt.
Externe Tabelle erstellen
Sie können eine externe Tabelle mit Daten in OCI Object Storage erstellen.
Tabellen bearbeiten
Sie können die Details der von Ihnen verwalteten Tabellen ändern.
Hinweis:
Änderungen an externen Katalogtabellen, die in Oracle AI Data Platform vorgenommen wurden, werden nicht in den Remotekatalog übertragen.- Navigieren Sie zu Ihrem Schema.
- Wählen Sie die Registerkarte Tabellen aus.
- Klicken Sie neben der Tabelle, die Sie bearbeiten möchten, auf
Aktionen.- Klicken Sie auf Umbenennen, um den Namen der Tabelle zu ändern. Geben Sie einen neuen Namen ein, und drücken Sie die Eingabetaste.
- Klicken Sie auf Beschreibung bearbeiten, um die Beschreibung der Tabelle zu ändern. Geben Sie die neue Beschreibung an, und klicken Sie auf Speichern.
Tabellen-Details anzeigen
Sie können die Details von Tabellen im Schema anzeigen.
- Navigieren Sie zu Ihrem Schema. Klicken Sie auf die Registerkarte Tabellen.
- Klicken Sie auf den Namen des Volumes, für das Sie Details anzeigen möchten. Sie können auch auf
Aktionen neben dem Volume klicken und dann auf Anzeigen klicken. - Klicken Sie auf die Registerkarte Details.
Tabellen löschen
Sie können Tabellen aus dem von Ihnen verwalteten Schema löschen.
- Navigieren Sie zu dem Schema, aus dem Sie die Tabelle löschen möchten.
- Klicken Sie auf die Registerkarte Tabellen.
- Klicken Sie neben der zu löschenden Tabelle auf
Aktionen, und klicken Sie auf Löschen. - Klicken Sie auf Löschen.

