Pengkodean Delta - Amazon Redshift

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

Pengkodean Delta

Pengkodean Delta sangat berguna untuk kolom waktu tanggal.

Delta encoding memampatkan data dengan merekam perbedaan antara nilai-nilai yang mengikuti satu sama lain di kolom. Perbedaan ini dicatat dalam kamus terpisah untuk setiap blok nilai kolom pada disk. (Blok disk Amazon Redshift menempati 1 MB.) Misalnya, anggaplah kolom berisi 10 bilangan bulat secara berurutan dari 1 hingga 10. Yang pertama disimpan sebagai integer 4-byte (ditambah bendera 1-byte). Sembilan berikutnya masing-masing disimpan sebagai byte dengan nilai 1, menunjukkan bahwa itu adalah satu lebih besar dari nilai sebelumnya.

Delta encoding hadir dalam dua variasi:

  • DELTA mencatat perbedaan sebagai nilai 1-byte (bilangan bulat 8-bit)

  • DELTA32K mencatat perbedaan sebagai nilai 2-byte (bilangan bulat 16-bit)

Jika sebagian besar nilai dalam kolom dapat dikompresi dengan menggunakan satu byte, variasi 1-byte sangat efektif. Namun, jika delta lebih besar, pengkodean ini, dalam kasus terburuk, agak kurang efektif daripada menyimpan data yang tidak terkompresi. Logika serupa berlaku untuk versi 16-bit.

Jika perbedaan antara dua nilai melebihi rentang 1-byte (DELTA) atau rentang 2-byte (DELTA32K), nilai asli lengkap disimpan, dengan tanda 1-byte terkemuka. Rentang 1-byte adalah dari -127 hingga 127, dan kisaran 2-byte adalah dari -32K hingga 32K.

Tabel berikut menunjukkan bagaimana pengkodean delta bekerja untuk kolom numerik.

Nilai data asli Ukuran asli (byte) Perbedaan (delta) Nilai terkompresi Ukuran terkompresi (byte)
1 4 1 1+4 (tanda+nilai aktual)
5 4 4 4 1
50 4 45 45 1
200 4 150 150 1+4 (tanda+nilai aktual)
185 4 -15 -15 1
220 4 35 35 1
221 4 1 1 1
Total 28 15