

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

# Mengoptimalkan penyimpanan
<a name="best-practices-storage"></a>

Memperbarui atau menghapus data dalam tabel Gunung Es meningkatkan jumlah salinan data Anda, seperti yang diilustrasikan dalam diagram berikut. Hal yang sama berlaku untuk menjalankan pemadatan: Ini meningkatkan jumlah salinan data di Amazon S3. Itu karena Iceberg memperlakukan file yang mendasari semua tabel sebagai tidak dapat diubah.

![\[Hasil pemutakhiran atau penghapusan data dalam tabel Iceberg\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/apache-iceberg-on-aws/images/optimizing-storage.png)


Ikuti praktik terbaik di bagian ini untuk mengelola biaya penyimpanan.

## Aktifkan S3 Intelligent-Tiering
<a name="storage-s3-intelligent-tiering"></a>

Gunakan kelas penyimpanan [Amazon S3 Intelligent-Tiering](https://docs.aws.amazon.com/AmazonS3/latest/userguide/intelligent-tiering-overview.html) untuk memindahkan data secara otomatis ke tingkat akses yang paling hemat biaya saat pola akses berubah. Opsi ini tidak memiliki overhead operasional atau berdampak pada kinerja.  

Catatan: Jangan gunakan tingkatan opsional (seperti Akses Arsip dan Akses Arsip Dalam) di S3 Intelligent-Tiering with Iceberg tables. Untuk mengarsipkan data, lihat pedoman di bagian selanjutnya.

[Anda juga dapat menggunakan aturan [Siklus Hidup Amazon S3 untuk menetapkan aturan](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lifecycle-mgmt.html) sendiri untuk memindahkan objek ke kelas penyimpanan Amazon S3 lainnya, seperti IA Standar S3 atau IA Zona Satu S3 (lihat Transisi yang didukung dan batasan terkait dalam dokumentasi Amazon S3).](https://docs.aws.amazon.com/AmazonS3/latest/userguide/lifecycle-transition-general-considerations.html#lifecycle-general-considerations-transition-sc)

## Arsipkan atau hapus snapshot bersejarah
<a name="storage-snapshots"></a>

Untuk setiap transaksi yang dilakukan (sisipkan, perbarui, gabungkan, pemadatan) ke tabel Iceberg, versi baru atau snapshot tabel dibuat. Seiring waktu, jumlah versi dan jumlah file metadata di Amazon S3 terakumulasi.

Menyimpan snapshot tabel diperlukan untuk fitur seperti isolasi snapshot, rollback tabel, dan kueri perjalanan waktu. Namun, biaya penyimpanan tumbuh dengan jumlah versi yang Anda pertahankan.

Tabel berikut menjelaskan pola desain yang dapat Anda terapkan untuk mengelola biaya berdasarkan persyaratan retensi data Anda.


| **Pola desain** | **Solusi** | **Kasus penggunaan** | 
| --- |--- |--- |
| **Hapus snapshot lama** |   Gunakan [pernyataan VACUUM](https://docs.aws.amazon.com/athena/latest/ug/vacuum-statement.html) di Athena untuk menghapus snapshot lama. Operasi ini tidak dikenakan biaya komputasi apa pun.    [Atau, Anda dapat menggunakan Spark di Amazon EMR AWS Glue atau untuk menghapus snapshot.Untuk informasi selengkapnya, lihat expire\$1snapshots dalam dokumentasi Iceberg.](https://iceberg.apache.org/docs/latest/spark-procedures/#expire_snapshots)   | Pendekatan ini menghapus snapshot yang tidak lagi diperlukan untuk mengurangi biaya penyimpanan. Anda dapat mengonfigurasi berapa banyak snapshot yang harus disimpan atau untuk berapa lama, berdasarkan persyaratan retensi data Anda.Opsi ini melakukan penghapusan snapshot dengan keras. Anda tidak dapat memutar kembali atau melakukan perjalanan waktu ke snapshot yang kedaluwarsa. | 
| **Tetapkan kebijakan retensi untuk snapshot tertentu** |   Gunakan tag untuk menandai snapshot tertentu dan menentukan kebijakan penyimpanan di Iceberg. Untuk informasi selengkapnya, lihat [Tag Sejarah](https://iceberg.apache.org/docs/latest/branching/#historical-tags) dalam dokumentasi Gunung Es. Misalnya, Anda dapat menyimpan satu snapshot per bulan selama satu tahun dengan menggunakan pernyataan SQL berikut di Spark di Amazon EMR: <pre>ALTER TABLE glue_catalog.db.table <br />CREATE TAG 'EOM-01' AS OF VERSION 30 RETAIN 365 DAYS</pre>   Gunakan Spark di Amazon EMR AWS Glue atau untuk menghapus sisa snapshot perantara yang tidak ditandai.   | Pola ini berguna untuk kepatuhan dengan persyaratan bisnis atau hukum yang mengharuskan Anda untuk menunjukkan keadaan tabel pada titik tertentu di masa lalu. Dengan menempatkan kebijakan penyimpanan pada snapshot yang diberi tag tertentu, Anda dapat menghapus snapshot lain (tidak ditandai) yang dibuat. Dengan cara ini, Anda dapat memenuhi persyaratan retensi data tanpa mempertahankan setiap snapshot yang dibuat. | 
| **Arsipkan foto lama** |   Gunakan tag Amazon S3 untuk menandai objek dengan Spark. [(Tag Amazon S3 berbeda dari tag Iceberg; untuk informasi selengkapnya, lihat dokumentasi Iceberg.)](https://iceberg.apache.org/docs/latest/aws/#s3-tags) Contoh: <pre>spark.sql.catalog.my_catalog.s3.delete-enabled=false and \<br />spark.sql.catalog.my_catalog.s3.delete.tags.my_key=to_archive</pre>   Gunakan Spark di Amazon EMR AWS Glue atau [untuk](https://iceberg.apache.org/docs/latest/spark-procedures/#expire_snapshots) menghapus snapshot. Saat Anda menggunakan pengaturan dalam contoh, prosedur ini menandai objek dan melepaskannya dari metadata tabel Iceberg alih-alih menghapusnya dari Amazon S3.   Gunakan aturan Siklus Hidup S3 untuk mentransisikan objek yang diberi tag `to_archive` ke salah satu kelas penyimpanan [S3 Glacier](https://docs.aws.amazon.com/amazonglacier/latest/dev/introduction.html).   Untuk menanyakan data yang diarsipkan:   [Kembalikan objek yang diarsipkan](https://docs.aws.amazon.com/AmazonS3/latest/userguide/restoring-objects.html) (langkah ini tidak diperlukan jika objek dialihkan ke kelas penyimpanan Amazon Glacier Instant Retrieval).   Gunakan [prosedur register\$1table](https://iceberg.apache.org/docs/latest/spark-procedures/#register_table) di Iceberg untuk mendaftarkan snapshot sebagai tabel dalam katalog.    Untuk petunjuk terperinci, lihat posting AWS blog [Meningkatkan efisiensi operasional tabel Apache Iceberg yang dibangun di danau data Amazon S3](https://aws.amazon.com/blogs/big-data/improve-operational-efficiencies-of-apache-iceberg-tables-built-on-amazon-s3-data-lakes/).  | Pola ini memungkinkan Anda menyimpan semua versi tabel dan snapshot dengan biaya lebih rendah.Anda tidak dapat melakukan perjalanan waktu atau memutar kembali ke snapshot yang diarsipkan tanpa terlebih dahulu memulihkan versi tersebut sebagai tabel baru. Ini biasanya dapat diterima untuk tujuan audit.Anda dapat menggabungkan pendekatan ini dengan pola desain sebelumnya, menyetel kebijakan retensi untuk snapshot tertentu. | 

## Hapus file yatim piatu
<a name="storage-orphan-files"></a>

Dalam situasi tertentu, aplikasi Iceberg dapat gagal sebelum Anda melakukan transaksi Anda. Ini meninggalkan file data di Amazon S3. Karena tidak ada komit, file-file ini tidak akan dikaitkan dengan tabel apa pun, jadi Anda mungkin harus membersihkannya secara asinkron.

Untuk menangani penghapusan ini, Anda dapat menggunakan [pernyataan VACUUM di Amazon Athena](https://docs.aws.amazon.com/athena/latest/ug/vacuum-statement.html). Pernyataan ini menghapus snapshot dan juga menghapus file yatim piatu. Ini sangat hemat biaya, karena Athena tidak mengenakan biaya untuk biaya komputasi operasi ini. Selain itu, Anda tidak perlu menjadwalkan operasi tambahan apa pun saat menggunakan `VACUUM` pernyataan tersebut.

Atau, Anda dapat menggunakan Spark di Amazon EMR AWS Glue atau untuk menjalankan `remove_orphan_files` prosedur. Operasi ini memiliki biaya komputasi dan harus dijadwalkan secara independen. Untuk informasi lebih lanjut, lihat dokumentasi [Iceberg](https://iceberg.apache.org/docs/latest/spark-procedures/#remove_orphan_files).