Veri bölümleme stratejileri (Azure ile gerçek hayatta bulut uygulamaları oluşturma)
Azure e-book Ile gerçek dünyada bulut uygulamaları oluşturma , Scott Guthrie tarafından geliştirilen bir sunuyu temel alır. Bulut için Web Apps 'i başarılı bir şekilde geliştirmeye yardımcı olabilecek 13 desen ve uygulamaları açıklar. Seriler hakkında daha fazla bilgi için ilk bölümebakın.
Daha önce, Web sunucuları ekleyerek ve kaldırarak bir bulut uygulamasının Web katmanını ölçeklendirmenin ne kadar kolay olduğunu gördük. Ancak bunların hepsi aynı veri deposuna geçerse, uygulamanızın performans sorunu ön uca arka uca, veri katmanı da ölçeklenir. Bu bölümde, verileri birden çok ilişkisel veritabanına bölümleyerek veya ilişkisel veritabanı depolamayı diğer veri depolama seçenekleriyle birleştirerek veri katmanınızı ölçeklenebilir hale getirme konusuna bakacağız.
Bölümleme şemasının ayarlanması, daha önce bahsedilen aynı nedene göre en iyi şekilde yapılır: bir uygulama üretim aşamasında olduktan sonra veri depolama stratejinizi değiştirmek çok zordur. Farklı yaklaşımlar hakkında daha fazla bilgi sahibi olmanız durumunda uygulamanızın verileri ve veri erişim kodunu yeniden görüntülerken uygulamanız kilitlenirse veya uzun süre geçtiğinde bir "Twitter" geçirmenize gerek kalmaktan kaçınabilirsiniz.
Üç veri depolama alanı
Bölümleme stratejisi gerekip gerekmediğini ve ne olması gerektiğini belirlemek için verileriniz hakkında üç soruyu göz önünde bulundurun:
- Hacim: sonunda ne kadar veri depolayacaksınız? Birkaç gigabayt mı? Birkaç yüz gigabayt mı? Terabayt? Petabaytlarca?
- Hız: verilerinizin ne kadar büyüeceği hız nedir? Çok fazla veri oluşturmamayan bir iç uygulama mı? Müşterilerin resimleri ve videoları karşıya yüklemesini sağlayacak bir dış uygulama mı?
- Çeşitli: hangi veri türlerini depolayacaksınız? İlişkisel, görüntüler, anahtar-değer çiftleri, sosyal grafikler?
Çok miktarda hacim, hız veya çeşitli özellikler olacağını düşünüyorsanız, uygulamanızın büyüdükçe ne tür bölümleme şemasının etkili ve etkili bir şekilde ölçeklenebileceğini dikkatlice düşünmeniz ve herhangi bir performans sorunu yaşanmamasını sağlamak zorunda kalmazsınız.
Bölümlemeye yönelik temel olarak üç yaklaşım vardır:
- Dikey bölümleme
- Yatay bölümleme
- Karma bölümlendirme
Dikey bölümleme
Dikey bağlantı noktası, tabloyu sütunlara göre bölmek gibidir: bir sütun kümesi bir veri deposuna gider ve başka bir sütun kümesi farklı bir veri deposuna gider.
Örneğin, uygulamamın görüntüler dahil olmak üzere insanlarla veri depoladığını varsayalım:
Bu verileri bir tablo olarak temsil ettiğinizde ve verilerin farklı varicilerine baktığımızda, sol taraftaki üç sütunun ilişkisel bir veritabanı tarafından etkili bir şekilde depolanabilecek dize verilerine sahip olduğunu, sağdaki iki sütunun ise c 'nin temel aldığı bayt dizileri olduğunu görebilirsiniz. görüntü dosyalarından ası. Görüntü dosyası verilerinin ilişkisel bir veritabanında depolanması mümkündür ve bu, verileri dosya sistemine kaydetmek istemediklerinden çok sayıda kişi tarafından yapılır. Gerekli veri birimlerini depolayan bir dosya sistemine sahip olmayabilir veya ayrı bir yedekleme ve geri yükleme sistemini yönetmek istemeiyor olabilir. Bu yaklaşım, şirket içi veritabanları ve bulut veritabanlarındaki küçük miktarlarda veri için iyi sonuç verir. Şirket içi ortamda, yalnızca DBA 'nın her şeyi ele geçirmesine olanak daha kolay olabilir.
Ancak, bir bulut veritabanında, depolama görece pahalıdır ve yüksek miktarda görüntü, veritabanının boyutunu verimli bir şekilde çalışabilecek limitlerin ötesinde büyütebilirler. Verileri dikey olarak bölümleyerek bu sorunları ele alabilir. Bu, veri tablonuzdaki her bir sütun için en uygun veri deposunu seçtiğiniz anlamına gelir. Bu örnek için en iyi şekilde çalışmayabilir dize verilerini bir ilişkisel veritabanına ve BLOB depolamadaki görüntülere yerleştirmeye yöneliktir.
Dosya sunucularını ayarlama veya ilişkisel veritabanının dışında depolanan verilerin yedeklenmesini ve geri yüklenmesini yönetme konusunda endişelenmeniz olmadığından, görüntüleri bir veritabanı yerine blob depolamada depolamak, bulutta daha pratik bir şirket içi ortamdır. Bu, sizin için blob Storage hizmeti tarafından otomatik olarak gerçekleştirilir.
Bu, çözümü gidermeye uygulanan bölümlendirme yaklaşımına sahiptir ve BLOB depolamabölümünde buna ilişkin koda bakacağız. Bu bölümleme şeması olmadan ve ortalama bir görüntü boyutu olan 3 megabayt varsayıldığında, BT uygulamasının yalnızca en fazla 150 gigabayt veritabanı boyutunu vurmadan 40.000 görev depolayabilmesini sağlayabilecektir. Görüntüler kaldırıldıktan sonra, veritabanı birçok görev için 10 kez veri saklayabilir; bir yatay bölümleme şeması uygulamayı düşünmek zorunda bırakmadan önce çok daha uzun bir süre izleyebilirsiniz. Uygulama ölçeklenirken, depolama gereksinimlerinizin toplu olarak çok pahalı BLOB depolama alanına gittiğinden, harcamalar daha yavaş büyütüyor.
Yatay bölümleme (parçalama)
Yatay bağlantı noktası, tabloyu satırlara göre bölmek gibidir: bir dizi satır bir veri deposuna gider ve başka bir satır kümesi farklı bir veri deposuna gider.
Aynı veri kümesi verildiğinde, farklı veritabanlarındaki farklı müşteri adı aralıklarını depolamak başka bir seçenektir.
Etkin noktaları önlemek için verilerin eşit bir şekilde dağıtıldığından emin olmak için, parçalara ayırma düzeniniz hakkında çok dikkatli olmak istiyorsunuz. Son adın ilk harfini kullanan bu basit örnek, çok sayıda kişinin belirli ortak harflerle başlayan son adlara sahip olması nedeniyle bu gereksinimi karşılamaz. Tablo boyutu sınırlamalarından daha önceki bir deyişle, bazı veritabanlarının çok büyük olduğu, ancak küçük bir süre içinde kalacağından, bu işlem bekleyebilir.
Yatay bölümlemenin aşağı bir kısmı verilerin tamamında sorgu yapmak zor olabilir. Bu örnekte, uygulama tarafından depolanan tüm verileri almak için bir sorgunun en fazla 26 farklı veritabanından çizimi olması gerekir.
Karma bölümlendirme
Dikey ve yatay bölümleme birleştirebilirsiniz. Örneğin, örnek verilerde görüntüleri BLOB depolama alanında saklayabilir ve dize verilerini yatay olarak bölümleyebilirsiniz.
Üretim uygulamasını bölümlendirme
Kavramsal olarak, bölümleme şemasının nasıl çalıştığını görmek kolaydır, ancak herhangi bir bölümleme şeması kod karmaşıklığını artırır ve ilgilenmeniz gereken birçok yeni karmaşıklıkları tanıtır. Görüntüleri blob depolamaya taşıyorsanız, depolama hizmeti çalışmıyor ne olur? Blob güvenliğini nasıl işleyirsiniz? Veritabanı ve BLOB depolama eşitlenmemiş olduğunda ne olur? Parçalayorsanız, tüm veritabanlarına ilişkin sorgulamayı nasıl işleyeceğinizi istersiniz?
Bu karmaşıklıklar, üretime geçmeden önce bunları planlarken planlama yaptığınız sürece yönetilebilir. Bunu yapması istemeyen birçok kişi daha sonra sahip olurlar. Müşteri danışmanımız ekibi (CAT) ekibimiz, uygulamaları gerçekten büyük bir şekilde çalıştıkları müşterilerin bir ayda bir kez geçen ve bu planlamayı yapamadığımızdan, bu telefon görüşmelerini alır. Ve şöyle bir şey söyler: "yardım! Her şeyi tek bir veri deposuna yerleştirdim ve 45 gün içinde, boş alan kalmadı! " Veri deponuza nasıl erişileceğiyle ilgili çok sayıda iş mantığı varsa ve uygulamanızı kullanan müşteriler varsa, geçiş sırasında bir gün için uygun bir zaman kalmaz. Müşterinin verilerini bir süre boyunca bir süre boyunca bölümlendirmeye yardımcı olmak için hercuyalın çabalarıyla devam ediyoruz. Bu çok heyecan verici ve çok Kordur, ancak bunu önlemek istediğiniz bir şey değildir! Uygulamanın daha sonra büyümesi durumunda, bu ön ödemeli ve uygulamanızla tümleştirilmesi, yaşamınızı çok daha kolay hale getirir.
Özet
Etkili bölümleme şeması, bulut uygulamanızın performans sorunlarını gidermek zorunda kalmadan buluttaki verilerin petabaytlarca ölçeklendirilmesini sağlayabilir. Uygulamayı şirket içi bir veri merkezinde çalıştırıyorsanız, büyük ölçekli makinelere veya kapsamlı altyapıya yönelik ön ödeme yapmak zorunda kalmazsınız. Bulutta, ihtiyacınız olan kapasiteyi artımlı olarak ekleyebilir ve yalnızca kullandığınızda kullandığınız kadar ödeyerek ödeme yaparsınız.
Sonraki bölümde , BT uygulamasının, blob depolamada resimleri depolayarak dikey bölümleme uygulayıp uygulamadığını öğreneceğiz.
Kaynaklar
Bölümleme stratejileri hakkında daha fazla bilgi için aşağıdaki kaynaklara bakın.
Belgelerle
- Windows Azure Cloud Services büyük ölçekli hizmetleri tasarlamak Için En Iyi uygulamalar. Simms ve Michael Thomassy ' i Işaretleyen Teknik İnceleme.
- Microsoft düzenleri ve uygulamalar-bulut tasarım desenleri. Bkz. veri bölümleme kılavuzu, parçalı model.
Videolar:
- Failsafe: ölçeklenebilir, dayanıklı Cloud Services oluşturma. Ulrich Homann, Marc Mercuri ve Mark Simms ile dokuz bölümden oluşan seriler. , Microsoft Müşteri danışmanlık ekibi (CAT) deneyiminden gerçek müşterilerle çekilen hikayelerle, yüksek düzeyde kavramlar ve mimari ilkeleri çok erişilebilir ve ilginç bir şekilde sunar. Bölüm 7 ' de bölümlendirme tartışmasına bakın.
- Oluşturma büyük: Windows Azure müşterileri-bölüm ı 'den öğrenilen dersler. Simms 'yi işaretlemek, bölüm düzenlerini, parçalama stratejilerini, parçalara ayırma ve SQL veritabanı federasyonlarını 19:49 adresinden başlayarak anlatmaktadır. Failsafe serisine benzer ancak daha fazla nasıl yapılır ayrıntılarına gider.
Örnek kod: