Format File Arsip LZMA

LZMA (algoritma rantai Lempel-Ziv-Markov) adalah algoritma kompresi data modern yang terkenal dengan efisiensi tinggi dan rasio kompresi yang luar biasa. Banyak digunakan dalam format arsip seperti 7z , LZMA secara efektif mengurangi ukuran file tanpa mengorbankan kecepatan dekompresi secara signifikan. Arsip LZMA menjamin pelestarian kualitas dan integritas data, menjadikannya solusi sempurna untuk menyimpan dan mengelola kumpulan data besar secara efisien.
Keuntungan utama LZMA adalah kemampuannya menangani file besar dan struktur data kompleks dengan kerugian minimal. Menggunakan LZMA memungkinkan Anda mengoptimalkan ruang disk dan memfasilitasi transfer file melalui Internet karena ukuran arsip yang lebih kecil. Hal ini menjadikan LZMA pilihan populer di kalangan pengembang dan administrator sistem untuk pengelolaan data yang efisien.

Tentang Informasi Arsip LZMA

Arsip LZMA mendukung paralelisasi, yang memungkinkan penggunaan prosesor multi-core secara efisien untuk kompresi dan dekompresi file lebih cepat. Selain itu, LZMA terkenal karena ketahanannya yang tinggi terhadap kerusakan, menjadikannya pilihan yang dapat diandalkan untuk penyimpanan data penting dalam jangka panjang. Algoritme ini juga memiliki kode sumber terbuka, yang memfasilitasi implementasi dan adaptasi luas dalam berbagai solusi perangkat lunak. Karena keunggulannya, LZMA tetap menjadi salah satu format kompresi paling efisien, memberikan pengelolaan data optimal bagi pengguna di seluruh dunia.

Evolusi LZMA

Algoritma LZMA, yang dikembangkan oleh Igor Pavlov pada tahun 1998 sebagai bagian dari proyek 7-Zip, bertujuan untuk menciptakan metode kompresi data yang sangat efisien. Awalnya, ini dibangun berdasarkan algoritma LZ77 klasik, menggabungkan teknik yang secara signifikan meningkatkan efisiensi kompresi. Secara bertahap, LZMA mendapat pengakuan atas kemampuannya memproses kumpulan data besar dengan konsumsi sumber daya minimal. Pada tahun 2001, LZMA menjadi algoritma kompresi inti untuk format 7z, yang dengan cepat mendapatkan popularitas karena kinerjanya yang luar biasa. Selain itu, algoritme ini telah diintegrasikan ke dalam berbagai pengarsipan dan sistem penyimpanan data, khususnya produk perangkat lunak sumber terbuka. Saat ini, LZMA terus berkembang, mempertahankan relevansinya melalui pembaruan dan optimalisasi berkelanjutan, memperkuat posisinya sebagai alat yang sangat diperlukan di dunia digital.

Prinsip algoritma LZMA

Algoritma LZMA didasarkan pada penggunaan pengulangan berurutan pada data untuk mencapai tingkat kompresi yang tinggi. Ide utama dari algoritma ini adalah untuk membangun dan menyimpan kamus yang berisi substring yang ditemui sebelumnya, yang kemudian diganti dengan referensi dalam kamus ini. Hal ini memungkinkan Anda mengurangi secara signifikan jumlah data yang akan disimpan atau dikirimkan. Salah satu fitur utama LZMA adalah penggunaan pengkodean rentang, bukan pengkodean Huffman. Pengkodean rentang menawarkan kompresi yang lebih baik mendekati entropi data dan menggunakan format biner, menghindari operasi pembagian bilangan bulat yang lambat.

LZMA menggunakan algoritma LZ77 untuk menemukan kecocokan terpanjang dalam buffer pencarian dan buffer prediksi, menuliskannya ke file terkompresi dalam bentuk triplet (jarak, panjang, karakter berikutnya). Jika tidak ditemukan kecocokan, satu byte dalam kisaran [0,255] ditambahkan ke file. Jika kecocokan ditemukan, sepasang nilai (jarak dan panjang) yang dikodekan dengan metode pengkodean rentang dicatat.

