Veri bölümleme kılavuzu

Azure Blob Storage

Birçok büyük ölçekli çözümde veriler ayrı ayrı yönetilebilen ve erişilebilen bölümlere ayrılır. Bölümleme ölçeklenebilirliği geliştirebilir, çekişmeyi azaltabilir ve performansı iyileştirebilir. Ayrıca verileri kullanım desenine göre bölmek için bir mekanizma sağlar. Örneğin, daha eski verileri daha ucuz veri depolamasında arşivleyebilirsiniz.

Ancak, olumsuz etkileri en aza indirirken avantajları en üst düzeye çıkarmak için bölümleme stratejisi dikkatle seçilmelidir.

Not

Bu makalede bölümleme terimi, verileri fiziksel olarak ayrı veri depolarına bölme işlemi anlamına gelir. Bu, SQL Server tablo bölümleme terimiyle aynı değildir.

Veriler neden bölümlenmeli?

  • Ölçeklenebilirliği geliştirme. Tek bir veritabanı sisteminin ölçeğini büyüttüğünüzde, bu sistem sonunda fiziksel donanımın sınırına ulaşacaktır. Verileri her biri ayrı bir sunucuda barındırılan birden çok bölüme bölerseniz, sistemin ölçeğini neredeyse süresiz olarak genişletebilirsiniz.

  • Performansı geliştirme. Her bölümde veri erişim işlemleri daha küçük bir veri hacmi üzerinde gerçekleşir. Doğru şekilde yapıldığında, bölümleme sisteminizi daha verimli hale getirir. 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. Bölümleme işlemlerin ince ayarını yapmak, yönetim verimliliğini en üst düzeye çıkarmak ve maliyeti en aza indirmek için birçok fırsat sunar. Örneğin, her bölümdeki verilerin önemine bağlı olarak yönetim, izleme, yedekleme, geri yükleme ve diğer idari görevler için farklı stratejiler tanımlayabilirsiniz.

  • Veri deposunu kullanım düzeniyle eşleştirme. Bölümleme sayesinde, veri deposunun maliyetine ve sunduğu yerleşik özelliklere bağlı olarak her bölüm farklı bir veri deposuna dağıtılabilir. Örneğin, büyük ikili veriler blob depolamada depolanabilirken, belge veritabanında daha yapılandırılmış veriler tutulabilir. Bkz. Doğru veri deposunu seçme.

  • Kullanılabilirliği geliştirme. Verilerin birden çok sunucuya ayrılması tek hata noktası sorununu önler. Bir örnek başarısız olursa, yalnızca bu bölümdeki veriler kullanılamaz. Diğer bölümlerdeki işlemler devam edebilir. Yönetilen PaaS veri depoları için bu hizmetler yerleşik yedeklilikle tasarlandığından bu konu daha az ilgilidir.

Bölümleri tasarlama

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 belirli bir müşteri kümesinin tüm siparişleri gibi verilerin belirli 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 sınırlanmış her bağlam tarafından nasıl kullanıldıklarına göre bir araya toplanır. Örneğin, bir e-ticaret sistemi fatura verilerini bir bölümde, ürün envanteri verilerini de başka bir bölümde depolayabilir.

Bu stratejiler birleştirilebilir ve bölümleme şeması tasarlarken bunların tümünü dikkate almanız önerilir. Ö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)

Şekil 1'de yatay bölümleme veya parçalama gösterilmektedir. Bu örnekte, ürün envanter verileri ürün anahtarına göre parçalara bölünmüştür. 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, yükü daha fazla bilgisayara yayarak çekişme oranını azaltır ve performansı artırır.

Verileri bölüm anahtarına göre yatay olarak bölümleme (parçalama)

Şekil 1 - Verileri bölüm anahtarına göre yatay olarak bölümleme (parçalama).

En önemli faktör parçalama anahtarı seçimidir. Sistem çalışmaya başladıktan sonra anahtarı değiştirmek zor olabilir. Anahtarın, iş yükünü parçalar arasında olabildiğince eşit bir şekilde yaymak için verilerin bölümlendiğinden emin olması gerekir.

