Apache Paimon (Paimon) menggunakan tabel sistem untuk menyimpan metadata dan informasi konsumsi data dari setiap tabel Paimon. Topik ini menjelaskan kolom-kolom dalam berbagai tabel sistem.
Tabel sistem terkait dengan metadata tabel
Tabel snapshots
Tabel snapshots memungkinkan Anda menanyakan informasi tentang setiap file snapshot dari tabel Paimon, seperti ID dan waktu pembuatan file snapshot.
Sebagai contoh, Anda dapat menggunakan pernyataan SQL berikut untuk menanyakan tabel snapshots dari tabel Paimon mycatalog.mydb.mytbl.
SELECT * FROM mycatalog.mydb.`mytbl$snapshots`;Tabel berikut menjelaskan kolom-kolom dalam tabel snapshots.
Kolom | Tipe data | Deskripsi |
snapshot_id | Long | ID file snapshot. |
schema_id | Long | ID file skema yang digunakan oleh file snapshot. Anda bisa mendapatkan informasi skema dari tabel skema. |
commit_time | Timestamp | Waktu ketika file snapshot dibuat. |
total_record_count | Long | Jumlah total rekaman dalam file data yang ditunjuk oleh file snapshot. Catatan Nilai dalam kolom ini tidak menunjukkan jumlah rekaman data yang disimpan secara logis dalam tabel Paimon. Hal ini karena file data dikompaksi di memori sebelum ditangkap dalam file snapshot. |
delta_record_count | Long | Jumlah rekaman data yang ditambahkan dibandingkan dengan file snapshot sebelumnya. |
changelog_record_count | Long | Jumlah rekaman changelog yang dihasilkan dibandingkan dengan file snapshot sebelumnya. |
Tabel schemas
Tabel schemas memungkinkan Anda menanyakan informasi skema saat ini dan historis dari tabel Paimon. Jika Anda mengubah skema tabel Paimon menggunakan pernyataan ALTER TABLE, CREATE TABLE AS, atau CREATE DATABASE AS, setiap modifikasi menghasilkan catatan dalam tabel schemas. Sebagai contoh, Anda dapat menggunakan pernyataan SQL berikut untuk menanyakan tabel schemas dari tabel Paimon mycatalog.mydb.mytbl:
SELECT * FROM mycatalog.mydb.`mytbl$schemas`;Tabel berikut menjelaskan kolom-kolom dalam tabel schemas.
Kolom | Tipe data | Deskripsi |
schema_id | Long | ID skema. |
fields | String | Nama dan tipe data setiap kolom. |
partition_keys | String | Nama kunci partisi. |
primary_keys | String | Nama kunci utama. |
options | String | Nilai-nilai opsi tabel. |
comment | String | Komentar yang ditambahkan ke tabel untuk memberikan informasi tambahan. |
update_time | Timestamp | Waktu ketika skema terakhir dimodifikasi. |
Tabel options
Tabel options memungkinkan Anda menanyakan konfigurasi saat ini dari opsi tabel.
Sebagai contoh, Anda dapat menggunakan pernyataan SQL berikut untuk menanyakan tabel options dari tabel Paimon mycatalog.mydb.mytbl.
SELECT * FROM mycatalog.mydb.`mytbl$options`;Tabel berikut menjelaskan kolom-kolom dalam tabel options.
Kolom | Tipe data | Deskripsi |
key | String | Nama opsi tabel. |
value | String | Nilai opsi tabel. |
Jika opsi tabel tidak termasuk dalam tabel, maka opsi tersebut diatur ke nilai default.
Tabel partitions
Tabel partitions memungkinkan Anda menanyakan partisi dalam tabel Paimon, jumlah total rekaman data dalam setiap partisi, dan ukuran total file dalam setiap partisi.
Sebagai contoh, Anda dapat menggunakan pernyataan SQL berikut untuk menanyakan tabel partitions dari tabel Paimon mycatalog.mydb.mytbl:
SELECT * FROM mycatalog.mydb.`mytbl$partitions`;Tabel berikut menjelaskan kolom-kolom dalam tabel partitions.
Kolom | Tipe data | Deskripsi |
partition | String | Partisi dalam format |
record_count | Long | Jumlah total rekaman data dalam partisi. Catatan Nilai dalam kolom ini tidak menunjukkan jumlah rekaman data yang disimpan secara logis dalam partisi. Hal ini karena file data dikompaksi di memori sebelum ditangkap dalam file snapshot. |
file_size_in_bytes | Long | Ukuran total file dalam partisi. Satuan: byte. Hanya file data yang ditunjuk oleh file snapshot saat ini yang dihitung. |
Tabel files
Tabel files memungkinkan Anda menanyakan semua file data yang ditunjuk oleh file snapshot, termasuk format file, jumlah rekaman dalam file, dan ukuran file.
Sebagai contoh, Anda dapat menggunakan pernyataan SQL berikut untuk menanyakan tabel files yang dibuat untuk snapshot paling baru dari tabel Paimon mycatalog.mydb.mytbl:
SELECT * FROM mycatalog.mydb.`mytbl$files`;Anda juga dapat menanyakan tabel files yang dibuat untuk snapshot tertentu dari tabel Paimon mycatalog.mydb.mytbl. Anda dapat menggunakan pernyataan SQL berikut untuk menanyakan tabel files yang dibuat untuk snapshot dengan ID 5.
SELECT * FROM mycatalog.mydb.`mytbl$files` /*+ OPTIONS('scan.snapshot-id'='5') */;Tabel berikut menjelaskan kolom-kolom dalam tabel files.
Kolom | Tipe data | Deskripsi |
partition | String | Partisi yang berisi file. Format: |
bucket | Integer | Bucket yang berisi file. Kolom ini hanya berlaku untuk tabel kunci utama yang menggunakan mode bucket tetap. |
file_path | String | Path file. |
file_format | String | Format file. |
schema_id | Long | ID file skema yang digunakan oleh file snapshot. Anda bisa mendapatkan informasi skema dari tabel skema. |
level | Integer | Tingkat log-structured merge-tree (LSM) dari file. Kolom ini hanya berlaku untuk tabel kunci utama. Nilai 0 menunjukkan file kecil. Anda dapat menanyakan jumlah file kecil dalam bucket untuk memantau kemajuan kompaksi dalam bucket. |
record_count | Long | Jumlah rekaman dalam file. |
file_size_in_bytes | Long | Ukuran file. Satuan: byte. |
Tabel files tidak berisi informasi tentang file data historis yang tidak ditunjuk oleh file snapshot yang ditanyakan.
Tabel tags
Tabel tags memungkinkan Anda menanyakan informasi tentang tag dari tabel Paimon, seperti nama tag dan snapshot yang terkait dengan tag.
Sebagai contoh, Anda dapat menggunakan pernyataan SQL berikut untuk menanyakan tabel tags dari tabel Paimon mycatalog.mydb.mytbl.
SELECT * FROM mycatalog.mydb.`mytbl$tags`;Tabel berikut menjelaskan kolom-kolom dalam tabel tags.
Kolom | Tipe data | Deskripsi |
tag_name | String | Nama tag. |
snapshot_id | Long | ID snapshot yang terkait dengan tag. |
schema_id | Long | ID skema yang digunakan oleh tag. Anda bisa mendapatkan informasi skema dari tabel skema. |
commit_time | Timestamp | Waktu ketika snapshot yang terkait dengan tag dibuat. |
record_count | Long | Jumlah rekaman dalam file data. |
Tabel sistem terkait dengan konsumsi data
Tabel read-optimized
File data dari tabel Paimon harus dikompaksi di memori sebelum tersedia untuk konsumsi, yang memengaruhi efisiensi baca. Jika Anda menggunakan tabel kunci utama dan ingin meningkatkan efisiensi pembacaan batch atau kueri OLAP ad hoc, Anda dapat mengonsumsi data dari tabel read-optimized yang sesuai. Dengan cara ini, hanya file yang tidak memerlukan kompaksi yang dibaca, yang menghilangkan proses kompaksi dan meningkatkan efisiensi kueri. Perhatikan bahwa tabel read-optimized menghasilkan data dengan latensi yang lebih tinggi karena file kecil dikompaksi lebih jarang. Anda dapat mengonfigurasi parameter berikut untuk mengompaksi file kecil pada interval reguler dan mencapai keseimbangan antara efisiensi tulis, efisiensi baca, dan latensi data.
Parameter | Deskripsi | Tipe data | Nilai default | Catatan |
compaction.optimization-interval | Interval di mana file kecil dikompaksi. | Duration | Tidak ada | Pengompaksian file kecil yang sering mungkin memengaruhi efisiensi tulis. Kami merekomendasikan Anda mengatur parameter ini ke nilai lebih besar dari |
Sebagai contoh, Anda dapat menggunakan pernyataan SQL berikut untuk menanyakan tabel read-optimized yang dibuat untuk snapshot paling baru dari tabel Paimon mycatalog.mydb.mytbl:
SELECT * FROM mycatalog.mydb.`mytbl$ro`;Tabel log audit
Jika Anda perlu mengetahui operasi spesifik dari setiap rekaman dalam tabel Paimon, Anda dapat mengonsumsi data dari tabel log audit yang sesuai. Dibandingkan dengan tabel Paimon asli, tabel log audit menyisipkan kolom bernama rowkind di awal setiap rekaman untuk menyimpan tipe operasi. Nilai valid dalam kolom rowkind adalah +I (insert), -U (update sebelum), +U (update setelah), dan -D (delete). Untuk setiap rekaman dalam tabel log audit, tipe operasinya adalah +I (insert).
Sebagai contoh, Anda dapat menggunakan pernyataan SQL berikut untuk menanyakan tabel log audit yang dibuat untuk snapshot paling baru dari tabel Paimon mycatalog.mydb.mytbl:
SELECT * FROM mycatalog.mydb.`mytbl$audit_log`;Referensi
Untuk informasi tentang struktur lengkap setiap tabel sistem, lihat dokumentasi resmi Apache Paimon.