Untuk meningkatkan efisiensi dengan buffer pencarian yang besar, algoritme menyimpan 4 jarak paling umum dalam susunan riwayat jarak khusus. Jika salah satu dari jarak ini muncul kembali, jarak tersebut akan diganti dengan kode 2-bit yang merujuk pada susunan riwayat jarak, sehingga mengurangi informasi yang diperlukan untuk menyimpan kecocokan.

LZMA menggunakan hash 2-byte (byte saat ini dan byte berikutnya) untuk menemukan kecocokan dalam buffer pencarian. Ukuran array hash terkait langsung dengan ukuran kamus. Misalnya, kamus 1 GB menggunakan array hash 512 MB, yang meminimalkan tabrakan dalam fungsi hashing.

Pendekatan multi-level ini memberikan kompresi dan penyimpanan data yang efisien tanpa konsumsi sumber daya yang signifikan, menjadikan LZMA salah satu algoritma kompresi data paling efisien.

Manfaat format file .lzma

Berikut adalah keunggulan utama LZMA, menjadikannya pilihan menarik bagi banyak aplikasi kompresi data.

  • Rasio kompresi tinggi: LZMA memberikan salah satu rasio kompresi tertinggi di antara algoritme yang ada, sehingga memungkinkan Anda mengurangi ukuran file secara signifikan. Rasio kompresi rata-rata melebihi 70% dibandingkan format arsip lainnya.
  • Dekompresi cepat: Algoritme ini dioptimalkan untuk dekompresi data cepat, menjadikan LZMA sangat cocok untuk digunakan dalam aplikasi perangkat lunak dan sistem penyimpanan yang memerlukan pengambilan data cepat.
  • Manajemen file besar yang efisien: Karena ukuran buffer pencarian yang besar, LZMA dapat memproses data dalam jumlah besar secara efisien sambil mempertahankan tingkat kompresi yang tinggi.
  • Keandalan dan toleransi kerusakan: LZMA memberikan ketahanan tinggi terhadap kerusakan data. Sekalipun kesalahan terjadi selama penyimpanan atau transmisi, desainnya memungkinkan koreksi kesalahan, meminimalkan kehilangan data, dan memastikan integritas informasi Anda selama penyimpanan jangka panjang.
  • Kode sumber terbuka: Sifat sumber terbuka dari algoritme LZMA memfasilitasi penerapan, adaptasi, dan integrasinya secara luas ke dalam berbagai solusi perangkat lunak, sehingga mendorong penerapan dan pengembangan berkelanjutan.

Operasi yang Didukung Arsip LZMA

Aspose.ZIP memungkinkan pengguna mengekstrak file individual dan keseluruhan arsip. Untuk .NET, Anda dapat menggunakan LzmaArchiveClass untuk membuka file .lzma, lalu Anda dapat menelusuri catatannya dan mengekstraknya ke lokasi yang diinginkan. Pendekatan serupa digunakan di Java, di mana Anda menggunakan LzmaArchive untuk membuka file .lzma dan mengekstrak catatan. Berkat Aspose.ZIP, operasi ini menjadi sederhana dan nyaman bagi pengguna di tingkat mana pun.

struktur LZMA

Meskipun tepat untuk mengatakan bahwa LZMA sangat dipengaruhi oleh LZ77 (Lempel-Ziv 1977) dan LZ78 (Lempel-Ziv 1978), akan lebih tepat untuk menggambarkan LZMA sebagai evolusi dari algoritma ini, yang menggabungkan peningkatan yang signifikan.
- Pengkodean Rentang: LZMA menggantikan pengkodean Huffman dengan pengkodean rentang, metode representasi data yang lebih efisien.
- Riwayat Jarak: LZMA menyimpan riwayat jarak yang sering digunakan, sehingga mempercepat deteksi kecocokan.
- Tabel Hash: LZMA menggunakan tabel hash untuk mempercepat pencarian urutan yang cocok.
- Pemodelan Prediktif: LZMA menggabungkan teknik pemodelan prediktif untuk mengantisipasi pola data yang akan datang, sehingga semakin meningkatkan kompresi.

struktur LZMA

