Veri tutarlılığı - Data consistency

Veri tutarlılığı , farklı yerlerde tutulan aynı verilerin eşleşip eşleşmediğini ifade eder.

Zaman içinde tutarlılık

Zaman içinde tutarlılık, yedekleme dosyalarının önemli bir özelliği ve yedekleri oluşturan yazılımın kritik bir hedefidir. Ayrıca, özellikle beklenmedik bir şekilde kapatıldıklarında ne olacağıyla ilgili olmak üzere, disk bellek sistemlerinin tasarımıyla da ilgilidir.

İlgili bir yedekleme örneği olarak, çevrimiçi ansiklopedi Wikipedia gibi bir veritabanına sahip bir web sitesini düşünün ; bu, günün her saati çalışır durumda olması gerekir, ancak aynı zamanda felaketten korunmak için düzenli olarak yedeklenmesi gerekir. Wikipedia'nın bazı bölümleri her günün her dakikasında sürekli olarak güncelleniyor, bu arada Wikipedia'nın veritabanı, yedeklenmesi dakikalar veya saatler gerektiren bir veya birkaç çok büyük dosya biçiminde sunucularda saklanıyor.

Bu büyük dosyalar - herhangi bir veritabanında olduğu gibi - birbirlerine konuma göre referans veren çok sayıda veri yapısı içerir. Örneğin, bazı yapılar , veritabanı alt sisteminin arama sonuçlarını hızlı bir şekilde bulmasına izin veren dizinlerdir . Veri yapıları birbirine uygun şekilde başvurmayı bırakırsa, veritabanının bozulmuş olduğu söylenebilir .

Sayaç örneği

Zaman içinde tutarlılığın önemi, yedekleme olmadan bir yedekleme yapılırsa ne olacağı ile gösterilebilir.

Wikipedia'nın veritabanının, yolun% 20'sinde yer alan önemli bir dizine sahip olan ve makale verilerini% 75 oranında kaydeden büyük bir dosya olduğunu varsayalım. Bir editörün gelip yeni bir makale oluşturduğu, aynı zamanda bir yedekleme yapıldığı bir senaryoyu düşünün; bu, büyük dosyaların başından sonuna kadar kopyalayan ve olmayan basit bir " dosya kopyası " olarak yapılır. Veri tutarlılığını dikkate almayın - ve makale düzenleme sırasında% 50 tamamlandı. Yeni makale makale alanına (% 75 işaretinde) eklenir ve buna karşılık gelen bir indeks girişi eklenir (% 20 işaretinde).

Yedekleme zaten yarı yarıya yapıldığından ve dizin zaten kopyalandığından, yedekleme, makale verileri mevcut, ancak dizin referansı eksik olacak şekilde yazılacaktır. Tutarsızlığın bir sonucu olarak, bu dosyanın bozuk olduğu kabul edilir.

Gerçek hayatta, Wikipedia'lar gibi gerçek bir veritabanı saatte binlerce kez düzenlenebilir ve referanslar neredeyse her zaman dosya boyunca yayılır ve milyonlar, milyarlar veya daha fazla sayıda olabilir. Sıralı bir "kopya" yedeği, kelimenin tam anlamıyla o kadar çok küçük bozulma içerir ki, uzun bir onarım süreci olmadan yedek tamamen kullanılamaz hale gelir ve bu, kurtarılmış olanın eksiksizliği konusunda hiçbir garanti veremez.

Veri tutarlılığını doğru bir şekilde hesaba katan bir yedekleme işlemi, yedeklemenin tüm veritabanının tek bir anda nasıl göründüğünün anlık görüntüsü olmasını sağlar. Verilen Wikipedia örneğinde, yedeklemenin eklenen makale olmadan % 75 işaretinde yazılmasını sağlar , böylece makale verileri daha önce yazılan indeks verileriyle tutarlı olur.

Disk önbelleğe alma sistemleri

Zaman içinde tutarlılık, bilgisayar disk alt sistemleri ile de ilgilidir.

