Trace Id is missing
Ana içeriğe atla

Önbelleğe alma nedir?

Geliştiriciler ve BT uzmanları geçici bellekteki anahtar-değer verilerini, geleneksel veri depolama alanında depolanan verilere göre daha hızlı ve daha az çabayla kaydetmek ve bunlara erişmek için önbelleğe almayı kullanır. Önbelleklerden; rastgele erişim belleği (RAM) ile bilgisayar önbelleği, içerik teslim ağındaki ağ önbelleği veya bulut uygulamalarını daha dayanıklı yapmaya yardımcı olan bulut önbelleği gibi birden çok teknolojinin kullanıldığı birden çok senaryoda yararlanılır. Geliştiriciler genellikle işlenen verileri önbelleğe alan ve isteklere standart veritabanı sorgularından daha hızlı yanıt vermek için bunların amaçlarını yeniden belirleyen uygulamalar tasarlar.

Önbelleğe almayı kullanarak veritabanı maliyetlerini düşürebilir, çoğu veritabanının sağlayabileceğinden daha yüksek aktarım hızı ve daha düşük gecikme süresi sağlayabilir, ayrıca bulut ve web uygulamalarının performansını artırabilirsiniz.

Önbelleğe alma işlemi veritabanlarında nasıl çalışır?

Geliştiriciler birincil veritabanını, veritabanı veya uygulamanın içine yerleştirebilecekleri veya tek başına bir katman olarak ayarlayabilecekleri bir veritabanı önbelleğiyle tamamlayabilir. Büyük, dayanıklı, eksiksiz veri kümelerini depolama konusunda tipik olarak geleneksel veritabanından yararlanırken, geçici veri alt kümelerini hızla alabilmek için bunları önbelleğe depolarlar.

Önbelleğe alma işlemini NoSQL veritabanlarının yanı sıra SQL Server, MySQL veya MariaDBgibi ilişkisel veritabanları da dahil olmak üzere her türlü veri deposunda kullanabilirsiniz. Önbelleğe alma PostgreSQL için Azure Veritabanı,  Azure SQL Veritabanı veya Azure SQL Yönetilen Örneğigibi birçok veri platformunda iyi çalışır. Veri mimarisini yapılandırmaya başlamadan önce gereksinimlerinizi en iyi karşılayacak veri deposu için araştırma yapmanızı öneririz. Örneğin, ilişkisel ve yapılandırılmamış veri depolarını birleştirmek için PostgreSQL'i kullanmadan önce PostgreSQL'in ne olduğunu anlamak isteyebilirsiniz.

Önbellek katmanlarının avantajları nelerdir ve Redis nedir?

Geliştiriciler talebe göre farklı veri türlerini ayrı önbelleklerde depolamak üzere önbellek katmanları olarak adlandırılan çok düzeyi önbellekler kullanır. Bir veya birkaç önbellek katmanı ekleyerek, bir veri katmanının aktarım hızını ve gecikme performansını önemli ölçüde geliştirebilirsiniz.

Redis, yüksek performanslı önbellek katmanları ve başka veri depoları oluşturmak için kullanılan popüler bir açık kaynak bellek içi veri yapısıdır. Yakın zamanda yapılan bir çalışma, örnek uygulamaya Redis için Azure Cache eklenmesinin veri aktarım hızını %800'den fazla artırdığını ve gecikme performansını %1.000'den fazla geliştirdiğini1göstermiştir.

Önbellekler, veri katmanı için toplam sahip olma maliyetini (TCO) de düşürebilir. En yaygın sorgulara yanıt vermek için önbellekleri kullanıp veritabanının yükünü azaltarak, veritabanı örneklerinin fazla sağlanması gereğini azaltabilir, bunun sonucunda önemli maliyet tasarrufları ve daha düşük bir TCO elde edebilirsiniz.

Önbellek türleri

Önbelleğe alma stratejiniz uygulamanızın verileri nasıl okuduğuna ve yazdığına bağlıdır. Uygulamanız yoğun yazma işlemleri mi içeriyor yoksa veriler bir kez yazılıp sık mı okunuyor? Döndürülen veriler her zaman benzersiz mi? Farklı veri erişim desenleri önbelleği nasıl yapılandıracağınızı etkiler. Edilgen önbellek, anında okuma/anında yazma ve arka planda yazma/geri yazma, yaygın önbellek türleridir.

Edilgen önbellek

Ağır okuma iş yükü içeren uygulamalar için geliştiriciler çoğunlukla edilgen önbellekli programlama modelini veya "yan önbelleği"kullanır. Yan önbelleği uygulamanın dışına konumlandırırlar ve bu yan önbellek verileri sorgulamak ve almak için önbelleğe veya veriler önbellek değilse doğrudan veritabanına bağlanabilir. Uygulama verileri aldığında, bunları gelecekteki sorgular için önbelleğe kopyalar.

Uygulama performansını geliştirmeye, önbellekle veri deposu arasındaki tutarlılığı korumaya ve önbellekteki verilerin eskimesini önlemeye yardımcı olmak için yan önbellek kullanabilirsiniz.