Parçaların aynı boyutta olması gerekmez. İstek sayısını dengelemek daha önemlidir. Bazı parçalar çok büyük olabilir, ancak her öğenin erişim işlemi sayısı düşüktür. Öte yandan diğer parçalar daha küçüktür ama her öğeye çok daha sık erişiliyordur. Tek bir parçanın veri deposunun ölçek sınırlarını (kapasite ve işleme kaynakları açısından) 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 kullanmak, bazı harfler daha yaygın olduğundan dengesiz bir dağıtıma neden olur. Bunun yerine, verileri bölümler arasında daha eşit dağıtmak için müşteri tanımlayıcısının karması kullanın.

Büyük parçaları bölmek, küçük parçaları daha büyük bölümlere ayırmak veya şemayı değiştirmek için gelecekteki gereksinimleri en aza indiren bir parçalama anahtarı seçin. Bu işlemler fazlasıyla zaman alabilir ve bunları gerçekleştirmek için bir veya birden çok parçayı çevrimdışı bırakmak gerekebilir.

Parçalar çoğaltılırsa, çoğaltmalardan bazıları ayrılır, birleştirilir veya yeniden yapılandırılırken diğerlerini çevrimiçi tutmak mümkün olabilir. Ancak, sistemin yeniden yapılandırma sırasında gerçekleştirilebilecek işlemleri sınırlaması gerekebilir. Örneğin, veri tutarsızlıklarını önlemek için çoğaltmalardaki veriler salt okunur olarak işaretlenebilir.

Yatay bölümleme hakkında daha fazla bilgi için bkz. parçalama düzeni.

Dikey bölümleme

Dikey bölümlemenin en yaygın kullanımı, sık erişilen öğeleri getirmeyle ilişkili G/Ç ve performans maliyetlerini azaltmaktır. Şekil 2'de bir dikey bölümleme örneği gösterilir. 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üm stok verilerini barındırır: hisse senedi sayısı ve son sipariş tarihi.

Kullanım desenine göre dikey bölümleme verileri

Şekil 2 - Verileri kullanım desenine göre dikey olarak bölümleme.

Bu örnekte, uygulama müşterilere ürün ayrıntılarını görüntülerken düzenli olarak ürün adını, açıklamasını ve fiyatını sorgular. Bu iki öğe yaygın olarak birlikte kullanıldığından hisse senedi sayısı ve son sipariş tarihi ayrı bir bölümde tutulur.

Dikey bölümlemenin diğer avantajları:

  • Nispeten yavaş hareket eden veriler (ürün adı, açıklama ve fiyat) daha dinamik verilerden (hisse senedi düzeyi ve son sipariş tarihi) ayrılabilir. Yavaş taşınan veriler, bir uygulamanın bellekte önbelleğe almaları için iyi bir adaydır.

  • Hassas veriler ek güvenlik denetimleriyle ayrı bir bölümde depolanabilir.

  • 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. İdeal olarak HBase ve Cassandra gibi sütun odaklı veri depolarına uygundur. Bir sütun koleksiyonundaki verilerin değişme olasılığı düşükse, SQL Server'daki sütun depolarını kullanmayı da göz önüne alabilirsiniz.

İşlevsel bölümleme

Bir uygulamadaki her farklı iş alanı için sınırlanmış bir bağlam tanımlamak mümkün olduğunda, işlevsel bölümleme yalıtımı ve veri erişim performansını geliştirmenin bir yoludur. İşlevsel bölümlemenin bir diğer yaygın kullanımı, okuma-yazma verilerini salt okunur verilerden ayırmaktır. Şekil 3'te envanter verilerinin müşteri verilerinden ayrıldığı işlevsel bölümleme genel çizgileriyle gösterilir.

Sınırlanmış bağlam veya alt etki alanına göre işlevsel bölümleme verileri

Şekil 3 - Verileri sınırlanmış bağlama veya alt etki alanına göre işlevsel olarak bölümleme.

Bu bölümleme stratejisi sistemin farklı parçaları arasında veri erişim çekişmesini azaltmaya yardımcı olur.

