Utilisation d'Oracle NoSQL Database Migrator
Découvrez Oracle NoSQL Database Migrator et comment l'utiliser pour la migration de données.
Oracle NoSQL Database Migrator est un outil qui vous permet de migrer des tables Oracle NoSQL d'une source de données à une autre. Cet outil peut fonctionner sur des tables avec Oracle NoSQL Database Cloud Service, Oracle NoSQL Database sur place et AWS S3. L'outil Migrator prend en charge plusieurs formats de données et types de média physique différents. Les formats de données pris en charge sont JSON, Parquet, JSON au format MongoDB, JSON au format DynamoDB et des fichiers CSV. Les types de média physique pris en charge sont les fichiers, le service de stockage d'objets pour OCI, Oracle NoSQL Database sur place, Oracle NoSQL Database Cloud Service et AWS S3.
Cet article contient les rubriques suivantes :
Aperçu
Oracle NoSQL Database Migrator vous permet de déplacer les tables Oracle NoSQL d'une source de données à une autre, telle qu'Oracle NoSQL Database sur place ou en nuage ou même un fichier JSON simple.
De nombreuses situations peuvent vous obliger à migrer des tables NoSQL depuis ou vers une base de données Oracle NoSQL Database. Par exemple, une équipe de développeurs qui améliorent une application NoSQL Database pourrait vouloir tester leur code mis à jour dans l'instance locale d'Oracle NoSQL Database Cloud Service (NDCS) à l'aide de cloudsim. Pour vérifier tous les scénarios de test possibles, ils doivent définir les données de test de la même manière que les données réelles. Pour ce faire, ils doivent copier les tables NoSQL de l'environnement de production vers leur instance NDCS locale, l'environnement cloudim. Dans une autre situation, les développeurs NoSQL peuvent avoir besoin de déplacer leurs données d'application de leur environnement sur place vers le nuage, et vice versa, pour le développement ou les tests.
Dans tous ces cas, et bien d'autres, vous pouvez utiliser Oracle NoSQL Database Migrator pour déplacer les tables NoSQL d'une source de données à une autre, telle qu'Oracle NoSQL Database sur place ou en nuage ou même un fichier JSON simple. Vous pouvez également copier des tables NoSQL à partir d'un fichier d'entrée JSON au format MongoDB, d'un fichier d'entrée JSON au format DynamoDB (stocké dans la source AWS S3 ou à partir de fichiers), ou d'un fichier CSV dans votre base de données NoSQL sur place ou en nuage.
Comme illustré dans la figure suivante, l'utilitaire NoSQL Database Migrator agit comme un connecteur ou un tuyau entre la source de données et la cible (appelé évier). Essentiellement, cet utilitaire exporte les données de la source sélectionnée et les importe dans le puits. Cet outil est orienté table, c'est-à-dire que vous ne pouvez déplacer les données qu'au niveau table. Une seule tâche de migration fonctionne sur une seule table et prend en charge la migration des données de table de la source vers le puits dans différents formats de données.
Oracle NoSQL Database Migrator est conçu de manière à pouvoir prendre en charge des sources et des puits supplémentaires à l'avenir. Pour obtenir la liste des sources et des puits pris en charge par Oracle NoSQL Database Migrator à partir de la version courante, voir Sources et puits pris en charge. 
Description de l'illustration migrator_overview.png
Terminologie utilisée avec Oracle NoSQL Database Migrator
En savoir plus sur les différents termes utilisés dans le diagramme ci-dessus.
-
Source : Entité à partir de laquelle les tables NoSQL sont exportées pour migration. Quelques exemples de sources sont Oracle NoSQL Database sur place ou en nuage, un fichier JSON, un fichier JSON au format MongoDB, un fichier JSON au format DynamoDB et des fichiers CSV.
-
Dissipateur : Entité qui importe les tables NoSQL à partir de NoSQL Database Migrator. Voici quelques exemples de puits : Oracle NoSQL Database sur place ou en nuage et fichier JSON.
L'outil NoSQL Database Migrator prend en charge différents types de sources et de puits (médias physiques ou référentiels de données) et formats de données (c'est-à-dire comment les données sont représentées dans la source ou le puits). Les formats de données pris en charge sont JSON, Parquet, JSON au format MongoDB, JSON au format DynamoDB et des fichiers CSV. Les types de source et de récepteur pris en charge sont les fichiers, le service de stockage d'objets pour OCI, Oracle NoSQL Database sur place et Oracle NoSQL Database Cloud Service.
-
Panier de migration : Les données d'une source seront transférées vers le puits par NoSQL Database Migrator. Cela peut être visualisé en tant que tuyau de migration.
-
Transformations : Vous pouvez ajouter des règles pour modifier les données de table NoSQL dans le canal de migration. Ces règles sont appelées transformations. Oracle NoSQL Database Migrator permet uniquement les transformations de données dans les champs ou les colonnes de niveau supérieur. Il ne vous permet pas de transformer les données dans les champs imbriqués. Voici quelques exemples de transformations autorisées :
-
Supprimer ou ignorer une ou plusieurs colonnes,
-
Renommer une ou plusieurs colonnes, ou
-
Agréger plusieurs colonnes en un seul champ, généralement un champ JSON.
-
-
Fichier de configuration : Un fichier de configuration permet de définir tous les paramètres requis pour l'activité de migration dans un format JSON. Plus tard, vous transmettez ce fichier de configuration en tant que paramètre unique à la commande
runMigratorà partir de l'interface de ligne de commande. Un format de fichier de configuration typique ressemble à celui indiqué ci-dessous.{ "source": { "type" : <source type>, //source-configuration for type. }, "sink": { "type" : <sink type>, //sink-configuration for type. }, "transforms" : { //transforms configuration. }, "migratorVersion" : "<migrator version>", "abortOnError" : <true|false> }Groupe Paramètres Obligatoire (O/N) Objet Valeurs prises en charge sourcetypeY Représente la source à partir de laquelle migrer les données. La source fournit des données et des métadonnées (le cas échéant) pour la migration. Pour connaître la valeur typepour chaque source, voir Sources et puits pris en charge.sourceconfiguration source pour le type Y Définit la configuration de la source. Ces paramètres de configuration sont spécifiques au type de source sélectionné ci-dessus. Voir Modèles de configuration source pour obtenir la liste complète des paramètres de configuration pour chaque type de source. sinktypeY Représente le puits vers lequel migrer les données. L'évier est la cible ou la destination de la migration. Pour connaître la valeur typepour chaque source, voir Sources et puits pris en charge.sinkconfiguration de l'évier pour le type Y Définit la configuration de l'évier. Ces paramètres de configuration sont spécifiques au type de puits sélectionné ci-dessus. Voir Modèles de configuration de puits pour obtenir la liste complète des paramètres de configuration pour chaque type de puits. transformsconfiguration des transformations N Définit les transformations à appliquer aux données dans le canal de migration. Voir Modèles de configuration de transformation pour obtenir la liste complète des transformations prises en charge par NoSQL Data Migrator. - migratorVersionN Version de NoSQL Data Migrator - - abortOnErrorN Indique s'il faut arrêter l'activité de migration en cas d'erreur ou non.
La valeur par défaut est Vrai pour indiquer que la migration s'arrête chaque fois qu'une erreur de migration se produit.
Si vous réglez cette valeur à Faux, la migration se poursuit même en cas d'échec d'enregistrements ou d'autres erreurs de migration. Les enregistrements en échec et les erreurs de migration seront enregistrés en tant qu'AVERTISSEMENTS sur le terminal de l'interface de ligne de commande.Vrai, Faux
Note : Comme le fichier JSON est sensible à la casse, tous les paramètres définis dans le fichier de configuration sont sensibles à la casse, sauf indication contraire.
Sources et récepteurs pris en charge
Cette rubrique fournit la liste des sources et des puits pris en charge par Oracle NoSQL Database Migrator.
Vous pouvez utiliser n'importe quelle combinaison d'une source et d'un récepteur valides de cette table pour l'activité de migration. Toutefois, vous devez vous assurer qu'au moins une des extrémités, c'est-à-dire la source ou l'évier, doit être un produit Oracle NoSQL. Vous ne pouvez pas utiliser NoSQL Database Migrator pour déplacer les données de table NoSQL d'un fichier à un autre.
| Type (value) | Format (valeur) | Source valide | Lavabo valide |
|---|---|---|---|
Oracle NoSQL Database (nosqldb) |
S.O. | Y | Y |
Oracle NoSQL Database Cloud Service (nosqldb_cloud) |
S.O. | Y | Y |
Système de fichiers (file) |
JSON (json) |
Y | Y |
Système de fichiers (file) |
MongoDB JSON (mongodb_json) |
Y | N |
Système de fichiers (file) |
DynamoDB JSON (dynamodb_json) |
Y | N |
Système de fichiers (file) |
Parquet (parquet) |
N | Y |
Système de fichiers (file) |
CSV (csv) |
Y | N |
Service de stockage d'objets pour OCI (object_storage_oci) |
JSON (json) |
Y | Y |
Service de stockage d'objets pour OCI (object_storage_oci) |
MongoDB JSON (mongodb_json) |
Y | N |
Service de stockage d'objets pour OCI (object_storage_oci) |
Parquet (parquet) |
N | Y |
Service de stockage d'objets pour OCI (object_storage_oci) |
CSV (csv) |
Y | N |
| AWS S3 | DynamoDB JSON (dynamodb_json) |
Y | N |
Note : De nombreux paramètres de configuration sont communs à la configuration de la source et du récepteur. Pour plus de facilité de référence, la description de ces paramètres est répétée pour chaque source et évier dans les sections de documentation, qui expliquent les formats de fichier de configuration pour différents types de sources et éviers. Dans tous les cas, la syntaxe et la sémantique des paramètres portant le même nom sont identiques.
Sécurité des sources et des récepteurs
Certains types de source et d'évier contiennent des informations de sécurité facultatives ou obligatoires à des fins d'authentification.
Toutes les sources et tous les puits qui utilisent des services dans Oracle Cloud Infrastructure (OCI) peuvent utiliser certains paramètres pour fournir des informations de sécurité facultatives. Ces informations peuvent être fournies à l'aide d'un fichier de configuration OCI ou d'un principal d'instance.
Les sources et les puits d'Oracle NoSQL Database nécessitent des informations de sécurité obligatoires si l'installation est sécurisée et utilise une authentification basée sur Oracle Wallet. Ces informations peuvent être fournies en ajoutant un fichier JAR au répertoire <MIGRATOR_HOME>/lib.
Authentification avec les principaux d'instance
Les principaux d'instance sont une fonction de service IAM qui permet aux instances d'être des acteurs (ou principaux) autorisés pouvant effectuer des actions sur les ressources de service. Chaque instance de calcul possède sa propre identité et s'authentification à l'aide des certificats qui y sont ajoutés.
Oracle NoSQL Database Migrator offre une option pour se connecter à des sources et des puits de stockage d'objets NoSQL en nuage et OCI à l'aide de l'authentification par principal d'instance. Il n'est pris en charge que lorsque l'outil NoSQL Database Migrator est utilisé dans une instance de calcul OCI, par exemple, l'outil NoSQL Database Migrator s'exécutant dans une machine virtuelle hébergée sur OCI. Pour activer cette fonction, utilisez l'attribut useInstancePrincipal du fichier de configuration de la source et du récepteur NoSQL en nuage. Pour plus d'informations sur les paramètres de configuration pour différents types de sources et de puits, voir Modèles de configuration des sources et Modèles de configuration des puits.
Pour plus d'informations sur les principaux d'instance, voir Appel de services à partir d'une instance.
Autorisation dans les sources et les collecteurs d'Oracle NoSQL Database Cloud Service
L'accès aux ressources d'Oracle NoSQL Database Cloud Service, telles que les tables, les espaces-tables et les API, est géré au moyen des politiques du service de gestion des identités et des accès (IAM). Ainsi, seuls les utilisateurs ou les applications disposant des autorisations d'inspection, de lecture, d'utilisation ou de gestion de table appropriées dans un compartiment spécifique peuvent interagir avec ces ressources. Pour plus d'informations, voir Gestion de l'accès aux tables NDCS.
Lorsque vous utilisez l'utilitaire Migrator pour importer ou exporter des données à partir de tables Oracle NoSQL Database Cloud Service, vos autorisations IAM effectives déterminent les ressources dans lesquelles vous pouvez lire ou écrire. Si un utilisateur d'un groupe défini tente une action au-delà de ses privilèges autorisés, l'utilitaire Migrator retourne l'erreur d'autorisation correspondante telle que fournie par OCI IAM.
Par exemple, le service IAM pour OCI refuse toute tentative d'importation de données dans une table Oracle NoSQL Database Cloud Service si votre groupe d'utilisateurs n'a que l'autorisation "lecture" sur la table. Un message d'erreur similaire à celui qui suit s'affiche dans les journaux :
[INSUFFICIENT_PERMISSION] Authorization failed or requested resource not found
Flux de travail pour Oracle NoSQL Database Migrator
Découvrez les différentes étapes impliquées dans l'utilisation de l'utilitaire de migration d'Oracle NoSQL Database pour migrer vos données NoSQL.
Le flux de haut niveau des tâches impliquées dans l'utilisation de NoSQL Database Migrator est illustré dans la figure ci-dessous.