Anında okuma/anında yazma önbelleği

Anında okuma önbellekleri kendilerini güncel tutarken, anında okuma önbelleğiyle uygulama verileri önbelleğe ve sonra da veritabanına yazar. Her iki önbellek de veritabanında aynı doğrultuda tutulur ve uygulama bunları ana veri deposu olarak kabul eder.

Anında okuma önbellekleri aynı verilerin tekrar tekrar istendiği uygulamaları basitleştirmeye yardımcı olur ama önbelleğin kendisi daha karmaşıktır ve iki adımlı anında yazma işlemi gecikmeye neden olabilir. Geliştiriciler önbellekle veritabanı arasındaki veri tutarlılığını sağlamaya, anında yazma önbelleği gecikmesini azaltmaya ve anında okuma önbelleğinin güncelleştirilmesini kolaylaştırmaya yardımcı olmak için ikisini eşleştirir.

Anında okuma/anında yazma önbelleğiyle, geliştiriciler uygulama kodunu basitleştirebilir, önbellek ölçeklenebilirliğini artırabilir ve veritabanı yükünü en aza indirebilir.

Arka planda yazma/geri yazma önbelleği

Bu senaryoda, uygulama verileri önbelleğe yazar, bu anında onaylanır ve ardından önbelleğin kendisi verileri arka planda veritabanına geri yazar. Bazen geri yazma önbellekleri olarak da bilinen arka planda yazma önbellekleri, yoğun yazma işlemi içeren iş yükleri için çok uygundur. Uygulamanın sonraki göreve geçmeden önce yazma işleminin tamamlanmasını beklemesi gerekmediğinden, yazma performansını geliştirir.

Dağıtılmış önbellek ile oturum deposu karşılaştırması

Kullanıcılar dağıtılmış önbellekleri sık sık bunlara benzeyen ama farklı gereksinimlere ve amaçlara sahip olan oturum depolarıyla karıştırır. Geliştiriciler veritabanını tamamlamak için dağıtılmış önbellek kullanmak yerine oturum depoları uygulamaya koyar. Oturum depoları, web uygulamaları gibi oturum odaklı uygulamalardaki profiller, iletiler ve diğer kullanıcı verileri için kullanıcı katmanında yer alan geçici veri depolarıdır.

Oturum deposu nedir?

Oturum odaklı uygulamalar, uygulamada oturumu açık olan kullanıcıların gerçekleştirdiği eylemleri izler. Kullanıcı oturumu kapattığında bu verileri korumak için bir oturum deposunda tutabilirsiniz. Bu yöntem oturum yönetimini geliştirir, maliyetleri düşürür ve uygulama performansına hız kazandırır.

Oturum deposu kullanma ile veritabanını önbelleğe alma arasında ne fark vardır?

Oturum deposunda veriler farklı kullanıcılarla paylaşılmaz ama önbelleğe alma işleminde farklı kullanıcılar aynı önbelleğe erişebilir. Geliştiriciler veritabanının veya depolama örneğinin performansını geliştirmek için önbelleğe almayı kullanırken, verileri bellek içi depoya yazarak ve veritabanına erişim gereğini tamamen ortadan kaldırarak uygulama performansını artırmak için oturum depolarını kullanır.

Oturum deposuna yazılan veriler normalde kısa ömürlüdür; birincil veritabanı ile önbelleğe alınan verilerin ise genellikle çok daha uzun süre kalması hedeflenir. Oturum deposu, işlem verilerinin kaybolmamasını ve kullanıcıların etkileşimde kalmasını sağlamak için çoğaltma, yüksek kullanılabilirlik ve veri dayanıklılığı gerektirir. Öte yandan yan önbellekteki veriler kaybolsa da, bunların kalıcı veritabanında her zaman bir kopyası bulunur.

Önbelleğe almanın avantajları

Geliştirilmiş uygulama performansı

Verileri bellek içi önbellekten okumak, disk odaklı bir veri deposundaki verilere erişmekten çok daha hızlı bir işlemdir. Ayrıca verilere hızlı erişim sayesinde genel uygulama deneyimi de önemli ölçüde gelişir.

Veritabanı kullanımı ve maliyetlerinde azalma

Önbelleğe alma daha az veritabanı sorgusuna yol açar; veritabanı altyapısını ölçeklendirme gereğini sınırlayarak ve aktarım hızı ücretlerini azaltarak performansı geliştirir ve maliyetleri düşürür.

Ölçeklenebilir ve tahmin edilebilir performans

Tek bir önbellek örneği saniyede milyonlarca istek işleyebildiğinden, veritabanlarının ulaşamayacağı bir aktarım hızı ve ölçeklenebilirlik düzeyi sunar. Ayrıca uygulamalarınızın ve veri depolarınızın ölçeğini ister genişletin ister artırın, önbelleğe alma işlemi ihtiyacınız olan esnekliği sağlar. Bundan sonra uygulamanız, arka uç veritabanlarının yükünü artırmadan birçok kullanıcının aynı dosyalara aynı anda erişmesine olanak tanıyabilir. Ayrıca bir uygulama kullanımda sık sık ani artışlar ve yüksek aktarım hızı ile karşılaşıyorsa, bellek içi önbellekler gecikme süresini ortadan kaldırabilir.

