Elastik Veritabanı araçlarını kullanarak parça ekleme

Şunlar için geçerlidir:Azure SQL Veritabanı

Yeni bir aralık veya anahtar için parça eklemek için

Uygulamaların, mevcut olan bir parça eşlemesi için yeni anahtarlardan veya anahtar aralıklarından beklenen verileri işlemek için genellikle yeni parçalar eklemesi gerekir. Örneğin, Kiracı Kimliği tarafından parçalanan bir uygulamanın yeni bir kiracı için yeni bir parça oluşturması gerekebilir veya aylık olarak parçalanan verilerin her yeni ayın başlangıcından önce yeni bir parça sağlanması gerekebilir.

Yeni anahtar değerleri aralığı zaten var olan bir eşlemenin parçası değilse, yeni parçayı ekleyebilir ve yeni anahtarı veya aralığı bu parçayla ilişkilendirebilirsiniz.

Örnek: Var olan bir parça eşlemesine parça ve aralığı ekleme

Bu örnek, CreateShard (Java, .NET), CreateRangeMapping (Java, .NET yöntemleri) tryGetShard (Java, .NET) kullanır ve ShardLocation (Java, .NET) sınıfının bir örneğini oluşturur. Aşağıdaki örnekte sample_shard_2 adlı bir veritabanı ve içindeki tüm gerekli şema nesneleri [300, 400) aralığını tutmak için oluşturulmuştur.

// sm is a RangeShardMap object.
// Add a new shard to hold the range being added.
Shard shard2 = null;

if (!sm.TryGetShard(new ShardLocation(shardServer, "sample_shard_2"),out shard2))
{
    shard2 = sm.CreateShard(new ShardLocation(shardServer, "sample_shard_2"));  
}

// Create the mapping and associate it with the new shard
sm.CreateRangeMapping(new RangeMappingCreationInfo<long>
                            (new Range<long>(300, 400), shard2, MappingStatus.Online));

.NET sürümü için, yeni bir Parça Eşleme Yöneticisi oluşturmak için alternatif olarak PowerShell'i de kullanabilirsiniz. Burada bir örnek verilmiştir.

Mevcut aralığın boş bir bölümüne parça eklemek için

Bazı durumlarda, bir aralığı zaten bir parçayla eşleyip kısmen verilerle doldurmuş olabilirsiniz, ancak şimdi yaklaşan verilerin farklı bir parçaya yönlendirilmesi isteyebilirsiniz. Örneğin, gün aralığına göre parçalayabilirsiniz ve bir parçaya zaten 50 gün ayırmış olabilirsiniz, ancak 24. günde gelecekteki verilerin farklı bir parçaya inmesini istersiniz. Elastik veritabanı bölünmüş birleştirme aracı bu işlemi gerçekleştirebilir, ancak veri taşıma gerekli değilse (örneğin, [25, 50) gün aralığına ait veriler , yani 25. gün ile 50 hariç arasında henüz mevcut değilse) bu işlemi doğrudan Parça Eşleme Yönetimi API'lerini kullanarak gerçekleştirebilirsiniz.

Örnek: Aralığı bölme ve boş bölümü yeni eklenen parçaya atama

"sample_shard_2" adlı bir veritabanı ve içindeki tüm gerekli şema nesneleri oluşturuldu.

// sm is a RangeShardMap object.
// Add a new shard to hold the range we will move
Shard shard2 = null;

if (!sm.TryGetShard(new ShardLocation(shardServer, "sample_shard_2"),out shard2))
{
    shard2 = sm.CreateShard(new ShardLocation(shardServer,"sample_shard_2"));  
}

// Split the Range holding Key 25
sm.SplitMapping(sm.GetMappingForKey(25), 25);

// Map new range holding [25-50) to different shard:
// first take existing mapping offline
sm.MarkMappingOffline(sm.GetMappingForKey(25));

// now map while offline to a different shard and take online
RangeMappingUpdate upd = new RangeMappingUpdate();
upd.Shard = shard2;
sm.MarkMappingOnline(sm.UpdateMapping(sm.GetMappingForKey(25), upd));

Önemli

Bu tekniği yalnızca güncelleştirilmiş eşleme aralığının boş olduğundan eminseniz kullanın. Önceki yöntemler taşınan aralığın verilerini denetlemez, bu nedenle kodunuza denetimler eklemek en iyisidir. Taşınan aralıkta satırlar varsa, gerçek veri dağıtımı güncelleştirilmiş parça eşlemesi ile eşleşmez. Bu durumlarda bunun yerine işlemi gerçekleştirmek için bölünmüş birleştirme aracını kullanın.

Ek kaynaklar

Elastik veritabanı araçlarını henüz kullanmıyor musunuz? Başlarken Kılavuzumuza göz atın. Sorular için, SQL Veritabanı ve özellik istekleri için Microsoft Soru-Cevap soru sayfasından bizimle iletişime geçin, yeni fikirler ekleyin veya SQL Veritabanı geri bildirim forumunda mevcut fikirler için oy verin.