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.
Tâches
- Avant de commencer.
- Etape 1 : planification de la conservation et de l'archivage des données.
- Etape 2 : choisissez le format d'archive.
- Etape 3 : archivage des données historiques vers Object Storage.
- Etape 4 : archivage des données brutes ou rejetées dans Object Storage.
- Etape 5 : vérification des objets d'archive.
- Etape 6 facultative : chargement d'une archive Data Pump dans une table.
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>__IOTUtilisez 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_DATAavec 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_DATAavec le format Data Pump lorsque la table inclut la colonne BLOBcontentet 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.
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; /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.
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; /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; /
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/
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_DATAou 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_DATAlorsque 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_DATAou Data Pump Import pour recharger les données archivées lorsque vous devez inspecter ou restaurer des enregistrements plus anciens.