Bölümleri ölçeklenebilirlik için tasarlama

Her bölümün boyutunu ve iş yükünü göz önüne almak ve verilerin maksimum ölçeklenebilirlik sağlanacak şekilde dağıtılması için bunları dengelemek yaşamsal önem taşır. Öte yandan, verileri bölümlerken tek bir bölüm deposunun ölçeklendirme sınırlarını aşmamaya da dikkat etmelisiniz.

Bölümleri ölçeklenebilirlik için tasarlarken şu adımları izleyin:

  1. Veri erişim desenlerini, örneğin her sorgunun döndürdüğü yanıt kümesinin boyutunu, erişim sıklığını, doğal gecikme süresini ve sunucu tarafı işlem işleme gereksinimlerini anlamak için uygulamayı analiz edin. Birçok durumda, birkaç ana varlık işlem kaynaklarının büyük bölümünü talep edecektir.
  2. Bu analizi kullanarak güncel ve geleceğe dair ölçeklendirme hedeflerini (veri boyutu ve iş yükü gibi) saptayın. Ardından, ölçeklendirme hedefine uygun şekilde verileri bölümler arasında dağıtın. Yatay bölümleme için, dağıtımın eşit olduğundan emin olmak için doğru parça anahtarını seçmek önemlidir. Daha fazla bilgi için bkz. parçalama düzeni.
  3. 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, bölüm başına depolama alanı, işlem gücü veya ağ bant genişliği miktarında 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 ve muhtemelen iki veya daha fazla stratejiyi birleştirebilirsiniz.
  4. 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 analizin tahminleriyle eşleşmez. Bu durumda, bölümleri yeniden dengelemek veya gerekli bakiyeyi elde etmek için sistemin bazı bölümlerini yeniden tasarlamak mümkün olabilir.

Bazı bulut ortamları altyapı sınırları açısından kaynak ayırır. Seçtiğiniz sınırların, veri depolama alanı, işlem gücü ve bant genişliği açısından veri hacmindeki beklenen artışla başa çıkabilecek kadar yer sağladığından emin olun.

Örneğin, Azure tablo depolamayı kullanıyorsanız, belirli bir süre içinde tek bir bölüm tarafından işlenebilen istek hacminin bir sınırı vardır. (Daha fazla bilgi için bkz. Azure depolama ölçeklenebilirliği ve performans hedefleri.) Meşgul bir parça, tek bir bölümün işleyebileceğinden daha fazla kaynak gerektirebilir. Öyleyse, 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şarsa, ek depolama hesapları oluşturmanız ve tabloları bu hesaplara yaymanız gerekebilir.

Bölümleri sorgu performansı için tasarlama

Çoğunlukla daha küçük veri kümeleri kullanılarak ve paralel sorgular çalıştırılarak sorgu performansı artırılabilir. Her bölüm, veri kümesinin tamamının küçük bir kısmını içermelidir. Hacmin böyle azaltılması sorguların performansını geliştirebilir. Bununla birlikte bölümleme, veritabanını düzgün bir şekilde tasarlama ve yapılandırmanın alternatifi değildir. Örneğin, gerekli dizinlerin hazır olduğundan emin olun.

Bölümleri sorgu performansı için tasarlarken şu adımları izleyin:

  1. 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ş çalışan sorguları belirlemek için sistemi izleyin.
    • En sık gerçekleştirilen sorguları bulun. Tek bir sorgunun maliyeti en düşük olsa bile, kümülatif kaynak tüketimi önemli olabilir.
  2. Düşük 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 doğru bölümü kolayca seçebilmesi için parça anahtarını tasarlayabilirsiniz. Bu, sorgunun her bölümü taramak zorunda kalmasını önler.
    • Bölümün konumu üzerinde düşünün. Mümkünse, verileri coğrafi olarak bunlara erişen uygulamaların ve kullanıcıların yakınındaki bölümlerde tutun.
  3. Bir varlığın aktarım hızı ve sorgu performansı gereksinimleri varsa, o varlığı temel alarak işlevsel bölümleme kullanın. Bu yaklaşım da gereksinimleri karşılamaya yetmezse, aynı zamanda yatay bölümleme de uygulayın. Çoğu durumda tek bir bölümleme stratejisi yeterli olur, ancak bazı durumlarda her iki stratejiyi birleştirmek daha verimlidir.

  4. Performansı artırmak için bölümler arasında sorguları paralel olarak çalıştırmayı göz önünde bulundurun.