Description de l'illustration migrator_flow.png
Télécharger l'utilitaire NoSQL Data Migrator
L'utilitaire Migrator d'Oracle NoSQL Database est disponible pour téléchargement à partir de la page Téléchargements Oracle NoSQL. Une fois que vous l'avez téléchargé et décompressé sur votre machine, vous pouvez accéder à la commande runMigrator à partir de l'interface de ligne de commande.
Note : L'utilitaire Migrator d'Oracle NoSQL Database nécessite l'exécution de Java version 11 ou supérieure.
Identifier la source et le puits
Avant d'utiliser l'outil de migration, vous devez identifier la source et le puits de données. Par exemple, si vous voulez migrer une table NoSQL d'Oracle NoSQL Database sur place vers un fichier au format JSON, votre source sera Oracle NoSQL Database et l'évier sera un fichier JSON. Assurez-vous que la source et l'évier identifiés sont pris en charge par Oracle NoSQL Database Migrator en se référant aux sources et aux éviers pris en charge. Il s'agit également d'une phase appropriée pour décider du schéma de votre table NoSQL dans la cible ou le récepteur et les créer.
-
Identifier le schéma de table de puits : Si le puits est Oracle NoSQL Database sur place ou en nuage, vous devez identifier le schéma pour la table de puits et vous assurer que les données sources correspondent au schéma cible. Si nécessaire, utilisez des transformations pour mapper les données sources à la table de puits.
-
Schéma par défaut : NoSQL Database Migrator fournit une option pour créer une table de récepteur avec le schéma par défaut sans avoir à prédéfinir le schéma pour la table.
JSON au format MongoDB :
Si la source est un fichier JSON au format MongoDB, le schéma par défaut de la table sera le suivant :
CREATE TABLE IF NOT EXISTS <tablename>(id STRING, document JSON,PRIMARY KEY(SHARD(id))Où :
-
tablename = valeur fournie pour l'attribut table dans la configuration.
-
id = _id valeur de chaque document du fichier source JSON exporté MongoDB.
-
document = Pour chaque document du fichier exporté MongoDB, le contenu excluant le champ
_idest agrégé dans la colonne du document.
Note :
- Si la valeur _id n'est pas fournie en tant que chaîne dans le fichier JSON au format MongoDB, NoSQL Database Migrator la convertit en chaîne avant de l'insérer dans le schéma par défaut.
- Si la table
<tablename>existe déjà dans Oracle NoSQL Database sur place ou en nuage et que vous voulez migrer des données vers la table à l'aide de la configurationdefaultSchema, vous devez vous assurer que la table existante contient la colonne ID en minuscules (ID) et est de type STRING.
JSON au format DynamoDB :
Si la source est un fichier JSON au format DynamoDB, le schéma par défaut de la table sera le suivant :
CREATE TABLE IF NOT EXISTS <tablename>(DDBPartitionKey_name DDBPartitionKey_type, [DDBSortKey_name DDBSortKey_type],DOCUMENT JSON, PRIMARY KEY(SHARD(DDBPartitionKey_name),[DDBSortKey_name]))Où :
-
tablename = valeur fournie pour la table d'évier dans la configuration
-
DDBPartitionKey_name = valeur fournie pour la clé de partition dans la configuration
-
DDBPartitionKey_type = valeur fournie pour le type de données de la clé de partition dans la configuration
-
DDBSortKey_name = valeur fournie pour la clé de tri dans la configuration, le cas échéant
-
DDBSortKey_type = valeur fournie pour le type de données de la clé de tri dans la configuration, le cas échéant
-
DOCUMENT = Tous les attributs sauf la partition et la clé de tri d'un élément de table DynamoDB regroupés dans une colonne NoSQL JSON
Si le format source est un fichier CSV, un schéma par défaut n'est pas pris en charge pour la table cible. Vous pouvez créer un fichier de schéma avec une définition de table contenant le même nombre de colonnes et de types de données que le fichier CSV source. Pour plus de détails sur la création du fichier de schéma, voir Fourniture du schéma de table.
Autres sources valides :
Pour toutes les autres sources, le schéma par défaut est le suivant :
CREATE TABLE IF NOT EXISTS <tablename> (id LONG GENERATED ALWAYS AS IDENTITY, document JSON, PRIMARY KEY(id))Où :
-
tablename = valeur fournie pour l'attribut table dans la configuration.
-
id = Valeur LONG générée automatiquement.
-
document = L'enregistrement JSON fourni par la source est agrégé dans la colonne du document.
-
-
-
Fourniture du schéma de table : NoSQL Database Migrator permet à la source de fournir des définitions de schéma pour les données de table à l'aide de l'attribut schemaInfo. L'attribut schemaInfo est disponible dans toutes les sources de données pour lesquelles aucun schéma implicite n'est déjà défini. Les magasins de données de puits peuvent choisir l'une des options suivantes.
-
Utilisez le schéma par défaut défini par NoSQL Database Migrator.
-
Utilisez le schéma fourni par la source.
-
Remplacez le schéma fourni par la source en définissant son propre schéma. Par exemple, si vous souhaitez transformer les données du schéma source vers un autre schéma, vous devez remplacer le schéma fourni par la source et utiliser la fonction de transformation de l'outil NoSQL Database Migrator.

Description de l'illustration source_sink_schema_example.png
Le fichier de schéma de table, par exemple,
mytable_schema.ddlpeut inclure des énoncés LDD de table. L'outil NoSQL Database Migrator exécute ce fichier de schéma de table avant de lancer la migration. L'outil de migration ne prend pas en charge plus d'une instruction LDD par ligne dans le fichier de schéma. Par exemple,CREATE TABLE IF NOT EXISTS(id INTEGER, name STRING, age INTEGER, PRIMARY KEY(SHARD(ID))) -
Note : La migration échouera si la table est présente au niveau du récepteur et que le LDD dans schemaPath est différent de la table.
- Créer une table de puits : Une fois le schéma de la table de puits identifié, créez la table de puits au moyen de l'interface de ligne de commande d'administration ou à l'aide de l'attribut
schemaInfodu fichier de configuration du puits. Voir Modèles de configuration de récepteur.
Note : Si la source est un fichier CSV, créez un fichier avec les commandes LDD pour le schéma de la table cible. Indiquez le chemin d'accès au fichier dans le paramètre schemaInfo.schemaPath du fichier de configuration de l'évier.
Exécutez la commande runMigrator
Le fichier exécutable runMigrator est disponible dans les fichiers NoSQL Database Migrator extraits. Vous devez installer Java version 11 ou supérieure et bash sur votre système pour exécuter avec succès la commande runMigrator.
Vous pouvez exécuter la commande runMigrator de deux façons :
-
En créant le fichier de configuration à l'aide des options d'exécution de la commande
runMigrator, comme illustré ci-dessous.[~]$ ./runMigrator configuration file is not provided. Do you want to generate configuration? (y/n) [n]: y ... ...-
Lorsque vous appelez l'utilitaire
runMigrator, il fournit une série d'options d'exécution et crée le fichier de configuration en fonction de vos choix pour chaque option. -
Une fois que l'utilitaire a créé le fichier de configuration, vous avez le choix de poursuivre l'activité de migration dans la même exécution ou d'enregistrer le fichier de configuration pour une migration future.
-
Quelle que soit votre décision de poursuivre ou de différer l'activité de migration avec le fichier de configuration généré, le fichier sera disponible pour les modifications ou la personnalisation afin de répondre à vos besoins futurs. Vous pouvez utiliser le fichier de configuration personnalisé pour la migration plus tard.
-
-
En transmettant un fichier de configuration créé manuellement (au format JSON) en tant que paramètre d'exécution à l'aide de l'option
-cou--config. Vous devez créer le fichier de configuration manuellement avant d'exécuter la commanderunMigratoravec l'option-cou--config. Pour obtenir de l'aide sur les paramètres de configuration de la source et du récepteur, voir Informations de référence sur l'outil de migration pour Oracle NoSQL Database.[~]$ ./runMigrator -c </path/to/the/configuration/json/file>
Note : NoSQL Database Migrator consomme des unités de lecture lors de l'exportation de données à partir d'une table Oracle NoSQL Cloud Service vers un évier valide.
Progression de l'outil de migration de journalisation
L'outil NoSQL Database Migrator fournit des options qui permettent d'imprimer les messages de trace, de débogage et de progression vers une sortie standard ou un fichier. Cette option peut être utile pour suivre la progression de l'opération de migration, en particulier pour les tables ou les jeux de données très volumineux.
-
Niveaux de journalisation
Pour contrôler le comportement de journalisation au moyen de l'outil NoSQL Database Migrator, transmettez le paramètre d'exécution –log-level ou -l à la commande
runMigrator. Vous pouvez spécifier la quantité d'informations de journal à écrire en transmettant la valeur de niveau de journal appropriée.$./runMigrator --log-level <loglevel>Exemple :
$./runMigrator --log-level debugTableau - Niveaux de journal pris en charge pour NoSQL Database Migrator
Niveau de journalisation Description avertissement Imprime les erreurs et les avertissements. informations (par défaut) Affiche le statut de progression de la migration des données, par exemple la validation de la source, la validation du puits, la création de tables et le nombre d'enregistrements de données migrés. debug Imprime des informations de débogage supplémentaires. all Imprime tout. Ce niveau active tous les niveaux de journalisation. -
Fichier journal :
Vous pouvez spécifier le nom du fichier journal à l'aide du paramètre –log-file ou -f. Si –log-file est transmis en tant que paramètre d'exécution à la commande
runMigrator, NoSQL Database Migrator écrit tous les messages de journal dans le fichier sinon dans la sortie standard.$./runMigrator --log-file <log file name>Exemple :
$./runMigrator --log-file nosql_migrator.log
Limitation
Oracle NoSQL Database Migrator ne verrouille pas la base de données pendant la sauvegarde et ne bloque pas les autres utilisateurs. Par conséquent, il est fortement recommandé de ne pas effectuer les activités suivantes lorsqu'une tâche de migration est en cours d'exécution :
-
Toute opération LMD/LDD sur la table source.
-
Toute modification liée à la topologie dans le magasin de données.
Migration des métadonnées de durée de vie pour les rangées de table
Voyez comment migrer les données de durée de vie de la source vers le puits.
La durée de vie (TTL) est un mécanisme qui permet d'annuler automatiquement les lignes d'une table. La durée de vie est exprimée en tant que période de vie. Les données sont autorisées à vivre dans le magasin. Les données qui ont atteint leur valeur de temporisation d'expiration ne peuvent plus être extraites et n'apparaîtront dans aucune statistique de magasin.
Vous pouvez choisir d'inclure les métadonnées de durée de vie des rangées de table ainsi que les données réelles lors de la migration des tables Oracle NoSQL Database. NoSQL Database Migrator fournit des paramètres de configuration pour prendre en charge l'exportation et l'importation des métadonnées de durée de vie des rangées de table pour les types de source suivants :
Table - Migration des métadonnées de durée de vie
| Types de sources | Paramètre de configuration source | Paramètre de configuration de l'évier |
|---|---|---|
| Oracle NoSQL Database | includeTTL |
includeTTL |
| Service Oracle NoSQL Database Cloud | includeTTL |
includeTTL |
| Fichier JSON au format DynamoDB | ttlAttributeName |
includeTTL |
| Fichier JSON au format DynamoDB stocké dans AWS S3 | ttlAttributeName |
includeTTL |
Exportation des métadonnées de durée de vie dans Oracle NoSQL Database et Oracle NoSQL Database Cloud Service
NoSQL Database Migrator fournit le paramètre de configuration includeTTL pour prendre en charge l'exportation des métadonnées de durée de vie de la rangée de table.
Lorsqu'une table est exportée, les données de durée de vie sont exportées pour les rangées de table dont le délai d'expiration est valide. Si une rangée n'expire pas, l'objet JSON _metadata n'est pas inclus explicitement dans les données exportées car sa valeur d'expiration est toujours
- NoSQL Database Migrator exporte le délai d'expiration de chaque ligne en tant que nombre de millisecondes depuis l'époque UNIX (1er janvier 1970). Par exemple,
//Row 1
{
"id" : 1,
"name" : "xyz",
"age" : 45,
"_metadata" : {
"expiration" : 1629709200000 //Row Expiration time in milliseconds
}
}
//Row 2
{
"id" : 2,
"name" : "abc",
"age" : 52,
"_metadata" : {
"expiration" : 1629709400000 //Row Expiration time in milliseconds
}
}
//Row 3 No Metadata for below row as it will not expire
{
"id" : 3,
"name" : "def",
"age" : 15
}
Importation des métadonnées de durée de vie
Vous pouvez éventuellement importer des métadonnées de durée de vie à l'aide du paramètre de configuration includeTTL dans le modèle de configuration de l'évier.
L'heure de référence par défaut de l'opération d'importation est l'heure courante, en millisecondes, obtenue à partir de System.currentTimeMillis(), de l'ordinateur sur lequel l'outil NoSQL Database Migrator est exécuté. Toutefois, vous pouvez également définir une heure de référence personnalisée à l'aide du paramètre de configuration ttlRelativeDate si vous souhaitez prolonger la durée d'expiration et importer des rangées qui expireraient immédiatement. L'extension est calculée comme suit et ajoutée au délai d'expiration.
Extended time = expiration time - reference time
L'opération d'importation gère les cas d'utilisation suivants lors de la migration des rangées de table contenant des métadonnées de durée de vie. Ces cas d'utilisation ne sont applicables que lorsque le paramètre de configuration includeTTL est réglé à Vrai.
-
Cas d'utilisation 1 : Aucune information sur les métadonnées de durée de vie n'est présente dans la rangée de la table d'importation.
Si la ligne à importer ne contient pas d'informations de durée de vie, NoSQL Database Migrator définit la valeur TTL=0 pour la ligne.
-
Cas d'utilisation 2 : La valeur de durée de vie de la rangée de la table source est expirée par rapport à l'heure de référence à laquelle la rangée de la table est importée.
La ligne de table expirée est ignorée et n'est pas écrite dans le magasin.
-
Cas d'utilisation 3 : La valeur de durée de vie de la rangée de la table source n'est pas expirée par rapport à l'heure de référence à laquelle la rangée de la table est importée.
La rangée de la table est importée avec une valeur de durée de vie. Toutefois, la valeur de durée de vie importée peut ne pas correspondre à la valeur de durée de vie exportée initiale en raison des contraintes de la fenêtre Nombre entier d'heures et de jours dans la classe TimeToLive. Par exemple,
Considérons une ligne de table exportée :
{ "id" : 8, "name" : "xyz", "_metadata" : { "expiration" : 1734566400000 //Thursday, December 19, 2024 12:00:00 AM in UTC } }Le temps de référence lors de l'importation est 1734480000000, qui est le mercredi 18 décembre 2024 12:00:00 AM.
Rangée de table importée
{ "id" : 8, "name" : "xyz", "_metadata" : { "ttl" : 1734739200000 //Saturday, December 21, 2024 12:00:00 AM } }
Importation des métadonnées de durée de vie dans le fichier JSON au format DynamoDB et le fichier JSON au format DynamoDB stockés dans AWS S3
NoSQL Database Migrator fournit un paramètre de configuration supplémentaire, ttlAttributeName, pour prendre en charge l'importation des métadonnées de durée de vie à partir des éléments de fichier JSON au format DynamoDB.
Les fichiers JSON exportés DynamoDB incluent un attribut spécifique dans chaque élément pour stocker l'horodatage d'expiration de la durée de vie. Pour importer facultativement les valeurs de durée de vie à partir des fichiers JSON exportés DynamoDB, vous devez fournir le nom de l'attribut spécifique en tant que valeur au paramètre de configuration ttlAttributeName dans le fichier JSON formaté DynamoDB ou le fichier JSON formaté DynamoDB stocké dans les fichiers de configuration source AWS S3. Vous devez également définir le paramètre de configuration includeTTL dans le modèle de configuration de l'évier. Les puits valides sont Oracle NoSQL Database et Oracle NoSQL Database Cloud Service. NoSQL Database Migrator stocke les informations de durée de vie dans l'objet JSON _metadata pour l'élément importé.
L'opération d'importation gère les cas d'utilisation suivants lors de la migration des éléments de table des fichiers JSON exportés DynamoDB :
-
Cas d'utilisation 1 : La valeur du paramètre de configuration ttlAttributeName est réglée au nom d'attribut TTL spécifié dans le fichier JSON exporté DynamoDB.
NoSQL Database Migrator importe le délai d'expiration de cet élément en tant que nombre de millisecondes depuis l'époque UNIX (1er janvier 1970).
Par exemple, considérez un élément dans le fichier JSON exporté DynamoDB :
{ "Item": { "DeptId": { "N": "1" }, "DeptName": { "S": "Engineering" }, "ttl": { "N": "1734616800" } } }Ici, l'attribut
ttlspécifie la valeur de durée de vie de l'élément. Si vous définissez le paramètre de configuration ttlAttributeName commettldans le fichier JSON au format DynamoDB ou dans le fichier JSON au format DynamoDB stocké dans le fichier de configuration source AWS S3, NoSQL Database Migrator importe le délai d'expiration de l'élément comme suit :{ "DeptId": 1, "document": { "DeptName": "Engineering" } "_metadata": { "expiration": 1734616800000 } }
Note : Vous pouvez fournir le paramètre de configuration ttlRelativeDate dans le modèle de configuration de l'évier comme heure de référence pour le calcul du délai d'expiration.
-
Cas d'utilisation 2 : La valeur du paramètre de configuration ttlAttributeName est définie. Toutefois, la valeur n'existe pas en tant qu'attribut dans l'élément du fichier JSON exporté DynamoDB.
NoSQL Database Migrator n'importe pas les informations de métadonnées de durée de vie pour l'élément indiqué.
-
Cas d'utilisation 3 : La valeur du paramètre de configuration ttlAttributeName ne correspond pas au nom de l'attribut dans l'élément du fichier JSON exporté DynamoDB. NoSQL Database Migrator gère l'importation de l'une des façons suivantes en fonction de la configuration de l'évier :
-
Copie l'attribut en tant que champ normal s'il est configuré pour l'importation à l'aide du schéma par défaut.
-
Ignore l'attribut s'il est configuré pour l'importation à l'aide d'un schéma défini par l'utilisateur.
-
Importation de données dans un évier avec une colonne IDENTITY
Voyez comment importer des données dans un évier qui inclut une colonne IDENTITY.
Vous pouvez importer les données d'une source valide dans une table de puits (Services sur place/infonuagiques) avec une colonne IDENTITY. Vous créez la colonne IDENTITY sous la forme GENERATED ALWAYS AS IDENTITY ou GENERATED BY DEFAULT AS IDENTITY. Pour plus d'informations sur la création d'une table avec une colonne IDENTITY, voir Création de tables avec une colonne IDENTITY dans SQL Reference Guide.
Avant d'importer les données, assurez-vous que la table Oracle NoSQL Database au niveau du récepteur est vide si elle existe. S'il existe des données préexistantes dans la table de puits, la migration peut entraîner des problèmes tels que le remplacement des données existantes dans la table de puits ou l'omission des données sources pendant l'importation.
Table d'évier dont la colonne IDENTITY est GENERATED ALWAYS AS IDENTITY
Prenons l'exemple d'une table d'évier dont la colonne IDENTITY a été créée avec la valeur GENERATED ALWAYS AS IDENTITY. L'importation de données dépend du fait que la source fournit ou non les valeurs à la colonne IDENTITY et au paramètre de transformation ignoreFields dans le fichier de configuration.
Par exemple, vous voulez importer des données d'une source de fichiers JSON dans la table Oracle NoSQL Database en tant que puits. Le schéma de la table de puits est le suivant :
CREATE TABLE IF NOT EXISTS migrateID(ID INTEGER GENERATED ALWAYS AS IDENTITY, name STRING, course STRING, PRIMARY KEY
(ID))
L'utilitaire Migrator gère la migration des données comme décrit dans les cas suivants :
| Condition source | Action d'utilisateur | Résultat de la migration |
|---|---|---|
|
CAS 1 : Les données sources ne fournissent pas de valeur pour le champ IDENTITY de la table d'évier. Exemple : Fichier source JSON
|
Créez/générez le fichier de configuration. |
Migration des données réussie. Les valeurs de colonne IDENTITY sont générées automatiquement. Données migrées dans la table de récepteur Oracle NoSQL Database
|
|
CAS 2 : Les données sources fournissent des valeurs pour le champ IDENTITY de la table d'évier. Exemple : Fichier source JSON
|
Créez/générez le fichier de configuration. Vous fournissez une transformation ignoreFields pour la colonne ID dans le modèle de configuration de l'évier.
|
Migration des données réussie. Les valeurs d'ID fournies sont ignorées et les valeurs de colonne IDENTITY sont générées automatiquement. Données migrées dans la table de récepteur Oracle NoSQL Database
|
|
Vous créez/générez le fichier de configuration sans la transformation ignoreFields pour la colonne IDENTITY. |
La migration des données échoue avec le message d'erreur suivant :
|
Pour plus de détails sur les paramètres de configuration de la transformation, voir la rubrique Modèles de configuration de la transformation.
Table d'évier avec la colonne IDENTITY GENERATED BY DEFAULT AS IDENTITY
Considérons une table de puits avec la colonne IDENTITY créée comme GENERATED BY DEFAULT AS IDENTITY. L'importation de données dépend du fait que la source fournit ou non les valeurs à la colonne IDENTITY et au paramètre de transformation ignoreFields.
Par exemple, vous voulez importer des données d'une source de fichiers JSON dans la table Oracle NoSQL Database en tant que puits. Le schéma de la table de puits est le suivant :
CREATE TABLE IF NOT EXISTS migrateID(ID INTEGER GENERATED BY DEFAULT AS IDENTITY, name STRING, course STRING, PRIMARY KEY
(ID))
L'utilitaire Migrator gère la migration des données comme décrit dans les cas suivants :
| Condition source | Action d'utilisateur | Résultat de la migration |
|---|---|---|
|
CAS 1 : Les données sources ne fournissent pas de valeur pour le champ IDENTITY de la table d'évier. Exemple : Fichier source JSON
|
Créez/générez le fichier de configuration. |
Migration des données réussie. Les valeurs de colonne IDENTITY sont générées automatiquement. Données migrées dans la table de récepteur Oracle NoSQL Database
|
|
CAS 2 : Les données sources fournissent des valeurs pour le champ IDENTITY de la table d'évier et il s'agit d'un champ de clé primaire. Exemple : Fichier source JSON
|
Créez/générez le fichier de configuration. Vous fournissez une transformation ignoreFields pour la colonne ID dans le modèle de configuration de l'évier (recommandé).
|
Migration des données réussie. Les valeurs d'ID fournies sont ignorées et les valeurs de colonne IDENTITY sont générées automatiquement. Données migrées dans la table de récepteur Oracle NoSQL Database
|
|
Vous créez/générez le fichier de configuration sans la transformation ignoreFields pour la colonne IDENTITY. |
Migration des données réussie. Les valeurs Lorsque vous tentez d'insérer un enregistrement supplémentaire dans la table sans fournir de code, le générateur de séquences tente de générer automatiquement le code. La valeur de départ du générateur de séquences est 1. Par conséquent, la valeur d'ID générée peut potentiellement dupliquer l'une des valeurs d'ID existantes dans la table de l'évier. Comme il s'agit d'une violation de la contrainte de clé primaire, une erreur est renvoyée et la ligne n'est pas insérée. Voir Générateur de séquences pour plus d'informations. Pour éviter la violation de contrainte de clé primaire, le générateur de séquences doit démarrer la séquence avec une valeur qui n'est pas en conflit avec les valeurs d'ID existantes dans la table du récepteur. Pour utiliser l'attribut START WITH pour effectuer cette modification, voir l'exemple ci-dessous : Exemple : Données migrées dans la table de récepteur Oracle NoSQL Database
Pour trouver la valeur appropriée que le générateur de séquences doit insérer dans la colonne ID, extrayez la valeur maximale du champ
Sortie :
La valeur maximale de la colonne
La séquence commence à 4. Maintenant, lorsque vous insérez des enregistrements dans la table de puits sans fournir les valeurs d'ID, le générateur de séquences génère automatiquement les valeurs d'ID à partir de 4 afin d'éviter la duplication des ID. |
Pour plus de détails sur les paramètres de configuration de la transformation, voir la rubrique Modèles de configuration de la transformation.
Filtrage de données à l'aide de prédicats d'interrogation
Voyez comment spécifier des prédicats d'interrogation pour exporter uniquement les rangées de table qui correspondent aux critères de filtre.
Prédicat d'interrogation
NoSQL Database Migrator permet de filtrer les données lors de l'exportation en spécifiant un prédicat d'interrogation. Le prédicat d'interrogation spécifie les conditions qui doivent être remplies pour qu'une rangée soit exportée. L'utilitaire Migrator convertit le prédicat d'interrogation en clause SQL WHERE et l'applique à la table indiquée afin de fournir une condition de filtre pour exporter uniquement les rangées correspondant à la condition spécifiée. Vous pouvez utiliser des fonctions intégrées (modification_time(), expiration_time(), creation_time()) dans le prédicat d'interrogation pour créer des options de filtre avancées.
Vous ne pouvez utiliser des prédicats d'interrogation que sur les sources Oracle NoSQL Database et Oracle NoSQL Database Cloud Service pour tous les puits pris en charge. Pour plus de détails, voir Oracle NoSQL Database et Oracle NoSQL Database Cloud Service.
Pour une démonstration de cas d'utilisation, voir Migrer d'Oracle NoSQL Database Cloud Service vers un fichier JSON.
Filtre de vidage
L'utilitaire Migrator fournit une option pour faire écho à l'interrogation SQL exécutée sur le serveur dorsal. Cette fonction vous aide à vérifier l'interrogation générée et, si nécessaire, à préciser votre filtre avant d'exécuter la tâche de migration.
Vous pouvez exécuter l'utilitaire Migrator avec l'option de filtre de vidage comme suit :
[~/nosqlMigrator]$./runMigrator --dump-filter|df [optional-config-file]
-
Avec le fichier de configuration : L'utilitaire Migrator affiche le fichier de configuration fourni et l'interrogation générée comme illustré dans l'exemple suivant :
[~/nosqlMigrator]./runMigrator --dump-filter migrator-config.json[INFO] Configuration for migration: { "source" : { "type" : "nosqldb", "storeName" : "kvstore", "helperHosts" : ["<hostname>:5000"], "table" : "users", "queryFilter" : "$row.address.city='Houston'", "includeTTL" : true, "requestTimeoutMs" : 5000 }, "sink" : { "type" : "file", "format" : "json", "useMultiFiles" : false, "schemaPath" : "<complete/path/to/the/JSON/file/with/DDL/commands/for/the/schema/definition>", "pretty" : true, "dataPath" : "<complete/path/to/directory>" }, "abortOnError" : true, "migratorVersion" : "1.8.0" } [INFO] Query for the migration: 'select $row, expiration_time($row) from users $row where $row.address.city='Houston'' -
Sans le fichier de configuration : L'utilitaire Migrator collecte de manière interactive toutes les entrées requises pour générer le fichier de configuration, y compris le prédicat d'interrogation. Il affiche ensuite le fichier de configuration et l'interrogation générés.
Note :
L'option de filtre de vidage affiche uniquement le fichier de configuration et l'interrogation. Il ne lance pas la migration des données. Après vérification, pour exécuter la migration, exécutez l'utilitaire Migrator avec votre fichier de configuration à l'aide de l'option
--cou--configcomme suit :$./runMigrator --config <complete/path/to/the/JSON/config/file>
Démonstrations de cas d'utilisation pour l'outil de migration d'Oracle NoSQL Database
Voyez comment effectuer une migration de données à l'aide d'Oracle NoSQL Database Migrator pour des cas d'utilisation particuliers. Vous pouvez trouver des instructions systématiques détaillées avec des exemples de code pour effectuer la migration dans chacun des cas d'utilisation.
Cet article contient les rubriques suivantes :
Migrer depuis le service Oracle NoSQL Database Cloud vers un fichier JSON
Cet exemple montre comment utiliser le migrateur Oracle NoSQL Database pour copier des données et la définition de schéma d'une table NoSQL d'Oracle NoSQL Database Cloud Service (NDCS) dans un fichier JSON.
Cas d'utilisation
Une organisation décide d'entraîner un modèle à l'aide des données d'Oracle NoSQL Database Cloud Service (NDCS) pour prédire les comportements à venir et fournir des recommandations personnalisées. Ils peuvent prendre une copie périodique des données des tables NDCS dans un fichier JSON et l'appliquer au moteur d'analyse pour analyser et entraîner le modèle. Cela les aide à séparer les interrogations analytiques des chemins critiques à faible latence.
Exemple
Pour la démonstration, examinons comment migrer la définition de données et de schéma d'une table NoSQL nommée myTable depuis NDCS vers un fichier JSON.
Conditions requises
-
Identifiez la source et le puits pour la migration.
-
Source : Oracle NoSQL Database Cloud Service
-
Évier : Fichier JSON
-
-
Identifiez vos données d'identification OCI Cloud et saisissez-les dans le fichier de configuration OCI. Enregistrez le fichier de configuration dans
/home/.oci/config. Voir Obtention de données d'identification.[DEFAULT] tenancy=ocid1.tenancy.oc1.... user=ocid1.user.oc1.... fingerprint= 43:d1:.... key_file=</fully/qualified/path/to/the/private/key/> pass_phrase=<passphrase> -
Identifiez le point d'extrémité de la région et le nom du compartiment pour votre service Oracle NoSQL Database Cloud Service.
-
point d'extrémité :
us-ashburn-1 -
compartiment :
ocid1.compartment.oc1..aa..rhsmq
-
Procédure
Pour migrer les données et la définition de schéma de votre table d'Oracle NoSQL Database Cloud Service vers un fichier JSON, vous pouvez utiliser l'une des options suivantes :
-
Ouvrez l'invite de commande et accédez au répertoire dans lequel vous avez extrait l'utilitaire NoSQL Database Migrator.
-
Pour générer le fichier de configuration à l'aide de NoSQL Database Migrator, exécutez la commande
runMigratorsans paramètre d'exécution.[~/nosqlMigrator]$./runMigrator -
Comme vous n'avez pas fourni le fichier de configuration en tant que paramètre d'exécution, l'utilitaire vous invite à générer la configuration maintenant. Entrez
**y**.Configuration file is not provided. Do you want to generate configuration? (y/n) [n]: y Generating a configuration file interactively. -
En fonction des invites de l'utilitaire, sélectionnez vos options pour la configuration Source.
Enter a location for your config [./migrator-config.json]: /home/<user>/nosqlMigrator/NDCS2JSON Select the source: 1) nosqldb 2) nosqldb_cloud 3) file 4) object_storage_oci 5) aws_s3 #? 2 Configuration for source type=nosqldb_cloud Enter endpoint URL or region ID of the Oracle NoSQL Database Cloud: us-phoenix-1 Select the authentication type: 1) credentials_file 2) instance_principal 3) delegation_token 4) session_token 5) oke_workload_identity #? 1 Enter path to the file containing OCI credentials [/home/<user>/.oci/config]: Enter the profile name in OCI credentials file [DEFAULT]: Enter the compartment name or id of the table []: developers Enter table name: myTable Include TTL data? If you select 'yes' TTL of rows will also be included in the exported data.(y/n) [n]: Enter percentage of table read units to be used for migration operation. (1-100) [90]: Enter store operation timeout in milliseconds. (1-30000) [5000]: -
En fonction des invites de l'utilitaire, choisissez vos options pour la configuration de l'évier.
Select the sink: 1) nosqldb 2) nosqldb_cloud 3) file #? 3 Configuration for sink type=file Enter path to a directory to store JSON data: /home/<user>/nosqlMigrator would you like to export data to multiple files for each source?(y/n) [y]: n Would you like to store JSON in pretty format? (y/n) [n]: y Would you like to migrate the table schema also? (y/n) [y]: y Enter path to a file to store table schema: /home/<user>/nosqlMigrator/myTableSchema -
En fonction des invites de l'utilitaire, sélectionnez vos options pour les transformations de données sources. La valeur par défaut est
n.Would you like to add transformations to source data? (y/n) [n]: -
Entrez votre choix pour déterminer si la migration doit se poursuivre en cas d'échec de la migration d'un enregistrement.
Would you like to continue migration in case of any record/row is failed to migrate?: (y/n) [n]: -
L'utilitaire affiche la configuration générée à l'écran.
generated configuration is: { "source": { "type": "nosqldb_cloud", "endpoint": "us-ashburn-1", "table": "myTable", "compartment": "ocid1.compartment.oc1..aa..rhsmq", "credentials": "/home/<user>/.oci/config", "credentialsProfile": "DEFAULT", "readUnitsPercent": 90, "requestTimeoutMs": 5000 }, "sink": { "type": "file", "format": "json", "useMultiFiles" : false, "schemaPath": "/home/<user>/nosqlMigrator/myTableSchema", "pretty": true, "dataPath": "/home/<user>/nosqlMigrator" }, "abortOnError": true, "migratorVersion": "1.8.0" } -
L'utilitaire vous demande de choisir de poursuivre ou non la migration avec le fichier de configuration généré. L'option par défaut est
y.Note : Si vous sélectionnez
n, vous pouvez utiliser le fichier de configuration généré pour exécuter la migration à l'aide de l'option./runMigrator -cou./runMigrator --config.Would you like to run the migration with above configuration? If you select no, you can use the generated configuration file to run the migration using: ./runMigrator --config /home/<user>/nosqlMigrator/NDCS2JSON (y/n) [y]: -
NoSQL Database Migrator migre vos données et votre schéma de NDCS vers le fichier JSON.
Records provided by source=10,Records written to sink=10,Records failed=0,Records skipped=0. Elapsed time: 0min 1sec 277ms Migration completed.Validation
Pour valider la migration, vous pouvez naviguer jusqu'au répertoire de puits spécifié et voir le schéma et les données.
-- Exported myTable Data. JSON files are created in the supplied data path
[~/nosqlMigrator]$cat myTable_1_5.json
{
"id" : 10,
"document" : {
"course" : "Computer Science",
"name" : "Neena",
"studentid" : 105
}
}
{
"id" : 3,
"document" : {
"course" : "Computer Science",
"name" : "John",
"studentid" : 107
}
}
{
"id" : 4,
"document" : {
"course" : "Computer Science",
"name" : "Ruby",
"studentid" : 100
}
}
{
"id" : 6,
"document" : {
"course" : "Bio-Technology",
"name" : "Rekha",
"studentid" : 104
}
}
{
"id" : 7,
"document" : {
"course" : "Computer Science",
"name" : "Ruby",
"studentid" : 100
}
}
{
"id" : 5,
"document" : {
"course" : "Journalism",
"name" : "Rani",
"studentid" : 106
}
}
{
"id" : 8,
"document" : {
"course" : "Computer Science",
"name" : "Tom",
"studentid" : 103
}
}
{
"id" : 9,
"document" : {
"course" : "Computer Science",
"name" : "Peter",
"studentid" : 109
}
}
{
"id" : 1,
"document" : {
"course" : "Journalism",
"name" : "Tracy",
"studentid" : 110
}
}
{
"id" : 2,
"document" : {
"course" : "Bio-Technology",
"name" : "Raja",
"studentid" : 108
}
}
-- Exported myTable Schema
[~/nosqlMigrator]$cat myTableSchema
CREATE TABLE IF NOT EXISTS myTable (id INTEGER, document JSON, PRIMARY KEY(SHARD(id)))
-
Préparez le fichier de configuration (au format JSON) avec les détails de source et de récepteur JSON d'Oracle NoSQL Database Cloud Service (NDCS). Voir Modèles de configuration source et Modèles de configuration de puits.
Une table
usersest utilisée avec les données suivantes dans cet exemple :{"id":10,"firstName":"John","lastName":"Smith","age":22,"income":45000,"address":{"city":"Santa Cruz","number":101,"phones":[{"area":408,"kind":"work","number":4538955},{"area":831,"kind":"home","number":7533341},{"area":831,"kind":"mobile","number":7533382}],"state":"CA","street":"Pacific Ave","zip":95008}} {"id":20,"firstName":"Jane","lastName":"Smith","age":22,"income":55000,"address":{"city":"San Jose","number":201,"phones":[{"area":608,"kind":"work","number":6538955},{"area":931,"kind":"home","number":9533341},{"area":931,"kind":"mobile","number":9533382}],"state":"CA","street":"Atlantic Ave","zip":95005}} {"id":30,"firstName":"Adam","lastName":"Smith","age":45,"income":75000,"address":{"city":"Houston","number":301,"phones":[{"area":618,"kind":"work","number":6618955},{"area":951,"kind":"home","number":9613341},{"area":981,"kind":"mobile","number":9613382}],"state":"TX","street":"Indian Ave","zip":95075}} {"id":40,"firstName":"Joanna","lastName":"Smith","age":null,"income":75000,"address":{"city":"Houston","number":401,"phones":[{"area":null,"kind":"work","number":1618955},{"area":451,"kind":"home","number":4613341},{"area":481,"kind":"mobile","number":4613382}],"state":"TX","street":"Tex Ave","zip":95085}}Assurez-vous d'inclure le paramètre
queryFilteravec le prédicat d'interrogation approprié dans le modèle de configuration source pour exporter uniquement les rangées requises de votre table. Pour plus de détails sur la création de prédicats d'interrogation, voir la table Exemples de prédicats d'interrogation dans la rubrique Source du service NoSQL Database Cloud.Dans cet exemple, le prédicat d'interrogation exporte les rangées avec le champ
citydans la colonne JSONaddress= 'Houston' de la tableusers.{ "source" : { "type" : "nosqldb_cloud", "endpoint" : "us-ashburn-1", "table" : "users", "queryFilter" : "$row.address.city='Houston'", "compartment" : "ocid1.compartment.oc1..aa..rhsmq", "credentials" : "/home/<user>/.oci/config", "credentialsProfile" : "DEFAULT", "readUnitsPercent" : 90, "includeTTL" : true, "requestTimeoutMs" : 5000 }, "sink" : { "type" : "file", "format" : "json", "useMultiFiles" : true, "chunkSize" : 32, "schemaPath" : "/scratch/<user>/nosqlMigrator/tableschema.ddl", "pretty" : false, "dataPath" : "/scratch/<user>/nosqlMigrator" }, "abortOnError" : true, "migratorVersion" : "1.8.0" } -
Ouvrez l'invite de commande et accédez au répertoire dans lequel vous avez extrait l'utilitaire NoSQL Database Migrator.
-
Exécutez la commande
runMigratoren transmettant le fichier de configuration. Utilisez l'option--configou-c.[~/nosqlMigrator]$./runMigrator --config <complete/path/to/the/JSON/config/file>Note :
Vous pouvez également exécuter la commande avec
option pour voir et vérifier l'interrogation générée avant d'exécuter la tâche de migration comme suit. Pour plus de détails, voir
.
[~/nosqlMigrator]$./runMigrator --dump-filter <complete/path/to/the/JSON/config/file>L'utilitaire procède à la migration des données comme suit :
[INFO] creating source from given configuration: [INFO] [cloud source] : query = 'SELECT $row,expiration_time_millis($row) AS expiration FROM users $row where $row.address.city='Houston'' [INFO] source creation completed [INFO] creating sink from given configuration: [INFO] sink creation completed [INFO] creating migrator pipeline [INFO] [json file sink] : writing table schema to /scratch/raumesh/nosqlMigrator/tableschema.ddl [INFO] migration started [INFO] Migration success for source users. read=2,written=2,failed=0 [INFO] Migration is successful for all the sources. [INFO] migration completed. Records provided by source=2, Records written to sink=2, Records failed=0,Records skipped=0. Elapsed time: 0min 0sec 182ms Migration completed.
Vérification
Pour vérifier la migration, vous pouvez naviguer jusqu'au répertoire de puits spécifié et afficher le schéma et les données. Seules les rangées de la colonne JSON address avec la valeur de champ city 'Houston' sont exportées.
-- Exported users data. Schema and JSON files are created in the supplied data paths.
[~/nosqlMigrator]: cat tableschema.ddl
CREATE TABLE IF NOT EXISTS users (id INTEGER, firstName STRING, lastName STRING, age INTEGER, income INTEGER, address JSON, PRIMARY KEY(SHARD(id)))
[~/nosqlMigrator]: cat users_6_10.json
{"id":30,"firstName":"Adam","lastName":"Smith","age":45,"income":75000,"address":{"city":"Houston","number":301,"phones":[{"area":618,"kind":"work","number":6618955},{"area":951,"kind":"home","number":9613341},{"area":981,"kind":"mobile","number":9613382}],"state":"TX","street":"Indian Ave","zip":95075}}
{"id":40,"firstName":"Joanna","lastName":"Smith","age":null,"income":75000,"address":{"city":"Houston","number":401,"phones":[{"area":null,"kind":"work","number":1618955},{"area":451,"kind":"home","number":4613341},{"area":481,"kind":"mobile","number":4613382}],"state":"TX","street":"Tex Ave","zip":95085}}
bash-4.4$
Migrer depuis le service Oracle NoSQL Database On-Premise vers le service Oracle NoSQL Database Cloud
Cet exemple montre comment utiliser le migrateur Oracle NoSQL Database pour copier des données et la définition de schéma d'une table NoSQL d'Oracle NoSQL Database vers Oracle NoSQL Database Cloud Service (NDCS).
Cas d'utilisation
En tant que développeur, vous envisagez d'explorer des options pour éviter les frais généraux liés à la gestion des ressources, des grappes et du nettoyage de la mémoire pour vos charges de travail NoSQL Database KVStore existantes. Comme solution, vous décidez de migrer vos charges de travail KVStore existantes sur place vers Oracle NoSQL Database Cloud Service, car NDCS les gère automatiquement.
Exemple
Pour la démonstration, examinons comment migrer la définition de données et de schéma d'une table NoSQL nommée myTable du magasin KVStore de NoSQL Database vers NDCS. Nous utiliserons également ce cas d'utilisation pour montrer comment exécuter l'utilitaire runMigrator en transmettant un fichier de configuration prédéfini.
Conditions requises
-
Identifiez la source et le puits pour la migration.
-
Source : Oracle NoSQL Database
-
Récepteur : Oracle NoSQL Database Cloud Service
-
-
Identifiez vos données d'identification OCI Cloud et saisissez-les dans le fichier de configuration OCI. Enregistrez le fichier de configuration dans
/home/.oci/config. Voir Acquisition de données d'identification dans Utilisation d'Oracle NoSQL Database Cloud Service.[DEFAULT] tenancy=ocid1.tenancy.oc1.... user=ocid1.user.oc1.... fingerprint= 43:d1:.... key_file=</fully/qualified/path/to/the/private/key/> pass_phrase=<passphrase> -
Identifiez le point d'extrémité de la région et le nom du compartiment pour votre service Oracle NoSQL Database Cloud Service.
-
point d'extrémité :
us-phoenix-1 -
compartiment :
developers
-
-
Identifiez les détails suivants pour KVStore sur place :
-
nom de magasin :
kvstore -
helperHosts :
<hostname>:5000 -
tableau :
myTable
-
Procédure
Pour migrer la définition de données et de schéma de myTable de NoSQL Database KVStore vers NDCS :
-
Préparez le fichier de configuration (au format JSON) avec les détails de la source et du récepteur identifiés. Voir Modèles de configuration source et Modèles de configuration de puits.
{ "source" : { "type" : "nosqldb", "storeName" : "kvstore", "helperHosts" : ["<hostname>:5000"], "table" : "myTable", "requestTimeoutMs" : 5000 }, "sink" : { "type" : "nosqldb_cloud", "endpoint" : "us-phoenix-1", "table" : "myTable", "compartment" : "developers", "schemaInfo" : { "schemaPath" : "<complete/path/to/the/JSON/file/with/DDL/commands/for/the/schema/definition>", "readUnits" : 100, "writeUnits" : 100, "storageSize" : 1 }, "credentials" : "<complete/path/to/oci/config/file>", "credentialsProfile" : "DEFAULT", "writeUnitsPercent" : 90, "requestTimeoutMs" : 5000 }, "abortOnError" : true, "migratorVersion" : "1.8.0" } -
Ouvrez l'invite de commande et accédez au répertoire dans lequel vous avez extrait l'utilitaire NoSQL Database Migrator.
-
Exécutez la commande
runMigratoren transmettant le fichier de configuration à l'aide de l'option--configou-c.[~/nosqlMigrator/nosql-migrator-1.8.0]$./runMigrator --config <complete/path/to/the/JSON/config/file> -
L'utilitaire procède à la migration des données, comme indiqué ci-dessous.
Records provided by source=10, Records written to sink=10, Records failed=0. Elapsed time: 0min 10sec 426ms Migration completed.
Validation
Pour valider la migration, vous pouvez vous connecter à la console NDCS et vérifier que myTable est créé avec les données sources.
Migrer de la source de fichier JSON vers Oracle NoSQL Database Cloud Service
Cet exemple montre l'utilisation d'Oracle NoSQL Database Migrator pour copier des données d'une source de fichiers JSON vers Oracle NoSQL Database Cloud Service.
Après avoir évalué plusieurs options, une organisation finalise Oracle NoSQL Database Cloud Service en tant que plate-forme NoSQL Database. Comme son contenu source est au format de fichier JSON, il cherche un moyen de le migrer vers Oracle NoSQL Database Cloud Service.
Dans cet exemple, vous apprendrez à migrer les données à partir d'un fichier JSON nommé SampleData.json. Vous exécutez l'utilitaire runMigrator en transmettant un fichier de configuration précréé. Si le fichier de configuration n'est pas fourni en tant que paramètre d'exécution, l'utilitaire runMigrator vous invite à générer la configuration au moyen d'une procédure interactive.
Conditions requises
-
Identifiez la source et le puits pour la migration.
-
Source : Fichier source JSON.
SampleData.jsonest le fichier source. Il contient plusieurs documents JSON avec un document par ligne, délimités par un nouveau caractère de ligne.{"id":6,"val_json":{"array":["q","r","s"],"date":"2023-02-04T02:38:57.520Z","nestarray":[[1,2,3],[10,20,30]],"nested":{"arrayofobjects":[{"datefield":"2023-03-04T02:38:57.520Z","numfield":30,"strfield":"foo54"},{"datefield":"2023-02-04T02:38:57.520Z","numfield":56,"strfield":"bar23"}],"nestNum":10,"nestString":"bar"},"num":1,"string":"foo"}} {"id":3,"val_json":{"array":["g","h","i"],"date":"2023-02-02T02:38:57.520Z","nestarray":[[1,2,3],[10,20,30]],"nested":{"arrayofobjects":[{"datefield":"2023-02-02T02:38:57.520Z","numfield":28,"strfield":"foo3"},{"datefield":"2023-02-02T02:38:57.520Z","numfield":38,"strfield":"bar"}],"nestNum":10,"nestString":"bar"},"num":1,"string":"foo"}} {"id":7,"val_json":{"array":["a","b","c"],"date":"2023-02-20T02:38:57.520Z","nestarray":[[1,2,3],[10,20,30]],"nested":{"arrayofobjects":[{"datefield":"2023-01-20T02:38:57.520Z","numfield":28,"strfield":"foo"},{"datefield":"2023-01-22T02:38:57.520Z","numfield":38,"strfield":"bar"}],"nestNum":10,"nestString":"bar"},"num":1,"string":"foo"}} {"id":4,"val_json":{"array":["j","k","l"],"date":"2023-02-03T02:38:57.520Z","nestarray":[[1,2,3],[10,20,30]],"nested":{"arrayofobjects":[{"datefield":"2023-02-03T02:38:57.520Z","numfield":28,"strfield":"foo"},{"datefield":"2023-02-03T02:38:57.520Z","numfield":38,"strfield":"bar"}],"nestNum":10,"nestString":"bar"},"num":1,"string":"foo"}} -
Récepteur : Oracle NoSQL Database Cloud Service.
-
-
Identifiez vos données d'identification OCI Cloud et saisissez-les dans le fichier de configuration OCI. Enregistrez le fichier de configuration dans le répertoire
/home/<user>/.oci/config. Pour plus de détails, voir Acquisition de données d'identification dans Utilisation d'Oracle NoSQL Database Cloud Service.[DEFAULT] tenancy=ocid1.tenancy.oc1.... user=ocid1.user.oc1.... fingerprint= 43:d1:.... region=us-ashburn-1 key_file=</fully/qualified/path/to/the/private/key/> pass_phrase=<passphrase> -
Identifiez le point d'extrémité de la région et le nom du compartiment pour votre service Oracle NoSQL Database Cloud Service.
-
point d'extrémité :
us-ashburn-1 -
compartiment :
Training-NoSQL
-
-
Identifiez les détails suivants pour le fichier source JSON :
-
schemaPath :
<absolute path to the schema definition file containing DDL statements for the NoSQL table at the sink>.Dans cet exemple, le fichier LDD est
schema_json.ddl.create table Migrate_JSON (id INTEGER, val_json JSON, PRIMARY KEY(id));Oracle NoSQL Database Migrator fournit une option pour créer une table avec le schéma par défaut si
schemaPathn'est pas fourni. Pour plus de détails, voir Identifier la source et le récepteur dans la rubrique Flux de travail pour Oracle NoSQL Database Migrator. -
Chemin de données :
<absolute path to a file or directory containing the JSON data for migration>.
-
Procédure
Pour migrer le fichier source JSON de SampleData.json vers Oracle NoSQL Database Cloud Service, procédez de la façon suivante :
-
Préparez le fichier de configuration (au format JSON) avec les détails de la source et du récepteur identifiés. Voir Modèles de configuration source et Modèles de configuration de puits.
{ "source" : { "type" : "file", "format" : "json", "schemaInfo" : { "schemaPath" : "[~/nosql-migrator-1.8.0]/schema_json.ddl" }, "dataPath" : "[~/nosql-migrator-1.8.0]/SampleData.json" }, "sink" : { "type" : "nosqldb_cloud", "endpoint" : "us-ashburn-1", "table" : "Migrate_JSON", "compartment" : "Training-NoSQL", "includeTTL" : false, "schemaInfo" : { "readUnits" : 100, "writeUnits" : 60, "storageSize" : 1, "useSourceSchema" : true }, "credentials" : "/home/<user>/.oci/config", "credentialsProfile" : "DEFAULT", "writeUnitsPercent" : 90, "overwrite" : true, "requestTimeoutMs" : 5000 }, "abortOnError" : true, "migratorVersion" : "1.8.0" } -
Ouvrez l'invite de commande et accédez au répertoire dans lequel vous avez extrait l'utilitaire Oracle NoSQL Database Migrator.
-
Exécutez la commande
runMigratoren transmettant le fichier de configuration à l'aide de l'option--configou-c.[~/nosql-migrator-1.8.0]$./runMigrator --config <complete/path/to/the/config/file> -
L'utilitaire procède à la migration des données, comme indiqué ci-dessous. La table
Migrate_JSONest créée au niveau du récepteur avec le schéma fourni dansschemaPath.creating source from given configuration: source creation completed creating sink from given configuration: sink creation completed creating migrator pipeline migration started [cloud sink] : start loading DDLs [cloud sink] : executing DDL: create table Migrate_JSON (id INTEGER, val_json JSON, PRIMARY KEY(id)),limits: [100, 60, 1] [cloud sink] : completed loading DDLs [cloud sink] : start loading records [json file source] : start parsing JSON records from file: SampleData.json [INFO] migration completed. Records provided by source=4, Records written to sink=4, Records failed=0, Records skipped=0. Elapsed time: 0min 5sec 778ms Migration completed.
Validation
Pour valider la migration, vous pouvez vous connecter à la console Oracle NoSQL Database Cloud Service et vérifier que la table Migrate_JSON est créée avec les données sources. Pour la procédure d'accès à la console, voir l'article Accès au service à partir de la console d'infrastructure dans le document Oracle NoSQL Database Cloud Service.
Figure - Tables de la console Oracle NoSQL Database Cloud Service

