Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon MongoDB, parçalar arasında veri geçişini nasıl gerçekleştirir?


MongoDB, parçalar arasında veri geçişini nasıl gerçekleştirir?


MongoDB, dengeleyici süreç aracılığıyla parçalar arasındaki veri geçişini yönetir. Dengeleyici, verilerin parçalanmış bir kümedeki parçalar arasında eşit şekilde dağıtılmasını sağlamaktan sorumludur. Parçalar arasında veri geçişine ilişkin adımlar şunlardır:

1. Dengeleme

- Otomatik Dengeleme: MongoDB, parçaları bir parçadan diğerine taşıyarak verileri otomatik olarak dengeler. Bu, verilerin parçalar arasında eşit şekilde dağıtılmasını sağlar.

2. Öbek Taşıma

- Manuel Geçiş: MongoDB, belirli koleksiyonlar için manuel parça geçişini gerçekleştirebilir. Bu, toplu eklemeler sırasında verileri dağıtmak için kullanışlıdır.

3. Aralık Geçişi

- Otomatik Aralık Geçişi: MongoDB, verileri tek seferde bir aralıkta taşır. Dengeleyici, bir sonraki aralık geçişine başlamadan önce mevcut geçişin silme aşamasının tamamlanmasını beklemez.

4. Yeniden Paylaşma

- Yeniden Parçaya Dönüştürme Tekniği: MongoDB, verileri kümedeki parçalar arasında hızlı bir şekilde yaymak için yeniden parçalamayı kullanır. Bu, kasıtlı olarak istenen parça anahtarından farklı bir geçici parça anahtarına parçalamayı ve ardından istenen parça anahtarına yeniden parçalamayı içerir.

5. Parça Taşıma Prosedürü

- Kaynak Parçası: Kaynak parça, dahili bir komut aldığında hareketi başlatır. Geçiş işlemi sırasında öbekteki işlemler kaynak parçaya gönderilir.

- Hedef Parça: Hedef parça, kaynağın gerektirdiği ve hedefte bulunmayan tüm dizinleri oluşturur. Hedef parça, yığındaki belgeleri istemeye başlar ve verilerin kopyalarını almaya başlar.

- Senkronizasyon: Hedef parça, yığındaki son belgeyi aldıktan sonra, taşınan belgelerde taşıma sırasında meydana gelen değişikliklerin kendisinde olduğundan emin olmak için bir senkronizasyon işlemi başlatır.

- Meta Veri Güncellemesi: Kaynak parça, yapılandırma veritabanına bağlanır ve küme meta verilerini yığının yeni konumuyla günceller.

- Aşamayı Silme: Kaynak parça, meta veri güncellemesini tamamladıktan sonra ve parça üzerinde açık imleç kalmadığında, kaynak parça, belgelerin kendi kopyasını siler[3][5].

6. Jumbo Parçalar

- Jumbo Parçalar: Bir parça maksimum boyutu aşarsa veya parçadaki belge sayısı izin verilen maksimum değeri aşarsa, MongoDB parçayı taşımaz. Bunun yerine MongoDB yığını bölmeye çalışır. Bölünme başarısız olursa, MongoDB, parçayı taşımaya yönelik tekrarlanan girişimleri önlemek için parçayı jumbo olarak etiketler[3].

7. İzleme ve Bakım

- İzleme: MongoDB, dengeleyici sürecini izlemek ve verilerin parçalar arasında eşit şekilde dağıtılmasını sağlamak için araçlar sağlar.

- Bakım: MongoDB, dengeleyiciyi yönetmek ve veri geçişinin verimli ve ölçeklenebilir olmasını sağlamak için komutlar sağlar.

Çözüm

MongoDB, dengeleyici süreç aracılığıyla parçalar arasındaki veri geçişini yönetir; bu, verilerin parçalı bir kümedeki parçalar arasında eşit şekilde dağıtılmasını sağlar. Dengeleyici, verileri tek seferde bir aralıkta taşır ve MongoDB, dengeleyici sürecini izlemek ve yönetmek için araçlar sağlar.

Alıntılar:
[1] https://stackoverflow.com/questions/48438644/migration-data-between-shards-with-mongodb
[2] https://hackernoon.com/optimize-data-migration-in-mongodb-resharding-techniques-for-speed-and-scalability
[3] https://www.mongodb.com/docs/v3.0/core/sharding-chunk-migration/
[4] https://www.mongodb.com/community/forums/t/shard-migration-leads-to-service-disruption/247228
[5] https://www.mongodb.com/docs/v6.2/core/sharding-balancer-administration/