Tableaux

Utilisez des tables pour définir la structure de vos données.

Vous pouvez charger de nouvelles données dans vos tables ou référencer des données dans un emplacement existant. Vous pouvez définir des droits d'accès de contrôle d'accès de niveau fin sur les tables en créant des droits d'accès de table. Pour plus d'informations, reportez-vous à Droits d'accès de table.

Pour partager une table, reportez-vous à Partage de données.

Les tables peuvent être gérées ou externes.

Tables gérées

Une table gérée définit une structure pour les données stockées dans AI Data Platform et accessibles uniquement par les utilisateurs de AI Data Platform.

Lorsque vous supprimez une table gérée, la définition et les données de la table sont supprimées.

Tables externes

Une table externe définit une structure pour les données stockées dans un emplacement non géré par Oracle AI Data Platform. Lorsque vous créez une table externe dans Plate-forme de données AI, le cycle de vie des métadonnées est géré par Plate-forme de données AI. Lorsque vous supprimez une table externe, seule la définition de la table est supprimée. Les données référencées par la table externe ne sont pas supprimées.

Assurez-vous que les stratégies IAM suivantes sont requises pour créer des tables externes aux utilisateurs :

allow group <GroupName> to read buckets in compartment id <external-data-CompartmentId>
allow group <GroupName> to inspect objects in compartment id <external-data-CompartmentId>

Des stratégies IAM supplémentaires sont requises pour les tables externes. Pour plus d'informations, reportez-vous à Stratégies IAM pour Oracle AI Data Platform.

Formats de table pris en charge

Les tables peuvent utiliser des formats basés sur des fichiers tels que CSV, JSON, Avro, Parquet et ORC, ou des formats de table transactionnelle tels que Delta et Apache Iceberg. Les tables d'iceberg utilisent l'implémentation du catalogue Hadoop pour gérer les métadonnées de table dans Oracle Cloud Infrastructure Object Storage.

Format Description Utilisation
Comma-separated values (CSV) Les données sont stockées sous forme de fichier texte avec un format de fichier basé sur les lignes spécifié pour structurer les données. En général, la première ligne du fichier est une ligne d'en-tête qui contient les noms de colonne des données. Utilisé pour échanger des données tabulaires entre les systèmes. Chaque ligne du fichier est une ligne d'une table.
JavaScript Object Notation (JSON) Les données sont stockées dans un format texte standard pour représenter des données structurées en fonction de la syntaxe d'objet JavaScript. JSON prend en charge les listes d'objets ou les structures hiérarchiques. Utilisé dans les applications de flux. JSON simplifie le stockage des données associées avec des relations complexes dans un seul document et évite la conversion chaotique des listes en un modèle de données relationnel. Notez que JSON n'est pas splittable.
Avro Les données sont stockées dans un format binaire basé sur des lignes, tandis que le schéma est stocké au format JSON afin de réduire la taille du fichier et d'optimiser l'efficacité. Avro offre une prise en charge fiable de l'évolution des schémas en gérant les champs ajoutés, manquants et modifiés. Cela permet aux anciens logiciels de lire de nouvelles données et aux nouveaux logiciels de lire d'anciennes données. Egalement appelé système de sérialisation des données. Utilisé pour le stockage de données car les fichiers Avro sont divisibles et compressibles. Le stockage en ligne sérialisé est idéal pour les transactions d'écriture volumineuses, telles que l'insertion de données dans AI Data Platform. Avro est également un bon choix lorsque l'évolution du schéma est critique lors des écritures à grande vitesse.
Parquet Les données sont stockées dans un format de données en colonnes et sont hautement compressibles et séparables. Parquet est optimisé pour le paradigme Write Once Read Many (WORM). Il écrit lentement mais se lit incroyablement rapidement, surtout lorsque vous accédez uniquement à un sous-ensemble de colonnes. Utilisé pour résoudre les problèmes de Big Data car les algorithmes de compression fonctionnent mieux avec le format de données en colonnes. Vous pouvez stocker le Big Data dans différents formats, tels que des images, des vidéos, des documents et des tables de données structurées. Parquet est un bon choix pour les charges de travail lourdes lors de la lecture de parties de données. Par exemple, lorsque l'ensemble de données comporte de nombreuses colonnes, mais que vous souhaitez uniquement accéder à un sous-ensemble de colonnes. Idéal lorsque vous dépendez de Spark ou que vous voulez que plusieurs services accèdent aux mêmes données stockées dans Object Storage.
Colonne de ligne optimisée (ORC) Les données sont stockées dans des ensembles de lignes dans un fichier unique au format colonne. Utilisé pour le traitement parallèle des ensembles de lignes dans un cluster. Idéal lorsque les transactions de lecture sont plus que des transactions d'écriture ou lorsque la compression est prioritaire.
Lac delta Les données sont stockées dans un format en colonnes qui étend les fichiers de données Parquet avec un journal de transactions basé sur un fichier JSON pour les transactions ACID et la gestion évolutive des métadonnées. Utilisé pour la prise en charge des transactions.
Iceberg Format de table ouverte qui gère les fichiers de données Parquet via des métadonnées avec numéro de version, des manifestes et des instantanés. AI Data Platform utilise l'implémentation du catalogue Iceberg Hadoop. Utilisation pour les transactions ACID, les lectures et écritures simultanées, l'évolution des schémas et des partitions, les requêtes de déplacement temporel, les mises à jour au niveau ligne, les mises à jour et la gestion des clichés.

