Neden maddileştirilmiş görünüm yerine bir tablo kullanmıyorsunuz?


53

Oracle veritabanlarında yeniyim. Doğru anladıysam, maddileştirilmiş görünüm, sonuç kümesinin veritabanında fiziksel bir tablo olarak kaydedildiği ve bu görünüm / tablo bazı parametrelere göre yenilenen bir görünümdür. Görünüm fiziksel bir tablo olarak kaydedilmişse, neden verileri ilk önce bir tabloya kaydetmiyorsunuz? Öyleyse, tablo yerine materyalize bakış kullanmanın faydası nedir?

Yanıtlar:


59

Maddi bir görüş kullanmanın en büyük yararlarından biri, Oracle'ın verileri senkronize tutmaya özen göstermesidir. Ayrı bir toplam tablonuz varsa, verileri senkronize tutmaktan sorumlusunuz. Bu, genellikle makul miktarda kod ve iyi miktarda test gerektirir ve çoğu kuruluş, toplam tablonun senkronize edilmesine neden olan delikler bırakan hatalar yapmayı başarır. Bu, özellikle toplam tablonun artımlı yenilemelerini uygulamaya çalıştığınızda geçerlidir.

Diğer bir önemli avantaj, ayarlara bağlı olarak, kullanıcılar taban tablolarına karşı sorgular yayınladıklarında materyalize görünümleri kullanmak için Oracle'ın yeniden yazma özelliğini kullanabilmesidir. Örneğin, günlük, aylık ve yıllık toplam sonuçları üreten bir ayrıntı tablosuna karşı bir sürü mevcut raporunuz varsa, verileri günlük bir düzeyde toplayan temel tablo üzerinde materyalize bir görünüm oluşturabilirsiniz ve optimize edici Mevcut tüm sorgularınız için bu somutlaştırılmış görünümü kullanın. Bu, yeni toplama tablonuzu kullanmak veya DBMS_ADVANCED_REWRITEkendi sorgularınızı yeniden yazmak için uğraşmak zorunda kalmadan raporlama iş yüklerini bir veri ambarında optimize etmeyi çok daha kolaylaştırır .


14

Temel Tablolar güncellendikçe Materyalize Görünümler otomatik olarak güncellenir.


1
ON DEMANDVarsayılan yenileme davranışı olduğunu unutmayın . Materyalleşmiş görünüm ile yaratılmalıdır ON COMMIT. ve somutlaştırılmış görüşün korunması ücretsiz değildir. Yine de muhtemelen bir tetikleyiciden daha ucuzdur.
durette

10

MV'leri kullanmak için iyi bir durum, bazı zamanlar veri toplamak ve bu özet bilgiyi büyük tablolardan sık sık ve hızlı bir şekilde almak istemenizdir. Materyalize görünümler olmadan, ya tablolarınızın bazılarını deonormalize etmeniz ve toplamaları kod aracılığıyla tutmanız ya da büyük sıra kümeleri tekrar tekrar taramanız gerekir. Her iki şekilde de pano ve benzeri çevrimiçi uygulamalarla özel olarak her zaman kabul edilemez. Sonuçları ayrı tablolarda tutarsanız, uygulama kodunuzu zorlarsınız ve @Justin Cave’in dediği gibi, elle toplanan verilerin senkronize olduğundan emin olmaktan sorumlu olacaksınız. orijinal tablonun verileriyle.


4

Oracle personeli değil, başka bir kullanım örneği üçüncü taraf çözümleri olacaktır. Genellikle tasarımlarında değişiklik yapmanıza destek vermezler, ancak bir MV kendi kodunda "görünmez" olur ancak özel raporlama / veri özetlerine erişim sağlar.

Depolama maliyetlerine ve potansiyel olarak etkili ekleme / güncelleme zaman maliyetlerine sahip olma maliyetinin yüksek olacağı için ücretsiz değildir ancak bu, "düz görünüm" ya da gerçek tabloları oluşturup çevresindeki ETL'yi koruyarak maddi veriyi almak için harcanan zamanla dengelenebilir.

Son olarak, bunu yapmak satıcı ile olan destek sözleşmenizi geçersiz kılabilir, avukatınıza-blah-blah-blah'a danışın.


2

Bunun yerine doğrudan gitmeyi Maddileştirilmiş görünümleri açıklamama izin ver Görüntüleme .

Temel olarak görünümler tabloların aksine mantıksal olarak mevcuttur. Belirli sütunları kullanıcılara gizlemek istiyorsak, tabloları kullanarak yapamayız. Bir görünüm oluşturarak güvenliği sağlayabiliriz.

Use-case: Bir görünüm grup içinde 10 tabloyla dahili olarak ilişkiliyse ve işlevler milyonlarca satır içeriyorsa, yürütülmesi çok zaman alır.

Yani burada geliyor Materyalleşmiş görüşler daha hızlı veri almamıza yardımcı oluyor. Materyalize edilmiş görüşler fiziksel olarak veritabanında mevcuttur. Temel tablo ne zaman güncellenirse Materyalleştirilmiş görünüm güncellenir.

Özelleştirilmiş görünümler, sorgu tanımına bağlı olarak düzenli aralıklarla güncellenir, tablo bunu yapamaz.


0

Düzenli aralıklarla otomatik olarak yenilenmek için özel bir görünüm ayarlanabilir. Bir tabloda, verileri kesmek / yeniden yüklemek için ek kod gerekebilir.

Örnek: Birden fazla tablodan veri içeren materyalize görünüm, yoğun olmayan saatlerde otomatik olarak yenilenmek üzere ayarlanabilir. Fiziksel bir tablonun verileri kesmek / yeniden yüklemek için ek koda ihtiyacı olacaktır.

Güvenlik, bir tablodan ziyade, maddi bir görünümde daha iyi kontrol edilebilir.


0

Maddileştirilmiş görünüm, bir sorgunun sonuçlarını içeren bir veritabanı nesnesidir. Bunlar, uzaktan bulunan verilerin yerel kopyalarıdır veya bir tablonun verilerinin toplamlarına dayalı özet tablolar oluşturmak için kullanılır. http://www.oraappdata.com/2016/04/materialized-view.html


1
Lütfen sorunun somutlaşmış bir görüşün ne olduğu ile ilgili olmadığını, neden ve nasıl kullanılacağı ile ilgili olduğunu unutmayın.
Pırıltılar
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.