La source de données GBase8a permet la lecture et l'écriture de données depuis et vers GBase8a. Cette rubrique décrit les fonctionnalités de synchronisation des données pour GBase8a dans DataWorks.
GBase8a Reader et GBase8a Writer prennent en charge :
la lecture à partir de plusieurs tables au sein d'une seule tâche de synchronisation ;
le filtrage des lignes avec des conditions WHERE pour la synchronisation incrémentielle ;
le partitionnement des grandes tables par clé primaire pour les lectures parallèles ;
l'écriture de données avec des hooks SQL avant et après l'exécution.
Limitations
GBase8a Reader et GBase8a Writer prennent en charge Groupes de ressources Serverless (recommandé) et Groupes de ressources exclusifs pour Data Integration.
Lorsqu'une instruction INSERT INTO rencontre un conflit de clé primaire ou d'index unique, les lignes concernées ne sont pas écrites.
L'écriture des données n'est possible que dans une table de destination située dans la base de données principale.
La tâche nécessite au minimum l'autorisation INSERT INTO. Des autorisations supplémentaires peuvent être requises pour les instructions spécifiées dans
preSqletpostSql.GBase8a Writer ne prend pas en charge le paramètre
writeMode.
Prérequis
Ajoutez une source de données GBase8a à DataWorks avant de développer une tâche de synchronisation. Suivez les instructions disponibles dans la section Gestion des sources de données. Les descriptions des paramètres sont disponibles dans la console DataWorks lors de l'ajout de la source de données.
Configuration d'une tâche de synchronisation
Configurez une tâche de synchronisation hors ligne pour une seule table en utilisant soit l'interface sans code, soit l'éditeur de code :
Interface sans code : Configuration dans l'interface sans code
Éditeur de code : Configuration dans l'éditeur de code
Pour les descriptions des paramètres de l'éditeur de code et des exemples de scripts, consultez la section Annexe : Exemples de scripts et descriptions des paramètres.
Annexe : Exemples de scripts et descriptions des paramètres
Les scripts et tableaux de paramètres suivants couvrent les paramètres spécifiques à GBase8a Reader et GBase8a Writer. Pour le format de script unifié requis par l'éditeur de code, consultez la section Configuration d'une tâche dans l'éditeur de code.
Exemple de script Reader
{
"type": "job",
"steps": [
{
"stepType": "gbase8a",
"parameter": {
"datasource": "",
"username": "",
"password": "",
"where": "",
"column": [
"id",
"name"
],
"splitPk": "id",
"connection": [
{
"table": [
"table"
],
"datasource": ""
}
]
},
"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"
},
"speed": {
"throttle": true,
"concurrent": 1,
"mbps": "12"
}
}
}
Paramètres Reader
| Paramètre | Description | Obligatoire | Valeur par défaut |
|---|---|---|---|
table |
Tables sources pour la synchronisation des données. Spécifiez ce paramètre sous forme de tableau JSON. Plusieurs tables peuvent être lues en parallèle, mais elles doivent toutes avoir le même schéma. GBase8a Reader ne vérifie pas la cohérence du schéma entre les tables. Le paramètre table doit être imbriqué dans le bloc de configuration connection. |
Oui | Aucune |
column |
Colonnes à synchroniser. Spécifiez ce paramètre sous forme de tableau JSON. Utilisez ["*"] pour sélectionner toutes les colonnes. Ce paramètre prend en charge l'élagage des colonnes (sélection de colonnes spécifiques), le réordonnancement des colonnes (export dans un ordre différent du schéma), les valeurs constantes (par exemple, '123') et les colonnes de fonction (par exemple, date('now')). Ne peut pas être vide. |
Oui | Aucune |
datasource |
Nom de la source de données GBase8a ajoutée dans DataWorks. | Non | Aucune |
splitPk |
Colonne utilisée pour partitionner les données lors des lectures parallèles. Utilisez une clé primaire de type entier pour assurer une distribution uniforme des données et éviter les points chauds. Seuls les types entiers sont pris en charge ; les chaînes, les nombres à virgule flottante et les dates ne sont pas pris en charge. Dans ce cas, le paramètre est ignoré et la lecture s'effectue sur un seul canal. Laissez ce champ vide pour désactiver le partitionnement. | Non | Vide |
where |
Condition de filtre ajoutée à la requête SQL. GBase8a Reader construit une requête à partir des paramètres column, table et where pour extraire les données. Utilisez where pour la synchronisation incrémentielle. Par exemple, définissez-le sur gmt_create>$bizdate pour synchroniser les données du jour en cours. Si vous laissez ce champ vide, une synchronisation complète des données est effectuée. |
Non | Aucune |
querySql |
Requête SQL personnalisée qui remplace les paramètres table, column, where et splitPk. Utilisez cette option lorsque le paramètre where seul ne suffit pas à exprimer la logique de filtre requise. Lorsque le paramètre querySql est défini, GBase8a Reader ignore les paramètres table, column, where et splitPk. |
Non | Aucune |
fetchSize |
Nombre d'enregistrements récupérés de la base de données par lot. Une valeur plus élevée réduit les allers-retours réseau et améliore le débit de lecture. Remarque
Les valeurs supérieures à 2048 peuvent provoquer une erreur de mémoire insuffisante (OOM) pendant la synchronisation. |
Non | 1 024 |
Exemple de script Writer
{
"type": "job",
"version": "2.0",
"steps": [
{
"stepType": "stream",
"parameter": {},
"name": "Reader",
"category": "reader"
},
{
"stepType": "gbase8a",
"parameter": {
"datasource": "Data source name",
"username": "",
"password": "",
"column": [
"id",
"name"
],
"connection": [
{
"table": [
"Gbase8a_table"
],
"datasource": ""
}
],
"preSql": [
"delete from @table where db_id = -1"
],
"postSql": [
"update @table set db_modify_time = now() where db_id = 1"
]
},
"name": "Writer",
"category": "writer"
}
],
"setting": {
"errorLimit": {
"record": "0"
},
"speed": {
"throttle": true,
"concurrent": 1,
"mbps": "12"
}
},
"order": {
"hops": [
{
"from": "Reader",
"to": "Writer"
}
]
}
}
Paramètres Writer
| Paramètre | Description | Obligatoire | Valeur par défaut |
|---|---|---|---|
datasource |
Nom de la source de données ajoutée dans DataWorks. Doit correspondre exactement au nom de la source de données ajoutée. | Oui | Aucune |
table |
Table de destination pour l'écriture des données. Spécifiez ce paramètre sous forme de tableau JSON. Le paramètre table doit être imbriqué dans le bloc de configuration connection. |
Oui | Aucune |
column |
Colonnes de destination vers lesquelles écrire. Séparez les différentes colonnes par des virgules, par exemple ["id", "name", "age"]. Ne peut pas être vide. |
Oui | Aucune |
preSql |
Instruction SQL à exécuter avant l'écriture des données. Utilisez @table comme espace réservé pour le nom de la table de destination ; le système substitue le nom réel de la table au moment de l'exécution. |
Non | Aucune |
postSql |
Instruction SQL à exécuter après la fin de l'écriture des données. | Non | Aucune |
batchSize |
Nombre d'enregistrements soumis par lot. Une valeur plus élevée réduit les allers-retours réseau et améliore le débit d'écriture. Des valeurs excessivement élevées peuvent provoquer une erreur de mémoire insuffisante (OOM) pendant la synchronisation. | Non | 1 024 |