Scénario : archivage des données IoT vers Object Storage

Archivez les anciennes données de schéma de base de données de domaine IoT de la base de données Autonomous AI vers Object Storage après l'expiration de la fenêtre de conservation des données actives afin de pouvoir accéder aux données une fois la fenêtre de conservation des données actives expirée.

Utilisez ce scénario pour définir une limite de conservation pour le schéma de base de données de domaine IoT, exporter des données qui n'ont plus besoin de rester dans l'environnement de base de données Autonomous AI en direct. Conservez l'archive dans Object Storage pour un accès ou une restauration à long terme. Le schéma actif reste axé sur la télémétrie, les tableaux de bord et le dépannage actuels, tandis qu'Object Storage conserve les anciens enregistrements en dehors de l'environnement actif. Exportez les données historiques dans un format de texte convivial pour les requêtes, tel que Parquet. Exportez les données brutes et rejetées en tant que fichiers dump Data Pump lorsque vous devez conserver la colonne BLOB content.

Avant de commencer

Vous devez disposer des privilèges système requis pour lire et écrire dans DATA_PUMP_DIR. Reportez-vous à Utilisation de Data Pump. Pour terminer ce scénario, vous devez accéder à la base de données Autonomous AI, au schéma de base de données de domaine IoT et au bucket Object Storage qui reçoit les fichiers d'archive.

Confirmez que les éléments suivants sont configurés pour votre utilisateur :

  • Créez ou sélectionnez un bucket Object Storage existant pour les fichiers exportés. Pour plus d'informations, reportez-vous à Putation de données dans Object Storage.
    L'utilisateur doit être membre d'un groupe d'utilisateurs spécifique disposant des droits d'accès permettant de créer un bucket. Cette stratégie permet au groupe d'utilisateurs indiqué de tout faire avec les buckets et les objets associés.
    Allow group <user-group-in-customer-tenancy> to manage objects in compartment <bucket-compartment> where target.bucket.name = '<bucket-name>'
  • Vérifiez que l'utilisateur de base de données peut interroger le schéma IoT source : <domain-short-id>__IOT

    Utilisez une stratégie IoT pour permettre à un groupe d'utilisateurs d'avoir un accès complet aux ressources IoT dans un compartiment spécifique.

    Allow group <group-name> to manage iot-family in compartment <compartment-name>.

    Vous pouvez également utiliser cette stratégie pour permettre à un groupe d'utilisateurs d'accéder en lecture seule aux ressources IoT d'un compartiment spécifique.

    Allow group <group-name> to read iot-family in compartment <compartment-name>.
  • Créez des informations d'identification de base de données pour Object Storage ou utilisez des informations d'identification existantes qui peuvent écrire dans le bucket dans Object Storage. Reportez-vous à Configuration des informations d'identification et des paramètres d'emplacement pour les banques d'objets.

    Pour créer des informations d'identification de base de données, utilisez cette instruction. Remplacez votre OCID utilisateur, l'ID de location par votre location de service IoT et la clé d'API OCI par votre clé d'API OCI :

  • BEGIN
        dbms_cloud.create_credential(
            credential_name => 'IOT_OBJ_STORE_CRED',
            user_ocid       => 'ocid1.user.oc1..<>',
            tenancy_ocid    => 'ocid1.tenancy.oc1..<>',
            private_key     => '-----BEGIN PRIVATE KEY-----
    <>
    -----END PRIVATE KEY-----
    OCI_API_KEY',
            fingerprint     => '<>'
        );
    EXCEPTION
    WHEN OTHERS THEN
       dbms_output.put_line('Credential IOT_OBJ_STORE_CRED creation error.');
    END;
    / 

Etape 1 : Planifier la conservation et l'archivage des données

La conservation des données définit la durée pendant laquelle les enregistrements IoT restent dans le schéma de base de données de domaine IoT actif. Gardez les données récentes en ligne lorsque les applications, les tableaux de bord, les analyses opérationnelles ou les workflows de dépannage ont besoin d'un accès à faible latence. Lorsque les enregistrements se trouvent en dehors de la fenêtre de conservation, archivez-les dans Object Storage avant de les enlever du schéma actif. Cette approche limite la croissance de la base de données opérationnelle tout en conservant les anciennes télémesures, les charges utiles brutes et les messages rejetés pour l'audit, l'investigation, l'analyse hors ligne ou la restauration. Pour plus d'informations, reportez-vous à Mise à jour de la conservation des données d'un domaine IoT.

Choisissez la limite de rétention de vos exigences métier, de reporting et de conformité. Utilisez la même limite dans la requête d'export et dans tout processus de nettoyage ultérieur afin que la limite d'archivage soit claire. Les colonnes d'horodatage telles que time_observed pour les données historiques et time_received pour les données brutes ou rejetées sont des clés de conservation classiques. Enregistrez le bucket, le préfixe d'objet, le format d'export, le nom des informations d'identification, la table source et la période pour chaque groupe d'archives afin de pouvoir rechercher et recharger les données ultérieurement.