Types de données pris en charge

Type de données Description
Type d'octet Représente des nombres entiers signés sur 1 octet. La plage de nombres est comprise entre -128 et 127.
Type abrégé Représente des nombres entiers signés sur 2 octets. La gamme de nombres va de -32768 à 32767.
Type entier Représente des nombres entiers signés sur 4 octets. La plage de nombres est comprise entre -2147483648 et 2147483647.
Type long Représente des nombres entiers signés sur 8 octets. La gamme de nombres va de -9223372036854775808 à 9223372036854775807.
Type flottant Représente des nombres à virgule flottante de précision unique de 4 octets.
Type double Représente des nombres à virgule flottante de double précision de 8 octets.
Type décimal Nombres décimaux signés à précision arbitraire. Soutenu en interne par java.math.BigDecimal. Une valeur BigDecimal se compose d'un entier de précision arbitraire sans échelle et d'une échelle entière de 32 bits.
Type de chaîne Représente les valeurs de chaîne de caractères.
VarcharType(longueur) Variante de StringType ayant une limite de longueur. L'écriture des données échouera si la chaîne d'entrée dépasse la limite de longueur.
Type de caractère (longueur) Une variante de VarcharType(longueur) qui est de longueur fixe. La lecture d'une colonne de type CharType(n) renvoie toujours des valeurs de chaîne de longueur n. La comparaison des colonnes de type caractère permet d'ajouter la valeur courte à la valeur plus longue.
Type binaire Représente les valeurs de séquence d'octets.
Type booléen Représente les valeurs booléennes
Type de date Représente les valeurs des champs année, mois et jour, sans fuseau horaire.
TimestampType Horodatage avec fuseau horaire local (TIMESTAMP_LTZ). Il représente les valeurs des champs année, mois, jour, heure, minute et seconde, avec le fuseau horaire local de la session. La valeur d'horodatage représente un point dans le temps absolu.
HorodatageNTZType Horodatage sans fuseau horaire (TIMESTAMP_NTZ). Il représente les valeurs des champs année, mois, jour, heure, minute et seconde. Toutes les opérations sont effectuées sans tenir compte d'un fuseau horaire.
AnnéeMoisTypeInterval(startField, endField) Représente un intervalle annuel-mois composé d'un sous-ensemble contigu de MOIS, mois dans les années [0..11] et ANNEE, années dans la plage [0..178956970].
DayTimeIntervalType (champ de début, champ de fin) Représente un intervalle de jour composé d'un sous-ensemble contigu de SECOND, secondes dans les minutes et éventuellement des fractions d'une seconde [0..59.99999], MINUTE, minutes dans les heures [0..59], HOUR, heures dans les jours [0..23] et DAY, jours dans la plage [0..106751991].
ArrayType(elementType, containsNull) Représente les valeurs comprenant une séquence d'éléments avec le type elementType. containsNull est utilisé pour indiquer si les éléments d'une valeur ArrayType peuvent avoir des valeurs NULL.
MapType(keyType, valueType, valueContainsNull) Représente des valeurs comprenant un ensemble de paires clé-valeur. Le type de données des clés est décrit par keyType et le type de données des valeurs est décrit par valueType. Pour une valeur MapType, les clés ne sont pas autorisées à avoir des valeurs NULL. valueContainsNull est utilisé pour indiquer si les valeurs d'une valeur MapType peuvent avoir des valeurs NULL.
StructType(champs) Représente les valeurs avec la structure décrite par une séquence de StructFields (champs).
StructField(nom, dataType, nullable) Représente un champ dans un type de structure. Le nom d'un champ est indiqué par son nom. Le type de données d'un champ est indiqué par dataType. La valeur NULL est utilisée pour indiquer si les valeurs de ces champs peuvent avoir des valeurs NULL.

