Bagikan melalui


Kebijakan tampilan yang dimaterialisasi

Artikel ini mencakup informasi tentang kebijakan yang dapat diatur pada tampilan yang dimaterialisasi.

Kebijakan penyimpanan dan penembolokan

Tampilan materialisasi memiliki kebijakan penyimpanan dan kebijakan penembolokan. Tampilan yang dimaterialisasi memperoleh kebijakan penyimpanan dan penembolokan database secara default. Kebijakan ini dapat diubah menggunakan perintah manajemen kebijakan penyimpanan atau perintah manajemen kebijakan penembolokan.

Kedua kebijakan diterapkan pada bagian yang dimaterialisasi dari tampilan yang dimaterialisasi saja. Untuk penjelasan tentang perbedaan antara bagian materialisasi dan bagian delta, lihat cara kerja tampilan materialisasi. Misalnya, jika kebijakan penembolokan dari tampilan yang dimaterialisasi diatur ke 7d, tetapi kebijakan penembolokan tabel sumbernya diatur ke 0d, mungkin masih ada kesalahan disk saat mengkueri tampilan yang dimaterialisasi tersebut. Perilaku ini terjadi karena tabel sumber (bagian delta) juga berpartisipasi dalam kueri.

Kebijakan penyimpanan tampilan yang dimaterialisasi tidak terkait dengan kebijakan penyimpanan tabel sumber. Kebijakan penyimpanan tabel sumber bisa lebih pendek dari kebijakan penyimpanan tampilan yang dimaterialisasi, jika data sumber diperlukan untuk periode yang lebih pendek. Sebaiknya kebijakan penyimpanan diatur setidaknya untuk beberapa hari, dan pemulihan diatur ke true pada tabel sumber. Pengaturan ini memungkinkan pemulihan cepat untuk kesalahan dan untuk tujuan diagnostik.

Catatan

Kebijakan penyimpanan nol pada tabel sumber tidak didukung.

Kebijakan penyimpanan dan penembolokan bergantung pada waktu Pembuatan Jangkauan. Pembaruan terakhir untuk rekaman menentukan waktu pembuatan jangka waktu untuk tampilan yang terwujud.

Catatan

Proses materialisasi mencoba meminimalkan jumlah pembaruan ke bagian tampilan yang dimaterialisasi. Dalam kasus ketika data tidak harus diperbarui dalam tampilan, data tersebut tidak akan diperbarui. Misalnya, ketika tampilan terwujud adalah agregasi take_any(*) , rekaman baru dari kunci kelompok demi yang sama tidak akan diserap kembali ke dalam tampilan, dan oleh karena itu kebijakan retensi akan dilakukan dengan rekaman paling awal yang diserap.

Kebijakan pemartisian

Kebijakan pemartisian dapat diterapkan pada tampilan yang dimaterialisasi. Sebaiknya konfigurasikan kebijakan pemartisian pada tampilan yang dimaterialisasi hanya saat sebagian besar atau semua kueri tampilan difilter oleh salah satu kunci berdasarkan grup tampilan yang dimaterialisasi. Situasi ini umum dalam solusi multi-penyewa, di mana salah satu kunci kelompok menurut tampilan terwujud adalah pengidentifikasi penyewa (misalnya, tenantId, customerId). Untuk informasi selengkapnya, lihat kasus penggunaan pertama yang dijelaskan di halaman skenario yang didukung kebijakan pemartisian.

Untuk mengetahui perintah guna mengubah kebijakan pemartisian tampilan yang dimaterialisasi, lihat perintah kebijakan pemartisian.

Menambahkan kebijakan partisi pada tampilan materialisasi meningkatkan jumlah jangkauan dalam tampilan materialisasi, dan menciptakan lebih banyak "pekerjaan" untuk proses materialisasi. Untuk informasi selengkapnya tentang alasan perilaku ini, lihat sejauh mana proses pembangunan ulang yang disebutkan dalam cara kerja tampilan materialisasi.

Kebijakan keamanan tingkat baris

Keamanan tingkat baris dapat diterapkan pada tampilan yang dimaterialisasi, dengan beberapa batasan:

  • Kebijakan hanya dapat diterapkan ke tampilan materialisasi dengan fungsi agregasi arg_max()/arg_min()/take_any( ), atau ketika kueri keamanan tingkat baris mereferensikan grup menurut kunci agregasi tampilan terwujud.
  • Kebijakan ini hanya berlaku untuk bagian tampilan yang dimaterialisasi.
    • Jika kebijakan keamanan tingkat baris yang sama tidak ditentukan pada tabel sumber tampilan materialisasi, kueri tampilan materialisasi dapat mengembalikan rekaman yang harus disembunyikan oleh kebijakan. Ini terjadi karena mengkueri tampilan yang dimaterialisasi akan mengkueri pada tabel sumber juga.
    • Sebaiknya tentukan kebijakan keamanan tingkat baris yang sama baik pada tabel sumber maupun tampilan materialisasi jika tampilannya adalah arg_max() atau arg_min()/take_any().
  • Saat menentukan kebijakan keamanan tingkat baris pada tabel sumber tampilan arg_max() atau arg_min()/take_any(), perintah gagal jika tidak ada kebijakan keamanan tingkat baris yang ditentukan pada tampilan materialisasi itu sendiri. Tujuan dari kegagalan ini adalah untuk memperingatkan pengguna tentang potensi kebocoran data, karena tampilan yang dimaterialisasi dapat mengekspos informasi. Untuk mengatasi kesalahan ini, Anda dapat melakukan salah satu tindakan berikut:
    • Tentukan kebijakan keamanan tingkat baris pada tampilan yang dimaterialisasi.
    • Pilih untuk mengabaikan kesalahan dengan menambahkan properti allowMaterializedViewsWithoutRowLevelSecurity ke perintah ubah kebijakan. Contohnya:
    .alter table SourceTable policy row_level_security enable with (allowMaterializedViewsWithoutRowLevelSecurity=true) "RLS_function"

Untuk perintah untuk mengonfigurasi kebijakan keamanan tingkat baris pada tampilan yang dimaterialisasi, lihat perintah row_level_security policy.