Étape 2 : Choisissez le format d'archive

Après avoir défini la limite de conservation, choisissez le format d'export en fonction de la table de base de données de domaine IoT à archiver et si vous devez conserver les données BLOB.

Données incluses dans l'historique
Utilisez DBMS_CLOUD.EXPORT_DATA avec un format de texte tel que Parquet, CSV, JSON ou XML. Parquet est utile lorsque des données plus anciennes doivent rester interrogeables en dehors de l'environnement IoT actif.
Données brutes ou rejetées
Utilisez DBMS_CLOUD.EXPORT_DATA avec le format Data Pump lorsque la table inclut la colonne BLOB content et que vous devez conserver la charge utile d'origine complète.

Etape 3 : archivage des données historiques vers Object Storage

Les données historiques sont déjà interprétées par la plate-forme IoT. Exportez les lignes historiques obsolètes de la fenêtre de conservation en direct dans un format adapté aux requêtes afin que les fonctions de reporting ou d'analyse hors ligne puissent lire l'archive à partir d'Object Storage.

  1. Cet exemple exporte les enregistrements de plus de trois mois vers un objet Parquet dans Object Storage.

    begin
      dbms_cloud.export_data(
        credential_name => 'IOT_OBJ_STORE_CRED',
        file_uri_list   => 'https://objectstorage.<region>.oraclecloud.com/n/<namespace>/b/<bucket>/o/iot-archive/historized/historized_data_older_than_3_months.parquet',
        format          => json_object(
                             'type' value 'parquet'
                           ),
        query           => q'[
          select *
          from <domain-short-id>__IOT.HISTORIZED_DATA
          where time_observed < add_months(systimestamp, -3)
        ]'
      );
    end;
    /
  2. Pour charger l'archive Parquet dans une table cible ultérieurement, créez une table cible compatible et utilisez DBMS_CLOUD.COPY_DATA.

    begin
      dbms_cloud.copy_data(
        table_name      => 'HISTORIZED_DATA_ARCHIVE',
        credential_name => 'IOT_OBJ_STORE_CRED',
        file_uri_list   => 'https://objectstorage.<region>.oraclecloud.com/n/<namespace>/b/<bucket>/o/iot-archive/historized/historized_data_older_than_3_months.parquet',
        format          => json_object(
                             'type' value 'parquet'
                           )
      );
    end;
    /

Etape 4 : archivage des données brutes ou rejetées dans Object Storage

Les données brutes et rejetées peuvent inclure la colonne BLOB content. Utilisez un export Data Pump lorsque le processus de conservation déplace ces lignes hors de l'environnement actif et que vous devez conserver la ligne complète, y compris le contenu BLOB. Pour archiver des tables de base de données IoT, utilisez Export de données d'une base de données Autonomous AI vers une banque d'objets ou vers d'autres bases de données Oracle.

  1. Exporter les données brutes :

    begin
      dbms_cloud.export_data(
        credential_name => 'IOT_OBJ_STORE_CRED',
        file_uri_list   => 'https://objectstorage.<region>.oraclecloud.com/n/<namespace>/b/<bucket>/o/iot-archive/raw/raw_data_older_than_3_months.dmp',
        format          => json_object(
                             'type'        value 'datapump',
                             'compression' value 'HIGH',
                             'version'     value 'LATEST'
                           ),
        query           => q'[
          select *
          from <domain-short-id>__IOT.RAW_DATA
          where time_received < add_months(systimestamp, -3)
        ]'
      );
    end;
    /
  2. Exporter les données rejetées :

    begin
      dbms_cloud.export_data(
        credential_name => 'IOT_OBJ_STORE_CRED',
        file_uri_list   => 'https://objectstorage.<region>.oraclecloud.com/n/<namespace>/b/<bucket>/o/iot-archive/rejected/rejected_data_older_than_3_months.dmp',
        format          => json_object(
                             'type'        value 'datapump',
                             'compression' value 'HIGH',
                             'version'     value 'LATEST'
                           ),
        query           => q'[
          select *
          from <domain-short-id>__IOT.REJECTED_DATA
          where time_received < add_months(systimestamp, -3)
        ]'
      );
    end;
    /
Remarque

Utilisez DBMS_CLOUD.COPY_DATA pour les formats de texte tels que Parquet, CSV, JSON ou XML. Pour les fichiers dump Data Pump, utilisez l'import Data Pump lorsque vous devez restaurer les données archivées.

Etape 5 : vérification des objets d'archive

