Options du connecteur pour la clause WITH lors de l'utilisation de Realtime Compute for Apache Flink avec Hologres dans Ververica Runtime (VVR) 8.0.x ou une version antérieure.
Référentiel des versions
Le tableau suivant récapitule les options introduites dans des versions mineures spécifiques de VVR. Les options non listées ici sont disponibles dans toutes les versions VVR 8.0.x.
| Option | Version minimale |
|---|---|
connection.ssl.mode |
VVR 8.0.5 |
connection.ssl.root-cert.location |
VVR 8.0.5 |
bulkload (sink) |
VVR 8.0.5 + Hologres V2.1 |
deduplication.enabled (sink) |
VVR 8.0.5 |
jdbcReadRetryCount la valeur par défaut devient 10 |
VVR 8.0.5 |
type-mapping.timestamp-converting.legacy |
VVR 8.0.6 |
property-version |
VVR 8.0.6 |
sink.delete-strategy |
VVR 8.0.8 |
remove-u0000-in-text.enabled pour jdbc_copy |
VVR 8.0.8 |
check-and-put.column |
VVR 8.0.11 |
check-and-put.operator |
VVR 8.0.11 |
check-and-put.null-as |
VVR 8.0.11 |
aggressive.enabled |
VVR 8.0.11 |
Options du connecteur dans la clause WITH
Général
Les options suivantes s'appliquent aux tables source, aux tables sink et aux tables de dimension.
| Option | Type de données | Obligatoire | Par défaut | Description |
|---|---|---|---|---|
connector |
String | Oui | — | Définissez sur hologres. |
dbname |
String | Oui | — | Nom de la base de données. Pour vous connecter à un entrepôt virtuel, ajoutez @<warehouse_name> au nom de la base de données, par exemple 'db_test@read_warehouse'. Les entrepôts virtuels sont pris en charge uniquement dans les modes liés à JDBC. |
tablename |
String | Oui | — | Nom de la table. Si le schéma n'est pas public, utilisez la syntaxe schema.tableName. |
username |
String | Oui | — | ID AccessKey de votre compte Alibaba Cloud ou utilisateur RAM, ou nom d'utilisateur de compte personnalisé au format BASIC$<user_name>. Stockez les identifiants sous forme de variables ; ne les codez pas en dur. Consultez la rubrique Gérer les clés. |
password |
String | Oui | — | Secret AccessKey de votre compte Alibaba Cloud ou utilisateur RAM, ou mot de passe de votre compte personnalisé. |
endpoint |
String | Oui | — | Endpoint Hologres. Consultez la rubrique Endpoints. |
connection.ssl.mode |
String | Non | disable |
Mode SSL. Valeurs valides : disable, require, verify-ca, verify-full. Les modes verify-ca et verify-full nécessitent Hologres V2.1 ou une version ultérieure, ainsi que l'option connection.ssl.root-cert.location. Consultez la rubrique Chiffrement en transit. Nécessite VVR 8.0.5 ou une version ultérieure. |
connection.ssl.root-cert.location |
String | Non | — | Chemin d'accès au fichier de certificat CA. Requis lorsque connection.ssl.mode est défini sur verify-ca ou verify-full. Téléchargez le certificat via la fonctionnalité artifacts ; il est stocké dans le répertoire /flink/usrlib. Exemple : '/flink/usrlib/certificate.crt'. Nécessite VVR 8.0.5 ou une version ultérieure. |
jdbcRetryCount |
Integer | Non | 10 |
Nombre maximal de tentatives après un échec de connexion lors de la lecture ou de l'écriture de données. |
jdbcRetrySleepInitMs |
Long | Non | 1000 |
Composante fixe du temps d'attente par tentative, en millisecondes. Le temps d'attente réel correspond à jdbcRetrySleepInitMs + retry × jdbcRetrySleepStepMs. |
jdbcRetrySleepStepMs |
Long | Non | 5000 |
Composante incrémentielle du temps d'attente par tentative, en millisecondes. Le temps d'attente réel correspond à jdbcRetrySleepInitMs + retry × jdbcRetrySleepStepMs. |
jdbcConnectionMaxIdleMs |
Long | Non | 60000 |
Durée maximale d'inactivité d'une connexion JDBC, en millisecondes. Les connexions inactives dépassant cette valeur sont fermées et libérées. |
jdbcMetaCacheTTL |
Long | Non | 60000 |
Durée maximale de conservation des informations TableSchema dans le cache, en millisecondes. |
jdbcMetaAutoRefreshFactor |
Integer | Non | 4 |
Contrôle le déclenchement de l'actualisation du cache. Le seuil d'actualisation automatique est défini par jdbcMetaCacheTTL / jdbcMetaAutoRefreshFactor. Lorsque le temps restant avant expiration du cache descend en dessous de ce seuil, le cache est actualisé automatiquement. |
type-mapping.timestamp-converting.legacy |
Boolean | Non | Voir description | Base de fuseau horaire pour les conversions entre les types temporels de Flink et de Hologres. La valeur true utilise le fuseau horaire de la JVM ; la valeur false (recommandée) utilise le fuseau horaire de Flink. La valeur par défaut est true lorsque property-version=0, et false lorsque property-version=1. Consultez la rubrique Fuseaux horaires. Nécessite VVR 8.0.6 ou une version ultérieure. |
property-version |
Integer | Non | 0 |
Version des options du connecteur. Définissez sur 1 (recommandé) pour utiliser les valeurs par défaut les plus récentes. Les options disponibles et leurs valeurs par défaut peuvent varier selon les versions majeures de VVR. Nécessite VVR 8.0.6 ou une version ultérieure. |
Spécifique aux sources
| Option | Type de données | Obligatoire | Par défaut | Description |
|---|---|---|---|---|
field_delimiter |
String | Non | "\u0002" |
Délimiteur entre les lignes lors de l'exportation des données. |
binlog |
Boolean | Non | Voir description | Indique s'il faut consommer les données du journal binaire. La valeur par défaut est false lorsque property-version=0, et true lorsque property-version=1. |
sdkMode |
String | Non | holohub |
Mode SDK pour la consommation du journal binaire. holohub : mode HoloHub. jdbc : mode JDBC. jdbc_fixed : mode JDBC fixe, non soumis aux limites de connexion, mais ne prend pas en charge les bases de données pour lesquelles le masquage des données est activé. Pour connaître les valeurs recommandées selon la version de VVR, consultez la rubrique Remarques importantes. |
jdbcBinlogSlotName |
String | Non | — | Nom du slot de la table source du journal binaire en mode JDBC. Prend effet uniquement lorsque sdkMode=jdbc. Si cette option n'est pas spécifiée, le connecteur crée un slot automatiquement. Si vous utilisez Hologres V2.1 ou une version ultérieure avec VVR 8.0.5 ou une version ultérieure, omettez cette option : le connecteur ne tentera pas de créer un slot automatiquement. Consultez la rubrique Consommation du journal binaire en mode JDBC. |
binlogMaxRetryTimes |
Integer | Non | 60 |
Nombre de tentatives après un échec de lecture des données du journal binaire. |
binlogRetryIntervalMs |
Long | Non | 2000 |
Intervalle entre les tentatives après un échec de lecture des données du journal binaire, en millisecondes. |
binlogBatchReadSize |
Integer | Non | 100 |
Nombre de lignes lues depuis le journal binaire par lot. |
cdcMode |
Boolean | Non | Voir description | Indique s'il faut lire les données du journal binaire en mode Change Data Capture (CDC). La valeur par défaut est false lorsque property-version=0, et true lorsque property-version=1. |
upsertSource |
Boolean | Non | false |
Prend effet uniquement en mode CDC. Valeur true : seuls les messages upsert (INSERT, DELETE, UPDATE_AFTER) sont traités. Valeur false : tous les types de messages sont traités (INSERT, DELETE, UPDATE_BEFORE, UPDATE_AFTER). Définissez sur true si des opérateurs de rétraction existent dans la table sink, par exemple lorsque ROW_NUMBER() est utilisé avec une clause OVER pour la déduplication. |
binlogStartupMode |
String | Non | earliestOffset |
Mode de consommation du journal binaire. initial : consomme d'abord toutes les données existantes, puis les journaux binaires. earliestOffset : commence à partir du journal binaire le plus ancien. timestamp : commence à partir de l'heure définie par startTime. Si startTime est configuré ou si une heure de début est sélectionnée au démarrage du job, cette option est automatiquement définie sur timestamp. |
startTime |
String | Non | — | Heure de début pour la consommation des données Hologres. Format : yyyy-MM-dd hh:mm:ss. Si cette option n'est pas définie et que le job ne reprend pas à partir d'un état, la consommation commence à partir du journal binaire le plus ancien. |
jdbcScanFetchSize |
Integer | Non | 256 |
Nombre d'enregistrements mis en mémoire tampon par lot lors d'une opération d'analyse. |
jdbcScanTimeoutSeconds |
Integer | Non | 60 |
Délai d'expiration d'une opération d'analyse, en secondes. |
jdbcScanTransactionSessionTimeoutSeconds |
Integer | Non | 600 |
Délai d'expiration de la transaction contenant l'opération d'analyse, en secondes. Correspond au paramètre GUCidle_in_transaction_session_timeout de Hologres. Définissez sur 0 pour désactiver le délai d'expiration. |
enable_filter_push_down |
Boolean | Non | false |
Indique s'il faut transmettre les conditions de filtre à Hologres lors de la phase de lecture complète des données. S'applique lors de la lecture d'une table source pour laquelle la journalisation binaire est désactivée, ou pendant la phase de données complètes de la consommation du journal binaire. Nécessite VVR 6.0.7 ou une version ultérieure. |
partition-binlog.mode |
Enum | Non | DISABLE |
Mode de consommation des journaux binaires d'une table partitionnée. DISABLE : la table n'est pas traitée comme une table partitionnée ; une exception est signalée s'il s'agit d'une table partitionnée. DYNAMIC : consomme continuellement la dernière partition ; nécessite l'activation du partitionnement dynamique. STATIC : consomme simultanément des partitions fixes ; les partitions ne peuvent pas être ajoutées ou supprimées pendant la consommation. |
partition-binlog-lateness-timeout-minutes |
Integer | Non | 60 |
Latence maximale autorisée avant expiration en mode de partition dynamique, en minutes. Le connecteur continue de surveiller la partition précédente après avoir basculé vers la dernière, afin de capturer les données arrivant en retard. Cette valeur ne peut pas dépasser l'unité de temps de partitionnement ; pour une table partitionnée par jour, le maximum est de 1 440 minutes (24 × 60). |
partition-values-to-read |
String | Non | — | Partitions à consommer en mode de partition statique. Spécifiez les valeurs de partition (et non les noms complets des partitions), séparées par des virgules. Si cette option n'est pas définie, toutes les partitions sont consommées. Les expressions régulières ne sont pas prises en charge. |
Spécifique aux sinks
Modes d'écriture
| Option | Type de données | Obligatoire | Par défaut | Description |
|---|---|---|---|---|
sdkMode |
String | Non | jdbc |
Mode SDK pour l'écriture des données. jdbc : utilise un pilote JDBC. jdbc_copy : débit élevé, faible latence ; ne prend pas en charge la suppression de données, l'écriture dans des tables partitionnées ni l'option ignoreNullWhenUpdate. rpc : mode RPC ; ne prend pas en charge les types de données JSONB ou RoarinBitmap. jdbc_fixed (aperçu public) : mode JDBC fixe, sans occupation de connexion ; ne prend pas en charge les types JSONB, RoarinBitmap, ni les bases de données pour lesquelles le masquage des données est activé. Pour connaître les valeurs recommandées selon la version de VVR, consultez la rubrique Remarques importantes. |
bulkload |
Boolean | Non | false |
Indique s'il faut écrire en mode de chargement en masse. Prend effet uniquement lorsque sdkMode=jdbc_copy. Utilisez ce mode pour les tables sans clé primaire ; les valeurs de clé primaire doivent être uniques lors du chargement en masse d'une table dotée d'une clé primaire. Le mode de chargement en masse utilise moins de ressources Hologres que le mode jdbc_copy. Nécessite VVR 8.0.5 ou une version ultérieure et Hologres V2.1 ou une version ultérieure. |
mutatetype |
String | Non | Voir description | Méthode de gestion des enregistrements en double. insertorignore : ignore les doublons. insertorreplace : remplace les lignes existantes. insertorupdate : met à jour uniquement les champs définis dans le DDL de la table sink, en laissant les autres champs inchangés. La valeur par défaut est insertorignore lorsque property-version=0, et insertorupdate lorsque property-version=1. |
partitionrouter |
Boolean | Non | false |
Indique s'il faut écrire les données dans une table partitionnée. |
createparttable |
Boolean | Non | false |
Indique s'il faut créer automatiquement des partitions en fonction des valeurs de partition entrantes. En mode RPC, la création automatique échoue si les valeurs de partition contiennent des traits d'union (-). VVR 8.0.3 ou une version ultérieure prend en charge les champs de type DATE comme clés de partition. Assurez-vous que les valeurs de partition sont propres ; les données incorrectes provoquent un basculement en créant une partition invalide. Non pris en charge lorsque sdkMode=jdbc_copy. |
Mise en mémoire tampon et vidage
L'opérateur sink met les enregistrements en mémoire tampon et les vide vers Hologres lorsque l'une des conditions suivantes est remplie :
Le nombre d'enregistrements en mémoire tampon atteint la valeur de
jdbcWriteBatchSize.La taille totale des enregistrements en mémoire tampon atteint la valeur de
jdbcWriteBatchByteSize.Le temps écoulé depuis le dernier vidage atteint la valeur de
jdbcWriteFlushInterval.
| Option | Type de données | Obligatoire | Par défaut | Description |
|---|---|---|---|---|
jdbcWriteBatchSize |
Integer | Non | 256 |
Nombre maximal d'enregistrements à mettre en mémoire tampon avant le vidage, exprimé en lignes. |
jdbcWriteBatchByteSize |
Long | Non | 2097152 (2 Mo) |
Taille totale maximale des enregistrements en mémoire tampon avant le vidage, exprimée en octets. |
jdbcWriteFlushInterval |
Long | Non | 10000 |
Temps d'attente maximal avant le vidage des enregistrements en mémoire tampon, en millisecondes. |
deduplication.enabled |
Boolean | Non | true |
Indique s'il faut dédupliquer les enregistrements dans la mémoire tampon avant le vidage. Lorsque cette option est activée, seul le dernier enregistrement pour chaque clé primaire est conservé. Nécessite VVR 8.0.5 ou une version ultérieure. |
Gestion des valeurs NULL et des données
| Option | Type de données | Obligatoire | Par défaut | Description |
|---|---|---|---|---|
ignoreNullWhenUpdate |
Boolean | Non | false |
Indique s'il faut ignorer les valeurs NULL lors de l'écriture avec mutatetype=insertOrUpdate. Valeur false : les valeurs NULL sont écrites dans Hologres. Valeur true : les champs NULL de l'enregistrement entrant sont ignorés. Non pris en charge lorsque sdkMode=jdbc_copy. |
jdbcEnableDefaultForNotNullColumn |
Boolean | Non | true |
Indique s'il faut substituer une valeur par défaut lorsqu'une valeur NULL est écrite dans une colonne non nullable sans valeur par défaut configurée. Lorsque cette option est définie sur true : les colonnes STRING restent vides, les colonnes NUMBER sont définies sur 0 et les colonnes DATE/TIMESTAMP/TIMESTAMPTZ sont définies sur 1970-01-01 00:00:00. Lorsque cette option est définie sur false : une exception est signalée. |
remove-u0000-in-text.enabled |
Boolean | Non | false |
Indique s'il faut supprimer les caractères \u0000 des données STRING avant l'écriture. Lorsque cette option est définie sur false, des données incorrectes peuvent provoquer l'erreur suivante : ERROR: invalid byte sequence for encoding "UTF8": 0x00. Lorsque cette option est définie sur true, le connecteur supprime les caractères \u0000 ; utilisez cette option avec précaution, car les chaînes telles que aaa\u0000bbb deviennent aaabbb, ce qui peut entraîner des incompatibilités de données. Pris en charge avec sdkMode=jdbc dans VVR 8.0.1 ou une version ultérieure ; pris en charge avec sdkMode=jdbc_copy ou jdbc dans VVR 8.0.8 ou une version ultérieure. |
partial-insert.enabled |
Boolean | Non | false |
Indique s'il faut écrire uniquement les champs déclarés dans l'instruction INSERT. Valeur false : tous les champs définis dans le DDL sont écrits ; les champs absents de l'instruction INSERT sont définis sur NULL. Valeur true : seuls les champs déclarés sont écrits. Prend effet uniquement lorsque mutatetype=InsertOrUpdate. |
Gestion des suppressions
| Option | Type de données | Obligatoire | Par défaut | Description |
|---|---|---|---|---|
sink.delete-strategy |
String | Non | — | Stratégie de traitement des messages de rétraction. IGNORE_DELETE : ignore les messages UPDATE_BEFORE et DELETE. NON_PK_FIELD_TO_NULL : ignore les messages UPDATE_BEFORE ; gère les suppressions en définissant les champs hors clé primaire sur NULL (pour les scénarios de mise à jour partielle). DELETE_ROW_ON_PK : ignore les messages UPDATE_BEFORE ; gère les suppressions en supprimant la ligne entière en fonction de la clé primaire (pour les scénarios de mise à jour partielle). CHANGELOG_STANDARD : suit la norme changelog de Flink SQL ; traite les mises à jour comme une combinaison DELETE + INSERT, garantissant l'exactitude des données ; utilisez cette option pour les scénarios sans mise à jour partielle. La définition de NON_PK_FIELD_TO_NULL peut entraîner des enregistrements avec des valeurs NULL pour les champs hors clé primaire. Nécessite VVR 8.0.8 ou une version ultérieure. |
Mise à jour conditionnelle
| Option | Type de données | Obligatoire | Par défaut | Description |
|---|---|---|---|---|
check-and-put.column |
String | Non | — | Active la fonctionnalité de mise à jour conditionnelle. Définissez sur le nom du champ à vérifier. Prérequis : une clé primaire sur la table sink, mutateType=Insertorupdate ou insertorreplace, et sdkMode=jdbc_fixed ou jdbc. Pour les recherches inverses, utilisez une table basée sur les lignes ou hybride ligne-colonne. Dans les données comportant de nombreux doublons, la fonctionnalité check-and-put se dégrade en écritures uniques, ce qui réduit le débit d'écriture. Nécessite VVR 8.0.11 ou une version ultérieure. |
check-and-put.operator |
String | Non | GREATER |
Opérateur de comparaison pour la mise à jour conditionnelle. Le champ de vérification du nouvel enregistrement est comparé au champ de vérification de l'enregistrement existant ; la mise à jour est effectuée si la comparaison correspond. Valeurs valides : GREATER, GREATER_OR_EQUAL, EQUAL, NOT_EQUAL, LESS, LESS_OR_EQUAL, IS_NULL, IS_NOT_NULL. Nécessite VVR 8.0.11 ou une version ultérieure. |
check-and-put.null-as |
String | Non | — | Méthode de traitement des valeurs NULL dans l'enregistrement existant lors d'une mise à jour conditionnelle. Dans PostgreSQL, la comparaison de toute valeur avec NULL renvoie FALSE. Définissez cette option pour spécifier la valeur de substitution, équivalente à la fonction COALESCE. Nécessite VVR 8.0.11 ou une version ultérieure. |
Pool de connexions
| Option | Type de données | Obligatoire | Par défaut | Description |
|---|---|---|---|---|
connectionSize |
Integer | Non | 3 |
Taille du pool de connexions JDBC pour le job. Augmentez cette valeur si le débit du job est faible. |
connectionPoolName |
String | Non | — | Nom du pool de connexions. Les tables partageant le même nom de pool dans le même TaskManager utilisent un pool de connexions commun. Définissez sur n'importe quelle chaîne autre que 'default', et utilisez la même valeur de connectionSize pour toutes les tables partageant le pool. Dans VVR 8.0.3 et les versions antérieures, chaque table dispose de son propre pool par défaut. Dans VVR 8.0.4 et les versions ultérieures, les tables partageant le même endpoint dans un job utilisent un pool commun ; si de nombreuses tables partagent un pool, définissez des valeurs différentes pour connectionPoolName afin d'éviter les pénuries de connexions. |
aggressive.enabled |
Boolean | Non | false |
Indique s'il faut forcer un commit pendant les périodes d'inactivité de la connexion, même si aucune condition de vidage n'a été remplie. Réduit la latence d'écriture sous faible trafic. Pris en charge lorsque sdkMode=jdbc_fixed, jdbc ou jdbc_copy. Nécessite VVR 8.0.11 ou une version ultérieure. |
Options obsolètes
Les options suivantes sont obsolètes. Utilisez les options de remplacement à la place.
| Option | Remplacement | Notes |
|---|---|---|
useRpcMode |
sdkMode=rpc |
La définition de useRpcMode=true équivaut à sdkMode=rpc. Non disponible lorsque property-version=1. |
ignoredelete |
sink.delete-strategy |
Prend effet uniquement lorsque mutatetype=insertorupdate. Pour VVR 8.0.8 ou une version ultérieure, utilisez plutôt sink.delete-strategy. Si les deux options sont définies, seule sink.delete-strategy s'applique. La valeur par défaut est true lorsque property-version=0, et false lorsque property-version=1. |
Spécifique aux tables de dimension
Mode SDK et connexion
| Option | Type de données | Obligatoire | Par défaut | Description |
|---|---|---|---|---|
sdkMode |
String | Non | jdbc |
Mode SDK pour l'interrogation des données. jdbc : prend en charge les requêtes ponctuelles (clé primaire) et les requêtes hors clé primaire ; les requêtes hors clé primaire sont lentes. rpc : requêtes ponctuelles sur les clés primaires uniquement ; tous les champs de clé primaire doivent figurer dans la clause ON ; ne prend pas en charge les types JSONB ou RoarinBitmap. jdbc_fixed : requêtes ponctuelles sur les clés primaires uniquement ; tous les champs de clé primaire doivent figurer dans la clause ON ; ne prend pas en charge les types JSONB, RoarinBitmap, ni les bases de données pour lesquelles le masquage des données est activé. Pour connaître les valeurs recommandées selon la version de VVR, consultez la rubrique Remarques importantes. |
useRpcMode |
Boolean | Non | false |
Indique s'il faut interroger les données via RPC. La définition de cette option sur true équivaut à sdkMode=rpc. |
connectionSize |
Integer | Non | 3 |
Taille du pool de connexions JDBC. Augmentez cette valeur si le débit du job est faible. |
connectionPoolName |
String | Non | — | Nom du pool de connexions. Même comportement que pour les tables sink ; consultez l'option connectionPoolName des tables sink pour plus de détails. |
Lot et analyse
| Option | Type de données | Obligatoire | Par défaut | Description |
|---|---|---|---|---|
jdbcReadBatchSize |
Integer | Non | 128 |
Nombre maximal d'enregistrements par lot pour les requêtes ponctuelles. |
jdbcReadBatchQueueSize |
Integer | Non | 256 |
Nombre maximal de requêtes en file d'attente par thread pour les requêtes ponctuelles. |
jdbcReadTimeoutMs |
Long | Non | 0 |
Délai d'expiration des requêtes ponctuelles, en millisecondes. La valeur 0 signifie qu'il n'y a pas de délai d'expiration. |
jdbcReadRetryCount |
Integer | Non | 1 (avant VVR 8.0.5), 10 (VVR 8.0.5+) |
Nombre de tentatives en cas d'expiration d'une requête ponctuelle. Cette option diffère de jdbcRetryCount, qui s'applique aux échecs de connexion. |
jdbcScanFetchSize |
Integer | Non | 256 |
Nombre d'enregistrements par lot lors d'une opération d'analyse dans une jointure un-à-plusieurs (sans clé primaire complète). |
jdbcScanTimeoutSeconds |
Integer | Non | 60 |
Délai d'expiration d'une opération d'analyse, en secondes. |
Cache
| Option | Type de données | Obligatoire | Par défaut | Description |
|---|---|---|---|---|
cache |
String | Non | None |
Politique de mise en cache. None : pas de mise en cache. LRU : met en cache les résultats des requêtes selon une politique Least Recently Used (LRU). |
cacheSize |
Integer | Non | 10000 |
Nombre maximal de lignes à mettre en cache. S'applique uniquement lorsque cache=LRU. |
cacheTTLMs |
Long | Non | — | Délai d'expiration du cache, en millisecondes. Lorsque cache=LRU, spécifie le TTL ; par défaut, les entrées du cache n'expirent pas. Lorsque cache=None, cette option n'a aucun effet. |
cacheEmpty |
Boolean | Non | true |
Indique s'il faut mettre en cache les requêtes JOIN qui renvoient des résultats vides. |
async |
Boolean | Non | false |
Indique s'il faut renvoyer les résultats des requêtes de manière asynchrone. Lorsque cette option est définie sur true, les résultats ne sont pas triés. |
Fuseaux horaires de Realtime Compute for Apache Flink et de Hologres
Types temporels
| Service | Type | Description |
|---|---|---|
| Flink | TIMESTAMP | Date et heure sans fuseau horaire. Représenté sous forme de chaîne, par exemple 1970-01-01 00:00:04.001. |
| Flink | TIMESTAMP_LTZ | Point absolu dans le temps. Stocké sous forme de LONG (millisecondes depuis l'époque) ou INT (nanosecondes dans les millisecondes). L'époque correspond à 00:00:00 UTC le 1er janvier 1970. Interprété et affiché en fonction du fuseau horaire de la session, de sorte que la même valeur apparaît comme des heures locales différentes selon les fuseaux horaires ; par exemple, 2024-03-19T04:00:00Z apparaît comme 2024-03-19T12:00:00 à Shanghai (UTC+8). |
| Hologres | TIMESTAMP | Date et heure sans fuseau horaire, similaire au type TIMESTAMP de Flink. La valeur ne change pas lorsque le fuseau horaire du client Hologres change. |
| Hologres | TIMESTAMPTZ | Date et heure avec fuseau horaire, similaire au type TIMESTAMP_LTZ de Flink. Stocké en UTC ; converti dans le fuseau horaire du client lors de l'interrogation. |
Mappages des fuseaux horaires
Avec type-mapping.timestamp-converting.legacy=false (VVR 8.0.6 ou version ultérieure), toutes les conversions de type entre Flink et Hologres sont prises en charge sans déviation des données.
| Type Flink | Type Hologres | Comportement |
|---|---|---|
| TIMESTAMP | TIMESTAMP | Aucune conversion de fuseau horaire. Recommandé pour la lecture et l'écriture dans Hologres. |
| TIMESTAMP_LTZ | TIMESTAMPTZ | — |
| TIMESTAMP | TIMESTAMPTZ | Une conversion de fuseau horaire est effectuée. Définissez le fuseau horaire de Flink à l'aide de table.local-time-zone pour garantir l'exactitude. Par exemple, 'table.local-time-zone': 'Asia/Shanghai' définit le fuseau horaire de Flink sur UTC+8. L'écriture de la valeur TIMESTAMP 2022-01-01 01:01:01.123456 produit alors la valeur TIMESTAMPTZ 2022-01-01 01:01:01.123456+8. |
| TIMESTAMP_LTZ | TIMESTAMP | Une conversion de fuseau horaire est effectuée. |
Avec type-mapping.timestamp-converting.legacy=true (VVR 8.0.6 ou version ultérieure) ou dans VVR 8.0.5 ou une version antérieure, une déviation des données peut survenir pour les conversions autres que TIMESTAMP vers TIMESTAMP.
| Type Flink | Type Hologres | Comportement |
|---|---|---|
| TIMESTAMP | TIMESTAMP | Aucune conversion de fuseau horaire. Recommandé. |
| TIMESTAMP_LTZ | TIMESTAMPTZ | Une déviation des données peut survenir. Les données TIMESTAMP_LTZ sont traitées comme une heure sans fuseau horaire lors de l'écriture. Par exemple, 2024-03-19T04:00:00Z (qui représente 2024-03-19T12:00:00 à Shanghai, UTC+8) est écrit sous la forme 2024-03-19T04:00:00 et stocké sous la forme 2024-03-19T04:00:00+08, ce qui produit une déviation de 8 heures. |
| TIMESTAMP | TIMESTAMPTZ | Une déviation des données peut survenir si le fuseau horaire de Flink diffère du fuseau horaire de la JVM. Les conversions utilisent le fuseau horaire de la JVM, et non celui de Flink. |
| TIMESTAMP_LTZ | TIMESTAMP | — |