La source de données MariaDB connecte DataWorks à MariaDB pour une synchronisation hors ligne bidirectionnelle : lecture depuis et écriture dans les bases de données et vues MariaDB. Cette rubrique présente les versions prises en charge, les types de champs, la configuration des comptes et les paramètres de script pour les tâches de synchronisation hors ligne.
Prérequis
Pour connecter DataWorks à une base de données MariaDB, procédez comme suit :
Versions de MariaDB prises en charge
Versions prises en charge : 5,5.x, 10,0.x, 10,1.x, 10,2.x et 10,3.x.
La synchronisation hors ligne prend également en charge la lecture depuis des vues.
Types de champs pris en charge
Le tableau suivant répertorie les types de champs pris en charge pour MariaDB 10,3.x. Pour les autres versions, consultez la documentation officielle de MariaDB.
| Type de champ | Lecture hors ligne (lecteur MariaDB) | Écriture hors ligne (éditeur MariaDB) |
|---|---|---|
| TINYINT | Pris en charge | Pris en charge |
| SMALLINT | Pris en charge | Pris en charge |
| INTEGER | Pris en charge | Pris en charge |
| BIGINT | Pris en charge | Pris en charge |
| FLOAT | Pris en charge | Pris en charge |
| DOUBLE | Pris en charge | Pris en charge |
| DECIMAL/NUMERIC | Pris en charge | Pris en charge |
| REAL | Non pris en charge | Non pris en charge |
| VARCHAR | Pris en charge | Pris en charge |
| JSON | Pris en charge | Pris en charge |
| TEXT | Pris en charge | Pris en charge |
| MEDIUMTEXT | Pris en charge | Pris en charge |
| LONGTEXT | Pris en charge | Pris en charge |
| VARBINARY | Pris en charge | Pris en charge |
| BINARY | Pris en charge | Pris en charge |
| TINYBLOB | Pris en charge | Pris en charge |
| MEDIUMBLOB | Pris en charge | Pris en charge |
| LONGBLOB | Pris en charge | Pris en charge |
| ENUM | Pris en charge | Pris en charge |
| SET | Pris en charge | Pris en charge |
| BOOLEAN | Pris en charge | Pris en charge |
| BIT | Pris en charge | Pris en charge |
| DATE | Pris en charge | Pris en charge |
| DATETIME | Pris en charge | Pris en charge |
| TIMESTAMP | Pris en charge | Pris en charge |
| TIME | Pris en charge | Pris en charge |
| YEAR | Pris en charge | Pris en charge |
| LINESTRING | Non pris en charge | Non pris en charge |
| POLYGON | Non pris en charge | Non pris en charge |
| MULTIPOINT | Non pris en charge | Non pris en charge |
| MULTILINESTRING | Non pris en charge | Non pris en charge |
| MULTIPOLYGON | Non pris en charge | Non pris en charge |
| GEOMETRYCOLLECTION | Non pris en charge | Non pris en charge |
Configuration des autorisations du compte
Créez un compte MariaDB dédié permettant à DataWorks d'accéder à la source de données.
-
Exécutez l'instruction suivante pour vérifier la version de MariaDB :
SELECT VERSION(); (Facultatif) Créez un compte de synchronisation. Consultez Créer un utilisateur MariaDB.
-
Accordez les autorisations requises en fonction du sens de la synchronisation :
Lecture hors ligne : Le compte doit disposer de l'autorisation SELECT sur les tables à synchroniser.
Écriture hors ligne : Le compte doit disposer des autorisations INSERT, DELETE et UPDATE sur les tables à synchroniser.
-
Exécutez la commande suivante pour accorder les autorisations. Remplacez
sync_accountpar le nom de votre compte.-- CREATE USER 'sync_account'@'%' IDENTIFIED BY 'password'; GRANT SELECT, INSERT, DELETE, UPDATE ON *.* TO 'sync_account'@'%';Vous pouvez également accorder directement l'autorisation SUPER.
Ajout d'une source de données
Ajoutez la source de données MariaDB dans DataWorks avant de développer une tâche de synchronisation. Suivez les instructions disponibles dans la rubrique Gestion des sources de données. Les descriptions des paramètres sont accessibles dans la console DataWorks lors de l'ajout de la source de données.
Développement d'une tâche de synchronisation des données
Synchronisation hors ligne pour une seule table
Pour configurer la tâche dans l'éditeur de code, consultez Configurer une tâche dans l'éditeur de code. Pour tous les paramètres de script et exemples, reportez-vous à la section Paramètres de script et exemples.
Paramètres de script et exemples
Tous les exemples utilisent le format de l'éditeur de code avec "version": "2.0". Configurez le script selon les exigences de format unifié décrites dans Configurer une tâche dans l'éditeur de code.
Lecteur
Exemple de script
{
"type": "job",
"version": "2.0",
"steps": [
{
"stepType": "mariadb",
"parameter": {
"column": [
"id"
],
"connection": [
{
"querySql": ["select a,b from join1 c join join2 d on c.id = d.id;"],
"datasource": "",
"table": [
"xxx"
]
}
],
"where": "",
"splitPk": "",
"encoding": "UTF-8"
},
"name": "Reader",
"category": "reader"
},
{
"stepType": "stream",
"parameter": {},
"name": "Writer",
"category": "writer"
}
],
"setting": {
"errorLimit": {
"record": "0"
},
"speed": {
"throttle": true,
"concurrent": 1,
"mbps": "12"
}
},
"order": {
"hops": [
{
"from": "Reader",
"to": "Writer"
}
]
}
}
Paramètres du lecteur
| Paramètre | Description | Obligatoire | Par défaut |
|---|---|---|---|
datasource |
Nom de la source de données. Doit correspondre au nom de la source de données ajoutée dans DataWorks. | Oui | Aucune |
table |
Table à lire. Prend en charge la syntaxe de plage pour les tables fragmentées ; par exemple, table_[0-99] lit depuis table_0 jusqu'à table_99. Pour les suffixes numériques de longueur fixe, utilisez ["table_00[0-9]", "table_0[10-99]", "table_[100-999]"]. La tâche lit toutes les tables correspondantes et échoue si une table ou une colonne spécifiée n'existe pas. |
Oui | Aucune |
column |
Colonnes à synchroniser, sous forme de tableau JSON. Par défaut, toutes les colonnes (["*"]). Prend en charge l'élagage des colonnes, le réordonnancement des colonnes et les valeurs constantes conformément à la syntaxe SQL de MariaDB. Ne doit pas être vide. |
Oui | Aucune |
splitPk |
Colonne utilisée pour partitionner les données lors des lectures simultanées. Utilisez la clé primaire pour une distribution uniforme. Seuls les types entiers sont pris en charge ; les types non pris en charge entraînent un retour à une synchronisation sur un seul canal. Laissez ce champ vide pour utiliser un seul canal. | Non | Aucune |
where |
Condition de filtre SQL WHERE, par exemple gmt_create>$bizdate pour une synchronisation quotidienne incrémentielle. Omettez le paramètre ou laissez-le vide pour synchroniser toutes les données. Les clauses LIMIT ne sont pas prises en charge. |
Non | Aucune |
querySql |
Requête SQL personnalisée qui remplace table, column, where et splitPk. Utilisez cette option pour les jointures multitable, par exemple select a,b from table_a join table_b on table_a.id = table_b.id. Le paramètre datasource est toujours utilisé pour les informations d'identification. Ce paramètre est sensible à la casse (querySql, et non querysql) et n'est pas pris en charge dans l'interface sans code. |
Non | Aucune |
Éditeur
Exemple de script
{
"type": "job",
"version": "2.0",
"steps": [
{
"stepType": "stream",
"parameter": {},
"name": "Reader",
"category": "reader"
},
{
"stepType": "mariadb",
"parameter": {
"postSql": [],
"datasource": "",
"column": [
"id",
"value"
],
"writeMode": "insert",
"batchSize": 1024,
"table": "",
"preSql": [
"delete from XXX;"
]
},
"name": "Writer",
"category": "writer"
}
],
"setting": {
"errorLimit": {
"record": "0"
},
"speed": {
"throttle": true,
"concurrent": 1,
"mbps": "12"
}
},
"order": {
"hops": [
{
"from": "Reader",
"to": "Writer"
}
]
}
}
Paramètres de l'éditeur
| Paramètre | Description | Obligatoire | Par défaut |
|---|---|---|---|
datasource |
Nom de la source de données. Doit correspondre au nom de la source de données ajoutée dans DataWorks. | Oui | Aucune |
table |
Table de destination dans laquelle écrire. | Oui | Aucune |
column |
Colonnes de destination dans lesquelles écrire, sous forme de tableau JSON ; par exemple, ["id", "name", "age"]. Pour écrire dans toutes les colonnes dans l'ordre, utilisez ["*"]. |
Oui | Aucune |
writeMode |
Mode d'écriture. Trois modes sont pris en charge : insert (INSERT INTO — les conflits sont traités comme des données erronées), update (ON DUPLICATE KEY UPDATE — les conflits mettent à jour les champs spécifiés dans updateColumn), et replace (REPLACE INTO — les conflits suppriment la ligne existante et insèrent la nouvelle ligne). |
Non | insert into |
updateColumn |
Colonnes à mettre à jour en cas de conflit de clé primaire ou d'index unique. Ce paramètre est utilisé lorsque writeMode est défini sur update. Séparez les colonnes par des virgules ; par exemple, ["name", "age"]. |
Non | Aucune |
preSql |
Instruction SQL à exécuter avant la tâche de synchronisation. L'interface sans code prend en charge une instruction ; l'éditeur de code en prend en charge plusieurs. Exemple : truncate table tablename. Les transactions ne sont pas prises en charge pour plusieurs instructions. |
Non | Aucune |
postSql |
Instruction SQL à exécuter après la tâche de synchronisation. L'interface sans code prend en charge une instruction ; l'éditeur de code en prend en charge plusieurs. Exemple : ALTER TABLE tablename ADD colname TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP. Les transactions ne sont pas prises en charge pour plusieurs instructions. |
Non | Aucune |
batchSize |
Nombre d'enregistrements soumis par lot. Des valeurs plus élevées réduisent les allers-retours réseau et améliorent le débit, mais des valeurs très élevées peuvent provoquer des erreurs de dépassement de mémoire (OOM). | Non | 256 |