Description de l'illustration migrate_json1.png
Figure - Données de table de la console Oracle NoSQL Database Cloud Service

Description de l'illustration migrate_json2.png
Migrer du fichier JSON MongoDB vers Oracle NoSQL Database Cloud Service
Cet exemple montre comment utiliser l'outil de migration d'Oracle NoSQL Database pour copier des données au format MongoDB vers Oracle NoSQL Database Cloud Service (NDCS).
Cas d'utilisation
Après avoir évalué plusieurs options, une organisation finalise Oracle NoSQL Database Cloud Service en tant que plate-forme NoSQL Database. Les tables et les données sont dans MongoDB et l'organisation souhaite migrer les deux vers Oracle NDCS.
Vous pouvez copier un fichier ou un répertoire contenant les données JSON exportées par MongoDB pour la migration en spécifiant le fichier ou le répertoire dans le modèle de configuration source.
Considérons les deux exemples de fichiers JSON suivants exportés depuis MongoDB pour démontrer notre cas d'utilisation.
Un exemple de fichier JSON au format MongoDB est le suivant :
{"_id":0,"name":"Aimee Zank","scores":[{"score":1.463179736705023,"type":"exam"},{"score":11.78273309957772,"type":"quiz"},{"score":35.8740349954354,"type":"homework"}]}
{"_id":1,"name":"Aurelia Menendez","scores":[{"score":60.06045071030959,"type":"exam"},{"score":52.79790691903873,"type":"quiz"},{"score":71.76133439165544,"type":"homework"}]}
{"_id":2,"name":"Corliss Zuk","scores":[{"score":67.03077096065002,"type":"exam"},{"score":6.301851677835235,"type":"quiz"},{"score":66.28344683278382,"type":"homework"}]}
{"_id":3,"name":"Bao Ziglar","scores":[{"score":71.64343899778332,"type":"exam"},{"score":24.80221293650313,"type":"quiz"},{"score":42.26147058804812,"type":"homework"}]}
{"_id":4,"name":"Zachary Langlais","scores":[{"score":78.68385091304332,"type":"exam"},{"score":90.2963101368042,"type":"quiz"},{"score":34.41620148042529,"type":"homework"}]}
Un exemple de fichier JSON au format MongoDB exporté à partir d'une application Spring est le suivant :
{"_id":{"$oid":"63d3a87cf564fc21dac3838d"},"firstName":"John","lastName":"Smith","address":{"Country":"France"},"_class":"com.example.demo.Customer"}
{"_id":{"$oid":"63d3a87cf564fc21dac3838e"},"firstName":"Sam","lastName":"David","address":{"Country":"USA"},"_class":"com.example.demo.Customer"}
{"_id":"3","firstName":"Dona","lastName":"William","address":{"Country":"England"},"_class":"com.example.demo.Customer"}
MongoDB prend en charge deux types d'extension des fichiers JSON formatés, le mode canonique et le mode assoupli. Vous pouvez fournir le fichier JSON au format MongoDB qui est généré à l'aide de l'outil mongoexport en mode Canonical ou Relaxed. NoSQL Database Migrator prend en charge les deux modes.
Pour plus d'informations sur le fichier MongoDB Extended JSON (v2), voir mongoexport_formats.
Pour plus d'informations sur la génération du fichier JSON au format MongoDB, voir mongoexport.
Exemple
Pour la démonstration, examinons comment migrer un fichier JSON au format MongoDB vers NDCS. Nous utiliserons un fichier de configuration créé manuellement pour cet exemple.
Conditions requises
-
Identifiez la source et le puits pour la migration.
-
Source : Fichier JSON au format MongoDB
-
Récepteur : Oracle NoSQL Database Cloud Service
-
- Extraire les données de MongoDB à l'aide de l'utilitaire mongoexport. Voir mongoexport.
-
Identifiez vos données d'identification OCI Cloud et saisissez-les dans le fichier de configuration OCI. Enregistrez le fichier de configuration dans le répertoire
/home/<user>/.oci/config. Pour plus de détails, voir Acquisition de données d'identification.[DEFAULT] tenancy=ocid1.tenancy.oc1.... user=ocid1.user.oc1.... fingerprint= 43:d1:.... key_file=</fully/qualified/path/to/the/private/key/> pass_phrase=<passphrase> -
Identifiez le point d'extrémité de la région et le nom du compartiment pour votre service Oracle NoSQL Database Cloud Service.
-
point d'extrémité :
us-ashburn-1 -
compartiment :
ocid1.compartment.oc1..aaaaaaaaadeskhnnfkenws4k2vdyklcc32hfpzzz4z3zum3ubhmpz6zxnoza
-
Procédure
Pour migrer les données JSON au format MongoDB vers Oracle NoSQL Database Cloud Service, vous pouvez choisir l'une des options suivantes :
-
Préparez le fichier de configuration (au format JSON) avec les détails de la source et du récepteur identifiés. Voir Modèles de configuration source et Modèles de configuration de puits.
Ici, vous réglez le paramètre de configuration
defaultSchemaà Vrai. Par conséquent, NoSQL Database Migrator crée une table avec le schéma par défaut au niveau du récepteur.{ "source" : { "type" : "file", "format" : "mongodb_json", "dataPath" : "<complete/path/to/the/MongoDB/Formatted/JSON/file>" }, "sink" : { "type" : "nosqldb_cloud", "endpoint" : "us-ashburn-1", "table" : "mongoImport", "compartment" : "ocid1.compartment.oc1..aaaaaaaaadeskhnnfkenws4k2vdyklcc32hfpzzz4z3zum3ubhmpz6zxnoza", "includeTTL" : false, "schemaInfo" : { "readUnits" : 100, "writeUnits" : 60, "storageSize" : 1, "defaultSchema" : true }, "credentials" : "<complete/path/to/the/oci/config/file>", "credentialsProfile" : "DEFAULT", "writeUnitsPercent" : 90, "overwrite" : true, "requestTimeoutMs" : 5000 }, "abortOnError" : true, "migratorVersion" : "1.8.0" }Le schéma par défaut pour la source de fichier JSON au format MongoDB est le suivant :
CREATE TABLE IF NOT EXISTS <tablename>(id STRING, document JSON,PRIMARY KEY(SHARD(id));Où :
-
tablename= valeur fournie pour l'attributtabledans la configuration. -
id= Valeur_idde chaque document du fichier source JSON exporté par MongoDB. -
document= Pour chaque document du fichier exporté MongoDB, le contenu excluant le champ_idest agrégé dans la colonnedocument.
Note : Si la table
<tablename>existe déjà dans Oracle NoSQL Database Cloud Service et que vous voulez migrer des données vers la table à l'aide de la configurationdefaultSchema, vous devez vous assurer que la table existante contient la colonne ID en minuscules (id) et qu'elle est de type STRING. -
-
Ouvrez l'invite de commande et accédez au répertoire dans lequel vous avez extrait l'utilitaire NoSQL Database Migrator.
-
Exécutez la commande
runMigratoren transmettant le fichier de configuration. Utilisez l'option--configou-c.$./runMigrator --config <complete/path/to/the/JSON/config/file> -
L'utilitaire procède à la migration des données, comme indiqué ci-dessous.
[INFO] creating source from given configuration: [INFO] source creation completed [INFO] creating sink from given configuration: [INFO] sink creation completed [INFO] creating migrator pipeline [INFO] [cloud sink] : start loading DDLs [INFO] [cloud sink] : executing DDL: CREATE TABLE IF NOT EXISTS mongoImport (id STRING, document JSON, PRIMARY KEY(SHARD(id))),limits: [100, 60, 1] [INFO] [cloud sink] : completed loading DDLs [INFO] migration started [INFO] [mongo file source] : start parsing MongoDB JSON records from file: mongoDBSample.json [INFO] Migration success for source mongoDBSample. read=5,written=5,failed=0 [INFO] Migration is successful for all the sources. [INFO] migration completed. Records provided by source=5, Records written to sink=5, Records failed=0,Records skipped=0. Elapsed time: 0min 0sec 448ms Migration completed.
Vérification
Pour vérifier la migration, vous pouvez vous connecter à la console Oracle NoSQL Database Cloud Service et vérifier que la table mongoImport est créée avec les données sources. Pour la procédure d'accès à la console, voir l'article Accès au service à partir de la console d'infrastructure.
-
Préparez le fichier de configuration (au format JSON) avec les détails de la source et du récepteur identifiés. Voir Modèles de configuration source et Modèles de configuration de puits.
Ici, vous spécifiez le fichier contenant l'énoncé LDD de la table de puits dans le paramètre
schemaPathdu modèle de configuration source. En conséquence, réglez le paramètre de configurationuseSourceSchemaà Vrai dans le modèle de configuration de l'évier.Vous pouvez générer un schéma personnalisé comme suit :
-
Notez les noms et les types de données pour chaque colonne à partir des données JSON au format MongoDB. Utilisez ces informations pour créer un fichier LDD de schéma pour la table Oracle NoSQL Database Cloud Service.
-
Dans le fichier de schéma, nommez la première colonne (clé primaire)
idde type STRING. Incluez le même nom et le même type pour les colonnes restantes enregistrées dans le fichier JSON au format MongoDB. -
Enregistrez le fichier de schéma et notez son chemin complet.
Le schéma défini par l'utilisateur suivant est utilisé dans cet exemple :
CREATE TABLE IF NOT EXISTS sampleMongoDBImp (id STRING, name STRING, scores JSON, PRIMARY KEY(SHARD(id)));Vous devez inclure une transformation
renameFieldsdemandant à NoSQL Database Migrator de convertir la colonne_idenidlors de la création de la table. Pour plus de détails sur les paramètres, voir Modèles de configuration de transformation. NoSQL Database Migrator crée une table avec le schéma personnalisé au niveau du récepteur.{ "source" : { "type" : "file", "format" : "mongodb_json", "schemaInfo" : { "schemaPath" : "<complete/path/to/the/schema/file>" }, "dataPath" : "<complete/path/to/the/MongoDB/Formatted/JSON/file>" }, "sink" : { "type" : "nosqldb_cloud", "endpoint" : "us-ashburn-1", "table" : "sampleMongoDBImp", "compartment" : "ocid1.compartment.oc1..aaaaaaaaadeskhnnfkenws4k2vdyklcc32hfpzzz4z3zum3ubhmpz6zxnoza", "includeTTL" : true, "schemaInfo" : { "readUnits" : 100, "writeUnits" : 60, "storageSize" : 1, "useSourceSchema" : true }, "credentials" : "<complete/path/to/the/oci/config/file>", "credentialsProfile" : "DEFAULT", "writeUnitsPercent" : 90, "overwrite" : false, "requestTimeoutMs" : 5000 }, "transforms": { "renameFields" : { "_id":"id" } }, "abortOnError" : true, "migratorVersion" : "1.8.0" } -
-
Ouvrez l'invite de commande et accédez au répertoire dans lequel vous avez extrait l'utilitaire NoSQL Database Migrator.
-
Exécutez la commande
runMigratoren transmettant le fichier de configuration. Utilisez l'option--configou-c.$./runMigrator --config <complete/path/to/the/JSON/config/file> -
L'utilitaire procède à la migration des données, comme indiqué ci-dessous.
[INFO] creating source from given configuration: [INFO] source creation completed [INFO] creating sink from given configuration: [INFO] sink creation completed [INFO] creating migrator pipeline [INFO] [cloud sink] : start loading DDLs [INFO] [cloud sink] : executing DDL: CREATE TABLE IF NOT EXISTS sampleMongoDBImp (id INTEGER, name STRING, scores JSON, PRIMARY KEY(SHARD(id))),limits: [100, 60, 1] [INFO] [cloud sink] : completed loading DDLs [INFO] migration started [INFO] [mongo file source] : start parsing MongoDB JSON records from file: mongoDBSample.json [INFO] Migration success for source mongoDBSample. read=5,written=5,failed=0 [INFO] Migration is successful for all the sources. [INFO] migration completed. Records provided by source=5, Records written to sink=5, Records failed=0,Records skipped=0. Elapsed time: 0min 0sec 438ms Migration completed.
Vérification
Pour vérifier la migration, vous pouvez vous connecter à la console Oracle NoSQL Database Cloud Service et vérifier que la table sampleMongoDBImp est créée avec les données sources. Pour la procédure d'accès à la console, voir l'article Accès au service à partir de la console d'infrastructure.
-
Pour ce cas d'utilisation, nous utiliserons l'exemple de fichier JSON au format MongoDB exporté à partir d'une application Spring comme source. Pour plus de détails sur ce format, voir Données sources.
-
Préparez le fichier de configuration (au format JSON) avec les détails de la source et du récepteur identifiés. Voir Modèles de configuration source et Modèles de configuration de puits.
Ici, vous spécifiez le fichier contenant l'énoncé LDD de la table de puits dans le paramètre
schemaPathdu modèle de configuration source. En conséquence, réglez le paramètre de configurationuseSourceSchemaà Vrai dans le modèle de configuration de l'évier.Vous pouvez générer un schéma personnalisé comme suit :
-
Notez les noms et les types de données pour chaque colonne à partir des données JSON au format MongoDB.
-
Dans le fichier de schéma, nommez la première colonne (clé primaire)
idde type STRING. Agréger les champs restants dans un champ nommékv_json_de type JSON, en respectant le format de données Spring. Pour plus de détails, voir Modèle de persistance du cadre de données de printemps. -
Enregistrez le fichier de schéma et notez son chemin complet.
Le schéma défini par l'utilisateur suivant est utilisé dans cet exemple :
CREATE TABLE IF NOT EXISTS sampleMongoDBSpringImp(id STRING, kv_json_ JSON, PRIMARY KEY(SHARD(id)))Pour l'exemple de données Spring donné ci-dessus, vous devez inclure les transformations suivantes :
-
Transformation
renameFieldspour convertir la colonne_idenid -
Transformation
ignoreFieldspour ignorer la colonne_classet ne pas l'inclure dans la table de récepteur -
Transformation
aggregateFieldspour agréger les champs restants (autres queid) à un champ de type JSON
Pour plus de détails sur les paramètres, voir Modèles de configuration de transformation. NoSQL Database Migrator crée une table avec le schéma personnalisé au niveau du récepteur.
{ "source": { "type": "file", "format": "mongodb_json", "schemaInfo": { "schemaPath": "<complete/path/to/the/schema/file>" }, "dataPath": "<complete/path/to/the/MongoDB/Formatted/JSON/file>" }, "sink": { "type": "nosqldb_cloud", "endpoint": "us-ashburn-1", "table": "sampleMongoDBSpringImp", "compartment": "ocid1.compartment.oc1..aaaaaaaaadeskhnnfkenws4k2vdyklcc32hfpzzz4z3zum3ubhmpz6zxnoza", "includeTTL": true, "schemaInfo": { "readUnits": 100, "writeUnits": 60, "storageSize": 1, "useSourceSchema": true }, "credentials": "<complete/path/to/the/oci/config/file>", "credentialsProfile": "DEFAULT", "writeUnitsPercent": 90, "overwrite": false, "requestTimeoutMs": 5000 }, "transforms": { "renameFields": { "_id": "id" }, "ignoreFields": ["_class"], "aggregateFields": { "fieldName": "kv_json_", "skipFields": ["id"] } }, "abortOnError" : true, "migratorVersion" : "1.8.0" } -
-
Ouvrez l'invite de commande et accédez au répertoire dans lequel vous avez extrait l'utilitaire NoSQL Database Migrator.
-
Exécutez la commande
runMigratoren transmettant le fichier de configuration. Utilisez l'option--configou-c.$./runMigrator --config <complete/path/to/the/JSON/config/file> -
L'utilitaire procède à la migration des données, comme indiqué ci-dessous.
creating source from given configuration: source creation completed creating sink from given configuration: sink creation completed creating migrator pipeline [cloud sink] : start loading DDLs [cloud sink] : executing DDL: CREATE TABLE IF NOT EXISTS sampleMongoDBSpringImp (id STRING, kv_json_ JSON, PRIMARY KEY(SHARD(id))),limits: [100, 60, 1] [cloud sink] : completed loading DDLs migration started [mongo file source] : start parsing MongoDB JSON records from file: mongodbspring.json Migration success for source mongodbspring. read=3,written=3,failed=0 Migration is successful for all the sources. migration completed. Records provided by source=3, Records written to sink=3, Records failed=0,Records skipped=0. Elapsed time: 0min 0sec 393ms Migration completed.
Vérification
Pour vérifier la migration, vous pouvez vous connecter à la console Oracle NoSQL Database Cloud Service et vérifier que la table sampleMongoDBImp est créée avec les données sources. Pour la procédure d'accès à la console, voir l'article Accès au service à partir de la console d'infrastructure.
Migrer du fichier JSON DynamoDB vers Oracle NoSQL Database Cloud Service
Cet exemple montre comment utiliser Oracle NoSQL Database Migrator pour copier le fichier JSON DynamoDB dans le service NoSQL Database Cloud.
Cas d'utilisation
Après avoir évalué plusieurs options, une organisation finalise Oracle NoSQL Database Cloud Service sur la base de données DynamoDB. L'organisation veut migrer ses tables et ses données de DynamoDB vers Oracle NoSQL Database Cloud Service.
Pour plus de détails, voir Mappage de la table DynamoDB à la table Oracle NoSQL.
Vous pouvez migrer un fichier ou un répertoire contenant les données JSON exportées DynamoDB à partir d'un système de fichiers en spécifiant le chemin dans le modèle de configuration source.
Un exemple de fichier JSON au format DynamoDB est le suivant :
{"Item":{"Id":{"N":"101"},"Phones":{"L":[{"L":[{"S":"555-222"},{"S":"123-567"}]}]},"PremierCustomer":{"BOOL":false},"Address":{"M":{"Zip":{"N":"570004"},"Street":{"S":"21 main"},"DoorNum":{"N":"201"},"City":{"S":"London"}}},"FirstName":{"S":"Fred"},"FavNumbers":{"NS":["10"]},"LastName":{"S":"Smith"},"FavColors":{"SS":["Red","Green"]},"Age":{"N":"22"},"ttl": {"N": "1734616800"}}}
{"Item":{"Id":{"N":"102"},"Phones":{"L":[{"L":[{"S":"222-222"}]}]},"PremierCustomer":{"BOOL":false},"Address":{"M":{"Zip":{"N":"560014"},"Street":{"S":"32 main"},"DoorNum":{"N":"1024"},"City":{"S":"Wales"}}},"FirstName":{"S":"John"},"FavNumbers":{"NS":["10"]},"LastName":{"S":"White"},"FavColors":{"SS":["Blue"]},"Age":{"N":"48"},"ttl": {"N": "1734616800"}}}
Vous exportez la table DynamoDB vers le stockage AWS S3, comme indiqué dans Exportation des données de table DynamoDB vers Amazon S3.
Exemple
Pour cette démonstration, vous apprendrez à migrer un fichier JSON DynamoDB vers Oracle NoSQL Database Cloud Service. Vous utiliserez un fichier de configuration créé manuellement pour cet exemple.
Conditions requises
-
Identifiez la source et le puits pour la migration.
-
Source : Fichier JSON DynamoDB
-
Récepteur : Oracle NoSQL Database Cloud Service
-
-
Pour importer des données de table DynamoDB vers Oracle NoSQL Database, vous devez d'abord exporter la table DynamoDB vers S3. Voir les étapes fournies dans Exportation des données de table DynamoDB vers Amazon S3 pour exporter votre table. Lors de l'exportation, vous sélectionnez le format DynamoDB JSON. Les données exportées contiennent des données de table DynamoDB dans plusieurs fichiers
gzip, comme indiqué ci-dessous./ 01639372501551-bb4dd8c3 |-- 01639372501551-bb4dd8c3 ==> exported data prefix |----data |------sxz3hjr3re2dzn2ymgd2gi4iku.json.gz ==>table data |----manifest-files.json |----manifest-files.md5 |----manifest-summary.json |----manifest-summary.md5 |----_started -
Vous devez télécharger les fichiers depuis AWS S3. La structure des fichiers après le téléchargement sera comme indiqué ci-dessous.
download-dir/01639372501551-bb4dd8c3 |----data |------sxz3hjr3re2dzn2ymgd2gi4iku.json.gz ==>table data |----manifest-files.json |----manifest-files.md5 |----manifest-summary.json |----manifest-summary.md5 |----_started -
Identifiez vos données d'identification OCI Cloud et saisissez-les dans le fichier de configuration OCI. Enregistrez le fichier de configuration dans le répertoire
/home/<user>/.oci/config. Pour plus de détails, voir Acquisition de données d'identification dans Utilisation d'Oracle NoSQL Database Cloud Service.[DEFAULT] tenancy=ocid1.tenancy.oc1.... user=ocid1.user.oc1.... fingerprint= 43:d1:.... region=us-ashburn-1 key_file=</fully/qualified/path/to/the/private/key/> pass_phrase=<passphrase> -
Identifiez le point d'extrémité de la région et le nom du compartiment pour votre service Oracle NoSQL Database Cloud Service.
-
point d'extrémité :
us-ashburn-1 -
compartiment :
Training-NoSQL
-
Procédure
Pour migrer les données JSON DynamoDB vers Oracle NoSQL Database :
-
Préparez le fichier de configuration (au format JSON) avec les détails de la source et du récepteur identifiés. Pour plus de détails, voir Modèles de configuration de source et Modèles de configuration de récepteur.
Note : Si les éléments de table JSON exportés par DynamoDB contiennent un attribut de durée de vie, pour importer facultativement les valeurs de durée de vie, spécifiez l'attribut dans le paramètre de configuration
ttlAttributeNamedu modèle de configuration source et réglez le paramètre de configurationincludeTTLà Vrai dans le modèle de configuration de l'évier. Pour plus de détails, voir Migration des métadonnées de durée de vie pour les rangées de table.Ici, vous réglez le paramètre de configuration
defaultSchemaà Vrai. Par conséquent, NoSQL Database Migrator crée le schéma par défaut au niveau du récepteur. Vous devez spécifierDDBPartitionKeyet le type de colonne NoSQL correspondant. Sinon, une erreur s'affiche.Pour plus de détails sur le schéma par défaut d'une source JSON exportée par DynamoDB, voir la rubrique Identifier la source et le récepteur dans Flux de travail pour Oracle NoSQL Data Migrator.
{ "source" : { "type" : "file", "format" : "dynamodb_json", "ttlAttributeName" : "ttl", "dataPath" : "complete/path/to/the/DynamoDB/Formatted/JSON/file" }, "sink" : { "type" : "nosqldb_cloud", "endpoint" : "us-sanjose-1", "table" : "sampledynDBImp", "compartment" : "ocid 1.compartment.oc1..aaaaaaaa......smq", "includeTTL" : true, "schemaInfo" : { "readUnits" : 10, "writeUnits" : 10, "storageSize" : 1, "schemaPath" : "complete/path/to/the/DDl/file" }, "credentials" : "/home/<username>/.oci/config", "credentialsProfile" : "DEFAULT", "writeUnitsPercent" : 90, "overwrite" : true, "requestTimeoutMs" : 5000 }, "abortOnError" : true, "migratorVersion" : "1.8.0" }Le schéma par défaut suivant est utilisé dans cet exemple :
CREATE TABLE IF NOT EXISTS sampledynDBImp (Id INTEGER, document JSON, PRIMARY KEY(SHARD(Id))) -
Ouvrez l'invite de commande et accédez au répertoire dans lequel vous avez extrait l'utilitaire NoSQL Database Migrator.
-
Exécutez la commande
runMigratoren transmettant des fichiers de configuration distincts. Utilisez l'option--configou-c../runMigrator --config <complete/path/to/the/JSON/config/file> -
L'utilitaire procède à la migration des données comme illustré dans l'exemple suivant :
[INFO] creating source from given configuration: [INFO] source creation completed [INFO] creating sink from given configuration: [INFO] sink creation completed [INFO] creating migrator pipeline [INFO] [cloud sink] : start loading DDLs [INFO] [cloud sink] : executing DDL: CREATE TABLE IF NOT EXISTS sampledynDBImp (Id INTEGER, document JSON, PRIMARY KEY(SHARD(Id))) [INFO] [cloud sink] : completed loading DDLs [INFO] migration started [INFO] Start writing data to OnDB Sink [INFO] executing for source:DynamoSample [INFO] [DDB file source] : start parsing JSON records from file: DynamoSample.json.gz [INFO] Writing data to OnDB Sink completed. [INFO] migration completed. Records provided by source=2, Records written to sink=2, Records failed=0,Records skipped=0. Elapsed time: 0min 0sec 45ms Migration completed.
Vérification
Pour valider la migration, vous pouvez vous connecter à la console Oracle NoSQL Database Cloud Service et vérifier que la table sampledynDBImp est créée avec les données sources.
-
Préparez le fichier de configuration (au format JSON) avec les détails de la source et du récepteur identifiés. Pour plus de détails, voir Modèles de configuration de source et Modèles de configuration de récepteur.
Note : Si les éléments de table JSON exportés par DynamoDB contiennent un attribut de durée de vie, pour importer facultativement les valeurs de durée de vie, spécifiez l'attribut dans le paramètre de configuration
ttlAttributeNamedu modèle de configuration source et réglez le paramètre de configurationincludeTTLà Vrai dans le modèle de configuration de l'évier.Ici, vous réglez le paramètre de configuration
defaultSchemaà Faux. Par conséquent, vous spécifiez le fichier contenant l'énoncé LDD de la table de puits dans le paramètreschemaPath. Pour plus de détails, voir Mappage des types DynamoDB aux types Oracle NoSQL.Le schéma défini par l'utilisateur suivant est utilisé dans cet exemple :
CREATE TABLE IF NOT EXISTS sampledynDBImp (Id INTEGER, document JSON, PRIMARY KEY(SHARD(Id)))NoSQL Database Migrator utilise le fichier de schéma pour créer la table au niveau du puits dans le cadre de la migration. Tant que les données de clé primaire sont fournies, l'enregistrement JSON d'entrée est inséré. Sinon, une erreur s'affiche.
Note :
-
Si la table Dynamo DB a un type de données qui n'est pas pris en charge dans NoSQL Database, la migration échoue.
-
Si les données d'entrée ne contiennent pas de valeur pour une colonne particulière (autre que la clé primaire), la valeur par défaut de la colonne sera utilisée. La valeur par défaut doit faire partie de la définition de colonne lors de la création de la table. Par exemple
id INTEGER not null default 0. Si la colonne n'a pas de définition par défaut, SQL NULL est inséré si aucune valeur n'est fournie pour la colonne. -
Si vous modélisez une table DynamoDB en tant que document JSON, assurez-vous d'utiliser la transformation
AggregateFieldspour agréger les données de clé non principale dans une colonne JSON. Pour plus de détails, consultez aggregateFields
Generated configuration is { "source" : { "type" : "file", "format" : "dynamodb_json", "ttlAttributeName" : "ttl", "dataPath" : "complete/path/to/the/DynamoDB/Formatted/JSON/file" }, "sink" : { "type" : "nosqldb_cloud", "endpoint" : "us-sanjose-1", "table" : "sampledynDBImp", "compartment" : "ocid 1.compartment.oc1..aaaaaaaa......smq", "includeTTL" : true, "schemaInfo" : { "readUnits" : 10, "writeUnits" : 10, "storageSize" : 1, "schemaPath" : "complete/path/to/the/DDl/file" }, "credentials" : "/home/<username>/.oci/config", "credentialsProfile" : "DEFAULT", "writeUnitsPercent" : 90, "overwrite" : true, "requestTimeoutMs" : 5000 }, "abortOnError" : true, "migratorVersion" : "1.8.0" } -
-
Ouvrez l'invite de commande et accédez au répertoire dans lequel vous avez extrait l'utilitaire NoSQL Database Migrator.
-
Exécutez la commande
runMigratoren transmettant des fichiers de configuration distincts. Utilisez l'option--configou-c../runMigrator --config <complete/path/to/the/JSON/config/file> -
L'utilitaire procède à la migration des données comme illustré dans l'exemple suivant :
[INFO] creating source from given configuration: [INFO] source creation completed [INFO] creating sink from given configuration: [INFO] sink creation completed [INFO] creating migrator pipeline [INFO] [cloud sink] : start loading DDLs [INFO] [cloud sink] : executing DDL: CREATE TABLE IF NOT EXISTS sampledynDBImp (Id INTEGER, document JSON, PRIMARY KEY(SHARD(Id))) [INFO] [cloud sink] : completed loading DDLs [INFO] migration started [INFO] Start writing data to OnDB Sink [INFO] executing for source:DynamoSample [INFO] [DDB file source] : start parsing JSON records from file: DynamoSample.json.gz [INFO] Writing data to OnDB Sink completed. [INFO] migration completed. Records provided by source=2, Records written to sink=2, Records failed=0,Records skipped=0. Elapsed time: 0min 0sec 45ms Migration completed.
Vérification
Pour valider la migration, vous pouvez vous connecter à la console Oracle NoSQL Database Cloud Service et vérifier que la table sampledynDBImp est créée avec les données sources.
Migrer du fichier DynamoDB JSON dans AWS S3 vers Oracle NoSQL Database Cloud Service
Cet exemple montre comment utiliser Oracle NoSQL Database Migrator pour copier le fichier JSON DynamoDB stocké dans un magasin AWS S3 vers Oracle NoSQL Database Cloud Service (NDCS).
Cas d'utilisation :
Après avoir évalué plusieurs options, une organisation finalise Oracle NoSQL Database Cloud Service sur la base de données DynamoDB. L'organisation veut migrer ses tables et ses données de DynamoDB vers Oracle NoSQL Database Cloud Service.
Pour plus de détails, voir Mappage de la table DynamoDB à la table Oracle NoSQL.
Vous pouvez migrer un fichier contenant les données JSON exportées par DynamoDB à partir du stockage AWS S3 en spécifiant le chemin dans le modèle de configuration source.
Un exemple de fichier JSON au format DynamoDB est le suivant :
{"Item":{"Id":{"N":"101"},"Phones":{"L":[{"L":[{"S":"555-222"},{"S":"123-567"}]}]},"PremierCustomer":{"BOOL":false},"Address":{"M":{"Zip":{"N":"570004"},"Street":{"S":"21 main"},"DoorNum":{"N":"201"},"City":{"S":"London"}}},"FirstName":{"S":"Fred"},"FavNumbers":{"NS":["10"]},"LastName":{"S":"Smith"},"FavColors":{"SS":["Red","Green"]},"Age":{"N":"22"}}}
{"Item":{"Id":{"N":"102"},"Phones":{"L":[{"L":[{"S":"222-222"}]}]},"PremierCustomer":{"BOOL":false},"Address":{"M":{"Zip":{"N":"560014"},"Street":{"S":"32 main"},"DoorNum":{"N":"1024"},"City":{"S":"Wales"}}},"FirstName":{"S":"John"},"FavNumbers":{"NS":["10"]},"LastName":{"S":"White"},"FavColors":{"SS":["Blue"]},"Age":{"N":"48"}}}
Vous exportez la table DynamoDB vers le stockage AWS S3, comme indiqué dans Exportation des données de table DynamoDB vers Amazon S3.
Exemple :
Pour cette démonstration, vous apprendrez à migrer un fichier DynamoDB JSON dans une source AWS S3 vers NDCS. Vous utiliserez un fichier de configuration créé manuellement pour cet exemple.
Conditions requises
-
Identifiez la source et le puits pour la migration.
-
Source : Fichier JSON DynamicoDB dans AWS S3
-
Videur : Oracle NoSQL Database Cloud Service
-
-
Identifiez la table dans AWS DynamoDB qui doit être migrée vers NDCS. Connectez-vous à votre console AWS à l'aide de vos données d'identification. Allez à DynamoDB. Sous Tables, sélectionnez la table à migrer.
-
Créez un seau d'objets et exportez la table vers S3. À partir de votre console AWS, accédez à S3. Sous seaux, créez un nouveau seau d'objets. Retournez à DynamoDB et cliquez sur Exportations vers S3. Indiquez la table source et le seau S3 de destination, puis cliquez sur Exporter.
Reportez-vous aux étapes fournies dans Exportation des données de table DynamoDB vers Amazon S3 pour exporter votre table. Lors de l'exportation, vous sélectionnez le format DynamoDB JSON. Les données exportées contiennent des données de table DynamoDB dans plusieurs fichiers
gzip, comme indiqué ci-dessous./ 01639372501551-bb4dd8c3 |-- 01639372501551-bb4dd8c3 ==> exported data prefix |----data |------sxz3hjr3re2dzn2ymgd2gi4iku.json.gz ==>table data |----manifest-files.json |----manifest-files.md5 |----manifest-summary.json |----manifest-summary.md5 |----_started -
Vous avez besoin de données d'identification AWS (y compris l'ID clé d'accès et la clé d'accès secrète) et de fichiers de configuration (données d'identification et configuration facultative) pour accéder à AWS S3 à partir de NoSQL Database Migrator. Voir Définir et voir les paramètres de configuration pour plus de détails sur les fichiers de configuration. Voir Création d'une paire de clés pour plus de détails sur la création de clés d'accès.
-
Identifiez vos données d'identification OCI Cloud et saisissez-les dans le fichier de configuration OCI. Enregistrez le fichier de configuration dans un répertoire
.ocisous votre répertoire de base (~/.oci/config). Pour plus de détails, voir Acquisition de données d'identification.[DEFAULT] tenancy=ocid1.tenancy.oc1.... user=ocid1.user.oc1.... fingerprint= 43:d1:.... key_file=</fully/qualified/path/to/the/private/key/> pass_phrase=<passphrase> -
Identifiez le point d'extrémité de la région et le nom du compartiment pour votre service Oracle NoSQL Database Cloud Service. Par exemple,
-
endpoint :us-phoenix-1
-
compartiment : développeurs
-
Procédure
Pour migrer les données JSON DynamoDB vers Oracle NoSQL Database Cloud Service, utilisez l'une des options suivantes :
-
Préparez le fichier de configuration (au format JSON) avec les détails de la source et du récepteur identifiés. Pour plus de détails, voir Modèles de configuration de source et Modèles de configuration de récepteur.
Note : Si les éléments de votre fichier JSON DynamoDB dans AWS S3 contiennent un attribut de durée de vie, pour importer facultativement les valeurs de durée de vie, spécifiez l'attribut dans le paramètre de configuration
ttlAttributeNamedu modèle de configuration source et réglez le paramètre de configurationincludeTTLà Vrai dans le modèle de configuration de l'évier. Pour plus de détails, voir Migration des métadonnées de durée de vie pour les rangées de table.Réglez
defaultSchemaàTRUEpour que l'utilitaire Migrator crée le schéma par défaut au niveau du récepteur. Vous devez spécifierDDBPartitionKeyet le type de colonne NoSQL correspondant. Sinon, une erreur est générée.{ "source" : { "type" : "aws_s3", "format" : "dynamodb_json", "s3URL" : "<https://<bucket-name>.<s3_endpoint>/export_path>", "credentials" : "</path/to/aws/credentials/file>", "credentialsProfile" : <"profile name in aws credentials file"> }, "sink" : { "type" : "nosqldb_cloud", "endpoint" : "<region_name>", "table" : "<table_name>", "compartment" : "<compartment_name>", "schemaInfo" : { "defaultSchema" : true, "readUnits" : 100, "writeUnits" : 60, "DDBPartitionKey" : "<PrimaryKey:Datatype>", "storageSize" : 1 }, "credentials" : "<complete/path/to/the/oci/config/file>", "credentialsProfile" : "DEFAULT", "writeUnitsPercent" : 90, "requestTimeoutMs" : 5000 }, "abortOnError" : true, "migratorVersion" : "1.8.0" }Pour une source JSON DynamoDB, le schéma par défaut de la table sera le suivant :
CREATE TABLE IF NOT EXISTS <TABLE_NAME>(DDBPartitionKey_name DDBPartitionKey_type, [DDBSortKey_name DDBSortKey_type], DOCUMENT JSON, PRIMARY KEY(SHARD(DDBPartitionKey_name),[DDBSortKey_name]))Où :
TABLE_NAME = valeur fournie pour l'évier 'table' dans la configuration
DDBPartitionKey_name = valeur fournie pour la clé de partition dans la configuration
DDBPartitionKey_type = valeur fournie pour le type de données de la clé de partition dans la configuration
DDBSortKey_name = valeur fournie pour la clé de tri dans la configuration, le cas échéant
DDBSortKey_type = valeur fournie pour le type de données de la clé de tri dans la configuration, le cas échéant
DOCUMENT = Tous les attributs sauf la partition et la clé de tri d'un élément de table Dynamo DB regroupés dans une colonne NoSQL JSON
-
Ouvrez l'invite de commande et accédez au répertoire dans lequel vous avez extrait l'utilitaire NoSQL Database Migrator.
-
Exécutez la commande
runMigratoren transmettant le fichier de configuration. Utilisez l'option--configou-c.[~/nosqlMigrator]$./runMigrator --config <complete/path/to/the/JSON/config/file> -
L'utilitaire procède à la migration des données, comme indiqué ci-dessous.
Records provided by source=7.., Records written to sink=7, Records failed=0, Records skipped=0. Elapsed time: 0 min 2sec 50ms Migration completed.
Vérification
Vous pouvez vous connecter à la console Oracle NoSQL Database Cloud Service et vérifier que la nouvelle table est créée avec les données sources.
-
Préparez le fichier de configuration (au format JSON) avec les détails de la source et du récepteur identifiés. Pour plus de détails, voir Modèles de configuration de source et Modèles de configuration de récepteur.
Note : Si les éléments de votre fichier JSON DynamoDB dans AWS S3 contiennent un attribut de durée de vie, pour importer facultativement les valeurs de durée de vie, spécifiez l'attribut dans le paramètre de configuration ttlAttributeName du modèle de configuration source et réglez le paramètre de configuration includeTTL à Vrai dans le modèle de configuration de l'évier. Pour plus de détails, voir Migration des métadonnées de durée de vie pour les rangées de table.
Pour spécifier un fichier de schéma défini par l'utilisateur dans le modèle de configuration de puits, réglez defaultSchema à
FALSEet spécifiez schemaPath en tant que fichier contenant votre énoncé LDD. Pour plus de détails, voir Mappage de types DynamoDB à des types Oracle NoSQL.Note : Si la table Dynamo DB a un type de données qui n'est pas pris en charge dans NoSQL, la migration échoue.
Un exemple de fichier de schéma est présenté ci-dessous.
CREATE TABLE IF NOT EXISTS sampledynDBImp (AccountId INTEGER,document JSON, PRIMARY KEY(SHARD(AccountId)));Le fichier de schéma est utilisé pour créer la table au niveau du puits dans le cadre de la migration. Tant que les données de clé primaire sont fournies, l'enregistrement JSON d'entrée est inséré, sinon une erreur est générée.
Note :
- Si les données d'entrée ne contiennent pas de valeur pour une colonne particulière (autre que la clé primaire), la valeur par défaut de la colonne sera utilisée. La valeur par défaut doit faire partie de la définition de colonne lors de la création de la table. Par exemple
id INTEGER not null default 0. Si la colonne n'a pas de définition par défaut, SQL NULL est inséré si aucune valeur n'est fournie pour la colonne. - Si vous modélisez une table DynamoDB en tant que document JSON, assurez-vous d'utiliser la transformation
AggregateFieldspour agréger les données de clé non principale dans une colonne JSON. Pour plus de détails, voir aggregateFields.
{ "source" : { "type" : "aws_s3", "format" : "dynamodb_json", "s3URL" : "<https://<bucket-name>.<s3_endpoint>/export_path>", "credentials" : "</path/to/aws/credentials/file>", "credentialsProfile" : <"profile name in aws credentials file"> }, "sink" : { "type" : "nosqldb_cloud", "endpoint" : "<region_name>", "table" : "<table_name>", "compartment" : "<compartment_name>", "schemaInfo" : { "defaultSchema" : false, "readUnits" : 100, "writeUnits" : 60, "schemaPath" : "<full path of the schema file with the DDL statement>", "storageSize" : 1 }, "credentials" : "<complete/path/to/the/oci/config/file>", "credentialsProfile" : "DEFAULT", "writeUnitsPercent" : 90, "requestTimeoutMs" : 5000 }, "transforms": { "aggregateFields" : { "fieldName" : "document", "skipFields" : ["AccountId"] } }, "abortOnError" : true, "migratorVersion" : "1.8.0" } - Si les données d'entrée ne contiennent pas de valeur pour une colonne particulière (autre que la clé primaire), la valeur par défaut de la colonne sera utilisée. La valeur par défaut doit faire partie de la définition de colonne lors de la création de la table. Par exemple
-
Ouvrez l'invite de commande et accédez au répertoire dans lequel vous avez extrait l'utilitaire NoSQL Database Migrator.
-
Exécutez la commande
runMigratoren transmettant le fichier de configuration. Utilisez l'option--configou-c.[~/nosqlMigrator]$./runMigrator --config <complete/path/to/the/JSON/config/file> -
L'utilitaire procède à la migration des données, comme indiqué ci-dessous.
Records provided by source=7.., Records written to sink=7, Records failed=0, Records skipped=0. Elapsed time: 0 min 2sec 50ms Migration completed.
Vérification
Vous pouvez vous connecter à la console Oracle NoSQL Database Cloud Service et vérifier que la nouvelle table est créée avec les données sources.
Migrer entre les régions Oracle NoSQL Database Cloud Service
Cet exemple montre l'utilisation d'Oracle NoSQL Database Migrator pour effectuer une migration inter-régions.
Cas d'utilisation
Une organisation utilise Oracle NoSQL Database Cloud Service pour stocker et gérer ses données. Il décide de répliquer les données d'une région existante vers une région plus récente à des fins de test avant que la nouvelle région ne puisse être lancée pour l'environnement de production.
Dans ce cas d'utilisation, vous apprendrez à utiliser l'outil de migration de base de données NoSQL pour copier des données de la table user_data dans la région Ashburn vers la région Phoenix.
Vous exécutez l'utilitaire runMigrator en transmettant un fichier de configuration précréé. Si vous ne fournissez pas le fichier de configuration en tant que paramètre d'exécution, l'utilitaire runMigrator vous invite à générer la configuration au moyen d'une procédure interactive.
Conditions requises
-
Téléchargez Oracle NoSQL Database Migrator à partir de la page Téléchargements Oracle NoSQL et extrayez le contenu sur votre machine. Pour plus de détails, voir Flux de travail pour Oracle NoSQL Database Migrator.
-
Identifiez la source et le puits pour la migration.
-
Source : Table
user_datadans la région Ashburn.La table
user_datacontient les données suivantes :{"id":40,"firstName":"Joanna","lastName":"Smith","otherNames":[{"first":"Joanna","last":"Smart"}],"age":null,"income":75000,"address":{"city":"Houston","number":401,"phones":[{"area":null,"kind":"work","number":1618955},{"area":451,"kind":"home","number":4613341},{"area":481,"kind":"mobile","number":4613382}],"state":"TX","street":"Tex Ave","zip":95085},"connections":[70,30,40],"email":"joanna.smith123@reachmail.com","communityService":"**"} {"id":10,"firstName":"John","lastName":"Smith","otherNames":[{"first":"Johny","last":"Good"},{"first":"Johny2","last":"Brave"},{"first":"Johny3","last":"Kind"},{"first":"Johny4","last":"Humble"}],"age":22,"income":45000,"address":{"city":"Santa Cruz","number":101,"phones":[{"area":408,"kind":"work","number":4538955},{"area":831,"kind":"home","number":7533341},{"area":831,"kind":"mobile","number":7533382}],"state":"CA","street":"Pacific Ave","zip":95008},"connections":[30,55,43],"email":"john.smith@reachmail.com","communityService":"****"} {"id":20,"firstName":"Jane","lastName":"Smith","otherNames":[{"first":"Jane","last":"BeGood"}],"age":22,"income":55000,"address":{"city":"San Jose","number":201,"phones":[{"area":608,"kind":"work","number":6538955},{"area":931,"kind":"home","number":9533341},{"area":931,"kind":"mobile","number":9533382}],"state":"CA","street":"Atlantic Ave","zip":95005},"connections":[40,75,63],"email":"jane.smith201@reachmail.com","communityService":"*****"} {"id":30,"firstName":"Adam","lastName":"Smith","otherNames":[{"first":"Adam","last":"BeGood"}],"age":45,"income":75000,"address":{"city":"Houston","number":301,"phones":[{"area":618,"kind":"work","number":6618955},{"area":951,"kind":"home","number":9613341},{"area":981,"kind":"mobile","number":9613382}],"state":"TX","street":"Indian Ave","zip":95075},"connections":[60,45,73],"email":"adam.smith201reachmail.com","communityService":"***"}Identifiez le point d'extrémité de la région ou le point d'extrémité du service et le nom du compartiment pour votre source.
-
point d'extrémité :
us-ashburn-1 -
compartiment :
ocid1.compartment.oc1..aaaaaaaahcrgrgptoaq4cgpoymd32ti2ql4sdpu5puroausdf4og55z4tnya
-
-
Évier : Table
user_datadans la région Phoenix.Identifiez le point d'extrémité de la région ou le point d'extrémité du service et le nom du compartiment pour votre évier.
-
point d'extrémité :
us-phoenix-1 -
compartiment :
ocid1.compartment.oc1..aaaaaaaaleiwplazhwmicoogv3tf4lum4m4nzbcv5wfjmoxuz3doreagvdma
Identifiez le schéma de la table de puits.
Vous pouvez utiliser le même nom de table et le même schéma que la table source. Pour plus d'informations sur les autres options de schéma, voir la rubrique Identifier la source et le récepteur dans Flux de travail pour Oracle NoSQL Database Migrator
-
-
-
Identifiez vos données d'identification OCI Cloud pour les deux régions et saisissez-les dans le fichier de configuration. Enregistrez le fichier de configuration sur votre ordinateur à l'emplacement
/home/<user>/.oci/config. Pour plus de détails, voir Acquisition de données d'identification.Note :
-
Si les régions se trouvent sous des locations différentes, vous devez fournir des profils différents dans le fichier
/home//.oci/configavec les données d'identification OCI appropriées pour chacune d'entre elles. -
Si les régions se trouvent sous la même location, vous pouvez avoir un seul profil dans le fichier
/home//.oci/config.
-
Dans cet exemple, les régions sont sous des locations différentes. Le profil DEFAULT inclut les données d'identification OCI pour la région Ashburn et DEFAULT2 inclut les données d'identification OCI pour la région Phoenix.
Dans le paramètre endpoint du fichier de configuration de l'outil de migration (modèles de configuration source et de récepteur), vous pouvez fournir l'URL du point d'extrémité du service ou l'ID région des régions. Pour obtenir la liste des régions de données prises en charge pour Oracle NoSQL Database Cloud Service et leurs URL de point d'extrémité de service, voir Régions de données et URL de service associées dans le document Oracle NoSQL Database Cloud Service.
[DEFAULT]
user=ocid1.user.oc1....
fingerprint=fd:96:....
tenancy=ocid1.tenancy.oc1....
region=us-ashburn-1
key_file=</fully/qualified/path/to/the/private/key/>
pass_phrase=abcd
[DEFAULT2]
user=ocid1.user.oc1....
fingerprint=1b:68:....
tenancy=ocid1.tenancy.oc1....
region=us-phoenix-1
key_file=</fully/qualified/path/to/the/private/key/>
pass_phrase=23456
Procédure
Pour migrer la table user_data de la région Ashburn vers la région Phoenix, procédez de la façon suivante :
-
Préparez le fichier de configuration (au format JSON) avec les détails de la source et du récepteur identifiés. Voir Modèles de configuration source et Modèles de configuration de puits.
{ "source" : { "type" : "nosqldb_cloud", "endpoint" : "us-ashburn-1", "table" : "user_data", "compartment" : "ocid1.compartment.oc1..aaaaaaaahcrgrgptoaq4cgpoymd32ti2ql4sdpu5puroausdf4og55z4tnya", "credentials" : "/home/<user>/.oci/config", "credentialsProfile" : "DEFAULT", "readUnitsPercent" : 100, "includeTTL" : false, "requestTimeoutMs" : 5000 }, "sink" : { "type" : "nosqldb_cloud", "endpoint" : "us-phoenix-1", "table" : "user_data", "compartment" : "ocid1.compartment.oc1..aaaaaaaaleiwplazhwmicoogv3tf4lum4m4nzbcv5wfjmoxuz3doreagvdma", "includeTTL" : false, "schemaInfo" : { "readUnits" : 100, "writeUnits" : 60, "storageSize" : 1, "useSourceSchema" : true }, "credentials" : "/home/<user>/.oci/config", "credentialsProfile" : "DEFAULT2", "writeUnitsPercent" : 90, "overwrite" : true, "requestTimeoutMs" : 5000 }, "abortOnError" : true, "migratorVersion" : "1.8.0" } -
Sur votre ordinateur, accédez au répertoire dans lequel vous avez extrait l'utilitaire NoSQL Database Migrator. Vous pouvez accéder à la commande
runMigratorà partir de l'interface de ligne de commande. -
Exécutez la commande
runMigratoren transmettant le fichier de configuration à l'aide de l'option –config ou -c.[~/nosql-migrator]$./runMigrator --config <complete/path/to/the/config/file> -
L'utilitaire procède à la migration des données comme indiqué ci-dessous. La table
user_dataest créée au niveau du récepteur avec le même schéma que la table source que vous avez configuré le paramètre useSourceSchema avec la valeur Vrai dans le modèle de configuration du récepteur.creating source from given configuration: source creation completed creating sink from given configuration: sink creation completed creating migrator pipeline migration started [cloud sink] : start loading DDLs [cloud sink] : executing DDL: CREATE TABLE IF NOT EXISTS user_data (id INTEGER, firstName STRING, lastName STRING, otherNames ARRAY(RECORD(first STRING, last STRING)), age INTEGER, income INTEGER, address JSON, connections ARRAY(INTEGER), email STRING, communityService STRING, PRIMARY KEY(SHARD(id))),limits: [100, 60, 1] [cloud sink] : completed loading DDLs [cloud sink] : start loading records migration completed. Records provided by source=5, Records written to sink=5, Records failed=0, Records skipped=0. Elapsed time: 0min 5sec 603ms Migration completed.Note :
-
Si la table existe déjà au niveau du récepteur avec le même schéma que la table source, les rangées avec les mêmes clés primaires sont remplacées car vous avez indiqué que le paramètre de remplacement est Vrai dans le modèle de configuration.
-
Si la table existe déjà au niveau du récepteur avec un schéma différent de celui de la table source, la migration échouera.
-
Validation
Pour valider la migration, vous pouvez vous connecter à la console Oracle NoSQL Database Cloud Service dans la région Phoenix. Vérifiez que les données sources de la table user_data dans la région Ashburn sont copiées dans la table user_data de cette région. Pour la procédure d'accès à la console, voir l'article Accès au service à partir de la console d'infrastructure.
Migrer d'Oracle NoSQL Database Cloud Service vers le service de stockage d'objets pour OCI
Cet exemple montre l'utilisation d'Oracle NoSQL Database Migrator à partir d'un interpréteur de commandes Cloud Shell.
Cas d'utilisation
Une entreprise en démarrage prévoit utiliser Oracle NoSQL Database Cloud Service comme solution de stockage de données. La société veut utiliser Oracle NoSQL Database Migrator pour copier des données d'un tableau dans Oracle NoSQL Database Cloud Service vers le service de stockage d'objets OCI afin d'effectuer des sauvegardes périodiques de leurs données. À titre de mesure rentable, ils veulent exécuter l'utilitaire NoSQL Database Migrator à partir de Cloud Shell, qui est accessible à tous les utilisateurs OCI.
Dans ce cas d'utilisation, vous apprendrez à copier l'utilitaire NoSQL Database Migrator dans Cloud Shell dans la région à laquelle vous êtes abonné et à effectuer une migration de données. Vous migrez les données sources de la table Oracle NoSQL Database Cloud Service vers un fichier JSON dans le service de stockage d'objets pour OCI.
Vous exécutez l'utilitaire runMigrator en transmettant un fichier de configuration précréé. Si vous ne fournissez pas le fichier de configuration en tant que paramètre d'exécution, l'utilitaire runMigrator vous invite à générer la configuration au moyen d'une procédure interactive.
Conditions requises
-
Téléchargez Oracle NoSQL Database Migrator à partir de la page Téléchargements Oracle NoSQL sur votre machine locale.
-
Lancez Cloud Shell dans le menu Outils de développement de votre console en nuage. Le navigateur Web ouvre votre répertoire de base. Cliquez sur le menu Cloud Shell dans le coin supérieur droit de la fenêtre Cloud Shell et sélectionnez l'option Charger dans la liste déroulante. Dans la fenêtre contextuelle, glissez-déposez l'ensemble Oracle NoSQL Database Migrator sur votre machine locale ou cliquez sur l'option Sélectionner à partir de votre ordinateur, sélectionnez l'ensemble sur votre machine locale et cliquez sur le bouton Charger. Vous pouvez également glisser-déposer l'ensemble Oracle NoSQL Database Migrator directement de votre machine locale vers votre répertoire de base dans Cloud Shell. Extraire le contenu de l'ensemble.
-
Identifiez la source et le récepteur de la sauvegarde.
-
Source : Table
NDCSuploaddans la région Ashburn du service Oracle NoSQL Database Cloud Service.Pour la démonstration, tenez compte des données suivantes dans le tableau
NDCSupload:{"id":1,"name":"Jane Smith","email":"iamjane@somemail.co.us","age":30,"income":30000.0} {"id":2,"name":"Adam Smith","email":"adam.smith@mymail.com","age":25,"income":25000.0} {"id":3,"name":"Jennifer Smith","email":"jenny1_smith@mymail.com","age":35,"income":35000.0} {"id":4,"name":"Noelle Smith","email":"noel21@somemail.co.us","age":40,"income":40000.0}Identifiez le point d'extrémité et l'ID compartiment pour votre source. Pour le point d'extrémité, vous pouvez fournir l'identificateur de région ou le point d'extrémité de service. Pour obtenir la liste des régions de données prises en charge dans le service Oracle NoSQL Database Cloud Service, voir Régions de données et URL du service associé.
-
point d'extrémité :
us-ashburn-1 -
ID compartiment :
ocid1.compartment.oc1..aaaaaaaahcrgrgptoaq4cgpoymd32ti2ql4sdpu5puroausdf4og55z4tnya
-
-
Récepteur : Fichier JSON dans le seau de stockage d'objets OCI.
Identifiez le point d'extrémité, l'espace de noms, le seau et le préfixe de la région pour OCI Object Storage. Pour plus de détails, voir Accès au service de stockage d'objets Oracle Cloud. Pour la liste des points d'extrémité du service de stockage d'objets pour OCI, voir Points d'extrémité du service de stockage d'objets.
-
point d'extrémité :
us-ashburn-1 -
seau :
Migrate_oci -
préfixe :
Delegation -
espace de noms : <> Si vous ne fournissez pas d'espace de noms, l'utilitaire utilise l'espace de noms par défaut de la location.
Note : Si le seau de stockage d'objets se trouve dans un autre compartiment, assurez-vous que vous disposez des privilèges nécessaires pour écrire des objets dans le seau. Pour plus de détails sur la définition des politiques, voir Écrire des objets dans le stockage d'objets.
-
-
Procédure
Pour migrer d'Oracle NoSQL Database Cloud Service vers le service de stockage d'objets pour OCI, effectuez les opérations suivantes à partir de la fenêtre Cloud Shell :
-
Préparez un fichier de configuration Migrator,
migrator-config.json, avec la source Oracle NoSQL Database Cloud Service et le dissipateur de stockage d'objets OCI. Pour les modèles, voir Modèles de configuration source et Modèles de configuration de puits. Assurez-vous de régler le paramètreuseDelegationTokenàtruedans les modèles de configuration de source et de récepteur.Le modèle de configuration suivant est utilisé dans ce cas d'utilisation :
{ "source" : { "type" : "nosqldb_cloud", "endpoint" : "us-ashburn-1", "table" : "NDCSupload", "compartment" : "ocid1.compartment.oc1..aaaaaaaahcrgrgptoaq4cgpoymd32ti2ql4sdpu5puroausdf4og55z4tnya", "useDelegationToken" : true, "readUnitsPercent" : 90, "includeTTL" : true, "requestTimeoutMs" : 5000 }, "sink" : { "type" : "object_storage_oci", "format" : "json", "endpoint" : "us-ashburn-1", "namespace" : "", "bucket" : "Migrate_oci", "prefix" : "Delegation", "chunkSize" : 32, "compression" : "", "useDelegationToken" : true }, "abortOnError" : true, "migratorVersion" : "1.8.0" } -
À partir de Cloud Shell, naviguez jusqu'au répertoire où vous avez extrait l'utilitaire NoSQL Database Migrator.
-
Exécutez la commande
runMigratoren transmettant le fichier de configuration à l'aide de l'option--configou-c.[~/nosql-migrator]$./runMigrator --config <complete/path/to/the/config/file> -
L'utilitaire NoSQL Database Migrator procède à la migration des données. Comme vous avez réglé le paramètre useDelegationToken à Vrai, Cloud Shell s'authentifie automatiquement à l'aide du jeton de délégation lors de l'exécution de l'utilitaire NoSQL Database Migrator. NoSQL Database Migrator copie vos données de la table
NDCSuploaddans un fichier JSON du seau de stockage d'objetsMigrate_oci. Consultez les journaux pour connaître la réussite de la sauvegarde des données.[INFO] creating source from given configuration: [INFO] source creation completed [INFO] creating sink from given configuration: [INFO] sink creation completed [INFO] creating migrator pipeline [INFO] migration started [INFO] [OCI OS sink] : writing table schema to Delegation/Schema/schema.ddl [INFO] [OCI OS sink] : start writing records with prefix Delegation [INFO] migration completed. Records provided by source=4,Records written to sink=4,Records failed=0. Elapsed time: 0min 0sec 486ms Migration completed.Note :
Les données sont copiées dans le fichier :
Migrate_oci/NDCSupload/Delegation/Data/000000.jsonSelon le paramètre chunkSize dans le modèle de configuration de l'évier, les données sources peuvent être fractionnées en plusieurs fichiers JSON dans le même répertoire.
Le schéma est copié dans le fichier :
Migrate_oci/NDCStable1/Delegation/Schema/schema.ddl
Validation
Pour valider votre sauvegarde de données, connectez-vous à la console Oracle NoSQL Database Cloud Service. Naviguez dans les menus, Storage > Object Storage & Archive Storage > Buckets. Accédez aux fichiers à partir du répertoire NDCSupload/Delegation dans le seau Migrate_oci. Pour la procédure d'accès à la console, voir l'article Accès au service à partir de la console d'infrastructure.
Migrer du service de stockage d'objets OCI vers Oracle NoSQL Database Cloud Service à l'aide de l'authentification OKE
Cet exemple montre comment utiliser l'outil de migration d'Oracle NoSQL Database avec l'authentification d'identité de charge de travail OKE pour copier des données à partir d'un fichier JSON dans le stockage d'objets OCI vers la table Oracle NoSQL Database Cloud Service.
Cas d'utilisation
En tant que développeur, vous envisagez d'explorer une option pour restaurer des données à partir d'un fichier JSON dans un seau de stockage d'objets OCI (OS OCI) vers une table Oracle NoSQL Database Cloud Service (NDCS) à l'aide de NoSQL Database Migrator dans une application conteneurisée. Une application conteneurisée est un environnement virtualisé qui regroupe l'application et toutes ses dépendances (telles que les bibliothèques, les fichiers binaires et les fichiers de configuration) dans un ensemble. Cela permet à l'application de s'exécuter de manière cohérente dans différents environnements, quelle que soit l'infrastructure sous-jacente.
Vous voulez exécuter NoSQL Database Migrator dans un module de réseautage Oracle Cloud Infrastructure Container Engine for Kubernetes (OKE). Pour accéder en toute sécurité aux services du système d'exploitation OCI et NDCS à partir du pod OKE, vous utiliserez la méthode d'authentification d'identité de charge de travail (WIA).
Dans cette démonstration, vous allez créer une image docker pour NoSQL Database Migrator, copier l'image dans un référentiel du registre de conteneurs, créer une grappe OKE et déployer l'image Migrator dans le pod de la grappe OKE pour exécuter l'utilitaire Migrator. Ici, vous fournirez un fichier de configuration NoSQL Database Migrator créé manuellement pour exécuter l'utilitaire Migrator en tant qu'application conteneurisée.
Conditions requises
-
Identifiez la source et le puits pour la migration.
-
Source : fichiers JSON et fichier de schéma dans le seau de système d'exploitation OCI.
Identifiez le point d'extrémité, l'espace de noms, le seau et le préfixe de la région pour le seau de système d'exploitation OCI où les fichiers JSON et le schéma sources sont disponibles. Pour plus de détails, voir Accès au service de stockage d'objets Oracle Cloud. Pour la liste des points d'extrémité du service de système d'exploitation OCI, voir Points d'extrémité du service de stockage d'objets.
-
point d'extrémité :
us-ashburn-1 -
seau :
Migrate_oci -
préfixe :
userSession -
espace de noms :
idhkv1iewjzj
Le nom de l'espace de noms d'un seau est identique à celui de sa location et est généré automatiquement lors de la création de votre location. Vous pouvez obtenir le nom de l'espace de noms comme suit :
-
À partir de la console Oracle NoSQL Database Cloud Service, naviguez jusqu'à Stockage > Seaux.
-
Sélectionnez votre compartiment dans Portée de la liste et sélectionnez le seau. La page Détails du seau affiche le nom dans le paramètre Espace de noms.
Si vous ne fournissez pas de nom d'espace de noms de système d'exploitation OCI, l'utilitaire Migrator utilise l'espace de noms par défaut de la location.
-
-
Récepteur : Tableau
usersdans Oracle NoSQL Database Cloud Service.Identifiez le point d'extrémité de la région ou le point d'extrémité du service et le nom du compartiment pour votre évier :
-
point d'extrémité :
us-ashburn-1 -
compartiment :
ocid1.compartment.oc1..aaaaaaaaleiwplazhwmicoogv3tf4lum4m4nzbcv5wfjmoxuz3doreagvdma
Identifiez le schéma de la table de puits.
Pour utiliser le nom de table et le schéma stockés dans le seau de système d'exploitation OCI, réglez le paramètre
useSourceSchemaà Vrai. Pour plus d'informations sur les autres options de schéma, voir la rubrique Identifier la source et le récepteur dans Flux de travail pour Oracle NoSQL Database Migrator.Note : Assurez-vous d'avoir les privilèges d'écriture sur le compartiment dans lequel vous restaurez les données dans la table NDCS. Pour plus de détails, voir Gestion des compartiments.
-
-
-
Préparez une image Docker pour NoSQL Database Migrator et déplacez-la vers le registre de conteneurs.
-
Obtenez l'espace de noms de location à partir de la console OCI.
Connectez-vous à la console Oracle NoSQL Database Cloud Service. Dans la barre de navigation, sélectionnez le menu Profil, puis Location : <Nom de Tenany>.
Copiez le nom de l'espace de noms du stockage d'objets, qui est l'espace de noms de la location, dans le presse-papiers.
-
Créez une image Docker pour l'utilitaire Migrator.
Accédez au répertoire dans lequel vous avez extrait l'utilitaire NoSQL Database Migrator. L'ensemble Migrator comprend un fichier docker nommé Dockerfile. À partir d'une interface de commande, utilisez la commande suivante pour créer une image Docker de l'utilitaire Migrator :
#Command: docker build -t nosqlmigrator:<tag> .#Example: docker build -t nosqlmigrator:1.0 .Vous pouvez spécifier un identificateur de version pour l'image Docker dans l'option
tag. Vérifiez votre image Docker à l'aide de la commande suivante :#Command: Docker images#Example output ------------------------------------------------------------------------------------------ REPOSITORY TAG IMAGE ID CREATED SIZE localhost/nosqlmigrator 1.0 e1dcec27a5cc 10 seconds ago 487 MB quay.io/podman/hello latest 83fc7ce1224f 10 months ago 580 kB docker.io/library/openjdk 17-jdk-slim 8a3a2ffec52a 2 years ago 406 MB ------------------------------------------------------------------------------------------ -
Générer un jeton d'authentification.
Vous avez besoin d'un jeton d'authentification pour vous connecter au registre de conteneurs afin de stocker l'image Docker de l'outil de migration. Si vous n'avez pas encore de jeton d'authentification, vous devez en générer un. Pour plus de détails, voir Obtention d'un jeton d'authentification
-
Stockez l'image Docker de l'outil de migration dans le registre de conteneurs.
Pour accéder à l'image Docker de Migrator à partir du pod Kubernetes, vous devez stocker l'image dans n'importe quel registre public ou privé. Par exemple, Docker, Artifact Hub, OCI Container Registry, etc. sont quelques registres. Dans cette démonstration, nous utilisons Container Registry. Pour plus de détails, voir Aperçu du registre de conteneurs.
-
À partir de la console OCI, créez un référentiel dans le registre de conteneurs. Pour plus de détails, consultez Création d'un référentiel.
Pour cette démonstration, vous allez créer le référentiel
okemigrator.Figure - Référentiel dans le registre de conteneurs

-
Connectez-vous au registre de conteneurs à partir de l'interface de commande à l'aide de la commande suivante :
#Command: docker login <region-key>.ocir.io -u <tenancy-namespace>/<user name>password: <Auth token>#Example: docker login iad.ocir.io -u idhx..xxwjzj/rx..xxxxh@oracle.com password: <Auth token>#Output: Login Succeeded!Dans la commande ci-dessus,
region-key: Spécifie la clé pour la région dans laquelle vous utilisez le registre de conteneurs. Pour plus de détails, voir Disponibilité par région.tenancy-namespace: Spécifie l'espace de noms de location que vous avez copié à partir de la console OCI.user name: Spécifie votre nom d'utilisateur de console OCI.password: Spécifie votre jeton d'authentification. -
Marquez et poussez votre image Docker Migrator vers le registre de conteneurs à l'aide des commandes suivantes :
#Command: docker tag <Migrator Docker image> <region-key>.ocir.io/<tenancy-namespace>/<repo>:<tag> docker push <region-key>.ocir.io/<tenancy-namespace>/<repo>:<tag>#Example: docker tag localhost/nosqlmigrator:1.0 iad.ocir.io/idhx..xxwjzj/okemigrator:1.0 docker push iad.ocir.io/idhx..xxwjzj/okemigrator:1.0Dans la commande ci-dessus,
repo: Spécifie le nom du référentiel que vous avez créé dans le registre de conteneurs.tag: Spécifie l'identificateur de version de l'image Docker.#Output: Getting image source signatures Copying blob 0994dbbf9a1b done | Copying blob 37849399aca1 done | Copying blob 5f70bf18a086 done | Copying blob 2f263e87cb11 done | Copying blob f941f90e71a8 done | Copying blob c82e5bf37b8a done | Copying blob 2ad58b3543c5 done | Copying blob 409bec9cdb8b done | Copying config e1dcec27a5 done | Writing manifest to image destination
-
-
-
Configurez une grappe OKE avec WIA vers NDCS et le système d'exploitation OCI.
-
Créez une grappe Kubernetes à l'aide d'OKE.
À partir de la console OCI, définissez et créez une grappe Kubernetes en fonction de la disponibilité des ressources de réseau à l'aide d'OKE. Vous avez besoin d'une grappe Kubernetes pour exécuter l'utilitaire Migrator en tant qu'application conteneurisée. Pour plus de détails sur la création de grappes, voir Création de grappes Kubernetes à l'aide des flux de travail de la console.
Pour cette démonstration, vous pouvez créer une grappe gérée à noeud unique à l'aide du flux de travail de création rapide décrit en détail dans le lien ci-dessus.
Figure - Grappe Kubernetes pour le conteneur de l'outil de migration

-
Configurez WIA à partir de la console OCI pour accéder à d'autres ressources OCI à partir de la grappe Kubernetes.
Pour accorder à l'utilitaire Migrator l'accès à NDCS et au seau de système d'exploitation OCI lors de l'exécution à partir des pods de grappe Kubernetes, vous devez configurer WIA. Procédez de la façon suivante :
-
Configurez le fichier de configuration kubeconfig de la grappe.
-
À partir de la console OCI, ouvrez la grappe Kubernetes que vous avez créée et cliquez sur le bouton Accéder à la grappe.
-
Dans la boîte de dialogue Accéder à votre grappe, cliquez sur Accès à Cloud Shell.
-
Cliquez sur Lancer Cloud Shell pour afficher la fenêtre Cloud Shell.
-
Exécutez la commande de l'interface CLI d'Oracle Cloud Infrastructure permettant de configurer le fichier kubeconfig. Vous pouvez copier la commande à partir de la boîte de dialogue Accéder à votre grappe. Vous pouvez vous attendre à la sortie suivante :
#Example: oci ce cluster create-kubeconfig --cluster-id ocid1.cluster.oc1.iad.aaa...muqzq --file $HOME/.kube/config --region us-ashburn-1 --token-version 2.0.0 --kube-endpoint PUBLIC_ENDPOINT#Output: New config written to the Kubeconfig file /home/<user>/.kube/config
-
-
Copiez l'OCID de la grappe à partir de l'option
cluster-iddans la commande ci-dessus et enregistrez-le pour l'utiliser dans d'autres étapes.ocid1.cluster.oc1.iad.aaa...muqzq -
Créez un espace de noms pour le compte de service Kubernetes à l'aide de la commande suivante dans la fenêtre de l'interpréteur de commandes en nuage :
#Command: kubectl create namespace <namespace-name>#Example: kubectl create namespace migrator#Output: namespace/migrator created -
Créez un compte de service Kubernetes pour l'application Migrator dans un espace de noms à l'aide de la commande suivante dans la fenêtre de l'interpréteur de commandes en nuage :
#Command: kubectl create serviceaccount <service-account-name> --namespace <namespace-name>#Example: kubectl create serviceaccount migratorsa --namespace migrator#Output: serviceaccount/migratorsa created -
Définissez une politique IAM à partir de la console OCI pour permettre à la charge de travail d'accéder aux ressources OCI à partir de la grappe Kubernetes.
À partir de la console OCI, naviguez dans les menus Identité et sécurité > Identité > Politiques. Créez les politiques suivantes pour autoriser l'accès aux ressources
nosql-familyetobject-family. Utilisez l'OCID de la grappe, de l'espace de noms et des valeurs de compte de service des étapes précédentes.#Command: Allow <subject> to <verb> <resource-type> in <location> where <conditions>#Example: Allow any-user to manage nosql-family in compartment Training-NoSQL where all { request.principal.type = 'workload', request.principal.namespace = 'migrator', request.principal.service_account = 'migratorsa', request.principal.cluster_id = 'ocid1.cluster.oc1.iad.aaaaaaaa2o6h5noeut7i4xr2bp4aohcc2ncozgvn3nny3uqu7cvp2rwmuqzq'} Allow any-user to manage object-family in compartment Training-NoSQL where all { request.principal.type = 'workload', request.principal.namespace = 'migrator', request.principal.service_account = 'migratorsa', request.principal.cluster_id = 'ocid1.cluster.oc1.iad.aaaaaaaa2o6h5noeut7i4xr2bp4aohcc2ncozgvn3nny3uqu7cvp2rwmuqzq'}Pour plus de détails sur la création de politiques, voir Utilisation de la console pour créer une politique.
-
-
Procédure
Pour migrer du fichier JSON du seau de système d'exploitation OCI vers la table NDCS, effectuez les opérations suivantes à partir de la fenêtre Cloud Shell :
-
Préparez un fichier de configuration Migrator,
migrator-config.json, avec la source du système d'exploitation OCI et le récepteur NDCS. Pour les modèles, voir Modèles de configuration source et Modèles de configuration de puits.Pour utiliser OKE WIA pour accéder au seau de système d'exploitation OCI et à NDCS, réglez le paramètre
useOKEWorkloadIdentityà Vrai dans les modèles de configuration de source et de récepteur. Ici, vous utiliserez le schéma source du fichier LDD de schéma dans le seau de système d'exploitation OCI. Par conséquent, réglez le paramètreuseSourceSchemaà Vrai dans le modèle de configuration de l'évier.Note : Lors de l'utilisation d'OKE WIA, vous ne pouvez pas générer le fichier de configuration de Migrator de manière interactive. Vous devez préparer le fichier de configuration manuellement en vous référant aux modèles de configuration source et récepteur.
{ "source" : { "type" : "object_storage_oci", "format" : "json", "endpoint" : "us-ashburn-1", "namespace" : "", "bucket" : "Migrate_oci", "prefix" : "userSession", "useOKEWorkloadIdentity" : true }, "sink" : { "type" : "nosqldb_cloud", "endpoint" : "us-ashburn-1", "table" : "users", "compartment" : "Training-NoSQL", "includeTTL" : true, "schemaInfo" : { "readUnits" : 100, "writeUnits" : 60, "storageSize" : 1, "useSourceSchema" : true }, "useOKEWorkloadIdentity" : true, "writeUnitsPercent" : 90, "overwrite" : true, "requestTimeoutMs" : 5000 }, "abortOnError" : true, "migratorVersion" : "1.8.0" } -
Créez une ressource de configuration de mappage (configmap) pour transmettre le fichier d'entrée de configuration
migrator-config.jsonau conteneur Migrator lors de l'exécution dans le pod Kubernetes. Le fichier de configuration configmap monte le fichier de configuration de Migrator dans le système de fichiers du conteneur en tant que volume de montage.#Command: kubectl create configmap oci-migrator-config --from-file=<Migrator configuration file> -n <namespace-name>#Example: kubectl create configmap oci-migrator-config --from-file=migrator-config.json -n migrator#Output: configmap/oci-migrator-config created -
Créez une clé secrète de registre Docker qui inclut les données d'identification OCI à utiliser lors de l'extraction de l'image Docker de l'outil de migration à partir du registre de conteneurs dans le pod Kubernetes.
#Command: kubectl create secret docker-registry ocirsecret --docker-server=<region-key>.ocir.io --docker-username='tenancy-namespace/username' --docker-password='auth token' --docker-email='<user Email>' -n <namespace-name>#Example: kubectl create secret docker-registry ocirsecret --docker-server=iad.ocir.io --docker-username='idhx..xxwjzj/rx..xxxxh@oracle.com' --docker-password='<Auth token>' --docker-email='rx..xxxxh@oracle.com' -n migrator#Output: secret/ocirsecret created -
Créez un fichier manifeste, que vous utiliserez pour spécifier l'image Docker de Migrator. Assurez-vous de fournir les valeurs des étapes précédentes pour l'espace de noms, le nom du compte de service Kubernetes, le nom de l'image Docker, la clé secrète du registre Docker et le mappage de configuration. Vous pouvez consulter l'exemple de fichier manifeste suivant :
#migrator-deployment.yaml apiVersion: apps/v1 kind: Deployment metadata: name: nosql-migrator spec: replicas: 1 selector: matchLabels: app: nosql-migrator template: metadata: labels: app: nosql-migrator spec: serviceAccountName: migratorsa automountServiceAccountToken: true containers: - name: nosqlmigrator image: iad.ocir.io/idhx..xxwjzj/okemigrator:1.0 imagePullPolicy: Always args: ["--config", "/config/migrator-config.json", "--log-level", "DEBUG"] volumeMounts: - name: config-volume mountPath: /config # Mount the file here imagePullSecrets: - name: ocirsecret volumes: - name: config-volume configMap: name: oci-migrator-config -
Déployez l'image Docker de Migrator dans le pod Kubernetes à l'aide de la commande suivante. OKE exécute l'utilitaire Migrator dans un conteneur sur l'un des noeuds de la grappe Kubernetes.
#Command: kubectl create -f <manifest file> -n <namespace-name>#Example: kubectl create -f migrator-deployment.yaml -n migrator#Output: deployment.apps/nosql-migrator created -
Vous pouvez vérifier les journaux à l'aide des commandes suivantes :
-
Extrayez le nom du pod sur lequel l'utilitaire Migrator est exécuté.
#Command: kubectl get pods -n <namespace-name>#Example: kubectl get pods -n migrator#Output: NAME READY STATUS RESTARTS AGE nosql-migrator-ccdbf549-6sjjg 1/1 Running 0 56s -
Utilisez le nom du pod pour extraire les journaux de l'outil de migration.
#Command: kubectl logs -f <kubernetes cluster pod name> -n <namespace-name>#Example: kubectl logs -f nosql-migrator-ccdbf549-6sjjg -n migrator#Output: SLF4J(I): Connected with provider of type [org.apache.logging.slf4j.SLF4JServiceProvider] [INFO] Configuration for migration: { "source" : { "type" : "object_storage_oci", "format" : "json", "endpoint" : "us-ashburn-1", "namespace" : "idhkv1iewjzj", "bucket" : "Migrate_oci", "prefix" : "userSession", "useOKEWorkloadIdentity" : true }, "sink" : { "type" : "nosqldb_cloud", "endpoint" : "us-ashburn-1", "table" : "users", "compartment" : "Training-NoSQL", "includeTTL" : true, "schemaInfo" : { "readUnits" : 100, "writeUnits" : 60, "storageSize" : 1, "useSourceSchema" : true }, "useOKEWorkloadIdentity" : true, "writeUnitsPercent" : 90, "overwrite" : true, "requestTimeoutMs" : 5000 }, "abortOnError" : true, "migratorVersion" : "1.8.0" } [INFO] creating source from given configuration: [INFO] source creation completed [INFO] creating sink from given configuration: [INFO] sink creation completed [INFO] creating migrator pipeline [INFO] migration started [INFO] [cloud sink] : start loading DDLs [INFO] [cloud sink] : completed loading DDLs [INFO] [cloud sink] : start loading records [INFO] [OCI OS source] : start parsing JSON records from object: users/userSession/Data/users_1_5_0.json [INFO] [OCI OS source] : start parsing JSON records from object: users/userSession/Data/users_6_10_0.json [INFO] migration completed. Records provided by source=5, Records written to sink=5, Records failed=0, Records skipped=0. Elapsed time: 0min 1sec 15ms Migration completed.
Note :
Vous pouvez exécuter itérativement la migration de données comme suit :
-
Supprimez le conteneur
nosql-migratorà l'aide de la commande suivante :#Command: kubectl delete -f <manifest file> -n <namespace-name>#Example: kubectl delete -f migrator-deployment.yaml -n migrator#Output: deployment.apps "nosql-migrator" deleted -
Mettez à jour le fichier d'entrée de configuration
migrator-config.json. -
Supprimez et recréez le fichier configmap à l'aide des commandes de l'étape 2.
Il n'est pas nécessaire de créer la clé secrète du registre Docker et le fichier manifeste de nouveau.
-
Déployez l'image Docker de Migrator dans le pod Kubernetes à l'aide du fichier manifeste (étape 5).
-
Vérification
Pour vérifier la restauration de vos données, connectez-vous à la console Oracle NoSQL Database Cloud Service. Dans la barre de navigation, allez à Bases de données > Base de données NoSQL. Sélectionnez votre compartiment dans la liste déroulante pour voir la table users. Pour la procédure d'accès à la console, voir Accès au service à partir de la console d'infrastructure.
Migrer d'Oracle NoSQL Database vers le service de stockage d'objets pour OCI à l'aide de l'authentification par jeton de session
Cet exemple montre comment utiliser Oracle NoSQL Database Migrator avec l'authentification par jeton de session pour copier des données de la table Oracle NoSQL Database vers un fichier JSON dans un seau de stockage d'objets OCI.
Cas d'utilisation
En tant que développeur, vous envisagez d'explorer une option pour sauvegarder les données de table Oracle NoSQL Database dans le service de stockage d'objets pour OCI (OCI OS). Vous voulez utiliser l'authentification basée sur un jeton de session.
Dans cette démonstration, vous allez utiliser les commandes de l'interface de ligne de commande OCI pour créer un jeton de session. Vous allez créer manuellement un fichier de configuration Migrator et effectuer la migration des données.
Conditions requises
-
Identifiez la source et le puits pour la migration.
-
Source : Tableau
usersdans Oracle NoSQL Database. -
Récepteur : Fichier JSON dans le seau de système d'exploitation OCI
Identifiez le point d'extrémité, l'espace de noms, le seau et le préfixe de la région pour le système d'exploitation OCI. Pour plus de détails, voir Accès au service de stockage d'objets Oracle Cloud. Pour la liste des points d'extrémité du service de système d'exploitation OCI, voir Points d'extrémité du service de stockage d'objets.
-
point d'extrémité :
us-ashburn-1 -
seau :
Migrate_oci -
préfixe :
userSession -
espace de noms :
idhkv1iewjzjLe nom de l'espace de noms d'un seau est le même que celui de sa location et est généré automatiquement lors de la création de votre location. Vous pouvez obtenir le nom de l'espace de noms comme suit :
-
À partir de la console Oracle NoSQL Database Cloud Service, naviguez jusqu'à Stockage> Seaux.
-
Sélectionnez votre compartiment dans la portée de la liste et sélectionnez le seau. La page Détails du seau affiche le nom dans le paramètre Espace de noms.
Si vous ne fournissez pas de nom d'espace de noms de système d'exploitation OCI, l'utilitaire Migrator utilise l'espace de noms par défaut de la location.
-
-
Note : Assurez-vous de disposer des privilèges nécessaires pour écrire des objets dans le seau de système d'exploitation OCI. Pour plus de détails sur la définition des politiques, voir Écrire dans le stockage d'objets.
-
Générez un jeton de session en procédant comme suit :
-
Installer et configurer l'interface de ligne de commande OCI. Voir Démarrage rapide.
-
Utilisez l'une des commandes d'interface de ligne de commande OCI suivantes pour générer un jeton de session. Pour plus de détails sur les options disponibles, voir Authentification basée sur un jeton pour l'interface de ligne de commande.
# Create a session token using OCI CLI from a web browser: oci session authenticate --region <region_name> --profile-name <profile_name> # Example: oci session authenticate --region us-ashburn-1 --profile-name SESSIONPROFILEou
# Create a session token using OCI CLI without a web browser: oci session authenticate --no-browser --region <region_name> --profile-name <profile_name> # Example: oci session authenticate --no-browser --region us-ashburn-1 --profile-name SESSIONPROFILEDans la commande ci-dessus :
region_name: Spécifie le point d'extrémité de région pour votre système d'exploitation OCI. Pour obtenir la liste des régions de données prises en charge dans le service Oracle NoSQL Database Cloud Service, voir Régions de données et URL du service associé.profile_name: Spécifie le profil, que la commande de l'interface de ligne de commande OCI utilise pour générer un jeton de session.La commande d'interface de ligne de commande OCI crée une entrée dans le fichier de configuration OCI dans le chemin
$HOME/.oci/config, comme illustré dans l'exemple suivant :[SESSIONPROFILE] fingerprint=f1:e9:b7:e6:25:ff:fe:05:71:be:e8:aa:cc:3d:0d:23 key_file=$HOME/.oci/sessions/SESSIONPROFILE/oci_api_key.pem tenancy=ocid1.tenancy.oc1..aaaaa ... d6zjq region=us-ashburn-1 security_token_file=$HOME/.oci/sessions/SESSIONPROFILE/tokensecurity_token_filepointe vers le chemin du jeton de session que vous avez généré à l'aide de la commande d'interface de ligne de commande OCI ci-dessus.Note :
-
Si le profil existe déjà dans le fichier de configuration OCI, la commande de l'interface de ligne de commande OCI remplace le profil par une configuration associée à un jeton de session lors de la génération du jeton de session.
-
Spécifiez ce qui suit dans votre modèle de configuration d'évier :
-
Chemin d'accès au fichier de configuration OCI dans le paramètre de données d'identification.
-
Profil utilisé lors de la génération du jeton de session dans le paramètre credentialsProfile.
"credentials" : "$HOME/.oci/config" "credentialsProfile" : "SESSIONPROFILE"L'utilitaire Migrator extrait automatiquement les détails du jeton de session généré à l'aide des paramètres ci-dessus. Si vous ne spécifiez pas le paramètre de données d'identification, l'utilitaire Migrator recherche le fichier de données d'identification dans le chemin
$HOME/.oci. Si vous ne spécifiez pas le paramètre credentialsProfile, l'utilitaire Migrator utilise le nom de profil par défaut (DEFAULT) du fichier de configuration OCI.- Le jeton de session est valide pendant 60 minutes. Pour prolonger la durée de la session, vous pouvez actualiser la session. Pour plus de détails, voir Actualisation d'un jeton.
-
-
Procédure
Pour migrer de la table Oracle NoSQL Database vers un fichier JSON dans le seau de système d'exploitation OCI :
-
Préparez le fichier de configuration (au format JSON) avec la source Oracle NoSQL Database et le fichier JSON dans le dissipateur de seau de système d'exploitation OCI. Pour les modèles, voir Modèles de configuration source et Modèles de configuration de puits.
Pour utiliser l'authentification par jeton de session pour accéder au seau de système d'exploitation OCI, réglez le paramètre useSessionToken à Vrai dans le modèle de configuration du récepteur. En conséquence, spécifiez le chemin de configuration dans le paramètre d'identification et de connexion et le nom du profil dans le paramètre d'identification et de connexion.
{ "source" : { "type" : "nosqldb", "storeName" : "kvstore", "helperHosts" : ["<hostname>:<port>"], "table" : "users", "includeTTL" : true, "requestTimeoutMs" : 5000 }, "sink" : { "type" : "object_storage_oci", "format" : "json", "endpoint" : "us-ashburn-1", "namespace" : "idhkv1iewjzj", "bucket" : "Migrate_oci", "prefix" : "userSession", "chunkSize" : 32, "compression" : "", "useSessionToken" : true, "credentials" : "$/home/.oci/config", "credentialsProfile" : "SESSIONPROFILE" }, "abortOnError" : true, "migratorVersion" : "1.8.0" } -
Ouvrez l'invite de commande et accédez au répertoire dans lequel vous avez extrait l'utilitaire NoSQL Database Migrator.
-
Exécutez la commande runMigrator en transmettant l'option de fichier de configuration. Utilisez l'option
--configou-cpour transmettre le fichier de configuration comme suit :./runMigrator --config ./migrator-config.json -
L'utilitaire Migrator procède à la migration des données. Un exemple de sortie est présenté ci-dessous.
Lorsque le paramètre useSessionToken est réglé à Vrai, l'utilitaire Migrator s'authentifie automatiquement à l'aide du jeton de session. L'utilitaire Migrator copie vos données de la table
usersdans un fichier JSON du seau de système d'exploitation OCI nomméMigrate_oci. Consultez les journaux pour connaître la réussite de la sauvegarde des données.[INFO] creating source from given configuration: [INFO] source creation completed [INFO] creating sink from given configuration: [INFO] sink creation completed [INFO] creating migrator pipeline [INFO] [OCI OS sink] : writing table schema to userSession/Schema/schema.ddl [INFO] migration started [INFO] Migration success for source users_6_10. read=2,written=2,failed=0 [INFO] Migration success for source users_1_5. read=3,written=3,failed=0 [INFO] Migration is successful for all the sources. [INFO] migration completed. Records provided by source=5, Records written to sink=5, Records failed=0,Records skipped=0. Elapsed time: 0min 0sec 982ms Migration completed.Note :
Selon le paramètre chunkSize dans le modèle de configuration de l'évier, l'utilitaire Migrator fractionne les données sources en plusieurs fichiers JSON dans le même répertoire. Dans cet exemple, l'utilitaire Migrator copie les données dans les fichiers
users_1_5_0.jsonetusers_6_10_0.jsondu répertoireMigrate_oci/userSession/Data.Le schéma de la table source est copié dans le fichier
schema.ddldu répertoireMigrate_oci/userSession/Schema.
Vérification
Pour vérifier votre sauvegarde de données, connectez-vous à la console Oracle NoSQL Database Cloud Service. Naviguez dans les menus, Storage > Object Storage & Archive Storage > Buckets. Accédez aux fichiers à partir du répertoire userSession dans le seau Migrate_oci. Pour la procédure d'accès à la console, voir Accès au service à partir de la console d'infrastructure
Migrer à partir d'un fichier CSV vers Oracle NoSQL Database Cloud Service
Cet exemple montre l'utilisation d'Oracle NoSQL Database Migrator pour copier des données d'un fichier CSV vers Oracle NoSQL Database Cloud Service.
Exemple
Après avoir évalué plusieurs options, une organisation finalise Oracle NoSQL Database Cloud Service en tant que plate-forme NoSQL Database. Comme son contenu source est au format de fichier CSV, il cherche un moyen de le migrer vers Oracle NoSQL Database Cloud Service.
Dans cet exemple, vous apprendrez à migrer les données à partir d'un fichier CSV appelé course.csv, qui contient des informations sur les différents cours offerts par une université. Vous générez le fichier de configuration de manière interactive à partir de l'utilitaire runMigrator.
Vous pouvez également préparer le fichier de configuration avec les détails de la source et de l'évier identifiés. Voir Informations de référence sur le type Oracle NoSQL Database Migrator.
Conditions requises
-
Identifiez la source de la migration.
-
Source : fichier CSV
Dans cet exemple, le fichier source est
course.csv1,"Computer Science", "San Francisco", "2500" 2,"Bio-Technology", "Los Angeles", "1200" 3,"Journalism", "Las Vegas", "1500" 4,"Telecommunication", "San Francisco", "2500" -
Le fichier CSV doit être conforme au format
RFC4180. -
Créez un fichier contenant les commandes LDD pour le schéma de la table cible,
course. La définition de la table doit correspondre au fichier de données CSV concernant le nombre de colonnes et leurs types.Dans cet exemple, le fichier LDD est
mytable_schema.ddlcreate table course (id INTEGER, name STRING, location STRING, fees INTEGER, PRIMARY KEY(id));
-
-
Identifiez l'évier pour la migration.
-
Récepteur : Oracle NoSQL Database Cloud Service
-
Identifiez vos données d'identification OCI Cloud et saisissez-les dans le fichier de configuration. Enregistrez le fichier de configuration dans
/home/<user>/.oci/config. Pour plus d'informations, voir Acquisition de données d'identification.[DEFAULT] tenancy=ocid1.tenancy.oc1.... user=ocid1.user.oc1.... fingerprint= 43:d1:.... region=us-ashburn-1 key_file=</fully/qualified/path/to/the/private/key/> pass_phrase=<passphrase> -
Identifiez le point d'extrémité de la région et le nom du compartiment pour votre service Oracle NoSQL Database Cloud Service.
-
point d'extrémité :
us-ashburn-1 -
compartiment :
ocid1.compartment.oc1..aaaaaaaavjikiwmylfnpofefbdaleg6rqyf7cdnr5o6vozg4lyajeunrhsmq
-
-
Procédure
Pour migrer des données du fichier course.csv vers Oracle NoSQL Database Cloud Service, procédez comme suit :
-
Ouvrez l'invite de commande et accédez au répertoire dans lequel vous avez extrait l'utilitaire Oracle NoSQL Database Migrator.
-
Pour générer le fichier de configuration à l'aide d'Oracle NoSQL Database Migrator, exécutez la commande
runMigratorsans aucun paramètre d'exécution.[~/nosql-migrator-1.8.0]$./runMigrator -
Comme vous n'avez pas fourni le fichier de configuration en tant que paramètre d'exécution, l'utilitaire vous invite à générer la configuration maintenant. Entrez
y.Vous pouvez choisir un emplacement pour le fichier de configuration ou conserver l'emplacement par défaut en appuyant sur
Enter key.Configuration file is not provided. Do you want to generate configuration? (y/n) [n]: y Generating a configuration file interactively. Enter a location for your config [./migrator-config.json]: ./migrator-config.json already exist. Do you want to overwrite?(y/n) [n]: y -
En fonction des invites de l'utilitaire, sélectionnez vos options pour la configuration Source.
Select the source: 1) nosqldb 2) nosqldb_cloud 3) file 4) object_storage_oci 5) aws_s3 #? 3 Configuration for source type=file Select the source file format: 1) json 2) mongodb_json 3) dynamodb_json 4) csv #? 4 -
Indiquez le chemin d'accès au fichier CSV source. En outre, en fonction des invites de l'utilitaire, vous pouvez choisir de réordonner les noms de colonne, de sélectionner la méthode d'encodage et de couper les espaces de queue de la table cible.
Enter path to a file or directory containing csv data: [~/nosql-migrator]/course.csv Does the CSV file contain a headerLine? (y/n) [n]: n Do you want to reorder the column names of NoSQL table with respect to CSV file columns? (y/n) [n]: n Provide the CSV file encoding. The supported encodings are: UTF-8,UTF-16,US-ASCII,ISO-8859-1. [UTF-8]: Do you want to trim the tailing spaces? (y/n) [n]: n -
En fonction des invites de l'utilitaire, sélectionnez l'option
nosqldb_cloudpour la configuration de l'évier.Select the sink: 1) nosqldb 2) nosqldb_cloud #? 2 -
Indiquez l'URL du point d'extrémité ou l'ID région de votre location et sélectionnez le type d'authentification pour que l'utilitaire Migrator puisse accéder à Oracle NoSQL Database Cloud Service.
Configuration for sink type=nosqldb_cloud Enter endpoint URL or region ID of the Oracle NoSQL Database Cloud: us-ashburn-1 Select the authentication type: 1) credentials_file 2) instance_principal 3) delegation_token 4) session_token 5) oke_workload_identity #? 1 -
En fonction des invites de l'utilitaire, indiquez le nom du fichier de données d'identification à utiliser pour l'authentification, le profil de données d'identification, l'ID compartiment et le nom de la table dans laquelle vous voulez copier les données au niveau du puits.
Enter path to the file containing OCI credentials [/home/<user>/.oci/config]: Enter the profile name in OCI credentials file [DEFAULT]: Enter the compartment name or id of the table []: ua_nosql Enter table name: course -
Entrez votre choix pour définir la valeur de durée de vie. La valeur par défaut est
n.Include TTL data? If you select 'yes' TTL value provided by the source will be set on imported rows. (y/n) [n]: y Would you like to provide TTL reference time?(y/n) [n]: n -
Sur la base des invites de l'utilitaire, indiquez si la table cible doit être créée au moyen de l'outil Oracle NoSQL Database Migrator. Si la table est déjà créée, il est suggéré de fournir
n. Si la table n'est pas créée, l'utilitaire demande le chemin du fichier contenant les commandes LDD pour le schéma de la table cible.Would you like to create table as part of migration process? Use this option if you want to create table through the migration tool. If you select yes, you will be asked to provide a file that contains table DDL or to use schema provided by the source or default schema. (y/n) [n]: y Enter path to a file containing table DDL: [~/nosql-migrator]/mytable_schema.ddl -
Entrez les valeurs de débit et d'affectation de stockage pour la table de puits.
Would you like to use on demand read and write units? (y/n) [n]: n Enter read throughput in KB of new table: 100 Enter write throughput in KB of new table: 60 Enter storage size in GB of new table: 1 Enter percentage of table write units to be used for migration operation. (1-100) [90]: 90 -
Entrez vos choix pour déterminer si les enregistrements doivent être remplacés ou non si la table est déjà disponible au niveau de l'évier. Vous pouvez également ajouter des transformations à vos données sources.
would you like to overwrite records which are already present? If you select 'no' records with same primary key will be skipped [y/n] [y]: y Enter store operation timeout in milliseconds. [5000]: Would you like to add transformations to source data? (y/n) [n]: n Would you like to continue migration if any data fails to be migrated? (y/n) [n]: n -
L'utilitaire affiche la configuration générée à l'écran.
{ "source" : { "type" : "file", "format" : "csv", "dataPath" : "[~/nosql-migrator]/course.csv", "hasHeader" : false, "csvOptions" : { "encoding" : "UTF-8", "trim" : false } }, "sink" : { "type" : "nosqldb_cloud", "endpoint" : "us-ashburn-1", "table" : "course", "compartment" : "ua_nosql", "includeTTL" : true, "schemaInfo" : { "readUnits" : 100, "writeUnits" : 60, "storageSize" : 1, "schemaPath" : "[~/nosql-migrator]/mytable_schema.ddl" }, "credentials" : "/home/<user>/.oci/config", "credentialsProfile" : "DEFAULT", "writeUnitsPercent" : 90, "overwrite" : true, "requestTimeoutMs" : 5000 }, "abortOnError" : true, "migratorVersion" : "1.8.0" } -
Enfin, l'utilitaire vous invite à spécifier si la migration doit être effectuée à l'aide du fichier de configuration généré. L'option par défaut est
y.Remarque :
Si vous sélectionnez
n, la migration des données n'est pas lancée. Le fichier de configuration généré est enregistré dans le répertoire Migrator. Utilisez l'une des commandes suivantes pour exécuter l'utilitaire de migration avec l'option de fichier de configuration../runMigrator -c ./migrator-config.json./runMigrator --config ./migrator-config.jsonWould you like to run the migration with above configuration? If you select no, you can use the generated configuration file to run the migration using: ./runMigrator --config ./migrator-config.json (y/n) [y]: y -
NoSQL Database Migrator copie vos données du fichier CSV vers Oracle NoSQL Database Cloud Service.
creating source from given configuration: source creation completed creating sink from given configuration: sink creation completed creating migrator pipeline [cloud sink] : start loading DDLs [cloud sink] : executing DDL: create table if not exists course (id INTEGER, name STRING, location STRING, fees INTEGER, PRIMARY KEY(id)),limits: [100, 60, 1] [cloud sink] : completed loading DDLs migration started [csv file source] : start parsing CSV records from file: course.csv Migration success for source course. read=4,written=4,failed=0 Migration is successful for all the sources. migration completed. Records provided by source=4, Records written to sink=4, Records failed=0,Records skipped=0. Elapsed time: 0min 0sec 395ms Migration completed.
Vérification
Pour vérifier la migration, vous pouvez vous connecter à la console Oracle NoSQL Database Cloud Service et accéder à la table course. La table contient les données sources. Pour la procédure d'accès à la console, voir l'article Accès au service à partir de la console d'infrastructure dans le document Oracle NoSQL Database Cloud Service.