Bölümleri kullanılabilirlik için tasarlama

Verileri bölümlemek, veri kümesinin tamamının tek bir hata noktası oluşturmamasını ve veri kümesindeki tek tek alt kümelerin bağımsız olarak yönetilebilmesini sağladığından uygulamaların kullanılabilirliğini geliştirebilir.

Kullanılabilirliği etkileyen aşağıdaki faktörleri göz önünde bulundurun:

Veriler işle ilgili işlemler açısından ne derece kritik. İşlemler gibi kritik iş bilgileri olan verileri ve günlük dosyaları gibi daha az kritik olan işletimsel verileri belirleyin.

  • Uygun bir yedekleme planıyla kritik verileri yüksek oranda kullanılabilir bölümlerde depolamayı göz önünde bulundurun.

  • Farklı veri kümeleri için ayrı yönetim ve izleme yordamları oluşturun.

  • Kritiklik düzeyi aynı olan verileri aynı bölüme yerleştirerek, birlikte uygun bir sıklıkta yedeklenebilmelerini sağlayın. Örneğin, işlem verilerini tutan bölümlerin, günlüğe kaydetme veya izleme bilgilerini tutan bölümlerden daha sık yedeklenmeleri gerekebilir.

Tek tek bölümler nasıl yönetilebilir. Bağımsız yönetim ve bakımı destekleyen bölümler tasarlamanın çeşitli avantajları vardır. Ö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.

  • Verilerin coğrafi alana göre bölümlenmesi, zamanlanmış bakım görevlerinin her konumda yoğun olmayan saatlerde gerçekleştirilmesine olanak tanır. Bu süre boyunca planlı bakımın tamamlanmasını önlemek için bölümlerin çok büyük olmadığından emin olun.

Kritik verilerin bölümler arasında çoğaltılıp çoğaltılmayacağı. Bu strateji kullanılabilirliği ve performansı geliştirebilir, ancak tutarlılık sorunlarına da neden olabilir. Değişiklikleri her çoğaltmayla eşitlemek zaman alır. Bu süre boyunca, farklı bölümler farklı veri değerleri içeriyor olacaktır.

Uygulama tasarımında dikkat edilmesi gerekenler

Bölümleme, sisteminizin tasarımına ve geliştirilmesine karmaşıklık katar. Sistem başlangıçta tek bir bölüm içeriyor olsa bile bölümlemeyi sistem tasarımının temel parçalarından biri olarak düşünün. Bölümleme işlemini sonradan ele alırsanız, bakım yapılacak canlı bir sisteminiz olduğundan bu daha zor olacaktır:

  • Veri erişim mantığının değiştirilmesi gerekir.
  • Mevcut verilerin bölümler arasında dağıtılması için büyük miktarlardaki verilerin geçirilmesi gerekebilir.
  • Kullanıcılar, geçiş sırasında sistemi kullanmaya devam edebilmeyi bekler.

Bazı durumlarda bölümlemenin önemli olduğu düşünülmez çünkü başlangıçtaki veri kümesi küçüktür ve tek sunucu tarafından kolayca işlenebilir. Bu, bazı iş yükleri için geçerli olabilir, ancak kullanıcı sayısı arttıkça birçok ticari sistemin genişletilmesi gerekir.

Ayrıca, bölümlemeden yararlanan yalnızca büyük veri depoları değildir. Örneğin, küçük bir veri deposuna yüzlerce eş zamanlı istemci yoğun olarak erişiyor olabilir. Bu durumda verilerin bölümlenmesi çekişmeyi azaltıp 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. Mümkün olduğunda, her bölümde en yaygın veritabanı işlemlerinin verilerini bir arada tutarak bölümler arası veri erişim işlemlerini en aza indirin. Bölümler arasında sorgulama, tek bir bölüm içinde sorgulamaktan 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. (Bu yaklaşım, bir sorgunun sonucu sonraki sorguda kullanıldığında olduğu gibi bazı durumlarda mümkün olmayabilir.)

