Pengkodean byte-kamus - Amazon Redshift

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

Pengkodean byte-kamus

Dalam pengkodean kamus byte, kamus terpisah dari nilai unik dibuat untuk setiap blok nilai kolom pada disk. (Blok disk Amazon Redshift menempati 1 MB.) Kamus berisi hingga 256 nilai satu-byte yang disimpan sebagai indeks ke nilai data asli. Jika lebih dari 256 nilai disimpan dalam satu blok, nilai tambahan ditulis ke dalam blok dalam bentuk mentah dan tidak terkompresi. Proses ini berulang untuk setiap blok disk.

Pengkodean ini sangat efektif pada kolom string kardinalitas rendah. Pengkodean ini optimal ketika domain data kolom kurang dari 256 nilai unik.

Untuk kolom dengan tipe data string (CHAR dan VARCHAR) yang dikodekan dengan BYTEDICT, Amazon Redshift melakukan pemindaian vektor dan evaluasi predikat yang beroperasi melalui data terkompresi secara langsung. Pemindaian ini menggunakan instruksi tunggal khusus perangkat keras dan beberapa data (SIMD) untuk pemrosesan paralel. Ini secara signifikan mempercepat pemindaian kolom string. Pengkodean byte-dictionary sangat hemat ruang jika kolom CHAR/VARCHAR memegang string karakter yang panjang.

Misalkan sebuah tabel memiliki kolom COUNTRY dengan tipe data CHAR (30). Saat data dimuat, Amazon Redshift membuat kamus dan mengisi kolom COUNTRY dengan nilai indeks. Kamus berisi nilai unik yang diindeks, dan tabel itu sendiri hanya berisi subskrip satu byte dari nilai yang sesuai.

catatan

Trailing blank disimpan untuk kolom karakter dengan panjang tetap. Oleh karena itu, dalam kolom CHAR (30), setiap nilai terkompresi menyimpan 29 byte penyimpanan saat Anda menggunakan pengkodean byte-dictionary.

Tabel berikut mewakili kamus untuk kolom COUNTRY.

Nilai data unik Indeks kamus Ukuran (panjang tetap, 30 byte per nilai)
England 0 30
United States of America 1 30
Venezuela 2 30
Sri Lanka 3 30
Argentina 4 30
Japan 5 30
Total 180

Tabel berikut mewakili nilai-nilai dalam kolom COUNTRY.

Nilai data asli Ukuran asli (panjang tetap, 30 byte per nilai) Nilai terkompresi (indeks) Ukuran baru (byte)
England 30 0 1
England 30 0 1
United States of America 30 1 1
United States of America 30 1 1
Venezuela 30 2 1
Sri Lanka 30 3 1
Argentina 30 4 1
Japan 30 5 1
Sri Lanka 30 3 1
Argentina 30 4 1
Total 300 10

Total ukuran terkompresi dalam contoh ini dihitung sebagai berikut: 6 entri berbeda disimpan dalam kamus (6 * 30 = 180), dan tabel berisi 10 nilai terkompresi 1-byte, dengan total 190 byte.