当前位置:网站首页>Comment utiliser l'entrepôt de données pour créer une table de synchronisation
Comment utiliser l'entrepôt de données pour créer une table de synchronisation
2022-06-23 23:57:00 【Huawei Cloud Developer Alliance】
Résumé:Comment le faire rapidement?,Créer un calendrier approprié pour votre entreprise,Comment utiliser le tableau des séries chronologiques pour vraiment tirer parti des avantages.
Cet article est partagé par Huawei Cloud Community《GaussDB(DWS)Pour vous rapprocherIoTLe temps-Pratiques exemplaires en matière de construction de tableaux chronologiques》,Auteur:AndyCao.
Créer la première table de synchronisation
Commençons par une introduction à la création d'un calendrier
Format syntaxique
CREATE TABLE [ IF NOT EXISTS ] table_name
({ column_name data_type [ kv_type ]
| LIKE source_table [like_option [...] ] }
}
[, ... ])
[ WITH ( {storage_parameter = value} [, ... ] ) ]
[ TABLESPACE tablespace_name ]
[ DISTRIBUTE BY HASH ( column_name [,...])]
[ TO { GROUP groupname | NODE ( nodename [, ... ] ) } ]
[ table_partitioning_clauses ]
[ PARTITION BY {
{RANGE (partition_key) ( partition_less_than_item [, ... ] )}
} [ { ENABLE | DISABLE } ROW MOVEMENT ] ]; Parmi euxlikeOptionslike_optionPour:{ INCLUDING | EXCLUDING } { DEFAULTS | CONSTRAINTS | INDEXES | STORAGE | COMMENTS | PARTITION | RELOPTIONS | DISTRIBUTION | ALL }
Syntaxe de création de tableaux pour les tableaux de séries chronologiques , Hérite largement de la syntaxe de la ligne et de la colonne , Réduction des coûts d'apprentissage pour les utilisateurs , Plus facile à comprendre et à utiliser . Dans notre dernier blog, , Diviser les colonnes du tableau des séries chronologiques en trois types kv_typeType(tag、field、time), Comment spécifier la colonne correspondante comme type approprié , Aide - nous à améliorer l'importation 、 Performance des scénarios tels que les requêtes , Rendre le scénario opérationnel plus efficace ?
Nous continuons avec le scénario du groupe électrogène comme exemple , Créer un calendrier pour stocker les données d'échantillonnage du groupe électrogène :
CREATE TABLE IF NOT EXISTS GENERATOR(
dynamo text TSTag,
manufacturer text TSTag,
model text TSTag,
location text TSTag,
ID bigint TSTag,
voltage numeric TSField,
power bigint TSTag,
frequency numeric TSField,
angle numeric TSField,
time timestamptz TSTime) with (orientation=TIMESERIES, period='7 days', ttl='1 month') distribute by hash(model);Nous pouvons voir, Dans l'énoncé ci - dessus :
- Pour ne pas changer avec le temps , Colonne décrivant les informations de propriété du générateur ( Informations sur le générateur 、Fabricant、Modèle、Emplacement、ID)Est réglé àtagColonnes, La colonne correspondante doit être spécifiée comme suit lors de la construction du tableau: TSTag;
- Dimensions des données échantillonnées (Tension、Puissance、Fréquence、 Angle de phase actuel ) Ces valeurs d'échantillonnage correspondantes varient avec le temps , Nous définissons ces dimensions à fieldColonnes, Le type de données de l'instruction de création de table est spécifié comme suit: TSField;
- La dernière colonne que nous avons spécifiée comme la colonne temps time,Stockagefield Informations sur le temps correspondant aux données de colonne , La table sera spécifiée comme TSTime.
Lors de l'écriture d'une déclaration de création de table ,PourtagOrdre des colonnes, Nous pouvons optimiser , Sera unique (distinctValeur) Les colonnes les plus élevées doivent être précédées autant que possible. , Cela améliore la performance des scénarios séquentiels . Si l'utilisateur n'a pas optimisé manuellement ,GaussDB(DWS) IoT L'entrepôt de données peut également aider l'utilisateur à améliorer la performance du scénario séquentiel de façon adaptative , Plus tard, nous allons consacrer un article à ce sujet. Technologie noire.
En plus, Assurez - vous de spécifier les paramètres au niveau de la table lors de la création de la table de synchronisation orientationLa propriété est définie àtimeseries. Le calendrier n'a pas besoin d'être spécifié manuellement DISTRIBUTE BYEtPARTITION BY, Par défaut, tous les tagRépartition des colonnes, Et la partition est silencieuse tstim Colonne de temps spécifiée .
Pourcreate table likeSyntaxe, Cette syntaxe exige que les noms de colonnes et les correspondances soient automatiquement hérités de la table source kv_typeType. Donc si le tableau source n'est pas un tableau chronologique , Le nouveau tableau est un tableau chronologique , Colonne correspondante kv_type Le type n'a pas pu être déterminé ,Impossible de créer avec succès.
Type de colonne du tableau chronologique
Les trois séries chronologiques ci - dessus kv_type Les attributs sont décrits brièvement :(Attributs de dimension(TSTag), Propriétés de l'indicateur (TSField),Propriétés temporelles(TSTime), Chaque colonne supporte les types ( Comme dans une déclaration de création de table text、int、numericAttendez.) Quelle est la différence? ? Pouvez - vous ne pas définir kv_typeType?
La table de synchronisation doit d'abord spécifier un attribut de temps (TSTime), Et un seul peut être spécifié ,EtTSTime La colonne de type ne peut pas être supprimée .Il y a au moins unTSTagEtTSFieldColonnes, Sinon, le rapport de construction est erroné .
TSTag Type de support de colonne :text, char, bool, int, big int.
TSTime Type de support de colonne :timestamp with time zone, timestamp without time zone.CompatibleOracle Dans la base de données de syntaxe ,- Oui.dateType. En ce qui concerne les opérations liées au fuseau horaire , Veuillez sélectionner un type de temps avec fuseau horaire .
TSField Les types de données supportés par les colonnes sont compatibles avec le tableau des colonnes
Définir automatiquement les limites des zones
Les tableaux de séries chronologiques ont la capacité de gérer le cycle de vie des données . Des centaines de millions de données affluent chaque jour , Pour les données d'il y a longtemps , Il est moins précieux et rarement visité , Les anciennes données inutiles peuvent être supprimées périodiquement . Et parce que les dernières données arrivent, , Besoin d'ajouter périodiquement de nouvelles partitions à la table , Éviter que de nouvelles données ne soient pas stockées . Par conséquent, la table de synchronisation doit avoir la capacité d'ajouter et de supprimer des partitions à temps. .
La chronologie est TSTIME Colonne comme clé de partition , Créer une table de partition avec gestion automatique de partition , Nous aide à réduire considérablement le travail des opérations o & M . Dans l'instruction de création de table ci - dessus , Comme vous pouvez le voir dans les entrées de paramètres au niveau du tableau , Le tableau de synchronisation spécifie deux paramètres pour la gestion automatique des partitions periodEtttl.
- period: Définir l'intervalle de création automatique des partitions ,La valeur par défaut est1 day, Plage de valeurs:1 hour ~ 100 years. La tâche de partition auto - incrémentale est créée par défaut pour la table de synchronisation . Créer dynamiquement des partitions pour nous , Assurez - vous qu'il y a suffisamment de partitions pour importer des données à ce moment - ci .
- ttl: Définir l'heure d'élimination automatique des partitions ,Plage de valeurs:1 hour ~ 100 years. Par défaut, aucune tâche de partition obsolète n'est créée , Vous devez spécifier manuellement la table en cours de construction par l'utilisateur , Ou passer après la construction du compteur ALTER TABLEConfiguration syntaxique. La stratégie d'élimination des partitions est basée sur le calcul nowtime - Partitionboundary > ttl, Les partitions qui remplissent cette condition seront dropLaisse tomber.. Aide l'utilisateur à nettoyer périodiquement les anciennes données périmées .
Dans l'exemple ci - dessus, , L'instruction de création de table de la table de séquence ne spécifie pas de partition , Quelle est l'heure de début de la partition? .Pour la commodité de l'utilisateur, Les limites de notre zone sont définies comme suit:
- periodSet to“Heures” , La valeur limite de départ de la zone est le point entier de l'heure suivante , L'intervalle entre les partitions est periodValeur de
- periodSet to“Oh, mon Dieu.” , La valeur limite de départ de la zone est zéro le jour suivant , L'intervalle entre les partitions est periodValeur de
- periodSet to“Mois” , La valeur limite de départ de la partition est zéro le mois prochain , L'intervalle entre les partitions est periodValeur de
- periodSet to“Année” , La limite de départ de la partition est zéro l'année prochaine , L'intervalle entre les partitions est periodValeur de
tsdb=# CREATE TABLE IF NOT EXISTS GENERATOR(
tsdb(# dynamo text TSTag,
tsdb(# manufacturer text TSTag,
tsdb(# model text TSTag,
tsdb(# location text TSTag,
tsdb(# ID bigint TSTag,
tsdb(# voltage numeric TSField,
tsdb(# power bigint TSTag,
tsdb(# frequency numeric TSField,
tsdb(# angle numeric TSField,
tsdb(# time timestamptz TSTime) with (orientation=TIMESERIES, period='1 hour', ttl='1 month') distribute by hash(model);
CREATE TABLE
tsdb=# select now();
now
-------------------------------
2022-05-25 15:28:38.520757+08
(1 row)
tsdb=# select relname, boundaries from pg_partition where parentid=(select oid from pg_class where relname='generator') order by boundaries ;
relname | boundaries
----------------+----------------------------
default_part_1 | {"2022-05-25 16:00:00+08"}
default_part_2 | {"2022-05-25 17:00:00+08"}
p1653505200 | {"2022-05-26 03:00:00+08"}
p1653541200 | {"2022-05-26 13:00:00+08"}
p1653577200 | {"2022-05-26 23:00:00+08"}
......Cette façon d'utiliser, Permet aux utilisateurs de créer facilement et rapidement des listes de synchronisation . Bien sûr, nous soutenons également la spécification manuelle par l'utilisateur de la valeur de départ de la limite de partition lors de la construction de la table . Description plus détaillée des fonctions de gestion automatique des partitions ,Peut être référencé《GaussDB(DWS) Introduction à la gestion automatique des partitions 》.
tsdb=# select now();
now
-------------------------------
2022-05-31 20:36:09.700096+08
(1 row)
tsdb=# CREATE TABLE IF NOT EXISTS GENERATOR(
tsdb(# dynamo text TSTag,
tsdb(# manufacturer text TSTag,
tsdb(# model text TSTag,
tsdb(# location text TSTag,
tsdb(# ID bigint TSTag,
tsdb(# voltage numeric TSField,
tsdb(# power bigint TSTag,
tsdb(# frequency numeric TSField,
tsdb(# angle numeric TSField,
tsdb(# time timestamptz TSTime) with (orientation=TIMESERIES, period='1 day') distribute by hash(model)
tsdb-# partition by range(time)
tsdb-# (
tsdb(# PARTITION P1 VALUES LESS THAN('2022-05-30 16:32:45'),
tsdb(# PARTITION P2 VALUES LESS THAN('2022-05-31 16:56:12')
tsdb(# );
WARNING: partition boundary is less than current time.
CREATE TABLE
tsdb=# select relname, boundaries from pg_partition where parentid=(select oid from pg_class where relname='generator') order by boundaries ;
relname | boundaries
-------------+----------------------------
p1 | {"2022-05-30 16:32:45+08"}
p2 | {"2022-05-31 16:56:12+08"}
p1654073772 | {"2022-06-01 16:56:12+08"}
p1654160172 | {"2022-06-02 16:56:12+08"}
......Jusqu'ici., Nous avons construit notre première chronologie , Ensuite, nous allons cibler le calendrier DDL Pratique détaillée de diverses opérations ,Aidez tout le monde à bien apprendre、 Bonne utilisation de la base de données des séries chronologiques , Un meilleur service aux utilisateurs .
Cliquez sur suivre,Pour la première fois, découvrez la nouvelle technologie Huawei Cloud~
边栏推荐
- What are the good solutions for industrial control safety of production line
- 云原生架构(05)-应用架构演进
- Unity text component space newline problem
- C语言c89(c90)的所有的32个关键字分类
- List<? Extensions T > and list <? Super T > difference
- Six complete open source projects, learning enough at a time
- 医疗是什么?AI医疗概念解析AI
- Loop caused by add of sublist in list
- High imitation Book flag novel flutter edition, learn it
- Three cool and coquettish bottom navigation
猜你喜欢

High imitation Betta app

Idea automatically generates unit tests, doubling efficiency!

《德阳市餐饮服务业油烟污染防治管理办法(征求意见稿)》之创新油烟监管

不容错过 | 华为内部资料--成功的项目管理PPT(123页)

【Proteus仿真】T6963C驱动PG12864示例(带中英文显示)

MySQL导致索引失效的情况详解

2022 Shandong Health Expo, Jinan International Health Industry Expo, China Nutrition and Health Exhibition

AutoCAD -- summarize three methods of drawing rounded corners in CAD

PMP考试相关计算公式汇总!考前必看

Innovative lampblack supervision in the management measures for the prevention and control of lampblack pollution in Deyang catering service industry (Draft for comments)
随机推荐
依赖倒置原则
How to ensure reliable power supply of Expressway
格林公式挖洞法中内曲线顺时针的直观解释
量化投资模型——高频交易做市模型相关(Avellaneda & Stoikov’s)研究解读&代码资源
Generative countermeasure networks (Gans) and variants
Application of acrel-3000web power management system in Duba Expressway
[technical grass planting] Tencent Yunhao wool (consumption) record on the double 11
High imitation Book flag novel flutter edition, learn it
AI技术在医学领域有什么用?
云原生架构(05)-应用架构演进
Inftnews | where should the future of the creator economy go in the Web3 world?
How to take the PMP Exam agile on June 25? Share your troubles
Six complete open source projects, learning enough at a time
日化用品行业集团采购管理系统改变传统采购模式,降低采购成本
Different objects use the same material and have different performances
List<? Extensions T > and list <? Super T > difference
Taylor formula and common expansion
微信小程序 图片验证码展示
Facebook open source shimmer effect
1004. number of maximum consecutive 1 III ●●