Statik başvuru verilerini çoğaltmayı göz önünde bulundurun. Sorgular posta kodu tabloları veya ürün listeleri gibi görece statik başvuru verileri kullanıyorsa, farklı bölümlerdeki ayrı arama işlemlerini azaltmak için bu verileri tüm bölümlere çoğaltmayı göz önünde bulundurun. Bu yaklaşım, başvuru verilerinin sistemin tamamından gelen yoğun trafikle "sık" veri kümesi olma olasılığını da azaltabilir. Ancak, başvuru verisinde yapılan tüm değişikliklerin eşitlenmesiyle ilişkili ek bir maliyet 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. Uygulamanın genellikle bir anahtara ve ardından yabancı anahtara dayalı ardışık sorgular gerçekleştirmesi gerektiğ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. Aslında güçlü bir tutarlılığın gerekip gerekmediğini değerlendirin. Dağıtılmış sistemlerde yaygın bir yaklaşım nihai tutarlılığı uygulamaktır. Her bölümdeki veriler ayrı güncelleştirilir ve uygulama mantığı tüm güncelleştirmelerin başarıyla tamamlanmasını güvence altına alır. Ayrıca, son tutarlılık işlemi çalıştırılırken sorgu verilerinde ortaya çıkabilecek tutarsızlıkları da giderir.

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ı gerekirse, birden çok paralel sorgu çalıştırılıyor olsa bile performansı önemli ölçüde etkiler. Dikey ve işlevsel bölümleme ile sorgular doğal olarak 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. Belirli öğeler için parça konumunu aramak için kullanılan bir haritayı korumak için tipik bir çözümdür. Bu harita uygulamanın parçalama mantığında oluşturulabilir veya saydam parçalamayı destekliyorsa veri deposu tarafından tutulabilir.

Parçaları düzenli aralıklarla yeniden dengelemeyi göz önünde bulundurun. Yatay bölümleme ile parçaların yeniden dengelenmesi, 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 verileri boyuta ve iş yüküne göre eşit bir şekilde dağıtmaya yardımcı olabilir. Bununla birlikte, bu özel bir araç veya işlemin kullanılmasını gerektiren karmaşık bir görevdir.

Bölümleri çoğaltma. Her bölümü çoğaltırsanız, hataya karşı ek koruma sağlanır. Tek bir çoğaltma başarısız olursa, sorgular çalışan bir kopyaya yönlendirilebilir.

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 sorun yaratıyorsa, bu durum bölümleri birden çok barındırma hesabına yerleştirmeniz veya çoğaltmanız gerektiği anlamına gelebilir.

Birden çok bölümdeki verilere erişen işlemlerden kaçının. Bazı veri depoları verilerde değişiklik yapan işlemler için işlem tutarlılığı ve bütünlüğünü gerçekleştirir ama bunun için verilerin tek bir bölümde yer alıyor olması gerekir. Birden çok bölümde işlem desteğine ihtiyacınız varsa, büyük olasılıkla bunu uygulama mantığınızın bir parçası olarak gerçekleştirmeniz gerekir çünkü bölümleme sistemlerinin çoğu yerel destek sağlamaz.

Tüm veri depoları bazı işletimsel yönetim ve izleme etkinlikleri gerektirir. Görevler arasında verileri yükleme, veri yedekleme ve geri yükleme, verileri yeniden düzenleme ve sistemin doğru ve verimli çalıştığından emin olma sayılabilir.

