Veri bölümleme önerileri
Bu Azure İyi Tasarlanmış Çerçeve Güvenilirliği denetim listesi önerisi için geçerlidir:
RE:06 | Uygulama, veri ve altyapı düzeylerinde zamanında ve güvenilir bir ölçeklendirme stratejisi uygulayın. |
---|
İlgili kılavuz: Ölçeklendirme
Bu kılavuzda, dağıttığınız veritabanı ve veri depolama teknolojisi için veri bölümleme stratejisi tasarlama önerileri açıklanmaktadır. Bu strateji, veri varlıklarınızın güvenilirliğini artırmanıza yardımcı olur.
Temel tasarım stratejileri
Birçok büyük ölçekli çözümde bölümler verileri ayrı ayrı yönetilebilmeleri ve erişilebilmeleri için bölmek için kullanılır. Verilerin bölümlenmesi ölçeklenebilirliği artırır, çekişmesini azaltır ve performansı iyileştirir. Verileri kullanım düzenine göre bölmek için veri bölümlemeyi uygulayın. Örneğin, eski verileri ucuz veri depolama alanında arşivleyebilirsiniz. Avantajları en üst düzeye çıkarmak ve olumsuz etkileri en aza indirmek için bölümleme stratejinizi dikkatle seçin.
Not
Bu makalede bölümleme terimi, verileri fiziksel olarak ayrı veri depolarına bölme işlemi anlamına gelir. SQL Server tablo bölümlemesinden farklıdır.
Verileri şu şekilde bölümleyebilirsiniz:
Ölçeklenebilirliği geliştirme. Tek bir veritabanı sisteminin ölçeğini artırdığınızda, veritabanı sonunda fiziksel donanım sınırına ulaşır. Verileri birden çok bölüme bölerseniz ve her bölüm ayrı bir sunucuda barındırılırsa sistemin ölçeğini neredeyse süresiz olarak genişletebilirsiniz.
Performansı geliştirme. Her bölümde veri erişim işlemleri, bölümlenmemiş verilerle karşılaştırıldığında daha küçük bir veri hacmi üzerinden gerçekleştirilir. Sisteminizi daha verimli hale getirmek için verileri bölümleme. Birden çok bölümü etkileyen işlemler paralel çalıştırılabilir.
Güvenliği geliştirme. Bazı durumlarda, hassas ve duyarsız verileri farklı bölümlere ayırabilir ve hassas verilere farklı güvenlik denetimleri uygulayabilirsiniz.
İşletimsel esneklik sağlama. İşlemlerde ince ayar yapmak, yönetim verimliliğini en üst düzeye çıkarmak ve maliyeti en aza indirmek için verileri bölümleyebilirsiniz. Örneğin, her bölümdeki verilerin önemine bağlı olarak yönetim, izleme, yedekleme ve geri yükleme ve diğer yönetim görevlerine yönelik stratejiler tanımlayabilirsiniz.
Veri deposunu kullanım düzeniyle eşleştirme. Her bölümü, veri deposunun sunduğu maliyete ve yerleşik özelliklere göre farklı bir veri deposu türüne dağıtabilirsiniz. Örneğin, büyük ikili verileri blob depolama alanında depolayabilir ve yapılandırılmış verileri bir belge veritabanında depolayabilirsiniz. Daha fazla bilgi için bkz . Veri deposu modellerini anlama.
Kullanılabilirliği geliştirme. Tek bir hata noktasını önlemek için verileri birden çok sunucu arasında ayırabilirsiniz. Bir örnek başarısız olursa, yalnızca bu bölümdeki veriler kullanılamaz. İşlemler diğer bölümlerde devam eder. Yerleşik yedeklilikleri olduğundan, yönetilen hizmet olarak platform (PaaS) veri depoları için bu konu daha az ilgilidir.
Doğru bölümleme stratejisini seçin
Verileri bölümlemeye yönelik üç tipik strateji vardır:
Yatay bölümleme (çoğunlukla parçalama olarak adlandırılır). Bu stratejide her bölüm ayrı bir veri deposudur, ancak tüm bölümler aynı şemaya sahiptir. Her bölüm parça olarak bilinir ve müşteri siparişleri kümesi gibi verilerin bir alt kümesini tutar.
Dikey bölümleme. Bu stratejide, her bölüm veri deposundaki öğelere ilişkin alanların bir alt kümesini barındırır. Alanlar kendi kullanım düzenlerine göre bölünmüştür. Örneğin, sık erişilen alanlar bir dikey bölüme yerleştirilirken daha az erişilen alanlar başka bir dikey bölüme yerleştirilebilir.
İşlevsel bölümleme. Bu stratejide veriler, sistemdeki her sınırlanmış bağlamın verileri nasıl kullandığına göre toplanır. Örneğin, bir e-ticaret sistemi fatura verilerini bir bölümde, ürün envanteri verilerini ise başka bir bölümde depolayabilir.
Bölümleme şeması tasarlarken bu stratejileri birleştirmeyi göz önünde bulundurun. Örneğin, verileri parçalara bölebilir ve ardından her parçadaki verileri alt bölümlere ayırmak için dikey bölümleme kullanabilirsiniz.
Yatay bölümleme (parçalama)
Aşağıdaki görüntüde yatay bölümleme veya parçalama örneği gösterilmektedir. Bu örnek, ürün envanteri verilerini ürün anahtarını temel alan parçalara böler. Her parça, alfabetik olarak düzenlenmiş birbirini takip eden bir parça anahtarı aralığındaki (A-G ve H-Z) verileri içerir. Parçalama gerçekleştirdiğinizde, yükü daha fazla bilgisayara yayar ve bu da çekişmesini azaltır ve performansı artırır.
En önemli faktör, seçtiğiniz parçalama anahtarıdır. Sistem çalışmaya başladıktan sonra anahtarı değiştirmek zor olabilir. Anahtar, iş yükünü parçalara mümkün olduğunca eşit bir şekilde yaymak için verilerin bölümlendiğinden emin olmalıdır.
Parçaların aynı boyutta olması gerekmez. İstek sayısını dengelemek daha önemlidir. Bazı parçalar büyük olabilir, ancak parçadaki her öğenin erişim işlemi sayısı düşüktür. Diğer parçalar daha küçük olabilir, ancak parçadaki her öğeye daha sık erişilir. Veri deposunun kapasite ve işleme kaynakları açısından tek bir parçanın ölçek sınırlarını aşmadığından emin olmak da önemlidir.
Performansı ve kullanılabilirliği etkileyebilecek sık erişimli bölümler oluşturmaktan kaçının. Örneğin, bir müşterinin adının ilk harfini kullanırsanız, bazı harfler diğerlerinden daha yaygın olduğundan dengesiz bir dağıtım oluşturabilir. Bunun yerine, verileri bölümler arasında eşit olarak dağıtmak için bir müşteri tanımlayıcı karması kullanın.
Gelecekteki büyük parçaları bölme gereksinimini en aza indiren bir parçalama anahtarı seçin, küçük parçaları daha büyük bölümler halinde birleştirin veya şemayı değiştirin. Bu işlemler zaman alır ve bir veya daha fazla parçanın çevrimdışı olmasını gerektirebilir.
Parçalar çoğaltılırsa, bazıları bölünürken, birleştirilirken veya yeniden yapılandırılırken bazı çoğaltmaları çevrimiçi tutabilirsiniz. Ancak, sistem yeniden yapılandırma sırasında gerçekleştirilebilecek işlemleri sınırlayabilir. Örneğin, veri tutarsızlıklarını önlemek için çoğaltmalardaki veriler salt okunur olarak işaretlenebilir.
Daha fazla bilgi için bkz. Parçalama düzeni.
Dikey bölümleme
Dikey bölümleme için en yaygın kullanım, sık erişilen öğelerin getirilmesiyle ilişkili G/Ç ve performans maliyetlerini azaltmaktır. Aşağıdaki görüntüde dikey bölümleme örneği gösterilmektedir. Bu örnekte, bir öğenin farklı özellikleri farklı bölümlerde depolanır. Bir bölümde ürün adı, açıklama ve fiyat gibi daha sık erişilen veriler bulunur. Başka bir bölümde stok sayısı ve son sipariş tarihi de dahil olmak üzere envanter verileri bulunur.
Bu örnekte uygulama, ürün ayrıntılarını müşterilere gösterdiğinde ürün adını, açıklamasını ve fiyatını düzenli olarak sorgular. Bu iki öğe yaygın olarak birlikte kullanıldığından hisse senedi sayısı ve son sipariş tarihi ayrı bir bölümdedir.
Dikey bölümlemenin aşağıdaki avantajlarına bakın:
Görece yavaş hareket eden verileri (ürün adı, açıklama ve fiyat) daha dinamik verilerden (hisse senedi düzeyi ve son sipariş tarihi) ayırabilirsiniz. Yavaş taşınan veriler, bir uygulamanın bellekte önbelleğe almak için iyi bir adaydır.
Ek güvenlik denetimleriyle hassas verileri ayrı bir bölümde depolayabilirsiniz.
Dikey bölümleme, gereken eşzamanlı erişim miktarını azaltabilir.
Dikey bölümleme veri deposunda varlık düzeyinde çalışır; varlığı kısmen normalleştirerek bunu geniş bir öğeden bir dizi dar öğeye böler. HBase ve Cassandra gibi sütun odaklı veri depoları için idealdir. Sütun koleksiyonundaki verilerin değişme olasılığı düşükse SQL Server'da sütun depolarını kullanmayı göz önünde bulundurun.
İşlevsel bölümleme
Bir uygulamadaki her ayrı iş alanı için sınırlanmış bağlam tanımlanabildiğinde, işlevsel bölümleme yalıtımı ve veri erişim performansını iyileştirebilir. İşlevsel bölümlemenin bir diğer yaygın kullanımı da, okuma-yazma verilerini salt okunur verilerden ayırmaktır. Aşağıdaki görüntüde, müşteri verilerinden ayrılmış envanter verilerinin yer aldığı işlevsel bölümlemeye genel bir bakış gösterilmektedir.
Bu bölümleme stratejisi sistemin farklı parçaları arasında veri erişim çekişmesini azaltmaya yardımcı olur.
Ölçeklenebilirlik için bölümler tasarlama
Her bölümün boyutunu ve iş yükünü göz önünde bulundurmak çok önemlidir. Maksimum ölçeklenebilirlik elde etmek için verilerin dağıtıldığı şekilde bunları dengeleyin. Ancak, tek bir bölüm deposunun ölçeklendirme sınırlarını aşmaması için verileri bölümlemeniz de gerekir.
Bölümleri ölçeklenebilirlik için tasarlarken şu adımları izleyin:
Her sorgunun döndürdüğü sonuç kümesinin boyutu, erişim sıklığı, doğal gecikme süresi ve sunucu tarafı işlem gereksinimleri gibi veri erişim desenlerini anlamak için uygulamayı analiz edin. Çoğu durumda, birkaç ana varlık işleme kaynaklarının çoğunu talep eder.
Veri boyutu ve iş yükü gibi geçerli ve gelecekteki ölçeklenebilirlik hedeflerini belirlemek için bu analizi kullanın. Ardından, ölçeklendirme hedefine uygun şekilde verileri bölümler arasında dağıtın. Yatay bölümleme için doğru parça anahtarını seçerek eşit dağıtım sağlayın. Daha fazla bilgi için bkz. Parçalama düzeni.
Her bölümün, veri boyutu ve aktarım hızı açısından ölçeklenebilirlik gereksinimlerini karşılamak için yeterli kaynağa sahip olduğundan emin olun. Veri deposuna bağlı olarak, her bölüm için depolama alanı, işlem gücü veya ağ bant genişliği miktarıyla ilgili bir sınır olabilir. Gereksinimlerin bu sınırları aşma olasılığı varsa bölümleme stratejinizi geliştirmeniz veya verileri daha fazla bölmeniz gerekebilir. İki veya daha fazla stratejiyi birleştirmeniz gerekebilir.
Verilerin beklendiği gibi dağıtıldığını ve bölümlerin yükü işleyebildiğini doğrulamak için sistemi izleyin. Gerçek kullanım her zaman bir analizin tahminleriyle eşleşmez. Gerekli bakiyeyi sağlamak için bölümleri yeniden dengelemeniz veya sistemin bazı bölümlerini yeniden tasarlamanız gerekebilir.
Bazı bulut ortamları altyapı sınırlarına göre kaynak ayırır. Seçtiğiniz sınırın sınırlarının veri hacminde, veri depolamada, işlem gücünde ve bant genişliğinde beklenen büyüme için yeterli alan sağladığından emin olun.
Örneğin, Azure Tablo Depolama'yı kullanıyorsanız, tek bir bölümün belirli bir süre içinde işleyebileceği istek hacminin sınırı vardır. Daha fazla bilgi için bkz . Standart depolama hesapları için ölçeklenebilirlik ve performans hedefleri. Meşgul bir parça, tek bir bölümün işleyebileceğinden daha fazla kaynak gerektirebilir. Yükü yaymak için parçanın yeniden bölümlenmesi gerekebilir. Bu tabloların toplam boyutu veya aktarım hızı bir depolama hesabının kapasitesini aşıyorsa, daha fazla depolama hesabı oluşturmanız ve tabloları bu hesaplara yaymanız gerekebilir.
Sorgu performansı için bölümler tasarlama
Küçük veri kümeleri kullanarak ve paralel sorgular çalıştırarak sorgu performansını artırabilirsiniz. Her bölüm, veri kümesinin tamamının küçük bir bölümünü içermelidir. Hacmin böyle azaltılması sorguların performansını geliştirebilir. Ancak bölümleme, uygun veritabanı tasarımına ve yapılandırmasına alternatif değildir. Gerekli dizinleri uyguladığınıza emin olun.
Sorgu performansı için bölümler tasarlarken şu adımları izleyin:
Uygulama gereksinimlerini ve performansını inceleyin.
Her zaman hızlı bir şekilde gerçekleştirmesi gereken kritik sorguları belirlemek için iş gereksinimlerini kullanın.
Yavaş performans gösteren sorguları belirlemek için sistemi izleyin.
En sık gerçekleştirdiği sorguları belirleyin. Tek bir sorgu en düşük maliyete sahip olsa bile, kümülatif kaynak tüketimi önemli olabilir.
Yavaş performansa neden olan verileri bölümleyin.
Sorgu yanıt süresinin hedefin dışına çıkmaması için her bölümün boyutunu sınırlandırın.
Yatay bölümleme kullanıyorsanız, uygulamanın uygun bölümü kolayca seçebilmesi için parça anahtarını tasarlayabilirsiniz. Bu belirtim, sorgunun her bölümü taramasını engeller.
Bölümün konumu üzerinde düşünün. Verileri coğrafi olarak erişen uygulamalara ve kullanıcılara yakın olan bölümlerde tutmaya çalışın.
Bir varlığın aktarım hızı ve sorgu performansı gereksinimleri varsa, bu varlığı temel alan işlevsel bölümleme kullanın. Bu ayırma yine de gereksinimleri karşılamıyorsa yatay bölümleme ekleyebilirsiniz. Tek bir bölümleme stratejisi genellikle yeterlidir, ancak bazı durumlarda her iki stratejiyi de birleştirmek daha verimlidir.
Performansı geliştirmek için bölümler arasında sorguları paralel olarak çalıştırın.
Kullanılabilirlik için bölüm tasarlama
Uygulamaların kullanılabilirliğini geliştirmek için verileri bölümleme. Bölümleme, tüm veri kümesinin tek bir hata noktasına sahip olmamasını sağlar ve veri kümesinin tek tek alt kümelerini bağımsız olarak yönetebilirsiniz.
Kullanılabilirliği etkileyen aşağıdaki faktörleri göz önünde bulundurun:
Verilerin kritikliğini belirleyin. İşlemler gibi kritik iş verilerini ve günlük dosyaları gibi daha az kritik işletimsel verileri tanımlayın.
Kritik verileri yüksek oranda kullanılabilir bölümlerde depolayın ve uygun bir yedekleme planı oluşturun.
Farklı veri kümeleri için ayrı yönetim ve izleme yordamları oluşturun.
Aynı sıklıkta yedeklenebilmesi için aynı kritiklik düzeyine sahip verileri aynı bölüme yerleştirin. Örneğin, işlem verilerini tutan bölümleri günlük veya izleme bilgilerini tutan bölümlerden daha sık yedeklemeniz gerekebilir.
Tek tek bölümleri yönetme. Bağımsız yönetim ve bakımı desteklemek için bölümler tasarlar. Bu uygulama çeşitli avantajlar sağlar, örneğin:
Bir bölüm başarısız olursa, diğer bölümlerdeki verilere erişen uygulamalar olmadan bağımsız olarak kurtarılabilir.
Verileri coğrafi alana göre bölümleme, zamanlanmış bakım görevlerinin her konum için yoğun olmayan saatlerde gerçekleşmesini sağlar. Bölümlerin bu süre boyunca planlı bakımın tamamlanmasını engelleyecek kadar büyük olmadığından emin olun.
Kritik verileri bölümler arasında çoğaltma. Bu strateji kullanılabilirliği ve performansı artırır ancak tutarlılık sorunlarına da neden olabilir. Değişiklikleri her çoğaltmayla eşitlemek zaman alır. Eşitleme sırasında farklı bölümler farklı veri değerleri içerir.
Uygulama kodunu bölümleri kullanacak şekilde iyileştirme
Bölümleme, sisteminizin tasarımına ve geliştirilmesine karmaşıklık ekler. Sistem başlangıçta yalnızca tek bir bölüm içerse bile verileri sistem tasarımınızın temel bir parçası olarak bölümleme. Bölümleme işlemini bir sonradan ele alırsanız, zaten bakım için canlı bir sisteminiz olduğundan bu zor olabilir. Aşağıdakiler olabilir:
Veri erişim mantığını değiştirmeniz gerekir.
Bölümler arasında dağıtmak için büyük miktarlardaki mevcut verileri geçirmeniz gerekir.
Kullanıcılar geçiş sırasında sistemi kullanmaya devam etmek beklediğinden zorluklarla karşılaşın.
Bazı durumlarda, ilk veri kümesi küçük olduğundan ve tek bir sunucu bunu kolayca işleyebildiğinden bölümleme önemli değildir. Bazı iş yükleri bölümler olmadan gidebilir, ancak kullanıcı sayısı arttıkça birçok ticari sistemin genişlemesi gerekir.
Bazı küçük veri depoları bölümlemeden de yararlanıyor. Örneğin, yüzlerce eşzamanlı istemci küçük bir veri deposuna erişebilir. Bu durumda verileri bölümlere ayırırsanız, çekişme azaltmaya ve aktarım hızını geliştirmeye yardımcı olabilir.
Veri bölümleme düzeni tasarlarken aşağıdaki noktaları göz önünde bulundurun:
Bölümler arası veri erişim işlemlerini en aza indirin. Bölümler arası veri erişim işlemlerini en aza indirmek için en yaygın veritabanı işlemlerinin verilerini bir bölümde birlikte tutmaya çalışın. Tek bir bölüm içinde sorgulamak yerine bölümler arasında sorgulamak daha fazla zaman alabilir. Ancak bir sorgu kümesi için bölümlerin iyileştirilmesi diğer sorgu kümelerini olumsuz etkileyebilir. Bölümler arasında sorgulamanız gerekiyorsa paralel sorgular çalıştırarak ve sonuçları uygulama içinde toplayarak sorgu süresini en aza indirin. Bazı durumlarda, örneğin bir sorgunun sonucu sonraki sorguda kullanılıyorsa bu yaklaşımı kullanamazsınız.
Statik başvuru verilerini çoğaltma. Sorgular posta kodu tabloları veya ürün listeleri gibi nispeten statik başvuru verileri kullanıyorsa, farklı bölümlerdeki ayrı arama işlemlerini azaltmak için bu verileri tüm bölümlerde çoğaltmayı göz önünde bulundurun. Bu yaklaşım, başvuru verilerinin sistemin tamamından yoğun trafiğe sahip sık erişimli bir veri kümesi olma olasılığını da azaltabilir. Başvuru verilerinde yapılan değişikliklerin eşitlenmesiyle ilişkili ek maliyetler vardır.
Bölümler arası birleştirmeleri en aza indirin. Mümkünse, dikey ve işlevsel bölümler arasında başvurusal bütünlük gereksinimlerini en alt düzeyde tutun. Bu şemalarda uygulama, bölümler arasında bilgi tutarlılığını korumakla sorumludur. Uygulama genellikle bir anahtarı ve ardından bir yabancı anahtarı temel alan ardışık sorgular gerçekleştirdiğinden, birden çok bölümdeki verileri birleştiren sorgular verimsizdir. Bunun yerine, ilgili verileri çoğaltmayı veya normalleştirmelerini kaldırmayı göz önünde bulundurun. Bölümler arası birleştirmeler gerekiyorsa, bölümler üzerinde paralel sorgular çalıştırın ve verileri uygulama içinde birleştirin.
Nihai tutarlılık yaklaşımını benimseyin. Güçlü tutarlılığın bir gereksinim olup olmadığını değerlendirin. Dağıtılmış sistemlerde yaygın bir yaklaşım, nihai tutarlılığı uygulamaktır. Her bölümdeki veriler ayrı olarak güncelleştirilir ve uygulama mantığı güncelleştirmelerin başarıyla tamamlanmasını sağlar. Uygulama mantığı, nihai tutarlı bir işlem çalıştırılırken verilerin sorgulanmasından kaynaklanan tutarsızlıkları da işler.
Sorguların doğru bölümü nasıl bulduğunu göz önünde bulundurun. Sorgunun gerekli verileri bulmak için tüm bölümleri taraması gerekiyorsa, birden çok paralel sorgu çalıştırıldığında bile performansı önemli ölçüde etkiler. Dikey ve işlevsel bölümleme ile sorgular bölümü belirtebilir. Öte yandan, her parça aynı şemaya sahip olduğundan yatay bölümleme bir öğeyi bulma işlemini zorlaştırabilir. Tipik bir çözüm, öğelerin parça konumunu aramak için kullanılan bir haritayı korumaktır. Bu eşlemeyi uygulamanın parçalama mantığına uygulayın. Veri deposu saydam parçalanmayı destekliyorsa veri deposu tarafından da korunabilir.
Parçaları düzenli aralıklarla yeniden dengeler. Yatay bölümleme sayesinde parçaları yeniden dengelemek, verilerin boyuta ve iş yüküne göre eşit bir şekilde dağıtılmasında yardımcı olabilir. Etkin noktaları en aza indirmek, sorgu performansını en üst düzeye çıkarmak ve fiziksel depolama sınırlamalarına geçici bir çözüm bulmak için parçaları yeniden dengeleyin. Bu görev karmaşıktır ve genellikle özel bir araç veya işlem gerektirir.
Bölümleri çoğaltma. Hatalara karşı ek koruma sağlamak için her bölümü çoğaltın. Tek bir çoğaltma başarısız olursa, sorgular çalışan bir kopyaya yönlendirilir.
Ölçeklenebilirliği farklı bir düzeye genişletme. Bölümleme stratejisinin fiziksel sınırlarına ulaşırsanız, ölçeklenebilirliği farklı bir düzeye genişletmeniz gerekebilir. Örneğin bölümleme veritabanı düzeyinde yapılıyorsa, bölümleri birden çok veritabanına yerleştirmeniz veya çoğaltmanız gerekebilir. Bölümleme zaten veritabanı düzeyindeyse ve fiziksel sınırlamalar varsa, bölümleri birden çok barındırma hesabında bulmanız veya çoğaltmanız gerekebilir.
Birden çok bölümdeki verilere erişen işlemlerden kaçının. Bazı veri depoları, yalnızca veriler tek bir bölümde bulunduğunda verileri değiştiren işlemler için işlem tutarlılığı ve bütünlüğü uygular. Birden çok bölümde işlem desteğine ihtiyacınız varsa, çoğu bölümleme sistemi yerel destek sağlamadığından bunu uygulama mantığınızın bir parçası olarak uygulayın.
Tüm veri depoları bazı işletimsel yönetim ve izleme etkinlikleri gerektirir. Bu görevler verileri yüklemeyi, verileri yedeklemeyi ve geri yüklemeyi, verileri yeniden düzenlemeyi ve sistemin doğru ve verimli bir şekilde çalışmasını sağlamayı içerir.
İşletimsel yönetimi etkileyen aşağıdaki faktörleri göz önünde bulundurun:
Veriler bölümlendiğinde uygun yönetim ve işlem görevlerini uygulayın. Bu görevler yedekleme ve geri yüklemeyi, verileri arşivlemeyi, sistemi izlemeyi ve diğer yönetim görevlerini içerebilir. Örneğin, yedekleme ve geri yükleme işlemleri sırasında mantıksal tutarlılığı korumak zor olabilir.
Birden çok bölüme veri yükleyin ve diğer kaynaklardan gelen yeni verileri ekleyin. Bazı araçlar ve yardımcı programlar, verileri doğru bölüme yükleme gibi parçalanmış veri işlemlerini desteklemeyebilir.
Verileri düzenli olarak arşivleyip silin. Bölümlerin aşırı büyümesini önlemek için verileri her ay arşivleyin ve silin. Verileri farklı bir arşiv şemasıyla eşleşecek şekilde dönüştürmeniz gerekebilir.
Veri bütünlüğü sorunlarını bulun. Başka bir bölümdeki eksik bilgilere başvuran bir bölümdeki veriler gibi veri bütünlüğü sorunlarını bulmak için düzenli bir işlem çalıştırmayı göz önünde bulundurun. İşlem, bu sorunları otomatik olarak düzeltmeyi deneyebilir veya el ile gözden geçirmek üzere bir rapor oluşturabilir.
Bölümleri yeniden dengeleme
Sistem olgunlaştıkça bölümleme düzenini ayarlamanız gerekebilir. Örneğin, tek tek bölümler orantısız bir trafik hacmi almaya başlayabilir ve sık erişimli hale gelebilir ve bu da aşırı çekişmeye neden olabilir. Veya bazı bölümlerdeki veri hacmini hafife almış olabilirsiniz ve bu da bölümlerin kapasite sınırlarına yaklaşmasına neden olur.
Azure Cosmos DB gibi bazı veri depoları bölümleri otomatik olarak yeniden dengeleyebilir. Diğer durumlarda bölümleri iki aşamada yeniden dengeleyebilirsiniz:
Yeni bir bölümleme stratejisi belirleyin.
Hangi bölümlerin bölünmesi veya birleştirilmesi gerekiyor?
Yeni bölüm anahtarı nedir?
Verileri eski bölümleme düzeninden yeni bölüm kümesine geçirin.
Çevrimdışı geçiş olarak adlandırılan verileri yeniden yerleştirirken bölümleri kullanılamaz duruma getirmeniz gerekebilir. Veri deposuna bağlı olarak, kullanımda olan bölümler arasında veri geçirebilirsiniz. Bu teknik çevrimiçi geçiş olarak adlandırılır.
Çevrimdışı geçiş
Çevrimdışı geçiş, çekişme oluşma olasılığını azaltır. Çevrimdışı geçiş gerçekleştirmek için:
Bölümü çevrimdışı olarak işaretleyin. Siz taşırken uygulamaların verileri okumaya devam edebilmesi için bir bölümü salt okunur olarak işaretleyebilirsiniz.
Bölme-birleştirme ve verileri yeni bölümlere taşıma.
Verify the data.
Yeni bölümleri çevrimiçine getirin.
Eski bölümü kaldırın.
Çevrimiçi geçiş
Çevrimiçi geçiş, çevrimdışı geçişe kıyasla daha karmaşıktır ancak daha az kesintiye neden olur. İşlem çevrimdışı geçişe benzer, ancak özgün bölümü çevrimdışı olarak işaretlemezsiniz. Geçiş işleminin ayrıntı düzeyine bağlı olarak ( örneğin öğeye göre öğeye ve parçaya göre parçaya göre) bağlı olarak, istemci uygulamalarındaki veri erişim kodunun özgün bölüm ve yeni bölüm olmak üzere iki konumdaki verileri okuması ve yazması gerekebilir.
Azure kolaylaştırma
Aşağıdaki bölümlerde Azure hizmetlerinde depolanan verileri bölümleme önerileri açıklanmaktadır.
Azure SQL Veritabanı'da bölümleme
Tek bir SQL veritabanının içerebileceği veri miktarı sınırlıdır. Aktarım hızı mimari faktörler ve desteklediği eş zamanlı bağlantı sayısıyla sınırlandırılmıştır.
Elastik havuzlar , SQL veritabanı için yatay ölçeklendirmeyi destekler. Verilerinizi birden çok SQL veritabanına yayılmış parçalara bölmek için elastik havuzları kullanın. Ayrıca, veri hacmi arttıkça ve küçülürken parça ekleyebilir veya kaldırabilirsiniz. Elastik havuzlar, yükü veritabanları arasında dağıtarak çekişmelerin azaltılmasına da yardımcı olabilir.
Her parça bir SQL veritabanı olarak uygulanır. Bir parça birden fazla veri kümesini barındırabilir. Her veri kümesine parçacık adı verilir. Her veritabanının içerdiği parçacıklarını açıklayan meta verileri vardır. Parçacık tek bir veri öğesi veya aynı parçacık anahtarını paylaşan bir öğe grubu olabilir. Örneğin, çok kiracılı bir uygulamada, parçacık anahtarı kiracı kimliği olabilir ve bir kiracının tüm verileri aynı parçalı içinde olabilir.
Uygulamalar, bir veri kümesini bir parçacık anahtarıyla ilişkilendirmekle sorumludur. Ayrı bir SQL veritabanı genel parça eşleme yöneticisi işlevi görür. Bu veritabanında sistemdeki tüm parçaların ve parçaçıkların listesi bulunur. Uygulama, parça eşlemesinin bir kopyasını almak için parça eşleme yöneticisi veritabanına bağlanır. Parça eşlemesini yerel olarak önbelleğe alır ve eşlemeyi kullanarak veri isteklerini uygun parçaya yönlendirir. Bu işlevsellik, Java ve .NET için kullanılabilen SQL Veritabanı Elastik Veritabanı özelliğinin istemci kitaplığında yer alan bir dizi API'nin arkasına gizlenir.
Elastik havuzlar hakkında daha fazla bilgi için bkz. SQL Veritabanı ile ölçeği genişletme.
Gecikme süresini azaltmak ve kullanılabilirliği geliştirmek için genel parça eşleme yöneticisi veritabanını çoğaltabilirsiniz. Premium fiyatlandırma katmanlarıyla, verileri farklı bölgelerdeki veritabanlarına sürekli olarak kopyalamak için etkin coğrafi çoğaltmayı yapılandırabilirsiniz.
Alternatif olarak, parça eşleme yöneticisi veritabanını bölgeler arasında çoğaltmak için SQL Veritabanı için SQL Data Sync'i veya Azure Data Factory'yi kullanın. Bu çoğaltma biçimi düzenli aralıklarla çalışır ve parça eşlemesi seyrek değişirse ve premium katmanı gerektirmezse daha uygundur.
Elastik Veritabanı verileri parçacıklara eşlemek ve bunları parçalarda depolamak için iki düzen sağlar:
Liste parça eşlemesi tek bir anahtarı bir parçacıkla ilişkilendirir. Örneğin, çok kiracılı bir sistemde her kiracının verileri benzersiz bir anahtarla ilişkilendirilebilir ve kendi parçacığında depolanabilir. Yalıtımı garanti etmek için her parça kendi parçası içinde tutulabilir.
Bu diyagramın Visio dosyasını indirin.
Aralık parça eşlemesi , bir dizi bitişik anahtar değerini bir parçacıkla ilişkilendirir. Örneğin, her biri kendi anahtarı olan bir kiracı kümesinin verilerini aynı parçacık içinde gruplandırabilirsiniz. Kiracılar veri depolama alanını paylaştığından, ancak daha az yalıtım sağladığından bu düzen liste parça eşlemesinden daha ucuzdur.
Bu diyagramın Visio dosyasını indirin
Tek bir parça, birkaç parçanın verilerini içerebilir. Örneğin, liste parçacıklarını kullanarak bitişik olmayan farklı kiracıların verilerini aynı parçada depolayabilirsiniz. Ayrıca, aralık parçacıklarını ve liste parçacıklarını aynı parçada karıştırabilirsiniz, ancak daha sonra bunlar farklı haritalar aracılığıyla ele alınır. Aşağıdaki diyagramda bu yaklaşım gösterilmektedir:
Bu diyagramın Visio dosyasını indirin.
Elastik havuzlarda, veri hacmi arttıkça ve küçülürken parçaları ekleyebilir ve kaldırabilirsiniz. İstemci uygulamaları parçaları dinamik olarak oluşturabilir ve silebilir ve parça eşleme yöneticisini saydam bir şekilde güncelleştirebilir. Bununla birlikte, parçanın kaldırılması bu parçadaki tüm verilerin de silinmesini gerektiren zararlı bir işlemdir.
Bir uygulamanın bir parçanın iki ayrı parçaya bölünmesi veya parçaların birleştirilmesi gerekiyorsa, bölme birleştirme aracını kullanın. Bu araç bir Azure web hizmeti olarak çalışır ve verileri parçalar arasında güvenli bir şekilde geçirir.
Bölümleme düzeni sisteminizin performansını önemli ölçüde etkileyebilir. Ayrıca parçaların eklenmesi veya kaldırılması ya da verilerin parçalar arasında yeniden bölümlenmesi gereken hızı da etkileyebilir. Aşağıdaki noktalara bir göz atın:
Aynı parçada birlikte kullanılan verileri gruplandırın ve birden çok parçadan verilere erişen işlemlerden kaçının. Parça kendi başına bir SQL veritabanıdır ve işlemler birden çok parçaya eriştiğinde istemci tarafında veritabanları arası birleşimler gerçekleştirilmelidir.
SQL Veritabanı veritabanları arası birleştirmeleri desteklemese de, çok parçalı sorgular gerçekleştirmek için Elastik Veritabanı araçlarını kullanabilirsiniz. Çok parçalı sorgu her veritabanına tek tek sorgular gönderir ve sonuçları birleştirir.
Parçalar arasında bağımlılıkları olmayan bir sistem tasarlama. Bir veritabanındaki bilgi tutarlılığı kısıtlamaları, tetikleyiciler ve saklı yordamlar diğer veritabanındaki nesnelere başvuramaz.
Sorgular tarafından sık kullanılan başvuru verileriniz varsa verileri parçalar arasında çoğaltmayı göz önünde bulundurun. Bu yaklaşım, veritabanları arasında veri birleştirme gereksinimini ortadan kaldırabilir. İdeal olarak, çoğaltma eforunu en aza indirmek ve eskime olasılığını azaltmak için bu tür verilerin statik veya yavaş hareket etmesi gerekir.
Aynı parça eşlemesine ait parçacıklar için aynı şemayı kullanın. Bu kılavuz SQL Veritabanı tarafından zorunlu tutulmaz, ancak her parçanın farklı bir şeması varsa veri yönetimi ve sorgulama karmaşıktır. Bunun yerine, her şema için ayrı parça eşlemeleri oluşturun. Farklı parçalara ait verileri aynı parçada depolayabilirsiniz.
İş mantığınızın işlem gerçekleştirmesi gerekiyorsa verileri aynı parçada depolayın veya nihai tutarlılığı uygulayın. İşlem işlemleri yalnızca parça içindeki veriler için desteklenir, parçalar arasında desteklenmez. İşlemler aynı parçanın parçasıysa parçacıklara yayılabilir.
Parçaları, bu parçalardaki verilere erişen kullanıcıların yakınlarına yerleştirin. Bu strateji gecikmeyi azaltmaya yardımcı olur.
Son derece etkin ve nispeten etkin olmayan parçaların birleşiminden kaçının. Yükü parçalar arasında eşit yaymayı deneyin. Parçalama anahtarlarını karma olarak kullanmanız gerekebilir. Parçaları coğrafi olarak konumlandırıyorsanız, karma anahtarların bu verilere erişen kullanıcıların yakınında depolanan parçalarda tutulan parçalarla eşlendiğinden emin olun.
Azure Blob Depolama'da bölümleme
Blob Depolama ile büyük ikili nesneleri depolayabilirsiniz. Büyük hacimli verileri hızlı bir şekilde karşıya yüklemenizi veya indirmenizi gerektiren senaryolarda blok bloblarını kullanın. Verilerin bölümlerine seri erişim yerine rastgele erişim gerektiren uygulamalar için sayfa bloblarını kullanın.
Her blok blobu veya sayfa blobu, Azure depolama hesabındaki bir kapsayıcıda tutulur. Aynı güvenlik gereksinimlerine sahip ilgili blobları gruplandırmak için kapsayıcıları kullanın. Bu gruplandırma fiziksel değil mantıksaldır. Kapsayıcının içinde, her blobun benzersiz bir adı vardır.
Blob için bölüm anahtarı hesap adı, kapsayıcı adı ve blob adıdır. Bölüm anahtarı, verileri aralıklara bölmek için kullanılır. Bu aralıklar sistem genelinde yük dengelenir. Bloblar, bunlara erişimin ölçeğini genişletmek için birçok sunucuya dağıtılabilir. Tek bir blob yalnızca tek bir sunucu tarafından kullanılabilir.
Adlandırma şemanız zaman damgaları veya sayısal tanımlayıcılar kullanıyorsa, bu durum bir bölüme aşırı trafiğe neden olabilir. Sistemin etkili bir şekilde yük dengelemesini engeller. Örneğin, yyyy-mm-dd gibi bir zaman damgasına sahip bir blob nesnesi kullanan günlük işlemleriniz varsa, bu işlemin tüm trafiği tek bir bölüm sunucusuna gider. Bunun yerine, adın önüne üç basamaklı bir karma ekleyin. Daha fazla bilgi için bkz . Bölüm adlandırma kuralı.
Tek bir blok veya sayfa yazma eylemleri atomiktir, ancak bloklara, sayfalara veya bloblara yayılan işlemler değildir. Bloklar, sayfalar ve bloblar arasında yazma işlemleri gerçekleştirilirken tutarlılık sağlamanız gerekiyorsa, blob kiralama kullanarak bir yazma kilidi açın.
Dikkat edilmesi gereken noktalar
Veri bölümleme, dikkate almanız gereken bazı zorluklara ve karmaşıklıklara neden olur.
Bölümler arasında veri eşitleme bir zorluk haline gelebilir. Bir bölümdeki güncelleştirmelerin veya değişikliklerin diğer bölümlere zamanında ve tutarlı bir şekilde yayıldığından emin olun.
Birden çok bölümün yedeklenip geri yüklenmesini koordine etmeniz gerektiğinde yük devretme ve olağanüstü durum kurtarma işlemleri karmaşık hale gelir. Bazı bölümler veya yedekleri bozulursa veya kullanılamaz durumdaysa veri bütünlüğü sorunları ortaya çıkabilir.
Veri bölümleme, bölümler arasında sorgulama yapmanız gerekiyorsa ve veriler eşit olmayan bir şekilde büyürse bölümleri yeniden dengelediğinizde performansı ve güvenilirliği etkileyebilir.
İlgili bağlantılar
- Ölçeklenebilir bulut veritabanları oluşturma
- Data Factory
- Dizin Tablosu düzeni
- Gerçekleştirilmiş Görünüm deseni
- Ölçeği genişletilen bulut veritabanları arasında veri taşıma
- Elastik veritabanı araçlarını kullanarak çok parçalı sorgulama
- Bölüm adlandırma
- Veri seçeneklerinizi gözden geçirme
- Standart depolama hesapları için ölçeklenebilirlik ve performans hedefleri
- SQL Veritabanı ile ölçeği genişletme
- Parçalama düzeni
- Veri deposu modellerini anlama
- SQL Veritabanı'da birden çok veritabanını yönetmek ve ölçeklendirmek için elastik havuzları kullanma
- Azure SQL Data Sync nedir?
Güvenilirlik denetim listesi
Öneriler kümesinin tamamına bakın.