Limites

Les limitations suivantes s'appliquent aux tables de la plate-forme de données AI :

  • Vous ne pouvez pas définir de table externe sur des fichiers de données ou des répertoires dans ou sur un volume.
  • Vous ne pouvez pas définir une table externe sur un bucket ou son répertoire déjà utilisé pour une autre table externe ou un autre volume externe
  • Les vues ne peuvent pas être affichées ou répertoriées dans le catalogue principal.

Evolution du schéma

L'évolution des schémas dans Oracle AI Data Platform permet aux utilisateurs disposant des droits d'accès requis de mettre à jour une table gérée à l'aide du langage SQL dans un bloc-notes.

Cela est utile lorsqu'une définition de table change au fil du temps pour prendre en charge de nouvelles colonnes, des colonnes enlevées, des colonnes renommées, des modifications de partition ou des noms de table sans recréer l'ensemble de données de toutes pièces. Les formats pris en charge sont Parquet, Avro, Delta et Iceberg.

Opérations prises en charge

Les opérations d'évolution de schéma suivantes ont été analysées pour les tables gérées :

Opération Delta Parquet Avro Iceberg
Renommer la table Pris en charge Pris en charge Pris en charge Pris en charge
Ajouter des colonnes Pris en charge Pris en charge Pris en charge Pris en charge
Supprimer les colonnes Pris en charge Non prises en charge Non prises en charge Pris en charge
Modifier ou renommer des colonnes Pris en charge Non prises en charge Non prises en charge Pris en charge
Remplacer les colonnes Pris en charge Non prises en charge Non prises en charge Pris en charge
Ajouter des partitionnements Les partitions sont créées automatiquement lorsque les données sont écrites. Vous ne pouvez pas ajouter des partitions individuelles via le langage DDL. Pris en charge par DDL Pris en charge par DDL Les partitions sont créées automatiquement lorsque les données sont écrites. Vous ne pouvez pas ajouter des partitions individuelles via le langage DDL. Vous pouvez ajouter des champs à la spécification de partition à l'aide de ALTER TABLE ... ADD PARTITION FIELD.
Supprimer les partitions Supprimez les données pertinentes et exécutez VACUUM. Pris en charge Pris en charge Vous ne pouvez pas supprimer des partitions individuelles via DDL. Supprimez plutôt les lignes pertinentes. Vous pouvez supprimer des champs de la spécification de partition à l'aide de ALTER TABLE ... DROP PARTITION FIELD.
Modifier le type de données Peut nécessiter un CTAS ou une solution de contournement du schéma d'écrasement. Non prises en charge Non prises en charge Pris en charge uniquement pour les promotions de type compatibles, telles que INT à BIGINT, FLOAT to DOUBLE et l'augmentation de la précision décimale via ALTER TABLE. Les conversions étroites et incompatibles ne sont pas prises en charge.

