İçindekiler:
- Verileri bellekte önbellekleme
- Verileri köle olarak çoğaltma
- Anahtar / değer depolarındaki veri modelleme
- Verilerle çalışma
- Redis'in Değerlendirilmesi
Video: Common design patterns with Azure Cosmos DB | Azure Friday 2024
NoSQL'deki anahtar / değerli depoların tamamı hızla ilgilidir. Bu hızı en yüksek düzeye çıkarmak, verileri önbelleğe almak, birden fazla veri kopyasına sahip olmak veya en uygun depolama yapılarını kullanmak için çeşitli teknikler kullanabilirsiniz.
Verileri bellekte önbellekleme
Rasgele erişimli bellekte (RAM) depolandığında verilere kolayca erişildiğinden, veriyi RAM'e önbelleğe alan bir anahtar / değer çanağı seçerek, verilere erişimi ancak fiyata göre önemli ölçüde hızlandırabilirsiniz Daha yüksek sunucu maliyetleri.
Genellikle, bu ödün vermeye değiyor. Depolanan verilerinizin hangi yüzdesinin sıkça talep edildiğini kolayca hesaplayabilirsiniz. Biliyorsanız, genellikle yüzde beşi birkaç dakikada bir istemekte, o zaman veri boyutunuzun yüzde beşini alıp bu numarayı, veritabanı sunucularında yedek RAM alanı olarak ekleyin.
İşletim sisteminin, diğer uygulamaların ve veritabanı sunucusunun da bellek gereksinimlerinin olduğunu unutmayın.
Verileri köle olarak çoğaltma
Anahtar / değer depolarında, belirli bir anahtar kümedeki sunuculardan birinde saklanır. Bu işleme anahtar bölme adı verilir. Bu, eğer bu anahtar sürekli istendiğinde, bu düğüm toplu istekleri alacaktır demektir. Bu nedenle bu düğüm ortalama talep hızından daha yavaş olacak ve potansiyel olarak hizmet kalitesini kullanıcılarınıza etkileyecektir.
Bu durumu önlemek için, bazı anahtar / değer depolarında bağımlı olarak da adlandırılan salt okunur kopyaları eklemeyi destekler. Redis, Riak ve Aerospike iyi örneklerdir. Çoğaltma, birkaç sunucudaki anahtarın birden fazla kez depolanmasını sağlar; bu da tepki hızını artırır, ancak daha fazla donanım pahasına.
Bazı anahtar değer depoları, anahtar kopyalarının ana ile aynı değere sahip olmasını garantiler. Bu garantiye tamamen tutarlı denir. Anahtarı barındıran ana sunucuda bir güncelleme gerçekleşirse, tüm kopyaların güncelliğini garantiler.
Anahtar değerli mağazaların tümü bu durumu garanti etmez (örneğin Riak), bu nedenle, milisaniyesi güncel olmak önem taşıyorsa, kopyaları tamamen tutarlı olan bir veritabanı seçin (Aerospike gibi).
Anahtar / değer depolarındaki veri modelleme
Birçok anahtar / değerli depolar yalnızca değer yapıları için temel yapıları destekler ve uygulama programcısını verilerin yorumlanması işine bırakır. Basit veri türü desteği genellikle dizeler, tamsayılar, JSON ve ikili değerleri içerir.
Pek çok kullanım durumu için bu iyi çalışıyor, ancak bazen verilere biraz daha ayrıntılı bir erişim yararlı oluyor.Örneğin, Redis, aşağıdaki veri değeri türlerini desteklemektedir:
-
Dizgi
-
Liste
-
Set
-
Sıralama
-
Hash maps
-
Bit dizileri
-
Hyperlog günlükleri
değer aralıklarını eşleştirmek için sorgulanır - tarihe göre sıralanmış bir değer endeksini sorgulamak gibi, daktilo verilerinin bir alt kümesini aramada çok yararlıdır.
Verilerle çalışma
Redis, bir okuma-değiştirme-güncelleme (RMU) adımları kümesi oluşturmak zorunda kalmadan doğrudan anahtar değerlerini artırmak ve azaltmak için işlemleri içerir. Bunu, başka bir uygulamanın bir güncelleme sırasında değeri değiştirmesini sağlamak için tek bir işlemde yapabilirsiniz. Bu veri türüne özgü işlemler arasında, öğeleri listelere ekleme ve bunlara liste ve kümeler kaldırma da dahildir.
Redis ZRANGEBYLEX komutunu kullanarak bir uygulamanın kullanıcı arabiriminde otomatik tamamlama işlevleri de sağlayabilirsiniz. Bu komut kısmen bir dizgeyle eşleşen bir dizi anahtar alır. Yani, Redis üzerine kurulmuş bir uygulamanın arama çubuğuna "NoSQL for" yazarsanız, "NoSQL For Aumers" önerisini görürsünüz. "
Redis'in Değerlendirilmesi
Redis, hafif ama keyifli bir anahtar değer mağazası olma konusunda gurur duyuyor. Başlangıçta bir bellek içi anahtar değer mağazası olacak şekilde tasarlandı, ancak şimdi disk tabanlı veri depolama özelliklerine sahip.
Redis'i, AOF (yalnızca dosya ekleme) modunu etkinleştirerek ve her sorguda verileri zorlamak için Redis'e talimat vererek (zorla fsync fışkırma olarak bilinir) verileri korumak için kullanabilirsiniz. AOF elbette yazmaları yavaşlatır, ancak veriler için daha yüksek bir dayanıklılık düzeyi sağlar. Yine de bir saniye kadar komutları kaybetmenin mümkün olduğunu unutmayın.
Ayrıca Redis, kısa bir süre önce kümeleme için destek ekledi. Aslında, bu yazı hazırlanırken Redis'in kümeleme desteği beta test aşamasındadır. Neyse ki, Redis, doğrudan istemcinin yazmadığı özel anahtarlar ve köleler için ustalarla paylaşılmayan bir küme modeli kullanır; sadece usta öyle yapıyor. Paylaşımsız kümeleme sağlanması, Redis'in tüm kopyalara yazılmasına izin veren veritabanlarından daha güvenilir kümeleme uygulamasını kolaylaştırmalıdır.
Başka bir veritabanının önünde çok hızlı, bellek içi önbellek katmanı isterseniz - MongoDB veya Riak Redis ile yaygın olarak kullanılır - daha sonra Redis'i bir seçenek olarak değerlendirin. Kümelenme ve veri dayanıklılığı için destek geliştikçe, belki de Redis diğer arka uç veritabanlarından geride kalabilir.