AnalyticDB for MySQL vous permet d'interroger directement les données Tablestore via des tables externes ou de les importer dans des tables internes pour des analyses récurrentes. Privilégiez l'interrogation directe pour un accès ponctuel. Optez pour l'importation lorsque la performance est critique ou pour des analyses répétées : l'interrogation d'une table interne est plus rapide que celle d'une table externe.
Prérequis
Avant de commencer, assurez-vous de disposer des éléments suivants :
Un cluster AnalyticDB for MySQL Enterprise, Basic ou Data Lakehouse Edition.
Si votre instance Tablestore est associée à un réseau privé virtuel (VPC), le cluster AnalyticDB for MySQL doit se trouver dans le même VPC.
Contexte
Une instance Tablestore gère les tables et les données au sein de Tablestore ; elle équivaut à une base de données. Chaque instance Tablestore correspond à un schéma ou à une base de données AnalyticDB for MySQL.
Accès réseau : si aucune liaison VPC n'est configurée sur l'instance Tablestore, AnalyticDB for MySQL peut accéder directement aux données. En revanche, si un VPC est associé, le cluster AnalyticDB for MySQL doit impérativement résider dans ce même VPC.
Exemple de données
Les exemples de cette rubrique s'appuient sur une table Tablestore nommée person contenant les données ci-dessous. Ignorez cette section si vous disposez déjà de vos propres données source.
|
id (clé primaire) |
name |
age |
|
1 |
james |
10 |
|
2 |
bond |
20 |
|
3 |
jack |
30 |
|
4 |
lucy |
40 |
Ouvrir l'éditeur SQL
Connectez-vous à la console AnalyticDB for MySQL. Dans le coin supérieur gauche, sélectionnez une région. Dans le volet de navigation de gauche, cliquez sur Clusters. Identifiez votre cluster et cliquez sur son ID.
Dans le volet de navigation de gauche, choisissez Job Development > SQL Development.
Interroger les données Tablestore
Étape 1 : Créer une base de données externe
CREATE EXTERNAL DATABASE adb_external_db;
Étape 2 : Créer une table externe
La table externe doit refléter exactement la structure de la table Tablestore : mêmes noms de champs, même nombre et même ordre. Les types de données doivent également être compatibles. Pour consulter les correspondances de types, reportez-vous à la section Correspondances des types de données.
L'exemple suivant crée une table nommée person dans la base de données adb_external_db :
CREATE EXTERNAL TABLE IF NOT EXISTS adb_external_db.person (
id int,
name string,
age int
)
ENGINE = 'OTS'
TABLE_PROPERTIES = '{
"mapped_name": "person",
"location": "https://w0****la.cn-hangzhou.vpc.tablestore.aliyuncs.com"
}';
|
Paramètre |
Description |
|
|
Moteur de stockage utilisé pour lire et écrire les données Tablestore. Définissez toujours cette valeur sur |
|
|
Nom de la table au sein de l'instance Tablestore. Pour retrouver ce nom, accédez à la console Tablestore et ouvrez la page All Instances. |
|
|
URL VPC de l'instance Tablestore. Pour obtenir cette URL, rendez-vous sur la console Tablestore et consultez la page All Instances. |
Étape 3 : Interroger les données
Une fois la table externe créée, AnalyticDB for MySQL mappe automatiquement les données provenant de la table Tablestore. Exécutez l'instruction SELECT suivante pour interroger ces données :
SELECT * FROM adb_external_db.person;
Résultat attendu :
+------+-------+------+
| id | name | age |
+------+-------+------+
| 1 | james | 10 |
| 2 | bond | 20 |
| 3 | jack | 30 |
| 4 | lucy | 40 |
+------+-------+------+
4 rows in set (0.35 sec)
Importer les données Tablestore vers AnalyticDB for MySQL
L'importation des données Tablestore dans une table interne AnalyticDB for MySQL accélère les requêtes répétitives. Trois méthodes d'écriture sont disponibles ; choisissez celle qui correspond le mieux à vos besoins en matière de déduplication et de performance.
Étape 1 : Créer une base de données
CREATE DATABASE adb_demo;
Étape 2 : Créer une table de destination
La table de destination doit présenter le même nombre de champs et le même ordre que la table externe. Assurez-vous également de la compatibilité des types de données.
CREATE TABLE IF NOT EXISTS adb_demo.adb_import_test (
id int,
name string,
age int
)
DISTRIBUTED BY HASH(id);
Étape 3 : Écrire les données
Sélectionnez une méthode d'écriture selon la gestion souhaitée pour les clés primaires en double :
|
Méthode |
Gestion des doublons |
Syntaxe |
|
INSERT INTO |
Ignorer les doublons (équivalent à INSERT IGNORE INTO) |
|
|
INSERT OVERWRITE |
Écraser les doublons |
|
|
SUBMIT JOB |
Écrasement asynchrone |
|
Méthode 1 : INSERT INTO (ignorer les doublons)
Si une ligne possédant une clé primaire identique existe déjà, elle est ignorée.
INSERT INTO adb_demo.adb_import_test
SELECT * FROM adb_external_db.person;
Vérifiez le résultat :
SELECT * FROM adb_demo.adb_import_test;
Résultat attendu :
+------+-------+------+
| id | name | age |
+------+-------+------+
| 1 | james | 10 |
| 2 | bond | 20 |
| 3 | jack | 30 |
| 4 | lucy | 40 |
+------+-------+------+
Méthode 2 : INSERT OVERWRITE (remplacer les doublons)
Si une ligne avec une clé primaire identique existe déjà, la ligne existante est écrasée.
INSERT OVERWRITE adb_demo.adb_import_test
SELECT * FROM adb_external_db.person;
Méthode 3 : SUBMIT JOB (importation asynchrone)
Dans la plupart des cas, utilisez SUBMIT JOB pour exécuter l'importation de manière asynchrone. Vous pouvez ajouter l'indicateur /*+ direct_batch_load=true*/ afin d'accélérer l'exécution de la tâche.
SUBMIT JOB
INSERT OVERWRITE adb_demo.adb_import_test
SELECT * FROM adb_external_db.person;
L'instruction renvoie un ID de tâche :
+---------------------------------------+
| job_id |
+---------------------------------------+
| 2020112122202917203100908203303****** |
Pour suivre l'avancement de la tâche asynchrone, consultez la rubrique Soumettre une tâche d'importation de manière asynchrone.
Correspondances des types de données
Le tableau ci-dessous détaille les correspondances de types de données entre Tablestore et AnalyticDB for MySQL.
|
Tablestore |
AnalyticDB for MySQL |
|
INTEGER (8 octets) |
BIGINT (8 octets) |
|
STRING |
VARCHAR |
|
BINARY |
BINARY |
|
DOUBLE |
DOUBLE |
|
BOOLEAN |
BOOLEAN |
Étapes suivantes
Pour comprendre comment l'instruction INSERT INTO gère les doublons, consultez la rubrique INSERT INTO.
Pour en savoir plus sur les options d'importation asynchrone et la syntaxe INSERT OVERWRITE SELECT, reportez-vous à la section INSERT OVERWRITE SELECT.