İşletimsel yönetimi etkileyen aşağıdaki faktörleri göz önünde bulundurun:

  • Veriler bölümlendiğinde uygun yönetim ve işletim görevleri nasıl gerçekleştirilir. 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ümdeki veriler nasıl yüklenir ve başka kaynaklardan gelen yeni veriler nasıl eklenir. Bazı araçlar ve yardımcı programlar verileri doğru bölüme yükleme gibi parçalanmış veri işlemlerini desteklemiyor olabilir.

  • Veriler nasıl düzenli aralıklarla arşivlenir ve silinir. Bölümlerin aşırı büyümesini önlemek için verileri düzenli aralıklarla (aylık gibi) arşivlemeniz ve silmeniz gerekir. Farklı bir arşiv şemasıyla eşleşmesi için verileri dönüştürmeniz gerekebilir.

  • Veri bütünlüğü sorunları nasıl bulunur. Bir bölümdeki veriler gibi başka bir bölümdeki eksik bilgilere başvuran veriler gibi veri bütünlüğü sorunlarını bulmak için düzenli aralıklarla bir işlem çalıştırmayı göz önünde bulundurun. İşlem, bu sorunları otomatik olarak düzeltmeyi veya el ile gözden geçirme için bir rapor oluşturmayı dener.

Bölümleri yeniden dengeleme

Bir 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ıcak hale gelebilir ve bu da aşırı çekişmeye neden olabilir. Veya bazı bölümlerdeki veri hacmini hafife almış ve bazı bölümlerin kapasite sınırlarına yaklaşmasına neden olmuş olabilirsiniz.

Azure Cosmos DB gibi bazı veri depoları bölümleri otomatik olarak yeniden dengeleyebilir. Diğer durumlarda, yeniden dengeleme iki aşamadan oluşan bir yönetim görevidir:

  1. Yeni bir bölümleme stratejisi belirleyin.

    • Hangi bölümlerin bölünmesi (veya birleştirilmesi) gerekir?
    • Yeni bölüm anahtarı nedir?
  2. Verileri eski bölümleme düzeninden yeni bölüm kümesine geçirin.

Veri deposuna bağlı olarak, kullanımda olan bölümler arasında veri geçirebilirsiniz. Buna çevrimiçi geçiş denir. Bu mümkün değilse, veriler yeniden konumlandırılırken bölümleri kullanılamaz duruma getirmeniz gerekebilir (çevrimdışı geçiş).

Çevrimdışı geçiş

Çevrimdışı geçiş genellikle daha basittir çünkü çekişme oluşma olasılığını azaltır. Kavramsal olarak, çevrimdışı geçiş aşağıdaki gibi çalışır:

  1. Bölümü çevrimdışı olarak işaretleyin.
  2. Verileri bölme-birleştirme ve yeni bölümlere taşıma.
  3. Verileri doğrulayın.
  4. Yeni bölümleri çevrimiçine getirin.
  5. Eski bölümü kaldırın.

İsteğe bağlı olarak, 1. adımda bir bölümü salt okunur olarak işaretleyebilir, böylece uygulamalar taşınmakta olan verileri okumaya devam edebilir.

Çevrimiçi geçiş

Çevrimiçi geçişin gerçekleştirilmesi daha karmaşıktır ancak daha az kesintiye neden olur. Özgün bölüm çevrimdışı olarak işaretlenmediği sürece işlem çevrimdışı geçişe benzer. Geçiş işleminin ayrıntı düzeyine (ö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 konumda tutulan verileri okuma ve yazma işlemlerini işlemesi gerekebilir.

Sonraki adımlar

Aşağıdaki tasarım desenleri senaryonuzla ilgili olabilir:

  • Parçalama düzeni, parçalama verilerine yönelik bazı yaygın stratejileri açıklar.

  • Dizin tablosu deseni, veriler üzerinde ikincil dizinlerin nasıl oluşturulacağını gösterir. Uygulama bu yaklaşımla, koleksiyonun birincil anahtarına başvurmayan sorgular kullanarak verileri hızla alabilir.

  • Gerçekleştirilmiş görünüm düzeni, hızlı sorgu işlemlerini desteklemek için verileri özetleyen önceden doldurulmuş görünümlerin nasıl oluşturulacağı açıklanmaktadır. Özetlenen verileri içeren bölümler birden çok siteye dağıtılmışsa bu yaklaşım bölümlenmiş bir veri deposunda kullanışlı olabilir.