Mengoptimalkan penyimpanan di BigQuery

Halaman ini memberikan praktik-praktik terbaik untuk mengoptimalkan penyimpanan BigQuery. BigQuery menyimpan data dalam format berbasis kolom. Database berorientasi kolom dioptimalkan untuk workload analitis yang menggabungkan data pada kumpulan data yang sangat banyak. Karena kolom biasanya memiliki lebih banyak redundansi daripada baris, karakteristik ini memungkinkan kompresi data yang lebih besar menggunakan teknik seperti encoding run-length. Untuk mengetahui informasi lebih lanjut mengenai cara BigQuery menyimpan data, baca Ringkasan penyimpanan BigQuery. Mengoptimalkan penyimpanan BigQuery akan meningkatkan performa kueri dan mengontrol biaya.

BigQuery memberikan detail tentang konsumsi penyimpanan resource Anda. Untuk melihat metadata penyimpanan tabel, buat kueri tabel virtual INFORMATION_SCHEMA berikut:

Data tabel cluster

Praktik terbaik: Buat tabel yang dikelompokkan.

Guna mengoptimalkan penyimpanan untuk kueri, mulailah dengan mengelompokkan data tabel. Dengan mengelompokkan kolom yang sering digunakan, Anda dapat mengurangi volume total dari data yang dipindai oleh kueri. Untuk informasi tentang cara membuat cluster, lihat Membuat dan menggunakan tabel yang dikelompokkan.

Data tabel partisi

Praktik terbaik: Bagi tabel besar dengan partisi.

Dengan partisi, Anda dapat mengelompokkan dan mengurutkan data berdasarkan kumpulan karakteristik kolom yang ditentukan, seperti kolom bilangan bulat, kolom unit waktu, atau waktu penyerapan. Partisi meningkatkan performa kueri dan mengontrol biaya dengan mengurangi jumlah byte yang dibaca oleh kueri.

Untuk informasi selengkapnya tentang partisi, lihat Pengantar tabel berpartisi.

Menggunakan setelan masa berlaku tabel dan partisi

Praktik terbaik: Untuk mengoptimalkan penyimpanan, konfigurasikan setelan habis masa berlaku default untuk set data, tabel, dan tabel berpartisi.

Anda dapat mengontrol biaya penyimpanan dan mengoptimalkan penggunaan penyimpanan dengan menetapkan tanggal habis masa berlaku tabel default untuk tabel yang baru dibuat dalam set data. Ketika masa berlaku berakhir, tabel akan dihapus beserta semua data yang ada di tabel itu. Jika Anda menetapkan properti saat set data dibuat, tabel apa pun yang dibuat dalam set data akan dihapus setelah akhir periode masa berlaku. Jika Anda menetapkan properti setelah set data dibuat, hanya tabel baru yang akan dihapus setelah akhir periode masa berlaku.

Misalnya, jika Anda menetapkan masa berlaku tabel default ke tujuh hari, data yang lebih lama akan otomatis dihapus setelah satu minggu.

Opsi ini berguna jika Anda hanya memerlukan akses ke data terbaru. Opsi ini juga berguna jika Anda bereksperimen dengan data dan tidak perlu menyimpannya.

Jika tabel Anda dipartisi berdasarkan tanggal, masa berlaku tabel default set data akan berlaku untuk masing-masing partisi. Anda juga dapat mengontrol akhir masa berlaku partisi menggunakan flag time_partitioning_expiration di alat command line bq atau setelan konfigurasi expirationMs di API. Saat masa berlaku partisi berakhir, data dalam partisi akan dihapus, tetapi tabel berpartisi tidak akan dihapus meskipun tabel kosong. Misalnya, perintah berikut akan membuat partisi habis masa berlakunya setelah tiga hari:

bq mk \
--time_partitioning_type=DAY \
--time_partitioning_expiration=259200 \
project_id:dataset.table

Menyimpan data di BigQuery

Praktik terbaik: Simpan data Anda di BigQuery.

Saat memuat data ke BigQuery dari Cloud Storage, Anda tidak dikenai biaya untuk operasi pemuatan, tetapi Anda dikenai biaya untuk penyimpanan data di Cloud Storage. Setelah data dimuat ke BigQuery, data akan tunduk pada harga penyimpanan BigQuery. Anda dikenai biaya untuk penyimpanan fisik atau logis yang digunakan oleh tabel Anda, termasuk blok penyimpanan perjalanan waktu.

Daripada mengekspor data lama ke opsi penyimpanan lain (seperti Cloud Storage), manfaatkan harga penyimpanan jangka panjang BigQuery.

Jika Anda memiliki tabel yang tidak diedit selama 90 hari berturut-turut, harga penyimpanan untuk tabel tersebut akan otomatis turun 50 persen. Jika Anda memiliki tabel berpartisi, setiap partisi akan dipertimbangkan secara terpisah agar memenuhi syarat untuk harga jangka panjang yang tunduk pada aturan yang sama seperti tabel yang tidak berpartisi.

Mengidentifikasi data jangka panjang atau jangka pendek

Praktik terbaik: Identifikasi apakah data tingkat baris perlu disimpan dalam jangka panjang, dan hanya simpan data gabungan dalam jangka panjang.

Dalam banyak kasus, detail yang terdapat dalam data tingkat baris atau transaksional berguna dalam jangka pendek, tetapi lebih sedikit dirujuk dalam jangka panjang. Dalam situasi ini, Anda dapat membangun kueri agregasi untuk menghitung dan menyimpan metrik yang terkait dengan data ini, lalu menggunakan akhir masa berlaku tabel atau partisi untuk menghapus data tingkat baris secara sistematis. Hal ini mengurangi biaya penyimpanan sekaligus membuat metrik tetap tersedia untuk konsumsi jangka panjang.

Mengurangi periode perjalanan waktu

Praktik terbaik: Berdasarkan persyaratan, Anda dapat menurunkan periode perjalanan waktu.

Mengurangi jumlah hari dalam perjalanan waktu dari nilai default tujuh hari akan mengurangi jumlah total blok penyimpanan yang disimpan untuk sebuah objek. Periode perjalanan waktu ditetapkan di tingkat set data.

Mengarsipkan data ke Cloud Storage

Praktik terbaik: Pertimbangkan untuk mengarsipkan data di Cloud Storage.

Anda dapat memindahkan data dari BigQuery ke Cloud Storage berdasarkan kebutuhan bisnis terkait pengarsipan. Sebagai praktik terbaik, pertimbangkan harga jangka panjang BigQuery sebelum mengekspor data keluar dari BigQuery.

Langkah selanjutnya