

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
<a name="aurora-export-snapshot.Considerations"></a>

## Batasan
<a name="aurora-export-snapshot.Limits"></a>

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
+ 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.
+ Tabel Aurora PostgreSQL yang bersifat sementara dan tidak tercatat akan dilewati selama ekspor berlangsung.
+ Jika data berisi objek besar, seperti BLOB atau CLOB, yang berukuran mendekati atau lebih dari 500 MB, maka ekspornya akan 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
<a name="aurora-export-snapshot.FileNames"></a>

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 ID antara `200` dan `350`, maka salah satu partisi yang telah selesai akan kosong, dan tidak ada file yang dibuat untuk partisi 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
<a name="aurora-export-snapshot.data-types"></a>

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](https://parquet.apache.org/docs/).

Parquet menyimpan semua data sebagai salah satu jenis primitif berikut:
+ BOOLEAN
+ INT32
+ INT64
+ INT96
+ FLOAT
+ DOUBLE
+ BYTE\_ARRAY – Array byte dengan 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 UTF-8 dikodekan. 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 UTF-8, beberapa karakter mungkin tampak berbeda dari sumbernya saat dibaca di alat seperti Athena.

Untuk informasi selengkapnya, lihat [Parquet logical type definitions](https://github.com/apache/parquet-format/blob/master/LogicalTypes.md) dalam dokumentasi Parquet.

**Topics**
+ [Pemetaan jenis data MySQL ke Parquet](#aurora-export-snapshot.data-types.MySQL)
+ [Pemetaan jenis data PostgreSQL ke Parquet](#aurora-export-snapshot.data-types.PostgreSQL)

### Pemetaan jenis data MySQL ke Parquet
<a name="aurora-export-snapshot.data-types.MySQL"></a>

Tabel berikut menunjukkan pemetaan dari jenis data MySQL ke jenis data Parquet saat data dikonversi dan diekspor ke Amazon S3.


<table>
<thead>
  <tr><th>Jenis data sumber</th><th>Jenis primitif Parquet</th><th>Anotasi jenis logis</th><th>Catatan konversi</th></tr>
</thead>
<tbody>
  <tr><td colspan="4">Jenis data numerik</td></tr>
  <tr><td>BIGINT</td><td>INT64</td><td></td><td> </td></tr>
  <tr><td>BIGINT UNSIGNED</td><td>FIXED\_LEN\_BYTE\_ARRAY(9) </td><td>DECIMAL(20,0)</td><td>Parquet hanya mendukung jenis yang ditandatangani, sehingga pemetaannya memerlukan tambahan byte (8 plus 1) untuk menyimpan jenis BIGINT\_UNSIGNED.</td></tr>
  <tr><td>BIT</td><td>BYTE\_ARRAY</td><td></td><td> </td></tr>
  <tr><td rowspan="4">DECIMAL</td><td>INT32</td><td>DECIMAL(p,s)</td><td>Jika nilai sumber kurang dari 231, maka nilai tersebut akan disimpan sebagai INT32. </td></tr>
  <tr><td>INT64</td><td>DECIMAL(p,s)</td><td>Jika nilai sumber adalah 231 atau lebih besar, tetapi kurang dari 263, maka nilai tersebut akan disimpan sebagai INT64.</td></tr>
  <tr><td>FIXED\_LEN\_BYTE\_ARRAY(N)</td><td>DECIMAL(p,s)</td><td>Jika nilai sumber adalah 263 atau lebih besar, maka nilai tersebut akan disimpan sebagai FIXED\_LEN\_BYTE\_ARRAY(N).</td></tr>
  <tr><td>BYTE\_ARRAY</td><td>STRING</td><td>Parquet tidak mendukung presisi Desimal yang lebih besar dari 38. Nilai Desimal akan dikonversi menjadi string dalam jenis BYTE\_ARRAY dan dienkode sebagai UTF8.</td></tr>
  <tr><td>DOUBLE</td><td>DOUBLE</td><td></td><td> </td></tr>
  <tr><td>FLOAT</td><td>DOUBLE</td><td></td><td> </td></tr>
  <tr><td>INT</td><td>INT32</td><td></td><td> </td></tr>
  <tr><td>INT UNSIGNED</td><td>INT64</td><td></td><td> </td></tr>
  <tr><td>MEDIUMINT</td><td>INT32</td><td></td><td> </td></tr>
  <tr><td>MEDIUMINT UNSIGNED</td><td>INT64</td><td></td><td> </td></tr>
  <tr><td rowspan="4"> NUMERIC</td><td>INT32</td><td>DECIMAL(p,s)</td><td>Jika nilai sumber kurang dari 231, maka nilai tersebut akan disimpan sebagai INT32.</td></tr>
  <tr><td>INT64</td><td>DECIMAL(p,s)</td><td>Jika nilai sumber adalah 231 atau lebih besar, tetapi kurang dari 263, maka nilai tersebut akan disimpan sebagai INT64.</td></tr>
  <tr><td>FIXED\_LEN\_ARRAY(N)</td><td>DECIMAL(p,s)</td><td>Jika nilai sumber adalah 263 atau lebih besar, maka nilai tersebut akan disimpan sebagai FIXED\_LEN\_BYTE\_ARRAY(N).</td></tr>
  <tr><td>BYTE\_ARRAY</td><td>STRING</td><td>Parquet tidak mendukung presisi Numerik yang lebih besar dari 38. Nilai Numerik ini akan dikonversi menjadi string dalam jenis BYTE\_ARRAY dan dienkode sebagai UTF8.</td></tr>
  <tr><td>SMALLINT</td><td>INT32</td><td></td><td> </td></tr>
  <tr><td>SMALLINT UNSIGNED</td><td>INT32</td><td></td><td> </td></tr>
  <tr><td>TINYINT</td><td>INT32</td><td></td><td> </td></tr>
  <tr><td>TINYINT UNSIGNED</td><td>INT32</td><td>INT (16, benar)</td><td> </td></tr>
  <tr><td colspan="4">Jenis data string</td></tr>
  <tr><td>BINARY</td><td>BYTE\_ARRAY</td><td></td><td> </td></tr>
  <tr><td>BLOB</td><td>BYTE\_ARRAY</td><td></td><td> </td></tr>
  <tr><td>CHAR</td><td>BYTE\_ARRAY</td><td></td><td> </td></tr>
  <tr><td>ENUM</td><td>BYTE\_ARRAY</td><td>STRING</td><td> </td></tr>
  <tr><td>LINESTRING</td><td>BYTE\_ARRAY</td><td></td><td> </td></tr>
  <tr><td>LONGBLOB</td><td>BYTE\_ARRAY</td><td></td><td> </td></tr>
  <tr><td>LONGTEXT</td><td>BYTE\_ARRAY</td><td>STRING</td><td> </td></tr>
  <tr><td>MEDIUMBLOB</td><td>BYTE\_ARRAY</td><td></td><td> </td></tr>
  <tr><td>MEDIUMTEXT</td><td>BYTE\_ARRAY</td><td>STRING</td><td> </td></tr>
  <tr><td>MULTILINESTRING</td><td>BYTE\_ARRAY</td><td></td><td> </td></tr>
  <tr><td>SET</td><td>BYTE\_ARRAY</td><td>STRING</td><td> </td></tr>
  <tr><td>TEXT</td><td>BYTE\_ARRAY</td><td>STRING</td><td> </td></tr>
  <tr><td>TINYBLOB</td><td>BYTE\_ARRAY</td><td></td><td> </td></tr>
  <tr><td>TINYTEXT</td><td>BYTE\_ARRAY</td><td>STRING</td><td> </td></tr>
  <tr><td>VARBINARY</td><td>BYTE\_ARRAY</td><td></td><td> </td></tr>
  <tr><td>VARCHAR</td><td>BYTE\_ARRAY</td><td>STRING</td><td> </td></tr>
  <tr><td colspan="4">Jenis data tanggal dan waktu</td></tr>
  <tr><td>DATE</td><td>BYTE\_ARRAY</td><td>STRING</td><td>Tanggal akan dikonversi menjadi string dalam jenis BYTE\_ARRAY dan dienkode sebagai UTF8.</td></tr>
  <tr><td>DATETIME</td><td>INT64 </td><td>TIMESTAMP\_MICROS</td><td> </td></tr>
  <tr><td>TIME</td><td>BYTE\_ARRAY</td><td>STRING</td><td>Jenis TIME akan dikonversi menjadi string dalam jenis BYTE\_ARRAY dan dienkode sebagai UTF8.</td></tr>
  <tr><td>TIMESTAMP</td><td>INT64 </td><td>TIMESTAMP\_MICROS</td><td> </td></tr>
  <tr><td>YEAR</td><td>INT32</td><td></td><td> </td></tr>
  <tr><td colspan="4">Jenis data geometris</td></tr>
  <tr><td>GEOMETRY</td><td>BYTE\_ARRAY</td><td></td><td> </td></tr>
  <tr><td>GEOMETRYCOLLECTION</td><td>BYTE\_ARRAY</td><td></td><td> </td></tr>
  <tr><td>MULTIPOINT</td><td>BYTE\_ARRAY</td><td></td><td> </td></tr>
  <tr><td>MULTIPOLYGON</td><td>BYTE\_ARRAY</td><td></td><td> </td></tr>
  <tr><td>POINT</td><td>BYTE\_ARRAY</td><td></td><td> </td></tr>
  <tr><td>POLYGON</td><td>BYTE\_ARRAY</td><td></td><td> </td></tr>
  <tr><td colspan="4">Jenis data JSON</td></tr>
  <tr><td>JSON </td><td>BYTE\_ARRAY</td><td>STRING</td><td> </td></tr>
</tbody>
</table>


### Pemetaan jenis data PostgreSQL ke Parquet
<a name="aurora-export-snapshot.data-types.PostgreSQL"></a>

Tabel berikut menunjukkan pemetaan dari dan jenis data PostgreSQL ke jenis data Parquet saat data dikonversi dan diekspor ke Amazon S3.


<table>
<thead>
  <tr><th>Jenis data PostgreSQL</th><th>Jenis primitif Parquet</th><th>Anotasi jenis logis</th><th>Catatan pemetaan</th></tr>
</thead>
<tbody>
  <tr><td colspan="4">Jenis data numerik</td></tr>
  <tr><td>BIGINT</td><td>INT64</td><td></td><td> </td></tr>
  <tr><td>BIGSERIAL</td><td>INT64</td><td></td><td> </td></tr>
  <tr><td>DECIMAL</td><td>BYTE\_ARRAY</td><td>STRING</td><td>Jenis DECIMAL akan dikonversi ke string dalam jenis BYTE\_ARRAY dan dienkode sebagai UTF8.Konversi ini dimaksudkan untuk menghindari kerumitan akibat presisi data dan nilai data yang bukan berupa angka (NaN).</td></tr>
  <tr><td>DOUBLE PRECISION</td><td>DOUBLE</td><td></td><td> </td></tr>
  <tr><td>INTEGER</td><td>INT32</td><td></td><td> </td></tr>
  <tr><td>MONEY</td><td>BYTE\_ARRAY</td><td>STRING</td><td> </td></tr>
  <tr><td>REAL</td><td>FLOAT</td><td></td><td> </td></tr>
  <tr><td>SERIAL</td><td>INT32</td><td></td><td> </td></tr>
  <tr><td>SMALLINT</td><td>INT32</td><td>INT (16, benar)</td><td> </td></tr>
  <tr><td>SMALLSERIAL</td><td>INT32</td><td>INT (16, benar)</td><td> </td></tr>
  <tr><td colspan="3">Jenis data string dan terkait</td><td></td></tr>
  <tr><td>ARRAY</td><td>BYTE\_ARRAY</td><td>STRING</td><td>Array akan dikonversi menjadi string dan dienkode sebagai BINARY (UTF8).<br />Konversi ini dimaksudkan untuk menghindari kerumitan akibat presisi data, nilai data yang bukan berupa angka (NaN), dan nilai data waktu.</td></tr>
  <tr><td>BIT</td><td>BYTE\_ARRAY</td><td>STRING</td><td> </td></tr>
  <tr><td>BIT VARYING</td><td>BYTE\_ARRAY</td><td>STRING</td><td> </td></tr>
  <tr><td>BYTEA</td><td>BINARY</td><td></td><td> </td></tr>
  <tr><td>CHAR</td><td>BYTE\_ARRAY</td><td>STRING</td><td> </td></tr>
  <tr><td>CHAR(N)</td><td>BYTE\_ARRAY</td><td>STRING</td><td> </td></tr>
  <tr><td>ENUM</td><td>BYTE\_ARRAY</td><td>STRING</td><td> </td></tr>
  <tr><td>NAME</td><td>BYTE\_ARRAY</td><td>STRING</td><td> </td></tr>
  <tr><td>TEXT</td><td>BYTE\_ARRAY</td><td>STRING</td><td> </td></tr>
  <tr><td>TEXT SEARCH</td><td>BYTE\_ARRAY</td><td>STRING</td><td> </td></tr>
  <tr><td>VARCHAR(N)</td><td>BYTE\_ARRAY</td><td>STRING</td><td> </td></tr>
  <tr><td>XML</td><td>BYTE\_ARRAY</td><td>STRING</td><td> </td></tr>
  <tr><td colspan="4">Jenis data tanggal dan waktu</td></tr>
  <tr><td>DATE</td><td>BYTE\_ARRAY</td><td>STRING</td><td> </td></tr>
  <tr><td>INTERVAL</td><td>BYTE\_ARRAY</td><td>STRING</td><td> </td></tr>
  <tr><td>TIME</td><td>BYTE\_ARRAY</td><td>STRING</td><td></td></tr>
  <tr><td>TIME WITH TIME ZONE</td><td>BYTE\_ARRAY</td><td>STRING</td><td></td></tr>
  <tr><td>TIMESTAMP</td><td>BYTE\_ARRAY</td><td>STRING</td><td></td></tr>
  <tr><td>TIMESTAMP WITH TIME ZONE</td><td>BYTE\_ARRAY</td><td>STRING</td><td></td></tr>
  <tr><td colspan="4">Jenis data geometris</td></tr>
  <tr><td>BOX</td><td>BYTE\_ARRAY</td><td>STRING</td><td> </td></tr>
  <tr><td>CIRCLE</td><td>BYTE\_ARRAY</td><td>STRING</td><td> </td></tr>
  <tr><td>LINE</td><td>BYTE\_ARRAY</td><td>STRING</td><td> </td></tr>
  <tr><td>LINESEGMENT</td><td>BYTE\_ARRAY</td><td>STRING</td><td> </td></tr>
  <tr><td>PATH</td><td>BYTE\_ARRAY</td><td>STRING</td><td> </td></tr>
  <tr><td>POINT</td><td>BYTE\_ARRAY</td><td>STRING</td><td> </td></tr>
  <tr><td>POLYGON</td><td>BYTE\_ARRAY</td><td>STRING</td><td> </td></tr>
  <tr><td colspan="4">Jenis data JSON</td></tr>
  <tr><td>JSON</td><td>BYTE\_ARRAY</td><td>STRING</td><td> </td></tr>
  <tr><td>JSONB</td><td>BYTE\_ARRAY</td><td>STRING</td><td> </td></tr>
  <tr><td colspan="4">Jenis data lainnya</td></tr>
  <tr><td>BOOLEAN</td><td>BOOLEAN</td><td></td><td> </td></tr>
  <tr><td>CIDR</td><td>BYTE\_ARRAY</td><td>STRING</td><td> Jenis data jaringan</td></tr>
  <tr><td>COMPOSITE</td><td>BYTE\_ARRAY</td><td>STRING</td><td> </td></tr>
  <tr><td>DOMAIN</td><td>BYTE\_ARRAY</td><td>STRING</td><td> </td></tr>
  <tr><td>INET</td><td>BYTE\_ARRAY</td><td>STRING</td><td> Jenis data jaringan</td></tr>
  <tr><td>MACADDR</td><td>BYTE\_ARRAY</td><td>STRING</td><td> </td></tr>
  <tr><td>OBJECT IDENTIFIER</td><td>N/A</td><td></td><td></td></tr>
  <tr><td>PG\_LSN</td><td>BYTE\_ARRAY</td><td>STRING</td><td> </td></tr>
  <tr><td>RANGE</td><td>BYTE\_ARRAY</td><td>STRING</td><td> </td></tr>
  <tr><td>UUID</td><td>BYTE\_ARRAY</td><td>STRING</td><td> </td></tr>
</tbody>
</table>
