Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Considérations relatives aux exportations d’instantanés de base de données
Limitations
L’exportation de données d’instantané de bases de données vers Amazon S3 présente les limites suivantes :
-
Vous ne pouvez pas exécuter simultanément plusieurs tâches d’exportation pour le même instantané de cluster de bases de données. Cette règle s’applique aux exportations complètes et partielles.
-
Vous pouvez avoir jusqu’à cinq tâches d’exportation d’instantané de base de données simultanées en cours par Compte AWS.
-
Vous ne pouvez pas exporter les données d’instantanés des clusters de bases de données Aurora Serverless v1 vers S3.
-
Les exportations vers S3 ne prennent pas en charge les préfixes S3 contenant le signe des deux-points (:).
-
Les caractères suivants du chemin d’accès au fichier S3 sont convertis en traits de soulignement (_) lors de l’exportation :
\ ` " (space) -
Si une base de données, un schéma ou une table comporte des caractères autres que les suivants, l’exportation partielle n’est pas prise en charge. Toutefois, vous pouvez exporter l’intégralité de l’instantané de base de données.
-
Lettres latines (A–Z)
-
Chiffres (0–9)
-
Symbole dollar ($)
-
Trait de soulignement (_)
-
-
Les espaces ( ) et certains caractères ne sont pas pris en charge dans les noms de colonnes des tables de base de données. Les tables dont les noms de colonnes contiennent les caractères suivants sont ignorées lors de l’exportation :
, ; { } ( ) \n \t = (space) -
Les tables dont les noms contiennent des barres obliques (/) sont ignorées lors de l’exportation.
-
Les tables temporaires et non journalisées d’Aurora PostgreSQL sont ignorées lors de l’exportation.
-
Si les données contiennent un objet volumineux tel qu’un objet BLOB ou CLOB proche de ou supérieur à 500 Mo, l’exportation échoue.
-
Si une table contient une grande ligne proche de ou supérieure à 2 Go, la table est ignorée lors de l’exportation.
-
Pour les exportations partielles, la taille maximale de la liste
ExportOnlyest de 200 Ko. -
Nous vous recommandons vivement d’utiliser un nom unique pour chaque tâche d’exportation. Si vous n’utilisez pas un nom de tâche unique, vous risquez de recevoir le message d’erreur suivant :
ExportTaskAlreadyExistsFault: An error occurred (ExportTaskAlreadyExists) when calling the StartExportTask operation: The export task with the ID(ExportTaskAlreadyExistsFault : une erreur s’est produite (ExportTaskAlreadyExists) lors de l’appel de l’opération StartExportTask : la tâche d’exportation avec l’ID xxxxx existe déjà).xxxxxalready exists -
Vous pouvez supprimer un instantané lors de l’exportation de ses données vers S3, mais les coûts de stockage de cet instantané vous sont tout de même facturés tant que la tâche d’exportation n’est pas terminée.
-
Vous ne pouvez pas restaurer les données des instantanés exportées de S3 vers un nouveau cluster de bases de données.
Convention de dénomination de fichiers
Les données exportées pour des tables spécifiques sont stockées au format , qui utilise le préfixe de base suivant :base_prefix/files
export_identifier/database_name/schema_name.table_name/
Par exemple :
export-1234567890123-459/rdststdb/rdststdb.DataInsert_7ADB5D19965123A2/
Il existe deux conventions de dénomination des fichiers.
-
Convention actuelle :
batch_index/part-partition_index-random_uuid.format-based_extensionL’indice de lot est un numéro de séquence qui représente un lot de données lues dans la table. Si votre table ne peut pas être partitionnée en petits segments à exporter en parallèle, il y aura plusieurs indices de lot. Il en va de même si votre table est partitionnée en plusieurs tables. Il y aura plusieurs indices de lot, un pour chacune des partitions effectuées à partir de la table principale.
Si votre table peut être partitionnée en petits segments à lire en parallèle, il n’y aura que le dossier
1d’indice de lot.Ce dossier inclut un ou plusieurs fichiers Parquet qui contiennent les données de votre table. Le préfixe du nom du fichier Parquet est
part-. Si votre table est partitionnée, plusieurs fichiers commencent par l’indice de partitionpartition_index00000.Il peut y avoir des écarts dans la séquence d’indices de partition. Cela se produit parce que chaque partition est générée à partir d’une requête basée sur une plage de données dans votre table. S’il n’y a pas de données dans la plage de cette partition, le numéro de séquence est ignoré.
Supposons, par exemple, que la colonne
idsoit la clé primaire de la table et que ses valeurs minimale et maximale soient100et1000. 9 Lorsque nous essayons d’exporter cette table avec 9 partitions, nous la lisons avec des requêtes parallèles telles que les suivantes :SELECT * FROM table WHERE id <= 100 AND id < 200 SELECT * FROM table WHERE id <= 200 AND id < 300Cela devrait générer 9 fichiers, allant de
part-00000-àrandom_uuid.gz.parquetpart-00008-. Toutefois, s’il n’existe aucune ligne dont les identifiants sont compris entrerandom_uuid.gz.parquet200et350, l’une des partitions terminées est vide. Aucun fichier ne sera donc créé pour elle. Dans l’exemple précédent,part-00001-n’est pas créé.random_uuid.gz.parquet -
Ancienne convention :
part-partition_index-random_uuid.format-based_extensionElle est identique à la convention actuelle, mais sans le préfixe
, par exemple :batch_indexpart-00000-c5a881bb-58ff-4ee6-1111-b41ecff340a3-c000.gz.parquet part-00001-d7a881cc-88cc-5ab7-2222-c41ecab340a4-c000.gz.parquet part-00002-f5a991ab-59aa-7fa6-3333-d41eccd340a7-c000.gz.parquet
La convention de dénomination de fichiers est sujette à modification. Par conséquent, lors de la lecture des tables cibles, nous vous conseillons de lire tout ce qui se trouve à l’intérieur du préfixe de base de la table.
Conversion des données lors de l’exportation vers un compartiment Amazon S3
Lorsque vous exportez un instantané de base de données vers un compartiment Amazon S3, Amazon Aurora convertit les données, les exporte et les stocke au format Parquet. Pour plus d’informations sur Parquet, consultez le site web Apache Parquet
Parquet stocke toutes les données sous l’un des types primitifs suivants :
-
BOOLEAN
-
INT32
-
INT64
-
INT96
-
FLOAT
-
DOUBLE
-
BYTE_ARRAY – Tableau d’octets de longueur variable, également connu sous le nom de binaire
-
FIXED_LEN_BYTE_ARRAY – Tableau d’octets de longueur fixe utilisé lorsque les valeurs ont une taille constante
Les types de données Parquet sont peu nombreux afin de la complexité de la lecture et de l’écriture du format. Parquet fournit des types logiques pour étendre les types primitifs. Un type logique est implémenté sous forme d’annotation avec les données dans un champ de métadonnées LogicalType. L’annotation de type logique explique comment interpréter le type primitif.
Lorsque le type logique STRING annote un type BYTE_ARRAY, il indique que le tableau d’octets doit être interprété comme une chaîne de caractères codée en UTF-8. Une fois la tâche d’exportation terminée, Amazon Aurora vous avertit si une conversion de chaîne s’est produite. Les données sous-jacentes exportées sont toujours les mêmes que celles de la source. Cependant, en raison de la différence d’encodage en UTF-8, certains caractères peuvent apparaître différents de la source lorsqu’ils sont lus dans des outils tels que Athena.
Pour plus d’informations, consultez Parquet Logical Type Definitions
Rubriques
Mappage du type de données MySQL à Parquet
Le tableau suivant montre le mappage des types de données MySQL aux types de données Parquet lorsque les données sont converties et exportées vers Amazon S3.
| Type de données source | Type primitif du format Parquet | Annotation de type logique | Notes de conversion |
|---|---|---|---|
| Types de données numériques | |||
| BIGINT | INT64 | ||
| BIGINT UNSIGNED | FIXED_LEN_BYTE_ARRAY(9) | DECIMAL(20,0) | Parquet ne prend en charge que les types signés, de sorte que le mappage nécessite un octet supplémentaire (8 plus 1) pour stocker le type BIGINT_UNSIGNED. |
| BIT | BYTE_ARRAY | ||
| DECIMAL | INT32 | DECIMAL(p,s) | Si la valeur source est inférieure à 231, elle est stockée sous la forme INT32. |
| INT64 | DECIMAL(p,s) | Si la valeur source est supérieure ou égale à 231 mais inférieure à 263, elle est stockée sous la forme INT64. | |
| FIXED_LEN_BYTE_ARRAY(N) | DECIMAL(p,s) | Si la valeur source est supérieure ou égale à 263, elle est stockée sous la forme FIXED_LEN_BYTE_ARRAY(N). | |
| BYTE_ARRAY | STRING | Parquet ne prend pas en charge une précision décimale supérieure à 38. La valeur décimale est convertie en une chaîne de type BYTE_ARRAY et encodée en UTF8. | |
| DOUBLE | DOUBLE | ||
| FLOAT | DOUBLE | ||
| INT | INT32 | ||
| INT UNSIGNED | INT64 | ||
| MEDIUMINT | INT32 | ||
| MEDIUMINT UNSIGNED | INT64 | ||
| NUMERIC | INT32 | DECIMAL(p,s) |
Si la valeur source est inférieure à 231, elle est stockée sous la forme INT32. |
| INT64 | DECIMAL(p,s) | Si la valeur source est supérieure ou égale à 231 mais inférieure à 263, elle est stockée sous la forme INT64. | |
| FIXED_LEN_ARRAY(N) | DECIMAL(p,s) | Si la valeur source est supérieure ou égale à 263, elle est stockée sous la forme FIXED_LEN_BYTE_ARRAY(N). | |
| BYTE_ARRAY | STRING | Parquet ne prend pas en charge la précision numérique supérieure à 38. Cette valeur numérique est convertie en une chaîne de type BYTE_ARRAY et encodée en UTF8. | |
| SMALLINT | INT32 | ||
| SMALLINT UNSIGNED | INT32 | ||
| TINYINT | INT32 | ||
| TINYINT UNSIGNED | INT32 | INT(16, true) | |
| Types de données chaîne | |||
| BINARY | BYTE_ARRAY | ||
| BLOB | BYTE_ARRAY | ||
| CHAR | BYTE_ARRAY | ||
| ENUM | BYTE_ARRAY | STRING | |
| LINESTRING | BYTE_ARRAY | ||
| LONGBLOB | BYTE_ARRAY | ||
| LONGTEXT | BYTE_ARRAY | STRING | |
| MEDIUMBLOB | BYTE_ARRAY | ||
| MEDIUMTEXT | BYTE_ARRAY | STRING | |
| MULTILINESTRING | BYTE_ARRAY | ||
| SET | BYTE_ARRAY | STRING | |
| TEXT | BYTE_ARRAY | STRING | |
| TINYBLOB | BYTE_ARRAY | ||
| TINYTEXT | BYTE_ARRAY | STRING | |
| VARBINARY | BYTE_ARRAY | ||
| VARCHAR | BYTE_ARRAY | STRING | |
| Types de données de date et d’heure | |||
| DATE | BYTE_ARRAY | STRING | Une date est convertie en une chaîne de type BYTE_ARRAY et encodée en UTF8. |
| DATETIME | INT64 | TIMESTAMP_MICROS | |
| TIME | BYTE_ARRAY | STRING | Un type TIME est converti en une chaîne BYTE_ARRAY et encodé en UTF8. |
| TIMESTAMP | INT64 | TIMESTAMP_MICROS | |
| YEAR | INT32 | ||
| Types de données géométriques | |||
| GEOMETRY | BYTE_ARRAY | ||
| GEOMETRYCOLLECTION | BYTE_ARRAY | ||
| MULTIPOINT | BYTE_ARRAY | ||
| MULTIPOLYGON | BYTE_ARRAY | ||
| POINT | BYTE_ARRAY | ||
| POLYGON | BYTE_ARRAY | ||
| Type de données JSON | |||
| JSON | BYTE_ARRAY | STRING | |
Mappage de type de données PostgreSQL vers Parquet
Le tableau suivant montre le mappage des types de données PostgreSQL aux types de données Parquet lorsque les données sont converties et exportées vers Amazon S3.
| Type de données PostgreSQL | Type primitif du format Parquet | Annotation de type logique | Notes de mappage |
|---|---|---|---|
| Types de données numériques | |||
| BIGINT | INT64 | ||
| BIGSERIAL | INT64 | ||
| DECIMAL | BYTE_ARRAY | STRING | Un type DECIMAL est converti en une chaîne de type BYTE_ARRAY et encodé en UTF8. Cette conversion vise à éviter les complications dues à la précision des données et aux valeurs de données qui ne sont pas un nombre (NaN). |
| DOUBLE PRECISION | DOUBLE | ||
| INTEGER | INT32 | ||
| MONEY | BYTE_ARRAY | STRING | |
| REAL | FLOAT | ||
| SERIAL | INT32 | ||
| SMALLINT | INT32 | INT(16, true) | |
| SMALLSERIAL | INT32 | INT(16, true) | |
| Types de chaînes et de données associés | |||
| ARRAY | BYTE_ARRAY | STRING |
Un tableau est converti en chaîne et encodé en tant que BINARY (UTF8). Cette conversion vise à éviter les complications dues à la précision des données, aux valeurs de données qui ne sont pas un nombre (NaN) et aux valeurs de données horaires. |
| BIT | BYTE_ARRAY | STRING | |
| BIT VARYING | BYTE_ARRAY | STRING | |
| BYTEA | BINARY | ||
| CHAR | BYTE_ARRAY | STRING | |
| CHAR(N) | BYTE_ARRAY | STRING | |
| ENUM | BYTE_ARRAY | STRING | |
| NAME | BYTE_ARRAY | STRING | |
| TEXT | BYTE_ARRAY | STRING | |
| TEXT SEARCH | BYTE_ARRAY | STRING | |
| VARCHAR(N) | BYTE_ARRAY | STRING | |
| xml | BYTE_ARRAY | STRING | |
| Types de données de date et d’heure | |||
| DATE | BYTE_ARRAY | STRING | |
| INTERVAL | BYTE_ARRAY | STRING | |
| TIME | BYTE_ARRAY | STRING | |
| TIME WITH TIME ZONE | BYTE_ARRAY | STRING | |
| TIMESTAMP | BYTE_ARRAY | STRING | |
| TIMESTAMP WITH TIME ZONE | BYTE_ARRAY | STRING | |
| Types de données géométriques | |||
| BOX | BYTE_ARRAY | STRING | |
| CIRCLE | BYTE_ARRAY | STRING | |
| LINE | BYTE_ARRAY | STRING | |
| LINESEGMENT | BYTE_ARRAY | STRING | |
| PATH | BYTE_ARRAY | STRING | |
| POINT | BYTE_ARRAY | STRING | |
| POLYGON | BYTE_ARRAY | STRING | |
| Types de données JSON | |||
| JSON | BYTE_ARRAY | STRING | |
| JSONB | BYTE_ARRAY | STRING | |
| Autres types de données | |||
| BOOLEAN | BOOLEAN | ||
| CIDR | BYTE_ARRAY | STRING | Type de données de réseau |
| COMPOSITE | BYTE_ARRAY | STRING | |
| DOMAIN | BYTE_ARRAY | STRING | |
| INET | BYTE_ARRAY | STRING | Type de données de réseau |
| MACADDR | BYTE_ARRAY | STRING | |
| OBJECT IDENTIFIER | N/A | ||
| PG_LSN | BYTE_ARRAY | STRING | |
| RANGE | BYTE_ARRAY | STRING | |
| UUID | BYTE_ARRAY | STRING | |