Pertimbangan untuk ekspor snapshot cluster DB - Amazon Aurora

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Pertimbangan untuk ekspor snapshot cluster DB

Batasan

Batasan berikut berlaku untuk ekspor data snapshot DB ke Amazon S3:

  • Anda tidak dapat menjalankan beberapa tugas ekspor untuk snapshot klaster DB yang sama secara bersamaan. Batasan ini berlaku untuk ekspor penuh dan sebagian.

  • Anda dapat memiliki hingga lima tugas ekspor snapshot DB bersamaan yang sedang berlangsung per. Akun AWS

  • Anda tidak dapat mengekspor data snapshot dari cluster Aurora Serverless v1 DB ke S3.

  • Ekspor ke S3 tidak mendukung awalan S3 yang berisi titik dua (:).

  • Karakter berikut di jalur file S3 akan diubah menjadi garis bawah (_) selama ekspor berlangsung:

    \ ` " (space)
  • Jika basis data, skema, atau tabel memiliki karakter dalam namanya selain yang berikut ini, maka ekspor parsial tidak didukung. Namun, Anda dapat mengekspor seluruh snapshot DB.

    • Huruf latin (A-Z)

    • Digit (0–9)

    • Simbol dolar ($)

    • Garis bawah (_)

  • Spasi ( ) dan karakter-karakter tertentu tidak didukung dalam nama kolom tabel basis data. Tabel yang nama kolomnya berisi karakter berikut akan dilewati selama ekspor berlangsung:

    , ; { } ( ) \n \t = (space)
  • Tabel yang namanya berisi garis miring (/) akan dilewati selama ekspor berlangsung.

  • Aurora Postgre tabel SQL sementara dan tidak tercatat dilewati selama ekspor.

  • Jika data berisi objek besar, seperti BLOB atauCLOB, yang mendekati atau lebih besar dari 500 MB, maka ekspor gagal.

  • Jika suatu tabel berisi baris besar yang berukuran mendekati atau lebih dari 2 GB, maka tabel tersebut akan dilewati selama ekspor berlangsung.

  • Untuk ekspor sebagian, ExportOnly daftar memiliki ukuran maksimum 200 KB.

  • Sebaiknya Anda menggunakan nama unik untuk setiap tugas ekspor. Jika tidak menggunakan nama tugas yang unik, Anda mungkin menerima pesan kesalahan berikut:

    ExportTaskAlreadyExistsFault: Terjadi kesalahan (ExportTaskAlreadyExists) saat memanggil StartExportTask operasi: Tugas ekspor dengan ID xxxxx sudah ada.

  • Anda dapat menghapus snapshot saat sedang mengekspor datanya ke S3, tetapi Anda masih dikenai biaya penyimpanan untuk snapshot tersebut hingga tugas ekspor selesai.

  • Anda tidak dapat memulihkan data snapshot yang diekspor dari S3 ke klaster DB baru.

Konvensi penamaan file

Data yang diekspor untuk tabel tertentu disimpan dalam format base_prefix/files, dengan prefiks dasar sebagai berikut:

export_identifier/database_name/schema_name.table_name/

Contohnya:

export-1234567890123-459/rdststdb/rdststdb.DataInsert_7ADB5D19965123A2/

Ada dua konvensi cara penamaan file.

  • Konvensi saat ini:

    batch_index/part-partition_index-random_uuid.format-based_extension

    Indeks batch adalah nomor urut yang mewakili batch data yang dibaca dari tabel. Jika kami tidak dapat mempartisi tabel Anda menjadi bagian-bagian kecil untuk diekspor secara paralel, akan ada beberapa indeks batch. Hal yang sama akan terjadi jika tabel Anda dipartisi menjadi beberapa tabel. Beberapa indeks batch akan tersedia, dengan satu untuk setiap partisi tabel dari tabel utama Anda.

    Jika kami dapat mempartisi tabel Anda menjadi bagian-bagian kecil yang akan dibaca secara paralel, hanya akan ada folder 1 indeks batch.

    Di dalam folder indeks batch, akan ada satu atau beberapa file Parquet yang berisi data tabel Anda. Prefiks file Parket adalah part-partition_index. Jika tabel Anda dipartisi, akan ada beberapa file yang diawali dengan indeks partisi 00000.

    Mungkin ada kesenjangan dalam urutan indeks partisi. Hal ini terjadi karena setiap partisi diperoleh dari kueri dengan rentang di tabel Anda. Jika tidak ada data dalam rentang partisi tersebut, maka nomor urut itu akan dilewati.

    Misalnya, anggap kolom id adalah kunci primer tabel, dan nilai minimum dan maksimumnya adalah 100 dan 1000. Saat kami mencoba mengekspor tabel ini dengan sembilan partisi, kami membacanya dengan kueri paralel seperti berikut:

    SELECT * FROM table WHERE id <= 100 AND id < 200 SELECT * FROM table WHERE id <= 200 AND id < 300

    Partisi ini akan menghasilkan sembilan file, dari part-00000-random_uuid.gz.parquet hingga part-00008-random_uuid.gz.parquet. Namun, jika tidak ada baris dengan IDs antara 200 dan350, salah satu partisi selesai kosong, dan tidak ada file yang dibuat untuk itu. Dalam contoh sebelumnya, part-00001-random_uuid.gz.parquet tidak dibuat.

  • Konvensi yang lebih lama:

    part-partition_index-random_uuid.format-based_extension

    Konvensi ini sama seperti konvensi saat ini, tetapi tanpa prefiks batch_index, contohnya:

    part-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

Konvensi penamaan file dapat berubah sewaktu-waktu. Oleh karena itu, saat membaca tabel target, sebaiknya baca segala sesuatu di dalam prefiks dasar untuk tabel tersebut.

Konversi data saat mengekspor ke bucket Amazon S3

Saat Anda mengekspor snapshot DB ke bucket Amazon S3 Amazon Aurora akan mengonversi data ke, mengekspor data dalam, dan menyimpan data dalam format Parquet. Untuk informasi selengkapnya tentang Parquet, lihat situs web Apache Parquet.

Parquet menyimpan semua data sebagai salah satu jenis primitif berikut:

  • BOOLEAN

  • INT32

  • INT64

  • INT96

  • FLOAT

  • DOUBLE

  • BYTE_ ARRAY — Array byte panjang variabel, juga dikenal sebagai biner

  • FIXED_ LEN _ BYTE _ ARRAY - Array byte dengan panjang tetap yang digunakan saat nilai memiliki ukuran konstan

Jenis data Parquet berjumlah sedikit untuk mengurangi kerumitan membaca dan menulis format. Parquet menyediakan jenis logis untuk memperluas jenis primitif. Jenis logis diimplementasikan sebagai anotasi dengan data di kolom metadata LogicalType. Anotasi jenis logis menjelaskan cara menginterpretasikan jenis primitif.

Ketika tipe STRING logis membubuhi keterangan BYTE_ARRAY tipe, ini menunjukkan bahwa array byte harus ditafsirkan sebagai string karakter yang dikodekan UTF -8. Setelah tugas ekspor selesai, Amazon Aurora akan memberi tahu Anda jika terjadi konversi string. Data dasar yang diekspor selalu sama seperti data dari sumbernya. Namun, karena perbedaan pengkodean di UTF -8, beberapa karakter mungkin tampak berbeda dari sumbernya saat dibaca di alat seperti Athena.

Untuk informasi selengkapnya, lihat Parquet logical type definitions dalam dokumentasi Parquet.

Pemetaan tipe SQL data saya ke Parket

Tabel berikut menunjukkan pemetaan dari tipe SQL data Saya ke tipe data Parket saat data dikonversi dan diekspor ke Amazon S3.

Jenis data sumber Jenis primitif Parquet Anotasi jenis logis Catatan konversi
Jenis data numerik
BIGINT INT64
BIGINT UNSIGNED FIXED_ LEN _ BYTE _ ARRAY (9) DECIMAL(20,0) Parket hanya mendukung tipe yang ditandatangani, sehingga pemetaan memerlukan byte tambahan (8 plus 1) untuk menyimpan tipe BIGINT _UNSIGNED.
BIT BYTE_ARRAY
DECIMAL INT32 DECIMAL(p, s) Jika nilai sumber kurang dari 2 31, itu disimpan sebagaiINT32.
INT64 DECIMAL(p, s) Jika nilai sumbernya adalah 2 31 atau lebih besar, tetapi kurang dari 2 63, itu disimpan sebagaiINT64.
FIXED_ LEN _ BYTE _ ARRAY (N) DECIMAL(p, s) Jika nilai sumber adalah 2 63 atau lebih besar, itu disimpan sebagai FIXED _ LEN _ BYTE _ ARRAY (N).
BYTE_ARRAY STRING Parquet tidak mendukung presisi Desimal yang lebih besar dari 38. Nilai desimal dikonversi ke string dalam ARRAY tipe BYTE _ dan dikodekan sebagai. UTF8
DOUBLE DOUBLE
FLOAT DOUBLE
INT INT32
INT UNSIGNED INT64
MEDIUMINT INT32
MEDIUMINT UNSIGNED INT64
NUMERIC INT32 DECIMAL(p, s)

Jika nilai sumber kurang dari 2 31, itu disimpan sebagaiINT32.

INT64 DECIMAL(p, s) Jika nilai sumbernya adalah 2 31 atau lebih besar, tetapi kurang dari 2 63, itu disimpan sebagaiINT64.
FIXED_ LEN _ ARRAY (N) DECIMAL(p, s) Jika nilai sumber adalah 2 63 atau lebih besar, itu disimpan sebagai FIXED _ LEN _ BYTE _ ARRAY (N).
BYTE_ARRAY STRING Parquet tidak mendukung presisi Numerik yang lebih besar dari 38. Nilai Numerik ini dikonversi ke string dalam ARRAY tipe BYTE _ dan dikodekan sebagai. UTF8
SMALLINT INT32
SMALLINT UNSIGNED INT32
TINYINT INT32
TINYINT UNSIGNED INT32
Jenis data string
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
Jenis data tanggal dan waktu
DATE BYTE_ARRAY STRING Tanggal dikonversi ke string dalam ARRAY tipe BYTE _ dan dikodekan sebagai. UTF8
DATETIME INT64 TIMESTAMP_MICROS
TIME BYTE_ARRAY STRING TIMETipe dikonversi ke string dalam BYTE _ ARRAY dan dikodekan sebagai. UTF8
TIMESTAMP INT64 TIMESTAMP_MICROS
YEAR INT32
Jenis data geometris
GEOMETRY BYTE_ARRAY
GEOMETRYCOLLECTION BYTE_ARRAY
MULTIPOINT BYTE_ARRAY
MULTIPOLYGON BYTE_ARRAY
POINT BYTE_ARRAY
POLYGON BYTE_ARRAY
JSONtipe data
JSON BYTE_ARRAY STRING

Pemetaan tipe SQL data Postgre ke Parket

Tabel berikut menunjukkan pemetaan dari tipe data Postgre ke tipe SQL data Parket saat data dikonversi dan diekspor ke Amazon S3.

Tipe data Postgre SQL Jenis primitif Parquet Anotasi jenis logis Catatan pemetaan
Jenis data numerik
BIGINT INT64
BIGSERIAL INT64
DECIMAL BYTE_ARRAY STRING DECIMALTipe dikonversi ke string dalam ARRAY tipe BYTE _ dan dikodekan sebagai. UTF8

Konversi ini dimaksudkan untuk menghindari kerumitan akibat presisi data dan nilai data yang bukan berupa angka (NaN).

DOUBLE PRECISION DOUBLE
INTEGER INT32
MONEY BYTE_ARRAY STRING
REAL FLOAT
SERIAL INT32
SMALLINT INT32 INT_16
SMALLSERIAL INT32 INT_16
Jenis data string dan terkait
ARRAY BYTE_ARRAY STRING

Array dikonversi ke string dan dikodekan sebagai BINARY ()UTF8.

Konversi ini dimaksudkan untuk menghindari kerumitan akibat presisi data, nilai data yang bukan berupa angka (NaN), dan nilai data waktu.

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
Jenis data tanggal dan waktu
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
Jenis data geometris
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
JSONtipe data
JSON BYTE_ARRAY STRING
JSONB BYTE_ARRAY STRING
Jenis data lainnya
BOOLEAN BOOLEAN
CIDR BYTE_ARRAY STRING Jenis data jaringan
COMPOSITE BYTE_ARRAY STRING
DOMAIN BYTE_ARRAY STRING
INET BYTE_ARRAY STRING Jenis data jaringan
MACADDR BYTE_ARRAY STRING
OBJECT IDENTIFIER N/A
PG_ LSN BYTE_ARRAY STRING
RANGE BYTE_ARRAY STRING
UUID BYTE_ARRAY STRING