Özellikle, işletim sistemleri ve dosya sistemleri , üzerinde çalıştıkları bilgisayar sisteminin herhangi bir zamanda güç kaybetmesi, çökmesi, arızalanması veya başka bir şekilde çalışmayı durdurması beklentisiyle tasarlanmıştır. Düzgün tasarlandıklarında, güç kesildiğinde verilerin kurtarılamayacak şekilde bozulmamasını sağlarlar. İşletim sistemleri ve dosya sistemleri bunu, verilerin bir sabit diske belirli bir sırayla yazılmasını sağlayarak ve beklenmedik kapanmaları algılamak ve kurtarmak için buna güvenerek yapar .

Öte yandan, verileri veri bütünlüğünü en üst düzeye çıkaracak şekilde titizlikle diske yazmak da performansı etkiler. Disk kafalarını hareket ettirmek için harcanan zamanı en aza indirerek daha hızlı yapılabilecekleri şekilde yazma işlemlerini konsolide etmek ve yeniden sıralamak için bir yazma önbelleğe alma işlemi kullanılır.

Yazma önbelleği, yazma işlemlerinin gerçekleştirildiği sırayı değiştirdiğinde veri tutarlılığı endişeleri ortaya çıkar, çünkü işletim sisteminin tüm yazma işlemlerinin sırayla gerçekleştirileceğine ilişkin beklentisini ihlal eden beklenmedik bir kapanma olasılığı vardır.

Örneğin, tipik bir belgeyi veya resim dosyasını kaydetmek için, bir işletim sistemi aşağıdaki kayıtları bir diske aşağıdaki sırayla yazabilir:

  1. XYZ dosyasının sektör 123'e kaydedilmek üzere olduğunu belirten günlük kaydı.
  2. XYZ dosyasının asıl içeriği sektör 123'e yazılır.
  3. Sektör 123 artık boş / kullanılmış alan kaydında dolu olarak işaretlendi.
  4. Dosyanın tamamen kaydedildiğini ve adını belirten günlük kaydı XYZ'dir ve sektör 123'te bulunur.