Créer une table gérée

Vous pouvez créer une table gérée contenant les données structurées pour le schéma que vous gérez.

  1. Ouvrez la boîte de dialogue Créer une table.
    • Dans le volet de navigation de gauche :
      1. Cliquez sur Créer Icône Créer, puis sélectionnez Table.
      2. Dans la boîte de dialogue Sélectionner l'emplacement de la table, sélectionnez le catalogue et le schéma pour lesquels créer la table, puis cliquez sur Sélectionner.
    • Dans Icône Catalogue maître Catalogue maître :
      1. Dans l'arborescence du catalogue principal ou dans l'onglet Catalogues, cliquez sur le catalogue pour lequel vous voulez créer la table afin de l'ouvrir.
      2. Dans l'onglet Schémas, cliquez sur le schéma pour lequel créer la table afin de l'ouvrir.
      3. Cliquez sur Ajouter au schéma et sélectionnez Table.

    Créer une table avec le type de table Géré sélectionné

  2. Dans la liste déroulante Type de table, sélectionnez Géré.
  3. Dans la liste déroulante Format de table géré, sélectionnez le format de la table :
    • Avro
    • CSV
    • Lac delta
    • JSON
    • ORC
    • Parquet
    • Fichier texte
  4. Glissez-déplacez un fichier avec les données de votre table ou cliquez sur Parcourir pour localiser le fichier et l'ajouter.
  5. Si vous avez sélectionné CSV ou JSON, configurez les options avancées.
    • CSV : indiquez si le fichier comporte des en-têtes, si les données peuvent s'étendre sur plusieurs lignes, l'encodage, le caractère d'échappement, le délimiteur et le guillemet.
    • JSON : indiquez si les données peuvent s'étendre sur plusieurs lignes, si les commentaires et les apostrophes sont autorisés, ainsi que l'encodage.
  6. Si elle est affichée, cliquez sur Aperçu des données.
  7. Entrez le nom de la table et la description.
  8. Facultatif : si la table est très volumineuse, développez Clés de partition (facultatif). Cliquez sur Ajouter une partition et sélectionnez une colonne de données.
  9. Facultatif : pour ajouter des propriétés de table aux métadonnées du catalogue de données, développez Propriétés de table (facultatif). Cliquez sur Ajouter une propriété et entrez la propriété et sa valeur.
  10. Cliquez sur Créer.

Créer une table externe

Vous pouvez créer une table externe pour interroger les données directement dans OCI Object Storage sans déplacer ni dupliquer les données dans Oracle AI Data Platform.

  1. Ouvrez la boîte de dialogue Créer une table.
    • Dans le volet de navigation de gauche :
      1. Cliquez sur Créer Icône Créer, puis sélectionnez Table.
      2. Dans la boîte de dialogue Sélectionner l'emplacement de la table, sélectionnez le catalogue et le schéma pour lesquels créer la table, puis cliquez sur Sélectionner.
    • Dans Icône Catalogue maître Catalogue maître :
      1. Dans l'arborescence du catalogue principal ou dans l'onglet Catalogues, cliquez sur le catalogue pour lequel vous voulez créer la table afin de l'ouvrir.
      2. Dans l'onglet Schémas, cliquez sur le schéma pour lequel créer la table afin de l'ouvrir.
      3. Cliquez sur Ajouter au schéma et sélectionnez Table.

    Créer une page de table ouverte avec le type de table Externe sélectionné

  2. Dans la liste déroulante Type de table, sélectionnez Externe.
  3. Dans la liste déroulante Format de données d'entrée, sélectionnez le format de la table :
    • Avro
    • CSV
    • Lac delta
    • JSON
    • ORC
    • Parquet
    • Fichier texte
  4. Si vous avez sélectionné CSV ou JSON, configurez les options avancées.
    • CSV : indiquez si le fichier comporte des en-têtes, si les données peuvent s'étendre sur plusieurs lignes, l'encodage, le caractère d'échappement, le délimiteur et le guillemet.
    • JSON : indiquez si les données peuvent s'étendre sur plusieurs lignes, si les commentaires et les apostrophes sont autorisés, ainsi que l'encodage.
  5. Recherchez et sélectionnez le compartiment, le bucket et le dossier (facultatif) à partir d'OCI Object Storage où les données sont stockées. Les objets que vous pouvez sélectionner dépendent des droits d'accès IAM de l'utilisateur connecté.
  6. Entrez le nom de la table et la description.
  7. Facultatif : si la table est très volumineuse, développez Clés de partition (facultatif). Cliquez sur Ajouter une partition et sélectionnez une colonne de données.
  8. Facultatif : pour ajouter des propriétés de table aux métadonnées du catalogue de données, développez Propriétés de table (facultatif). Cliquez sur Ajouter une propriété et entrez la propriété et sa valeur.
  9. Cliquez sur Créer.

