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 les tâches de synchronisation des données dans DataWorks. Cette rubrique décrit les fonctionnalités de synchronisation des données avec ApsaraDB for OceanBase.
Versions prises en charge
Les modules Reader et Writer ApsaraDB for OceanBase 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
Limites
Lecture par lots
ApsaraDB for OceanBase prend en charge les modes 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, veillez à ce que la syntaxe respecte les contraintes SQL du mode locataire correspondant. Sinon, l'instruction SQL risque d'échouer.
La lecture des données depuis une vue est possible.
Lors d'une lecture par lots, ne modifiez pas les données en cours de synchronisation afin 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 la fonction Read by Partition, le compte utilisé pour accéder à la source de données doit disposer des autorisations system.
Écriture par lots
La tâche de synchronisation requiert au minimum les autorisations insert into.... D'autres autorisations peuvent s'avérer nécessaires selon les instructions spécifiées dans les paramètres preSql et postSql.
Nous recommandons d'utiliser la méthode batch pour écrire les données. Cette méthode n'envoie une requête d'écriture que lorsque le nombre de lignes accumulées atteint un seuil prédéfini.
ApsaraDB for OceanBase prend en charge les modes locataire Oracle et MySQL. Lorsque vous configurez les paramètres preSql et postSql, assurez-vous que la syntaxe respecte les contraintes SQL du mode locataire correspondant. Sinon, l'instruction SQL risque d'échouer.
Lecture en temps réel
Cette fonctionnalité prend uniquement en charge le mode locataire MySQL d'OceanBase.
Pour synchroniser des données en temps réel, activez la fonctionnalité binlog. Pour plus d'informations, consultez les pages Opérations liées aux binlogs (instances Alibaba Cloud), Opérations liées aux binlogs (instances OB Cloud).
Les tâches de synchronisation complète de 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 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 ne prend actuellement en charge que les données provenant d'une seule base de données physique. La synchronisation des données d'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 la configuration et l'exécution correctes des tâches de synchronisation des données ApsaraDB for OceanBase dans DataWorks. Les sections suivantes détaillent les préparatifs requis.
Configurer une liste d'autorisation
Ajoutez le bloc CIDR du VPC du Groupe de ressources Serverless ou du groupe de ressources exclusif pour Data Integration à la liste d'autorisation OceanBase. Pour plus d'informations, consultez la page 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, consultez la page 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 la page Configuration de la source de données. Consultez les descriptions des paramètres dans la console DataWorks pour comprendre leur signification lors de l'ajout d'une source de données.
Développer des tâches de synchronisation des 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 sur table unique
Sources prises en charge : tous les types de sources de données pris en charge par le module Data Integration
Guide de configuration : Configurer une tâche de synchronisation par lots
Synchronisation en temps réel sur table unique
Sources prises en charge : Kafka
Guide de configuration : Configurer une tâche de synchronisation en temps réel
Synchronisation en temps réel de base de données complète
Sources prises en charge : MySQL
Guide de configuration : Configurer une tâche de synchronisation en temps réel
Annexe : exemples de scripts et descriptions des paramètres
Configurer une tâche de synchronisation par lots à l'aide de l'éditeur de code
Pour configurer une tâche de synchronisation par lots à l'aide de l'éditeur de code, définissez les paramètres associés dans le script conformément aux exigences de format de script unifié. Pour plus d'informations, consultez la page Configuration en mode script. Les informations suivantes décrivent les paramètres à 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, le module Reader ApsaraDB for OceanBase teste la connectivité de chaque adresse IP séquentiellement jusqu'à ce qu'une adresse valide soit trouvée. Si toutes les connexions échouent, le module Reader ApsaraDB for OceanBase signale une erreur. Remarque
jdbcUrl doit être inclus dans l'unité de configuration connection. Conformément à la spécification officielle d'ApsaraDB for OceanBase, jdbcUrl peut inclure des informations de contrôle de connexion supplémentaires. Par exemple, |
Non |
N/A |
|
username |
Le nom d'utilisateur de la source de données. |
Non |
N/A |
|
password |
Le mot de passe associé au 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 depuis plusieurs tables simultanément. Lorsque plusieurs tables sont configurées, assurez-vous que toutes les tables ont le même schéma. Le module Reader ApsaraDB for OceanBase 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 depuis les 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 [*].
|
Oui |
N/A |
|
splitPk |
Si vous spécifiez splitPk lorsque le module Reader ApsaraDB for OceanBase 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 lance ensuite des tâches concurrentes pour améliorer l'efficacité de la synchronisation.
|
Non |
Vide |
|
where |
Le module Reader ApsaraDB for OceanBase 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 actuel en définissant la condition where sur
|
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, le module Reader ApsaraDB for OceanBase 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.
|
Oui |
N/A |
|
username |
Le nom d'utilisateur de la source de données. |
Oui |
N/A |
|
password |
Le mot de passe associé au 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, 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.
|
Non |
insert |
|
onClauseColumns |
Remarque
Utilisé en mode locataire Oracle. Ce paramètre est requis lorsque 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, |
Non |
N/A |
|
obUpdateColumns |
Remarque
Ce paramètre prend effet lorsque Les colonnes à mettre à jour lorsqu'un conflit d'écriture se produit. Séparez plusieurs colonnes par des virgules (,). Par exemple, |
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 |
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 par 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 |