İşletim sistemi, 1 numaralı öğenin mevcut olduğunu görürse (dosyanın kaydedilmek üzere olduğunu söylerse), ancak 4 numaralı öğenin eksik olduğu (başarıyı onaylar), kaydetme işleminin başarısız olduğu ve bu nedenle geri alınması gerektiği varsayımına dayanır. onu kaydetmek için halihazırda atılmış olan tamamlanmamış adımlar (örneğin, hiçbir zaman düzgün şekilde doldurulmadığı için 123 sektörünü boş olarak işaretlemek ve dosya dizininden XYZ'nin herhangi bir kaydını kaldırmak). Bu öğelerin sırayla diske kaydedilmesine dayanır.

Bir önbelleğe alma algoritmasının bu öğeleri diske 4-3-1-2 sırasında yazmanın en hızlı olacağını belirlediğini ve bunu yapmaya başladığını, ancak güç, 4 yazıldıktan sonra, 3, 1 ve 2'den önce kapandığını varsayalım. bu yüzden bu yazılar asla gerçekleşmez. Bilgisayar tekrar açıldığında, dosya sistemi sektör 123'te bulunan XYZ adlı bir dosya içerdiğini gösterir, ancak bu sektör gerçekten dosyayı içermiyor. (Bunun yerine, sektör çöp veya sıfırlar veya bazı eski dosyanın rastgele bir bölümünü içerecektir - ve dosya açılırsa bunu gösterecektir).

Ayrıca, dosya sisteminin boş alan haritası, sektör 123'ün dolu olduğunu gösteren herhangi bir girdi içermeyecektir, bu nedenle daha sonra, mevcut olduğuna inanarak bu sektörü kaydedilecek bir sonraki dosyaya atayacaktır. Dosya sistemi daha sonra beklenmedik şekilde aynı sektörü talep eden iki dosyaya sahip olacaktır ( çapraz bağlantılı dosya olarak bilinir ). Sonuç olarak, dosyalardan birine yazıldığında diğer dosyanın bir kısmının üzerine yazılır ve bu dosyaya görünmez bir şekilde zarar verir.

Zaman içinde tutarlılık sağlayan bir disk önbelleğe alma alt sistemi, beklenmedik bir kapanma durumunda, dört öğenin yalnızca beş olası yoldan biriyle yazılacağını garanti eder: tamamen (1-2-3-4), kısmen (1, 1-2, 1-2-3) veya hiç değil.

Sunucularda bulunan türden üst düzey donanım disk denetleyicileri , önbelleklerinde küçük bir pil yedekleme birimi içerir, böylece istenmeyen kapanma riskini azaltırken yazma önbelleğe alma performans kazanımlarını sunabilirler. Pil yedekleme birimi, bir kapatma sırasında bile belleğin gücünü korur, böylece bilgisayar yeniden açıldığında, daha önce yaptığı tüm yazma işlemlerini hızlı bir şekilde tamamlayabilir. Böyle bir denetleyiciyle, işletim sistemi bu sırayla dört yazma (1-2-3-4) isteyebilir, ancak denetleyici bunları yazmanın en hızlı yolunun 4-3-1-2 olduğuna karar verebilir. Denetleyici esas olarak işletim sistemine yalan söyler ve yazma işlemlerinin sırayla tamamlandığını bildirir (güç kesilirse veri bozulması pahasına performansı artıran bir yalan) ve pil yedeklemesi, veri bozulması riskine karşı koruma sağlar. Sonuç olarak meydana gelebilecek her türlü hasarı sessizce düzeltmenin bir yolu.

Öğe 4 yazıldıktan sonra güç kesilirse, pil destekli bellek diğer üç öğe için taahhüt kaydını içerir ve bir sonraki uygun fırsatta diske yazılmalarını ("temizlenmiş") sağlar.

İşlem tutarlılığı

Dağıtılmış veritabanı sistemleri alanındaki tutarlılık (veritabanı sistemleri) , bir Veritabanı işleminin sonuçlarının tüm düğümler tarafından aynı anda görünür olmasını sağlamak için birçok ACID veritabanının özelliğini ifade eder . Yani, işlem tamamlandıktan sonra veritabanına erişmeye çalışan tüm taraflar bu işlemin sonuçlarını aynı anda görebilir.

İşlem tutarlılığının önemine güzel bir örnek, para transferini gerçekleştiren bir veritabanıdır. Bir para transferinin iki işlem gerektirdiğini varsayalım: bir yerde bir borç yazmak ve başka bir yerde bir kredi yazmak. Bir işlem tamamlandığında diğeri tamamlanmadığında sistem çökerse veya kapanırsa ve bunu düzeltecek hiçbir şey yoksa, sistemin işlem tutarlılığından yoksun olduğu söylenebilir. Para transferinde, işlemin tamamının tamamlanması veya hiçbirinin tamamlanmaması arzu edilir. Bu senaryoların her ikisi de dengeyi kontrol altında tutar.

İşlem tutarlılığı, bir sistemin, açıldığında tamamlanmamış işlemleri tespit edebilecek şekilde programlanmasını ve bulunan tamamlanmamış işlemlerin bir kısmını geri almasını (veya "geri almasını") sağlar.

Uygulama tutarlılığı

İşlem tutarlılığına benzer şekilde uygulama tutarlılığı daha büyük bir ölçekte uygulanır. Tek bir işlemin kapsamına sahip olmak yerine, verilerin bir veya daha fazla uygulamadan birçok farklı işlem akışının sınırları içinde tutarlı olması gerekir. Bir uygulama, birçok farklı veri türünden, çeşitli dosya türlerinden ve diğer uygulamalardan gelen veri beslemelerinden oluşabilir. Uygulama tutarlılığı, tüm ilgili dosyaların ve veritabanlarının senkronize edildiği ve uygulamanın gerçek durumunu temsil eden durumdur.

Dış bağlantılar