Visualiser les détails de la table

Vous pouvez visualiser les détails d'une table pour vérifier sa configuration et ses métadonnées.

L'onglet Détails d'une table affiche la clé, le type et le format de la table, ainsi que le moment et l'auteur de la création et de la dernière mise à jour de la table. Il affiche également les propriétés du tableau.

  1. Dans le panneau de navigation de gauche, cliquez sur Icône Catalogue maître Catalogue maître.
  2. Dans l'arborescence du catalogue maître, développez le catalogue et le schéma qui contiennent la table à afficher, puis cliquez sur Tables.
  3. Dans l'onglet Tables, localisez la table, cliquez sur Icône Actions à trois points Actions, puis sur Visualiser.
  4. Cliquez sur Détails.

Modification du nom d'une table

Vous pouvez renommer une table que vous gérez si son contenu ou son objectif a changé.

Remarques :

Les modifications apportées aux tables externes dans Oracle AI Data Platform ne sont pas transmises au catalogue distant dans OCI Object Storage.
  1. Dans le panneau de navigation de gauche, cliquez sur Icône Catalogue maître Catalogue maître.
  2. Dans l'arborescence du catalogue maître, développez le catalogue et le schéma contenant la table à modifier, puis cliquez sur Tables.
  3. Dans l'onglet Tables, localisez la table, cliquez sur Icône Actions à trois points Actions, puis sur Renommer.
  4. Modifiez le nom de la table et appuyez sur Entrée.

Modifier une description de table

Vous pouvez modifier la description d'une table que vous gérez si son contenu ou son objectif a changé.

Remarques :

Les modifications apportées aux tables externes dans Oracle AI Data Platform ne sont pas transmises au catalogue distant dans OCI Object Storage.
  1. Dans le panneau de navigation de gauche, cliquez sur Icône Catalogue maître Catalogue maître.
  2. Dans l'arborescence du catalogue maître, développez le catalogue et le schéma contenant la table à modifier, puis cliquez sur Tables.
  3. Dans l'onglet Tables, localisez la table, cliquez sur Icône Actions à trois points Actions, puis sur Modifier la description.
  4. Modifiez la description de la table et cliquez sur Enregistrer.

Suppression d'une table

Vous pouvez supprimer une table d'un schéma que vous gérez lorsqu'elle n'est plus nécessaire.

Remarques :

Les données dans OCI Object Storage référencées par une table externe ne sont pas supprimées.
  1. Dans le panneau de navigation de gauche, cliquez sur Icône Catalogue maître Catalogue maître.
  2. Dans l'arborescence du catalogue maître, développez le catalogue et le schéma contenant la table à supprimer, puis cliquez sur Tables.
  3. Dans l'onglet Tables, localisez la table, cliquez sur Icône Actions à trois points Actions, puis sur Supprimer.
  4. Cliquez sur Supprimer.