Struktur Arsip LZMA Bagian Dalam

  • Metadata File - Mirip dengan arsip tar, setiap file menyimpan informasi dasar seperti waktu modifikasi dan izin. Namun, bagian ini fleksibel dan memungkinkan penghapusan atau penyertaan detail tambahan seperti daftar kontrol akses (ACL) atau atribut yang diperluas (EA) berdasarkan kebutuhan Anda. Disarankan untuk menyertakan fungsi hash yang kuat (seperti SHA1) untuk file biasa guna memastikan integritas data.
  • Beberapa Aliran Konten - Tidak seperti arsip tradisional, file dapat memiliki lebih dari satu aliran data dalam file data bagian dalam. Ini berguna untuk menyimpan atribut yang diperluas atau sumber daya yang terkait dengan file.
  • Header - File indeks bagian dalam menyimpan header file, mencerminkan header yang tersebar di seluruh file data bagian dalam. Namun, bila disimpan secara terpisah, header indeks harus merujuk pada posisi awal data terkait di dalam file data. Selain itu, entri direktori dalam indeks mencantumkan file yang terkandung di dalamnya dan offset terkait dalam indeks file bagian dalam.
  • Alasan untuk Metadata Duplikat - Pilihan desain ini memastikan streaming/decoding data yang efisien dan akses file acak. Selain itu, metadata terkompresi dengan baik, sehingga menghemat biaya penyimpanan. Pengujian menunjukkan metadata biasanya menempati kurang dari 0,3% ruang penyimpanan, sehingga pertukaran ini bermanfaat.
  • Block Header - Header blok, mirip dengan file luar, berisi informasi ukuran blok dan urutan pengidentifikasi unik.

Contoh Penggunaan LZMA Python

Dengan API Aspose.ZIP via Python , Anda dapat dengan mudah mengelola arsip LZMA di aplikasi Anda, sehingga menghilangkan kebutuhan akan perangkat lunak eksternal lainnya. API ini mencakup kelas LzmaArchive , yang menyederhanakan penggunaan arsip LZMA, dan kelas LzmaCompressionSettings , yang memungkinkan Anda menyesuaikan pengaturan kompresi untuk kinerja optimal dan pengurangan ukuran file.

LZMA Python .Net Compression

This example demonstrates how to create a 7z archive using the data.bin file. We use LZMA2 compression algorithm with four streams to efficiently compress data more examples here

    compression_settings = zp.saving.SevenZipLZMA2CompressionSettings()
    compression_settings.compression_threads = 4
    entry_settings = zp.saving.SevenZipEntrySettings(compression_settings)
    with zp.sevenzip.SevenZipArchive(entry_settings) as archive:
        archive.create_entry("data.bin", "data.bin")
        archive.save("result.7z")

Aspose.Zip offers individual archive processing APIs for popular development environments, listed below:

Aspose.Zip for .NETAspose.Zip via JavaAspose.Zip via Python.NET

Informasi tambahan tentang arsip LZMA

Orang-orang telah bertanya

1. Format file apa yang menggunakan kompresi LZMA?

LZMA bukanlah format file itu sendiri tetapi algoritma kompresi yang digunakan dalam berbagai format arsip. Beberapa contoh umum termasuk 7z, XZ, dan terkadang ZIP. Saat Anda menemukan file dengan ekstensi ini, file tersebut mungkin dikompresi menggunakan LZM

2. Apakah LZMA bersumber terbuka?

Ya, LZMA adalah algoritma sumber terbuka, sehingga tersedia secara bebas untuk digunakan dan diintegrasikan ke dalam berbagai solusi perangkat lunak. Sifat sumber terbuka ini telah berkontribusi terhadap penerapannya secara luas dan pengembangan berkelanjutan.

3. Apa sajakah alternatif selain LZMA?

Beberapa algoritma kompresi menawarkan trade-off yang berbeda. ZIP menyeimbangkan kompresi dan kecepatan dengan baik, BZIP2 memberikan kompresi tinggi dengan mengorbankan kecepatan dibandingkan dengan LZMA, sedangkan XZ, berdasarkan LZMA, menawarkan kompresi yang kuat dan umumnya digunakan di lingkungan Linux.