Tabel Apache Iceberg
Tabel Apache Iceberg yang dikelola oleh BigQuery (sebelumnya tabel BigLake untuk Apache Iceberg di BigQuery) memberikan fondasi untuk membangun lakehouse berformat terbuka di Google Cloud. Tabel Iceberg terkelola menawarkan pengalaman terkelola sepenuhnya yang sama seperti tabel BigQuery standar, tetapi menyimpan data di bucket penyimpanan milik pelanggan. Tabel Iceberg terkelola mendukung format tabel Apache Iceberg terbuka untuk interoperabilitas yang lebih baik dengan mesin komputasi open source dan pihak ketiga pada satu salinan data.
Tabel Iceberg terkelola mendukung fitur berikut:
- Mutasi tabel menggunakan bahasa pengolahan data (DML) GoogleSQL.
- Streaming batch dan throughput tinggi terpadu menggunakan BigQuery Storage Write API melalui konektor seperti Spark, Dataflow, dan mesin lainnya.
- Ekspor snapshot Apache Iceberg V2 dan refresh otomatis pada setiap mutasi tabel untuk akses kueri langsung dengan mesin kueri open source dan pihak ketiga, seperti Spark.
- Evolusi skema, yang memungkinkan Anda menambahkan, menghapus, dan mengganti nama kolom agar sesuai dengan kebutuhan Anda. Fitur ini juga memungkinkan Anda mengubah jenis data kolom yang ada dan mode kolom. Untuk mengetahui informasi selengkapnya, lihat aturan konversi jenis.
- Pengoptimalan penyimpanan otomatis, termasuk penyesuaian ukuran file adaptif, pengelompokan otomatis, pengumpulan sampah, dan pengoptimalan metadata.
- Perjalanan waktu untuk akses data historis di BigQuery.
- Keamanan tingkat kolom dan penyamaran data.
- Transaksi multi-pernyataan (dalam Pratinjau).
- Partisi tabel (dalam Pratinjau).
- Pembuatan tabel dalam alur kerja Dataform.
Arsitektur
Tabel Iceberg terkelola menghadirkan kemudahan pengelolaan resource BigQuery untuk tabel yang berada di bucket cloud Anda sendiri. Anda dapat menggunakan BigQuery dan mesin komputasi open source di tabel ini tanpa memindahkan data dari bucket yang Anda kontrol. Anda harus mengonfigurasi bucket Cloud Storage sebelum mulai menggunakan tabel Managed Iceberg.
Tabel Iceberg terkelola menggunakan katalog runtime Lakehouse sebagai katalog runtime terpadu untuk semua data Apache Iceberg. Katalog runtime Lakehouse menyediakan satu sumber kebenaran untuk mengelola metadata dari beberapa mesin dan memungkinkan interoperabilitas mesin.
Penggunaan tabel Apache Iceberg memiliki implikasi berikut pada bucket Anda:
- BigQuery membuat file data baru di bucket sebagai respons terhadap permintaan penulisan dan pengoptimalan penyimpanan di latar belakang, seperti pernyataan DML dan streaming.
- Pemadatan dan pengelompokan otomatis dilakukan pada file data di bucket. Setelah masa berlaku periode perjalanan waktu berakhir, file data akan dikumpulkan sampah. Namun, jika tabel dihapus, file data terkait tidak akan dikumpulkan sampah. Untuk mengetahui informasi selengkapnya, lihat Pengoptimalan penyimpanan.
Membuat tabel Apache Iceberg mirip dengan membuat tabel BigQuery. Karena menyimpan data dalam format terbuka di Cloud Storage, Anda harus melakukan hal berikut:
- Tentukan koneksi resource Cloud dengan
WITH CONNECTIONuntuk mengonfigurasi kredensial koneksi agar BigQuery dapat mengakses Cloud Storage. - Tentukan format file penyimpanan data sebagai
PARQUETdengan pernyataanfile_format = PARQUET. - Tentukan format tabel metadata open source sebagai
ICEBERGdengan pernyataantable_format = ICEBERG.
Praktik terbaik
Mengubah atau menambahkan file secara langsung ke bucket di luar BigQuery dapat menyebabkan hilangnya data atau error yang tidak dapat dipulihkan. Tabel berikut menjelaskan kemungkinan skenario:
| Operasi | Konsekuensi | Pencegahan |
|---|---|---|
| Tambahkan file baru ke bucket di luar BigQuery. | Kehilangan data: File atau objek baru yang ditambahkan di luar BigQuery tidak dilacak oleh BigQuery. File yang tidak dilacak akan dihapus oleh proses pengumpulan sampah di latar belakang. | Menambahkan data secara eksklusif melalui BigQuery. Hal ini memungkinkan
BigQuery melacak file dan mencegahnya dikumpulkan
sampah. Untuk mencegah penambahan yang tidak disengaja dan kehilangan data, sebaiknya batasi izin tulis alat eksternal pada bucket yang berisi tabel Iceberg Terkelola. |
| Buat tabel Apache Iceberg baru dalam awalan yang tidak kosong. | Kehilangan data: Data yang ada tidak dilacak oleh BigQuery, sehingga file ini dianggap tidak dilacak, dan dihapus oleh proses pengumpulan sampah di latar belakang. | Hanya buat tabel Iceberg Terkelola baru di awalan yang kosong. |
| Ubah atau ganti file data tabel Apache Iceberg. | Kehilangan data: Saat modifikasi atau penggantian eksternal,
tabel gagal dalam pemeriksaan konsistensi dan menjadi tidak dapat dibaca. Kueri
terhadap tabel gagal. Tidak ada cara layanan mandiri untuk memulihkan dari titik ini. Hubungi dukungan untuk mendapatkan bantuan pemulihan data. |
Ubah data secara eksklusif melalui BigQuery. Hal ini memungkinkan
BigQuery melacak file dan mencegahnya dikumpulkan
sampah. Untuk mencegah penambahan yang tidak disengaja dan kehilangan data, sebaiknya batasi izin tulis alat eksternal pada bucket yang berisi tabel Iceberg Terkelola. |
| Buat dua tabel Iceberg Terkelola di URI yang sama atau tumpang-tindih. | Kehilangan data: BigQuery tidak menjembatani instance URI identik dari tabel Iceberg Terkelola. Proses pengumpulan sampah di latar belakang untuk setiap tabel akan menganggap file tabel yang berlawanan sebagai tidak terlacak, dan menghapusnya, sehingga menyebabkan kehilangan data. | Gunakan URI unik untuk setiap tabel Apache Iceberg. |
Praktik terbaik konfigurasi bucket Cloud Storage
Konfigurasi bucket Cloud Storage dan koneksinya dengan BigQuery memiliki dampak langsung pada performa, biaya, integritas data, keamanan, dan tata kelola tabel Iceberg Terkelola Anda. Berikut adalah praktik terbaik untuk membantu konfigurasi ini:
Pilih nama yang dengan jelas menunjukkan bahwa bucket hanya ditujukan untuk tabel Managed Iceberg.
Pilih bucket Cloud Storage satu region yang ditempatkan bersama di region yang sama dengan set data BigQuery Anda. Koordinasi ini meningkatkan performa dan menurunkan biaya dengan menghindari biaya transfer data.
Secara default, Cloud Storage menyimpan data di class penyimpanan Standard, yang memberikan performa yang memadai. Untuk mengoptimalkan biaya penyimpanan data, Anda dapat mengaktifkan Autoclass untuk mengelola transisi kelas penyimpanan secara otomatis. Autoclass dimulai dengan kelas penyimpanan Standard dan memindahkan objek yang tidak diakses ke kelas yang semakin jarang diakses untuk mengurangi biaya penyimpanan. Saat objek dibaca lagi, objek akan dipindahkan kembali ke kelas Standard.
Aktifkan akses level bucket yang seragam dan pencegahan akses publik.
Verifikasi bahwa peran yang diperlukan ditetapkan ke pengguna dan akun layanan yang benar.
Untuk mencegah penghapusan atau kerusakan data Apache Iceberg yang tidak disengaja di bucket Cloud Storage, batasi izin tulis dan hapus untuk sebagian besar pengguna di organisasi Anda. Anda dapat melakukannya dengan menetapkan kebijakan izin bucket dengan kondisi yang menolak permintaan
PUTdanDELETEuntuk semua pengguna, kecuali pengguna yang Anda tentukan.Terapkan kunci enkripsi yang dikelola Google atau yang dikelola pelanggan untuk perlindungan ekstra data sensitif.
Aktifkan logging audit untuk transparansi operasional, pemecahan masalah, dan pemantauan akses data.
Pertahankan kebijakan penghapusan sementara default (retensi 7 hari) untuk melindungi dari penghapusan yang tidak disengaja. Namun, jika Anda mendapati bahwa data Apache Iceberg telah dihapus, hubungi dukungan, bukan memulihkan objek secara manual, karena objek yang ditambahkan atau diubah di luar BigQuery tidak dilacak oleh metadata BigQuery.
Penentuan ukuran file adaptif, pengelompokan otomatis, dan pengumpulan sampah diaktifkan secara otomatis dan membantu mengoptimalkan performa dan biaya file.
Hindari fitur Cloud Storage berikut, karena tidak didukung untuk tabel Iceberg Terkelola:
- Namespace hierarkis
- Daftar kontrol akses (ACL) objek
- Kunci enkripsi yang disediakan pelanggan
- Pembuatan versi objek
- Kunci objek
- Kunci bucket
- Memulihkan objek yang dihapus sementara dengan BigQuery API atau bq CLI
Anda dapat menerapkan praktik terbaik ini dengan membuat bucket menggunakan perintah berikut:
gcloud storage buckets create gs://BUCKET_NAME \ --project=PROJECT_ID \ --location=LOCATION \ --enable-autoclass \ --public-access-prevention \ --uniform-bucket-level-access
Ganti kode berikut:
BUCKET_NAME: nama untuk bucket baru AndaPROJECT_ID: ID project AndaLOCATION: lokasi untuk bucket baru Anda
Alur kerja tabel Apache Iceberg
Bagian berikut menjelaskan cara membuat, memuat, mengelola, dan membuat kueri tabel terkelola.
Sebelum memulai
Sebelum membuat dan menggunakan tabel Managed Iceberg, pastikan Anda telah menyiapkan koneksi resource Cloud ke bucket penyimpanan. Koneksi Anda memerlukan izin tulis pada bucket penyimpanan, seperti yang ditentukan di bagian Peran yang diperlukan berikut. Untuk mengetahui informasi selengkapnya tentang peran dan izin yang diperlukan untuk koneksi, lihat Mengelola koneksi.
Peran yang diperlukan
Untuk mendapatkan izin yang Anda perlukan agar BigQuery dapat mengelola tabel di project Anda, minta administrator Anda untuk memberi Anda peran IAM berikut:
-
Untuk membuat tabel Iceberg Terkelola:
-
BigQuery Data Owner (
roles/bigquery.dataOwner) di project Anda -
BigQuery Connection Admin (
roles/bigquery.connectionAdmin) di project Anda
-
BigQuery Data Owner (
-
Untuk membuat kueri tabel Iceberg Terkelola:
-
BigQuery Data Viewer (
roles/bigquery.dataViewer) di project Anda -
Pengguna BigQuery (
roles/bigquery.user) di project Anda
-
BigQuery Data Viewer (
-
Beri akun layanan koneksi peran berikut agar dapat membaca dan menulis data di Cloud Storage:
-
Storage Object User (
roles/storage.objectUser) di bucket -
Storage Legacy Bucket Reader (
roles/storage.legacyBucketReader) di bucket
-
Storage Object User (
Untuk mengetahui informasi selengkapnya tentang pemberian peran, lihat Mengelola akses ke project, folder, dan organisasi.
Peran bawaan ini berisi izin yang diperlukan untuk mengizinkan BigQuery mengelola tabel di project Anda. Untuk melihat izin yang benar-benar diperlukan, perluas bagian Izin yang diperlukan:
Izin yang diperlukan
Izin berikut diperlukan agar BigQuery dapat mengelola tabel di project Anda:
-
Semua:
-
bigquery.connections.delegatedi project Anda -
bigquery.jobs.createdi project Anda -
bigquery.readsessions.createdi project Anda -
bigquery.tables.createdi project Anda -
bigquery.tables.getdi project Anda -
bigquery.tables.getDatadi project Anda -
storage.buckets.getdi bucket Anda -
storage.objects.createdi bucket Anda -
storage.objects.deletedi bucket Anda -
storage.objects.getdi bucket Anda -
storage.objects.listdi bucket Anda
-
Anda mungkin juga bisa mendapatkan izin ini dengan peran khusus atau peran bawaan lainnya.
Membuat tabel Managed Iceberg
Untuk membuat tabel Apache Iceberg, pilih salah satu metode berikut:
SQL
CREATE TABLE [PROJECT_ID.]DATASET_ID.TABLE_NAME ( COLUMN DATA_TYPE[, ...] ) CLUSTER BY CLUSTER_COLUMN_LIST WITH CONNECTION {CONNECTION_NAME | DEFAULT} OPTIONS ( file_format = 'PARQUET', table_format = 'ICEBERG', storage_uri = 'STORAGE_URI');
Ganti kode berikut:
- PROJECT_ID: project yang berisi set data. Jika tidak ditentukan, perintah akan mengasumsikan project default.
- DATASET_ID: set data yang sudah ada.
- TABLE_NAME: nama tabel yang Anda buat.
- DATA_TYPE: jenis data informasi yang ada dalam kolom.
- CLUSTER_COLUMN_LIST (opsional): daftar yang dipisahkan koma yang berisi hingga empat kolom. Kolom tersebut harus berupa kolom tingkat atas yang tidak berulang.
- CONNECTION_NAME: nama koneksi. Contoh,
myproject.us.myconnection.
Untuk menggunakan koneksi default, tentukan
DEFAULT, bukan string koneksi yang berisi
PROJECT_ID.REGION.CONNECTION_ID.
- STORAGE_URI: URI Cloud Storage yang sepenuhnya memenuhi syarat. Contohnya,
gs://mybucket/table.
bq
bq --project_id=PROJECT_ID mk \ --table \ --file_format=PARQUET \ --table_format=ICEBERG \ --connection_id=CONNECTION_NAME \ --storage_uri=STORAGE_URI \ --schema=COLUMN_NAME:DATA_TYPE[, ...] \ --clustering_fields=CLUSTER_COLUMN_LIST \ DATASET_ID.MANAGED_TABLE_NAME
Ganti kode berikut:
- PROJECT_ID: project yang berisi set data. Jika tidak ditentukan, perintah akan mengasumsikan project default.
- CONNECTION_NAME: nama koneksi. Contoh,
myproject.us.myconnection. - STORAGE_URI: URI Cloud Storage yang sepenuhnya memenuhi syarat. Contohnya,
gs://mybucket/table. - COLUMN_NAME: nama kolom.
- DATA_TYPE: jenis data informasi yang ada di dalam kolom.
- CLUSTER_COLUMN_LIST (opsional): daftar yang dipisahkan koma yang berisi hingga empat kolom. Kolom tersebut harus berupa kolom tingkat atas yang tidak berulang.
- DATASET_ID: ID set data yang ada.
- MANAGED_TABLE_NAME: nama tabel yang Anda buat.
API
Panggil metode tables.insert'
dengan resource
tabel yang ditentukan, mirip dengan
berikut:
{ "tableReference": { "tableId": "TABLE_NAME" }, "biglakeConfiguration": { "connectionId": "CONNECTION_NAME", "fileFormat": "PARQUET", "tableFormat": "ICEBERG", "storageUri": "STORAGE_URI" }, "schema": { "fields": [ { "name": "COLUMN_NAME", "type": "DATA_TYPE" } [, ...] ] } }
Ganti kode berikut:
- TABLE_NAME: nama tabel yang Anda buat.
- CONNECTION_NAME: nama koneksi. Contoh,
myproject.us.myconnection. - STORAGE_URI: URI Cloud Storage yang sepenuhnya memenuhi syarat.
Karakter pengganti juga
didukung. Contoh,
gs://mybucket/table. - COLUMN_NAME: nama kolom.
- DATA_TYPE: jenis data informasi yang ada di dalam kolom.
Mengimpor data ke tabel Managed Iceberg
Bagian berikut menjelaskan cara mengimpor data dari berbagai format tabel ke dalam tabel Managed Iceberg.
Memuat data standar dari file datar
Tabel Iceberg terkelola menggunakan tugas pemuatan BigQuery untuk memuat file eksternal ke dalam tabel Iceberg terkelola. Jika Anda memiliki tabel Apache Iceberg yang sudah ada, ikuti panduan CLI bq load atau panduan SQL LOAD
untuk memuat data eksternal. Setelah memuat data, file Parquet baru akan ditulis
ke folder STORAGE_URI/data.
Jika petunjuk sebelumnya digunakan tanpa tabel Apache Iceberg yang ada, tabel BigQuery akan dibuat.
Lihat contoh spesifik per alat berikut untuk pemuatan batch ke dalam tabel terkelola:
SQL
LOAD DATA INTO MANAGED_TABLE_NAME FROM FILES ( uris=['STORAGE_URI'], format='FILE_FORMAT');
Ganti kode berikut:
- MANAGED_TABLE_NAME: nama tabel Apache Iceberg yang ada.
- STORAGE_URI: Cloud Storage URI yang sepenuhnya memenuhi syarat
atau daftar URI yang dipisahkan koma.
Karakter pengganti juga
didukung. Contoh,
gs://mybucket/table. - FILE_FORMAT: format tabel sumber. Untuk format yang didukung, lihat baris
formatdiload_option_list.
bq
bq load \ --source_format=FILE_FORMAT \ MANAGED_TABLE \ STORAGE_URI
Ganti kode berikut:
- FILE_FORMAT: format tabel sumber. Untuk format yang didukung, lihat baris
formatdiload_option_list.- MANAGED_TABLE_NAME: nama tabel Apache Iceberg yang ada.
- STORAGE_URI: Cloud Storage URI yang sepenuhnya memenuhi syarat
atau daftar URI yang dipisahkan koma.
Karakter pengganti juga
didukung. Contoh,
gs://mybucket/table.
Pemuatan standar dari file yang dipartisi Apache Hive
Anda dapat memuat file yang dipartisi Apache Hive ke dalam tabel Iceberg Terkelola menggunakan tugas pemuatan BigQuery standar. Untuk mengetahui informasi selengkapnya, lihat Memuat data yang dipartisi secara eksternal.
Memuat data streaming dari Pub/Sub
Anda dapat memuat data streaming ke dalam tabel Managed Iceberg menggunakan langganan Pub/Sub BigQuery.
Mengekspor data dari tabel Managed Iceberg
Bagian berikut menjelaskan cara mengekspor data dari tabel Managed Iceberg ke berbagai format tabel.
Mengekspor data ke dalam format datar
Untuk mengekspor tabel Apache Iceberg ke dalam format datar, gunakan
pernyataan EXPORT DATA
dan pilih format tujuan. Untuk mengetahui informasi selengkapnya, lihat Mengekspor
data.
Membuat snapshot metadata tabel Apache Iceberg
Untuk membuat snapshot metadata tabel Apache Iceberg, ikuti langkah-langkah berikut:
Ekspor metadata ke dalam format Apache Iceberg V2 dengan pernyataan SQL
EXPORT TABLE METADATA.Opsional: Jadwalkan refresh snapshot metadata Apache Iceberg. Untuk memuat ulang snapshot metadata Apache Iceberg berdasarkan interval waktu yang ditetapkan, gunakan kueri terjadwal.
Opsional: Aktifkan pembaruan otomatis metadata untuk project Anda guna memperbarui snapshot metadata tabel Apache Iceberg secara otomatis pada setiap mutasi tabel. Untuk mengaktifkan pemuatan ulang otomatis metadata, hubungi bigquery-tables-for-apache-iceberg-help@google.com. Biaya
EXPORT METADATAakan diterapkan pada setiap operasi pemuatan ulang.
Contoh berikut membuat kueri terjadwal bernama My Scheduled Snapshot
Refresh Query menggunakan pernyataan DDL EXPORT TABLE METADATA FROM
mydataset.test. Pernyataan DDL dijalankan setiap 24 jam.
bq query \ --use_legacy_sql=false \ --display_name='My Scheduled Snapshot Refresh Query' \ --schedule='every 24 hours' \ 'EXPORT TABLE METADATA FROM mydataset.test'
Melihat snapshot metadata tabel Apache Iceberg
Setelah memperbarui snapshot metadata tabel Apache Iceberg, Anda dapat menemukan snapshot di URI Cloud Storage tempat tabel Apache Iceberg dibuat pertama kali. Folder /data
berisi shard data file Parquet, dan folder /metadata berisi
snapshot metadata tabel Apache Iceberg.
SELECT table_name, REGEXP_EXTRACT(ddl, r"storage_uri\s*=\s*\"([^\"]+)\"") AS storage_uri FROM `mydataset`.INFORMATION_SCHEMA.TABLES;
Perhatikan bahwa mydataset dan table_name adalah placeholder untuk set data
dan tabel Anda yang sebenarnya.
Membaca tabel Iceberg Terkelola dengan Spark
Contoh berikut menyiapkan lingkungan Anda untuk menggunakan Spark SQL dengan Spark, lalu menjalankan kueri untuk mengambil data dari tabel Apache Iceberg yang ditentukan.
spark-sql \ --packages org.apache.iceberg:iceberg-spark-runtime-ICEBERG_VERSION_NUMBER \ --conf spark.sql.catalog.CATALOG_NAME=org.apache.iceberg.spark.SparkCatalog \ --conf spark.sql.catalog.CATALOG_NAME.type=hadoop \ --conf spark.sql.catalog.CATALOG_NAME.warehouse='BUCKET_PATH' \ # Query the table SELECT * FROM CATALOG_NAME.FOLDER_NAME;
Ganti kode berikut:
- ICEBERG_VERSION_NUMBER: versi saat ini dari runtime Apache Iceberg Spark. Download versi terbaru dari Rilis Apache Iceberg.
- CATALOG_NAME: katalog untuk mereferensikan tabel Apache Iceberg Anda.
- BUCKET_PATH: jalur ke bucket yang berisi file tabel.
Contoh,
gs://mybucket/. - FOLDER_NAME: folder yang berisi file tabel. Contoh,
myfolder.
Mengubah tabel Iceberg Terkelola
Untuk mengubah tabel Apache Iceberg, ikuti langkah-langkah yang ditunjukkan dalam Mengubah skema tabel.
Menggunakan transaksi multi-pernyataan
Untuk mendapatkan akses ke transaksi multi-pernyataan untuk tabel Iceberg Terkelola, isi formulir pendaftaran.
Menggunakan partisi
Untuk mendapatkan akses ke partisi untuk tabel Apache Iceberg, isi formulir pendaftaran.
Anda mempartisi tabel dengan menentukan kolom partisi, yang digunakan untuk menyegmentasi tabel. Jenis kolom berikut didukung untuk tabel Iceberg Terkelola:
DATEDATETIMETIMESTAMP
Mempartisi tabel pada kolom DATE, DATETIME, atau TIMESTAMP dikenal sebagai
partisi kolom satuan waktu.
Anda dapat memilih apakah partisi memiliki perincian per jam, harian, bulanan, atau tahunan.
Tabel Iceberg terkelola juga mendukung pengelompokan dan penggabungan tabel yang dikelompokkan dan berpartisi.
Batasan partisi
- Semua batasan tabel berpartisi BigQuery berlaku.
- Jenis kolom partisi selain
DATE,DATETIME, atauTIMESTAMPtidak didukung. - Masa berlaku partisi tidak didukung.
- Evolusi partisi tidak didukung.
Membuat tabel Apache Iceberg berpartisi
Untuk membuat tabel Apache Iceberg berpartisi, ikuti petunjuk untuk membuat tabel Apache Iceberg standar, dan sertakan salah satu hal berikut, bergantung pada lingkungan Anda:
- Klausul
PARTITION BY - Tanda
--time_partitioning_fielddan--time_partitioning_type - Properti
timePartitioning
Mengubah dan membuat kueri tabel Managed Iceberg berpartisi
Pernyataan dan kueri bahasa manipulasi data (DML) BigQuery untuk tabel Managed Iceberg berpartisi sama dengan untuk tabel Apache Iceberg standar. BigQuery secara otomatis mencakup tugas ke partisi yang tepat, mirip dengan partisi tersembunyi Apache Iceberg. Selain itu, semua data baru yang Anda tambahkan ke tabel akan otomatis dipartisi.
Anda juga dapat membuat kueri tabel Managed Iceberg yang dipartisi dengan mesin lain seperti halnya tabel Managed Iceberg standar. Sebaiknya aktifkan snapshot metadata untuk mendapatkan pengalaman terbaik.
Untuk keamanan yang ditingkatkan, informasi partisi untuk tabel Managed Iceberg dipisahkan dari jalur data dan dikelola sepenuhnya oleh lapisan metadata.
Harga
Harga tabel Apache Iceberg terdiri dari penyimpanan, pengoptimalan penyimpanan, serta kueri dan tugas.
Penyimpanan
Tabel Iceberg terkelola menyimpan semua data di Cloud Storage. Anda akan ditagih untuk semua data yang disimpan, termasuk data tabel historis. Biaya pemrosesan data dan transfer data Cloud Storage juga mungkin berlaku. Beberapa biaya operasi Cloud Storage mungkin dibebaskan untuk operasi yang diproses melalui BigQuery atau BigQuery Storage API. Tidak ada biaya penyimpanan khusus BigQuery. Untuk mengetahui informasi selengkapnya, lihat Harga Cloud Storage.
Pengoptimalan penyimpanan
Tabel Iceberg terkelola melakukan pengelolaan tabel otomatis, termasuk pemadatan, pengelompokan, pengumpulan sampah, dan pembuatan/pembaruan metadata BigQuery untuk mengoptimalkan performa kueri dan mengurangi biaya penyimpanan. Penggunaan resource komputasi untuk pengelolaan tabel ditagih dalam Unit Komputasi Data (DCU) dari waktu ke waktu, dengan peningkatan per detik. Untuk mengetahui detail selengkapnya, lihat Harga tabel Apache Iceberg.
Operasi ekspor data yang berlangsung saat streaming melalui Storage Write API disertakan dalam harga Storage Write API dan tidak ditagih sebagai pemeliharaan latar belakang. Untuk mengetahui informasi selengkapnya, lihat Harga penyerapan data.
Untuk melihat log dan penggunaan komputasi untuk operasi latar belakang ini, kueri tampilan
INFORMATION_SCHEMA.JOBS. Untuk
contoh kueri, lihat berikut ini:
Kueri dan tugas
Mirip dengan tabel BigQuery, Anda akan ditagih untuk kueri dan byte yang dibaca (per TiB) jika Anda menggunakan harga BigQuery on-demand, atau konsumsi slot (per jam slot) jika Anda menggunakan harga komputasi kapasitas BigQuery.
Harga BigQuery juga berlaku untuk BigQuery Storage Read API dan Storage Write API.
Operasi pemuatan dan ekspor (seperti EXPORT METADATA) menggunakan slot edisi Enterprise dengan model bayar sesuai penggunaan. Hal ini berbeda dengan tabel BigQuery, yang tidak dikenai biaya untuk operasi ini. Jika pemesanan PIPELINE dengan slot Enterprise atau Enterprise Plus tersedia, operasi pemuatan dan ekspor akan lebih memilih menggunakan slot pemesanan ini.
Batasan
Tabel Iceberg terkelola memiliki batasan berikut:
- Tabel Iceberg terkelola tidak mendukung operasi
penggantian nama atau pernyataan
ALTER TABLE RENAME TO.- Tabel Iceberg terkelola tidak mendukung salinan
tabel atau pernyataan
CREATE TABLE COPY.- Tabel Iceberg terkelola tidak mendukung klon
tabel atau pernyataan
CREATE TABLE CLONE.- Tabel Iceberg terkelola tidak mendukung snapshot
tabel atau pernyataan
CREATE SNAPSHOT TABLE.- Tabel Iceberg terkelola tidak mendukung skema tabel berikut:
- Tabel Iceberg terkelola tidak mendukung snapshot
tabel atau pernyataan
- Tabel Iceberg terkelola tidak mendukung klon
tabel atau pernyataan
- Tabel Iceberg terkelola tidak mendukung salinan
tabel atau pernyataan
- Skema kosong
- Skema dengan jenis data
BIGNUMERIC,INTERVAL,JSON,RANGE, atauGEOGRAPHY. - Skema dengan kolasi
bidang.
- Skema dengan ekspresi nilai default.
- Skema dengan jenis data
- Tabel Iceberg terkelola tidak mendukung kasus evolusi skema berikut:
- Pemaksaan jenis
NUMERICkeFLOAT - Pemaksaan jenis
INTkeFLOAT - Menambahkan kolom bertingkat baru ke kolom
RECORDyang sudah ada menggunakan pernyataan DDL SQL
- Pemaksaan jenis
- Tabel Iceberg terkelola menampilkan ukuran penyimpanan 0 byte saat dikueri oleh konsol atau API.
- Tabel Iceberg terkelola tidak mendukung tampilan terwujud.
- Tabel Iceberg terkelola tidak mendukung tampilan yang diizinkan, tetapi kontrol akses tingkat kolom didukung.
- Tabel Iceberg terkelola tidak mendukung update pengambilan data perubahan (CDC).
- Tabel Iceberg terkelola tidak mendukung pemulihan dari bencana terkelola
- Tabel Iceberg terkelola tidak mendukung keamanan tingkat baris.
- Tabel Iceberg terkelola tidak mendukung periode pemulihan dari kegagalan yang aman.
- Tabel Iceberg terkelola tidak mendukung tugas ekstraksi.
- Tampilan
INFORMATION_SCHEMA.TABLE_STORAGEtidak menyertakan tabel Apache Iceberg. - Tabel Iceberg terkelola tidak didukung sebagai tujuan hasil kueri. Sebagai gantinya, Anda dapat menggunakan pernyataan
CREATE TABLEdengan argumenAS query_statementuntuk membuat tabel sebagai tujuan hasil kueri. CREATE OR REPLACEtidak mendukung penggantian tabel standar dengan tabel Apache Iceberg, atau tabel Iceberg Terkelola dengan tabel standar.- Pemuatan batch dan pernyataan
LOAD DATAhanya mendukung penambahan data ke tabel Iceberg Terkelola yang ada. - Pemuatan batch dan pernyataan
LOAD DATAtidak mendukung pembaruan skema. TRUNCATE TABLEtidak mendukung tabel Iceberg Terkelola. Ada dua alternatif:CREATE OR REPLACE TABLE, menggunakan opsi pembuatan tabel yang sama.DELETE FROMtableWHEREbenar (true)
- Fungsi bernilai tabel (TVF)
APPENDStidak mendukung tabel Iceberg Terkelola. - Metadata Apache Iceberg mungkin tidak berisi data yang di-streaming ke BigQuery oleh Storage Write API dalam 90 menit terakhir.
- Akses berpenomoran halaman berbasis rekaman menggunakan
tabledata.listtidak mendukung tabel Apache Iceberg. - Hanya satu pernyataan DML bermutasi serentak (
UPDATE,DELETE, danMERGE) yang berjalan untuk setiap tabel Apache Iceberg. Pernyataan DML bermutasi tambahan dimasukkan ke dalam antrean.