Utilisez la commande de l'interface de ligne de commande Object Storage oci os object list pour vérifier si les fichiers d'archive ont été écrits dans le bucket Object Storage. Pour plus d'informations, reportez-vous à Liste des buckets Object Storage et à Liste des objets Object Storage dans un bucket.

oci os object list \
  --namespace <namespace> \
  --bucket-name <bucket> \
  --prefix iot-archive/
Remarque

Après avoir vérifié les fichiers d'archive, suivez le processus de nettoyage de conservation approuvé pour enlever la période archivée du schéma IoT actif.

Etape facultative 6 : Chargement d'une archive Data Pump dans une table

Utilisez cette procédure de copie lorsque vous devez lire les lignes brutes ou rejetées archivées à partir d'Object Storage dans une table de base de données Autonomous AI pour investigation, validation ou restauration ciblée. La procédure lit le fichier dump Data Pump à partir d'Object Storage et le charge dans la table cible indiquée. Elle ne fait pas partie de l'archive du chemin d'inclusion IoT actif. Pour une restauration complète au niveau du schéma, utilisez Data Pump Import. Pour plus d'informations, reportez-vous à Téléchargement des fichiers dump, exécution de l'import Data Pump et nettoyage de l'archive d'objets.

Chargez le fichier dump à partir d'Object Storage dans une table d'archive cible :

begin
  dbms_cloud.copy_data(
    table_name      => 'RAW_DATA_ARCHIVE',
    credential_name => 'IOT_OBJ_STORE_CRED',
    file_uri_list   => 'https://objectstorage.<region>.oraclecloud.com/n/<namespace>/b/<bucket>/o/iot-archive/raw/raw_data_older_than_3_months.dmp',
    format          => json_object(
                         'type'        value 'datapump',
                         'rejectlimit' value 0
                       )
  );
end;
/ 

FAQ

Cette FAQ décrit les témoignages d'utilisateurs d'Object Storage Archive dans ce scénario.

Quelles données doivent rester dans le schéma de base de données IoT en direct ?
Conservez les données dont les applications, les tableaux de bord, les analyses opérationnelles et les workflows de dépannage ont besoin pour un accès à faible latence. Archivez les anciens enregistrements avant qu'ils ne tombent en dehors de la fenêtre de conservation que vous définissez à l'étape 1 : Conservation et archivage des données de plan.
Dois-je utiliser le même format d'archive pour chaque table IoT ?
Non Utilisez un format de texte convivial pour les requêtes, tel que Parquet, pour les données historiques lorsque vous souhaitez inspecter ou analyser des enregistrements plus anciens en dehors de l'environnement actif. Utilisez le format Data Pump pour les données brutes ou rejetées lorsque vous devez conserver la ligne complète, y compris la colonne BLOB content.
Puis-je interroger les données IoT archivées ultérieurement ?
Oui. Pour les archives Parquet, CSV, JSON ou XML, chargez l'objet dans une table cible compatible avec DBMS_CLOUD.COPY_DATA ou utilisez un workflow de reporting qui peut lire le format exporté. Pour les fichiers dump Data Pump, utilisez l'import Data Pump ou la procédure de copie illustrée à l'étape facultative 6 : chargement d'une archive Data Pump dans une table lorsque vous devez inspecter les lignes archivées dans une table de base de données.
Que dois-je enregistrer pour chaque groupe d'archives ?
Enregistrez la table source, la limite de conservation, la période, le bucket Object Storage, le préfixe d'objet, le format d'export, le nom des informations d'identification et le résultat de la vérification. Ces métadonnées vous aident à trouver l'objet d'archive approprié et à recharger les données ultérieurement.
Pourquoi l'étape de restauration facultative utilise-t-elle DBMS_CLOUD.COPY_DATA ?
Utilisez DBMS_CLOUD.COPY_DATA lorsque vous avez besoin d'une charge ciblée à partir d'une archive Object Storage vers une table de base de données pour la validation, l'examen ou la restauration partielle. Utilisez Data Pump Import lorsque vous avez besoin d'un workflow de restauration Data Pump complet.

Etapes suivantes

Après avoir archivé et vérifié les données IoT, poursuivez les tâches de conservation et de restauration de votre environnement.

  • Mettez à jour le paramètre de conservation des données du domaine IoT ou le processus de nettoyage afin que le schéma actif conserve uniquement la fenêtre opérationnelle requise.
  • Appliquez vos exigences en matière de conservation, de cycle de vie et de contrôle d'accès Object Storage au bucket et aux préfixes d'archive.
  • Documentez l'emplacement de l'archive, la table source, la période, le format et le résultat de la vérification pour les futures demandes d'audit ou de restauration.
  • Utilisez DBMS_CLOUD.COPY_DATA ou Data Pump Import pour recharger les données archivées lorsque vous devez inspecter ou restaurer des enregistrements plus anciens.