Kurs
Eğer veritabanlarını sorgulamak için SQL (tercihen PostgreSQL) ile yoğun ya da orta düzeyde çalışıyorsanız, kritik sorulara yanıt bulmak için epey karmaşık sorgular yazmış olabilirsiniz. Bazen de bu sorguların sonuçlarını işinizde oldukça sık kullanmanız gerekebilir. Karmaşık bir sorguyu tekrar tekrar çalıştırmak maliyetli olabilir. Peki performansa yardımcı olmak için karmaşık bir sorgunun sonuçlarını önbelleğe almanın bir yolu olsaydı? İşte özet görünümler tam bu noktada devreye giriyor.
Düşünüyor olabilirsiniz: Sorgu sonucunu saklayabilen basit görünümler de var. Ancak basit bir görünüm, pek çok açıdan bir özet görünümden farklıdır. İşte PostgreSQL'in resmi belgelerinin basit görünümler hakkında söylediği:
Görünüm fiziksel olarak maddileştirilmez. Bunun yerine, görünüme bir sorguda her başvurulduğunda sorgu çalıştırılır.
Bu ifade, basit görünümlerin veritabanında fiziksel olarak saklanmadığı anlamına gelir. Bir görünüm her kullanıldığında, görünümü oluşturan sorgu çalıştırılır. Bu da erişim süresi açısından basit görünümleri bir miktar verimsiz kılar.
Öte yandan, özet görünümler bir görünümü veritabanında fiziksel olarak kalıcı hale getirmenize olanak tanıyarak büyük bir esneklik sunar. Ve özet görünümler üzerinde, basit görünümlerde olduğu gibi (ancak daha düşük erişim süresiyle) işlem yapabilirsiniz. Bu öğreticinin geri kalanında PostgreSQL'deki özet görünümleri inceleyeceksiniz. DataCamp Baş Veri Bilimcisi David Robinson, bir webinarında özet görünümleri karmaşık sorguların sonuçlarını etkili biçimde saklamak için nasıl kullandığını göstermişti.
Not: Bu öğreticiye adım adım eşlik edebilmek için, SQL'de Verileri Birleştirme kursunda ele alınan konulara aşina olmalısınız.
İlk Veritabanı Kurulumu
PostgreSQL'de bir veritabanı kurup içinde temel bir tablo oluşturmanız, onu etkili biçimde sorgulayabilmeniz açısından daha iyi olacaktır. Bu, bu öğreticinin sonraki bölümlerinde de işinize yarayacaktır. Bu öğreticide kullanacağınız tabloyu içeren bu veritabanı yedeğini geri yükleyebilirsiniz. PostgreSQL'de veritabanı yedeği nasıl geri yüklenir öğrenmek isterseniz, şu öğreticinin ilk bölümünü takip edebilirsiniz.
Yedeği geri yükleyebildiyseniz, veritabanı içinde international_debt adlı bir tablo görmelisiniz (eğer yoksa önce bir veritabanı oluşturmanız gerekir). Hızlıca tablonun ilk birkaç satırına bakalım (bunu basit bir select sorgusuyla yapabilirsiniz) -

Tablo, dünya genelindeki farklı ülkelerin bu yıla ait çeşitli kategorilerdeki borç istatistiklerine ilişkin bilgileri içerir (indicator_name, indicator_code sütunlarına bakınız). Borç sütunu, belirli bir ülkenin belirli bir kategorideki borç miktarını (USD cinsinden) gösterir. Veriler ekonomi alanına aittir ve sıkça ülkelerin ekonomik koşullarını analiz etmek için kullanılır. Veriler Dünya Bankası'ndan toplanmıştır.
Artık bir veritabanını başarıyla kurduğunuza göre, bu öğreticinin sonraki bölümlerine geçebilirsiniz.
Özet Görünüm Oluşturma
Aşağıdaki sorgunun bir özet görünümünü oluşturalım -
select country_name,
sum(debt) as total_debt
from international_debt
group by country_name order by country_name;
Sorgu, ülke adlarını toplam borçlarıyla birlikte (alfabetik sırada) döndürür. Sorgunun çıktısı şu şekilde görünmelidir -

Şimdi özet görünüm -
CREATE MATERIALIZED VIEW country_total_debt
as
select country_name,
sum(debt) as total_debt
from international_debt
group by country_name order by country_name;
Şu şekilde bir başarı mesajı almalısınız: Query returned successfully: 124 rows affected, 242 ms execution time.
Bir Özet Görünümü Yenileme
Özet görünümü oluştururken WITH NO DATA seçeneğini belirterek PostgreSQL'e görünüme herhangi bir veri yüklememesini de söyleyebilirsiniz -
CREATE MATERIALIZED VIEW country_total_debt_2
as
select country_name,
sum(debt) as total_debt
from international_debt
group by country_name order by country_name
WITH NO DATA;
Şu mesajı alırsınız: Query returned successfully with no result in 41 ms. İki çıktı mesajı arasındaki farka dikkat edin. WITH NO DATA seçeneğini eklerseniz, boş bir özet görünüm oluşturulur. Bu özet görünümü sorgulayamazsınız. Ancak aşağıdakini çalıştırarak özet görünümü doldurabilirsiniz -
REFRESH MATERIALIZED VIEW country_total_debt_2;
Bir Özet Görünümü Sorgulama
Şu ana kadar iki özet görünüm (country_total_debt, country_total_debt_2) oluşturmuş olmalısınız. İkisinden herhangi birini kullanarak basit bir select sorgusu çalıştıralım -
select * from country_total_debt_2;
Sorgu şöyle bir sonuç döndürmelidir -

Çıktı, özet görünüm içine aldığımız sorgunun çıktısıyla tamamen aynıdır. Özet görünümler üzerinde toplulaştırma fonksiyonları içeren sorgular da çalıştırabilirsiniz -
select max(total_debt) from country_total_debt_2;
Şu sonucu almalısınız - 
Bir Özet Görünümü Kaldırma
Özet görünümler, PostgreSQL'de tabloların kaldırıldığı şekilde kaldırılabilir. Sadece Drop'tan sonra Materialized View belirtmeniz yeterlidir -
Drop Materialized View country_total_debt_2;
MySQL'i en popüler ikinci rakibiyle karşılaştırmak için ayrıntılı PostgreSQL vs. MySQL karşılaştırmamıza göz atın.
Sonuç
Bu öğretici bu kadar. Sonuna kadar okuduğunuz için teşekkürler. Bu öğreticide PostgreSQL'de özet görünümleri ve bunlar üzerinde nasıl işlem yapabileceğinizi öğrendiniz. Etkililikleri sayesinde özet görünümler, veri ambarlarında yaygın olarak kullanılır. Daha karmaşık sorguları öğrenmekle ilgileniyorsanız, aşağıdaki DataCamp kurslarına göz atabilirsiniz:
