Mengapa tidak menggunakan tabel alih-alih tampilan terwujud?

53

Saya baru di database Oracle. Jika saya mengerti dengan benar, tampilan terwujud adalah tampilan yang hasil set disimpan sebagai tabel fisik dalam database dan tampilan / tabel ini di-refresh berdasarkan beberapa parameter. Jika tampilan disimpan sebagai tabel fisik, mengapa tidak menyimpan data ke dalam tabel di tempat pertama? Jadi apa manfaat menggunakan tampilan terwujud daripada meja?

jrara
sumber

Jawaban:

59

Salah satu manfaat terbesar dari menggunakan tampilan terwujud adalah bahwa Oracle menjaga agar data tetap sinkron. Jika Anda memiliki tabel agregat terpisah, Anda bertanggung jawab untuk menjaga sinkronisasi data. Itu umumnya memerlukan jumlah kode yang wajar dan jumlah pengujian yang layak dan sebagian besar organisasi berhasil membuat kesalahan yang membuat lubang yang menyebabkan tabel agregat keluar dari sinkronisasi. Ini terutama benar ketika Anda mencoba menerapkan penyegaran tambahan tabel agregat.

Manfaat utama lainnya adalah, tergantung pada pengaturannya, Oracle dapat menggunakan penulisan ulang kueri untuk menggunakan tampilan terwujud ketika pengguna mengeluarkan kueri terhadap tabel dasar. Jadi, misalnya, jika Anda memiliki banyak laporan yang ada terhadap tabel detail yang menghasilkan hasil agregat harian, bulanan, dan tahunan, Anda dapat membuat tampilan terwujud pada tabel dasar yang mengumpulkan data pada tingkat harian dan pengoptimal dapat memanfaatkan tampilan terwujud untuk semua pertanyaan Anda yang ada. Ini membuatnya lebih mudah untuk mengoptimalkan beban kerja pelaporan di gudang data tanpa mencoba untuk pergi dan menulis ulang lusinan laporan untuk menggunakan tabel agregat baru Anda atau mengacaukan DBMS_ADVANCED_REWRITEuntuk memaksa penulisan ulang Anda sendiri dari kueri.

Gua Justin
sumber
14

Tampilan Terwujud diperbarui secara otomatis karena tabel dasarnya diperbarui.

Gordon Bell
sumber
1
Perhatikan bahwa itu ON DEMANDadalah perilaku penyegaran default. Tampilan terwujud harus dibuat dengan ON COMMIT. dan mempertahankan tampilan terwujud tidak gratis. Ini mungkin lebih murah daripada pemicu.
Durette
10

Satu kasus yang baik untuk menggunakan MV adalah bahwa beberapa kali Anda ingin mengumpulkan data dan mendapatkan informasi ringkasan ini dari tabel besar secara sering dan cepat. Tanpa tampilan terwujud, Anda harus melakukan deonormalisasi beberapa tabel Anda dan mempertahankan agregat melalui kode atau berulang kali memindai set baris besar. Apa pun caranya tidak selalu dapat diterima secara khusus dengan dasbor dan aplikasi online serupa. Jika Anda menyimpan hasilnya dalam tabel terpisah, Anda memperumit kode aplikasi Anda dan seperti yang dikatakan @Justin Cave, Anda akan bertanggung jawab untuk memastikan bahwa data yang dikumpulkan secara manual selaras. dengan data tabel asli.

Tidak mungkin
sumber
4

Bukan orang Oracle, tetapi use case lain akan menjadi solusi pihak ketiga. Mereka umumnya tidak mendukung Anda membuat perubahan pada desain mereka tetapi MV akan "tidak terlihat" dengan kode mereka tetapi memberikan akses ke laporan kustom / ekstrak data.

Ini tidak gratis karena biayanya adalah biaya penyimpanan dan berpotensi memasukkan biaya / memperbarui waktu tetapi dapat diimbangi dengan waktu yang dihabiskan untuk mengambil data terwujud versus "pandangan lurus" atau membuat tabel aktual dan mempertahankan ETL di sekitarnya.

Akhirnya, hal itu dapat membatalkan kontrak dukungan Anda dengan vendor, berkonsultasi dengan pengacara Anda-bla-bla-bla

billinkc
sumber
2

Alih-alih langsung ke tampilan Terwujud biarkan saya menjelaskan Tampilan .

Pada dasarnya pandangan ada secara logis tidak seperti tabel. Jika kita ingin menyembunyikan kolom tertentu untuk pengguna, kita tidak bisa menggunakan tabel. Membuat tampilan kita bisa mencapai keamanan.

Kasus penggunaan: jika tampilan terkait secara internal dengan 10 tabel bersama dengan grup oleh dan fungsi memiliki jutaan baris, dibutuhkan banyak waktu untuk mengeksekusi.

Jadi, inilah tampilan terwujud yang membantu kami mendapatkan data lebih cepat. Pandangan terwujud secara fisik ada dalam database. Setiap kali tabel dasar diperbarui, tampilan Materialized akan diperbarui.

Tampilan terwujud diperbarui secara berkala berdasarkan definisi permintaan, tabel tidak dapat melakukan ini.

Premraj
sumber
0

Tampilan terwujud dapat diatur untuk menyegarkan secara otomatis secara berkala. Sebuah tabel mungkin memerlukan kode tambahan untuk memotong / memuat ulang data.

contoh: Tampilan terwujud memiliki data dari beberapa tabel dapat diatur untuk menyegarkan secara otomatis selama jam non-puncak. Tabel fisik akan membutuhkan kode tambahan untuk memotong / memuat ulang data.

Keamanan dapat lebih dikendalikan dalam tampilan yang terwujud daripada sebuah tabel.

samroze
sumber
0

Tampilan terwujud adalah objek database yang berisi hasil kueri. Mereka adalah salinan lokal dari data yang terletak jarak jauh, atau digunakan untuk membuat tabel ringkasan berdasarkan agregasi data tabel. http://www.oraappdata.com/2016/04/materialized-view.html

Dayakark
sumber
1
Harap perhatikan bahwa pertanyaannya bukan tentang apa pandangan terwujud itu, tetapi tentang mengapa dan bagaimana menggunakannya.
Twinkles