Önbelleğe alma ne için kullanılır?

Çıkış önbelleği

Çıkış önbelleği, sunucunun işlenmek üzere tarayıcılara gönderdiği HTML ve istemci betikleri gibi sayfaların tüm kaynak kodunu depolayarak web sayfası performansını artırmaya yardımcı olur. Kullanıcı sayfayı her görüntülediğinde, sunucu uygulamanın belleğinde çıkış kodunu önbelleğe alır. Bu sayede uygulama, sayfa kodunu çalıştırmadan veya diğer sunucularla iletişim kurmadan isteklere hizmet verebilir.

Veri önbelleğe alma ve veritabanı önbelleği

Veritabanının çalışma hızı ve aktarım hızı genel uygulama performansının önemli faktörlerinden biri olabilir. Veritabanı önbelleği, fiyatlandırma veya envanter verileri gibi fazla değişmeyen verilere yönelik sık çağrılar için kullanılır. Web sitelerinin ve uygulamaların daha hızlı yüklenmesine yardımcı olurken, aktarım hızını da artırır ve arka uç veritabanlarından veri alma gecikmesini azaltır.

Kullanıcı oturumu verilerini depolama

Uygulama kullanıcıları genellikle kısa süreli olarak depolanması gereken veriler üretir. Redis gibi bellek içi veri depoları kullanıcı girişi, alışveriş sepeti girdileri veya kişiselleştirilmiş tercihler gibi yüksek hacimli oturum verilerini, depolama alanı veya veritabanlarından daha düşük maliyetle, verimli ve güvenilir bir şekilde depolamaya çok uygundur.

İleti aracıları ve yayımlama/abone olma mimarileri

Bulut uygulamalarının sıklıkla hizmetler arasında veri alışverişi yapması gerekir ve gecikmeyi azaltıp veri yönetimini hızlandıran yayımlama/abone olma veya ileti aracısı mimarilerini uygulamak için önbelleğe almayı kullanabilirler.

Uygulamalar ve API'ler

Tarayıcılarda olduğu gibi uygulamalar da gerektiğinde bu bilgileri hızla yeniden yüklemek için önemli dosyaları ve verileri kaydeder. Önbelleğe alınan API yanıtları, uygulama sunucularına ve veritabanlarına yönelik talebi veya bunlar üzerindeki yükü ortadan kaldırarak daha hızlı yanıt süreleri ve daha iyi performans sağlar.

[1] Performans beyanları GigaOm’un Ekim 2020’de Microsoft tarafından görevlendirilerek yürüttüğü bir çalışmadan elde edilen verilere dayanır. Çalışmada bir önbelleğe alma çözümü olarak Redis için Azure Cache uygulanmış ve uygulanmamış şekilde Azure veritabanı kullanan bir test uygulamasının performansı karşılaştırıldı. Çalışmada veritabanı öğesi olarak Azure SQL Veritabanı ve PostgreSQL için Azure Veritabanı kullanılmıştır. 2 sanal çekirdekli 5. Nesil Genel Amaçlı Azure SQL Veritabanı örneği ve 2 sanal çekirdekli Genel Amaçlı PostgreSQL için Azure Veritabanı örneği, Redis için Azure Cache'in 6 gigabayt P1 Premium örneğiyle birlikte kullanılmıştır. Bu sonuçlar Redis için Azure Cache kullanılmayan Azure SQL Veritabanı'nın 8, 16, 24 ve 32 sanal çekirdekli 5. Nesil Genel Amaçlı örnekleri ve PostgreSQL için Azure Veritabanı'nın 8, 16, 24 ve 32 sanal çekirdekli Genel Amaçlı örnekleriyle karşılaştırılmıştır. Kıyaslama verileri, ortak bir web uygulamasının simülasyonunu yapan GigaOm Web Uygulaması Veritabanı Yükleme Testinden ve artan HTTP istekleri nedeniyle engellenen arka uç veritabanından alınmıştır. Gerçek sonuçlar yapılandırmaya ve bölgeye göre farklılık gösterebilir. Çalışmanın tamamını görün.

Ücretsiz hesap

Azure bulut bilişim hizmetlerini 30 güne kadar ücretsiz deneyin.

Kullandığın kadar öde

Kullandıkça öde fiyatlandırmasıyla kullanmaya başlayın. Önceden taahhütte bulunmadan istediğiniz zaman iptal edin.

Tam olarak yönetilen bir Redis hizmetiyle uygulamanıza faydalı bir önbellek katmanı ekleyin. Redis için Azure Cache kullanmaya nasıl başlayabileceğinizi öğrenin.

Yüksek performanslı uygulamalar için esnek, dosya tabanlı bir önbellek çalıştırmak istiyorsanız, Azure HPC Önbelleği hakkındaki bilgileri okuyun.