Tous les produits
Search
Centre de documentation

DataWorks:Source de données ApsaraDB for OceanBase

Dernière mise à jour :Sep 09, 2026

La source de données ApsaraDB for OceanBase permet de lire et d'écrire des données dans ApsaraDB for OceanBase. Utilisez cette source de données pour configurer des tâches de synchronisation de données dans DataWorks. Cette rubrique décrit les fonctionnalités de synchronisation des données avec ApsaraDB for OceanBase.

Versions prises en charge

ApsaraDB for OceanBase Reader et ApsaraDB for OceanBase Writer prennent en charge les versions suivantes d'OceanBase pour les opérations de lecture et d'écriture par lots :

  • OceanBase 2.x

  • OceanBase 3.x

  • OceanBase 4.x

Les versions mentionnées ci-dessus concernent toutes ApsaraDB for OceanBase, le service géré par Alibaba Cloud. OceanBase Community Edition (CE) n'est pas pris en charge. Pour synchroniser des données depuis une instance OceanBase Community Edition auto-gérée, migrez d'abord les données vers ApsaraDB RDS for MySQL à l'aide du service Data Transmission Service (DTS), puis utilisez DataWorks pour synchroniser les données vers AnalyticDB for MySQL.

Limites

Lecture par lots

  • ApsaraDB for OceanBase prend en charge les modes de locataire Oracle et MySQL. Lorsque vous configurez la clause where pour le filtrage des données ou les colonnes de fonction dans le paramètre column, assurez-vous que la syntaxe respecte les contraintes SQL du mode de locataire correspondant. Sinon, l'instruction SQL peut échouer.

  • Vous pouvez lire des données à partir d'une vue.

  • Lors d'une lecture par lots, ne modifiez pas les données en cours de synchronisation. Cela permet d'éviter des problèmes de qualité des données, tels que la duplication ou la perte de données.

  • Si vous configurez la source de données pour Read by Partition, le compte utilisé pour accéder à la source de données doit disposer des autorisations system.

Écriture par lots

Remarque

La tâche de synchronisation requiert au minimum les autorisations insert into... . D'autres autorisations peuvent être nécessaires selon les instructions spécifiées dans les paramètres preSql et postSql .

  • Nous vous recommandons d'utiliser la méthode batch pour écrire les données. Cette méthode envoie une requête d'écriture uniquement lorsque le nombre de lignes accumulées atteint un seuil prédéfini.

  • ApsaraDB for OceanBase prend en charge les modes de locataire Oracle et MySQL. Lorsque vous configurez les paramètres preSql et postSql , assurez-vous que la syntaxe respecte les contraintes SQL du mode de locataire correspondant. Sinon, l'instruction SQL peut échouer.

Lecture en temps réel

  • Cette fonctionnalité prend uniquement en charge le mode de locataire MySQL d'OceanBase.

  • Pour synchroniser des données en temps réel, vous devez activer la fonctionnalité binlog. Pour plus d'informations, reportez-vous à Opérations liées au binlog (instances Alibaba Cloud), Opérations liées au binlog (instances OB Cloud) .

  • Les tâches de synchronisation complète de la base de données en temps réel ne prennent pas en charge les sources de données en mode chaîne de connexion.

  • Pour les tâches de synchronisation complète de la base de données en temps réel, la version de la base de données doit être la V3.0 ou ultérieure.

  • OceanBase est une base de données relationnelle distribuée capable d'intégrer les données de plusieurs bases de données physiquement distribuées en une seule base de données logique. Toutefois, la synchronisation en temps réel des données OceanBase vers AnalyticDB for MySQL prend actuellement en charge uniquement les données provenant d'une seule base de données physique. La synchronisation des données depuis une base de données logique n'est pas prise en charge.

Préparatifs avant la synchronisation des données

Avant de synchroniser des données dans DataWorks, préparez l'environnement ApsaraDB for OceanBase comme décrit dans cette rubrique. Cela garantit que les tâches de synchronisation des données ApsaraDB for OceanBase peuvent être correctement configurées et exécutées dans DataWorks. Les sections suivantes décrivent les préparatifs requis.

Configurer une liste d'autorisation

Ajoutez le bloc CIDR VPC du groupe de ressources Serverless ou du groupe de ressources exclusif pour Data Integration à la liste d'autorisation OceanBase. Pour plus d'informations, reportez-vous à Ajouter des entrées à la liste d'autorisation .

Créer un compte et configurer les autorisations

Créez un compte de base de données pour les opérations ultérieures. Ce compte doit disposer des autorisations requises sur OceanBase. Pour plus d'informations, reportez-vous à Créer un compte et configurer les autorisations .

Ajouter une source de données

Avant de développer une tâche de synchronisation dans DataWorks, ajoutez la source de données requise à DataWorks en suivant les instructions de Configuration de la source de données . Consultez les descriptions des paramètres dans la console DataWorks pour comprendre la signification des paramètres lors de l'ajout d'une source de données.

Développer des tâches de synchronisation de données

Pour obtenir des informations sur le point d'entrée et la procédure de configuration d'une tâche de synchronisation, consultez les guides de configuration suivants.

Synchronisation par lots d'une table unique

Synchronisation en temps réel d'une table unique

Synchronisation en temps réel de la base de données complète

Annexe : Exemples de scripts et descriptions des paramètres

Configurer une tâche de synchronisation par lots à l'aide de l'éditeur de code

Si vous souhaitez configurer une tâche de synchronisation par lots à l'aide de l'éditeur de code, configurez les paramètres associés dans le script selon les exigences de format de script unifié. Pour plus d'informations, reportez-vous à Configuration en mode script . Les informations suivantes décrivent les paramètres que vous devez configurer pour les sources de données lors de la configuration d'une tâche de synchronisation par lots à l'aide de l'éditeur de code.

Exemple de script Reader

{ "type": "job", "steps": [ { "stepType": "apsaradb_for_OceanBase", // The plug-in name. "parameter": { "datasource": "", // The data source name. "where": "", "column": [ // The columns. "id", "name" ], "splitPk": "" }, "name": "Reader", "category": "reader" }, { "stepType": "stream", "parameter": { "print": false, "fieldDelimiter": "," }, "name": "Writer", "category": "writer" } ], "version": "2.0", "order": { "hops": [ { "from": "Reader", "to": "Writer" } ] }, "setting": { "errorLimit": { "record": "0" // The error count. }, "speed": { "throttle": true, // Specifies whether to enable throttling. A value of false indicates that throttling is disabled and the mbps parameter does not take effect. A value of true indicates that throttling is enabled. "concurrent": 1, // The concurrency. "mbps":"12" // The throttling rate. 1 mbps = 1 MB/s. } } }

Paramètres du script Reader

Paramètre

Description

Obligatoire

Valeur par défaut

datasource

Si l'édition DataWorks que vous utilisez prend en charge l'ajout de sources de données ApsaraDB for OceanBase, vous pouvez référencer une source de données ApsaraDB for OceanBase ajoutée par son nom.

Deux méthodes de configuration sont disponibles : jdbcUrl et username.

Oui

N/A

jdbcUrl

Les informations de connexion JDBC de la base de données de destination. Utilisez un tableau JSON pour la description. Vous pouvez spécifier plusieurs adresses de connexion pour une seule base de données.

Si plusieurs adresses sont configurées, ApsaraDB for OceanBase Reader teste la connectivité de chaque adresse IP séquentiellement jusqu'à ce qu'une adresse valide soit trouvée.

Si toutes les connexions échouent, ApsaraDB for OceanBase Reader signale une erreur.

Remarque

jdbcUrl doit être inclus dans l'unité de configuration connection.

Selon la spécification officielle d'ApsaraDB for OceanBase, jdbcUrl peut inclure des informations de contrôle de connexion supplémentaires. Par exemple, jdbc:oceanbase://127.0.0.1:3306/database. Vous devez utiliser soit ce paramètre, soit username, mais pas les deux.

Non

N/A

username

Le nom d'utilisateur de la source de données.

Non

N/A

password

Le mot de passe du nom d'utilisateur spécifié pour la source de données.

Non

N/A

table

Les tables à synchroniser. Utilisez un tableau JSON pour la description. Vous pouvez lire des données à partir de plusieurs tables simultanément.

Lorsque plusieurs tables sont configurées, assurez-vous que toutes les tables ont le même schéma. ApsaraDB for OceanBase Reader ne vérifie pas la cohérence du schéma entre les tables.

Remarque

table doit être inclus dans l'unité de configuration connection.

Oui

N/A

column

Les colonnes à synchroniser à partir des tables configurées. Utilisez un tableau JSON pour décrire les informations de colonne. Par défaut, toutes les colonnes sont utilisées, par exemple [*].

  • L'élagage des colonnes est pris en charge : vous pouvez exporter uniquement des colonnes spécifiques.

  • Le réordonnancement des colonnes est pris en charge : vous pouvez exporter les colonnes dans un ordre différent du schéma de la table.

  • La configuration de constantes est prise en charge. Par exemple, '123'.

  • Les colonnes de fonction sont prises en charge. Par exemple, date('now').

  • column doit spécifier explicitement l'ensemble des colonnes à synchroniser et ne peut pas être laissé vide.

Oui

N/A

splitPk

Si vous spécifiez splitPk lorsque ApsaraDB for OceanBase Reader extrait des données, les données sont divisées en fonction de la colonne spécifiée par splitPk. Le système de synchronisation des données démarre ensuite des tâches concurrentes pour améliorer l'efficacité de la synchronisation.

  • Nous vous recommandons de définir splitPk sur la clé primaire de la table. La clé primaire est généralement distribuée de manière uniforme, ce qui permet d'éviter les points chauds de données entre les shards.

  • Actuellement, splitPk prend uniquement en charge le fractionnement de type entier. Les types chaîne, flottant, date et autres ne sont pas pris en charge. Si vous spécifiez un type non pris en charge, ApsaraDB for OceanBase Reader signale une erreur.

  • Si splitPk est laissé vide, le système considère que vous ne souhaitez pas diviser une seule table. Dans ce cas, un seul canal est utilisé pour l'extraction des données.

Non

Vide

where

ApsaraDB for OceanBase Reader assemble une instruction SQL basée sur les paramètres column, table et where spécifiés, puis utilise l'instruction SQL assemblée pour extraire les données.

Par exemple, lors des tests, vous pouvez définir la condition where sur limit 10. Dans les scénarios commerciaux réels, vous synchronisez généralement les données générées le jour en cours en définissant la condition where sur gmt_create>$bizdate.

  • La condition where peut être utilisée pour la synchronisation incrémentielle des données.

  • Si la condition where n'est pas configurée ou laissée vide, toutes les données de la table sont synchronisées.

Non

N/A

querySql

Dans certains scénarios commerciaux, le paramètre where peut ne pas suffire à décrire les conditions de filtrage requises. Vous pouvez utiliser ce paramètre pour définir une instruction SQL de filtrage personnalisée. Lorsque ce paramètre est configuré, le système de synchronisation des données ignore les paramètres tables, columns et splitPk, et utilise l'instruction SQL configurée pour filtrer les données.

Lorsque vous configurez querySql, ApsaraDB for OceanBase Reader ignore les paramètres table, column, where et splitPk.

Non

N/A

fetchSize

Ce paramètre spécifie le nombre de lignes récupérées par lot entre le plug-in et le serveur de base de données. Cette valeur détermine le nombre d'interactions réseau entre le système de synchronisation des données et le serveur, et peut améliorer considérablement les performances d'extraction des données.

Remarque

Une valeur fetchSize trop élevée (>2048) peut provoquer une erreur de mémoire insuffisante (OOM) lors du processus de synchronisation des données.

Non

1 024

Exemple de script Writer

{ "type":"job", "version":"2.0", // The version number. "steps":[ { "stepType":"stream", "parameter":{}, "name":"Reader", "category":"reader" }, { "stepType":"apsaradb_for_OceanBase", // The plug-in name. "parameter":{ "datasource": "Data source name", "column": [ // The columns. "id", "name" ], "table": "apsaradb_for_OceanBase_table", // The table name. "preSql": [ // The SQL statements to execute before the data synchronization task runs. "delete from @table where db_id = -1" ], "postSql": [ // The SQL statements to execute after the data synchronization task runs. "update @table set db_modify_time = now() where db_id = 1" ], "obWriteMode": "insert", }, "name":"Writer", "category":"writer" } ], "setting":{ "errorLimit":{ "record":"0" // The error count. }, "speed":{ "throttle":true, // Specifies whether to enable throttling. A value of false indicates that throttling is disabled and the mbps parameter does not take effect. A value of true indicates that throttling is enabled. "concurrent":1, // The concurrency. "mbps":"12" // The throttling rate. 1 mbps = 1 MB/s. } }, "order":{ "hops":[ { "from":"Reader", "to":"Writer" } ] } }

Paramètres du script Writer

Paramètre

Description

Obligatoire

Valeur par défaut

datasource

Si l'édition DataWorks que vous utilisez prend en charge l'ajout de sources de données ApsaraDB for OceanBase, vous pouvez référencer une source de données ApsaraDB for OceanBase ajoutée par son nom.

Deux méthodes de configuration sont disponibles : jdbcUrl et username.

Non

N/A

jdbcUrl

Les informations de connexion JDBC de la base de données de destination. jdbcUrl est inclus dans l'unité de configuration connection.

  • Vous ne pouvez configurer qu'une seule valeur pour une base de données unique. Les scénarios où la même base de données possède plusieurs nœuds principaux (importation double principale) ne sont pas pris en charge.

  • Le format de jdbcUrl est conforme à la spécification officielle d'ApsaraDB for OceanBase et peut inclure des paramètres de connexion supplémentaires. Par exemple, jdbc:oceanbase://127.0.0.1:3306/database.

Oui

N/A

username

Le nom d'utilisateur de la source de données.

Oui

N/A

password

Le mot de passe du nom d'utilisateur spécifié pour la source de données.

Oui

N/A

table

Le nom de la table dans laquelle les données sont écrites. Utilisez un tableau JSON pour la description.

Remarque

table doit être inclus dans l'unité de configuration connection.

Oui

N/A

column

Les colonnes de la table de destination dans lesquelles les données sont écrites. Séparez les noms de colonnes par des virgules (,). Par exemple, "column": ["id", "name", "age"].

Remarque

Le paramètre column doit être spécifié et ne peut pas être laissé vide.

Oui

N/A

obWriteMode

Le mode utilisé pour écrire les données dans la table de destination. Ce paramètre est facultatif.

  • insert : insert into ... Lorsqu'un conflit de clé primaire ou d'index unique se produit, les lignes conflictuelles ne peuvent pas être écrites.

  • update : ... on duplicate key update ... Utilisé en mode de locataire MySQL. Les lignes conflictuelles sont mises à jour en cas de conflit.

  • merge : merge into ... matched then update ... Utilisé en mode de locataire Oracle. Les lignes conflictuelles sont mises à jour en cas de conflit.

Non

insert

onClauseColumns

Remarque

Utilisé en mode de locataire Oracle. Ce paramètre est requis lorsque obWriteMode est défini sur merge. Si ce paramètre n'est pas configuré, les données sont écrites en utilisant insert.

Définissez ce paramètre sur les colonnes de clé primaire ou les colonnes de contrainte unique. Séparez plusieurs colonnes par des virgules (,). Par exemple, ID,C1.

Non

N/A

obUpdateColumns

Remarque

Ce paramètre prend effet lorsque obWriteMode est défini sur merge ou update.

Les colonnes à mettre à jour lorsqu'un conflit d'écriture se produit. Séparez plusieurs colonnes par des virgules (,). Par exemple, c2,c3.

Non

Toutes les colonnes

preSql

Les instructions SQL standard à exécuter avant l'écriture des données dans la table de destination. Si vous devez référencer le nom de la table dans les instructions SQL, utilisez @table comme espace réservé. Le système remplace cette variable par le nom de table réel au moment de l'exécution.

Non

N/A

postSql

Les instructions SQL standard à exécuter après l'écriture des données dans la table de destination.

Non

N/A

batchSize

Le nombre d'enregistrements à soumettre dans chaque lot. Cette valeur peut réduire considérablement le nombre d'interactions réseau entre le système de synchronisation des données et le serveur, et améliorer le débit global.

Remarque

Une valeur fetchSize trop élevée (>2048) peut provoquer une erreur de mémoire insuffisante (OOM) lors du processus de synchronisation des données.

Non

1 024