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
groupby country_name orderby country_name;Altyapı:
Sorgu, ülke adlarını toplam borçlarıyla birlikte (alfabetik sırada) döndürür. Sorgunun çıktısı şu şekilde görünmelidir -
Ş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 -
Çı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 -
Ö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;Altyapı:
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:
Algoritmalar, sistem tasarımı ve davranışsal senaryoları kapsayan bu temel sorularla teknik mülakat sürecine hakim olun. Uzman cevapları, kod örnekleri ve kanıtlanmış hazırlık stratejileri edinin.
Git deponuzu temiz tutmak için .gitignore’u nasıl kullanacağınızı öğrenin. Bu eğitim; temelleri, yaygın kullanım durumlarını ve başlamanıza yardımcı olacak pratik örnekleri kapsar!
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:
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_debtadlı 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_codesü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 -
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 -
Ş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 DATAseçeneğini belirterek PostgreSQL'e görünüme herhangi bir veri yüklememesini de söyleyebilirsiniz -Ş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 DATAseç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 -
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 -
Ş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 sonraMaterialized Viewbelirtmeniz yeterlidir -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: