DBMS-də məlumatların bərpası

Sistem dizaynı ilə bağlı müsahibə sualları o qədər açıq ola bilər ki, düzgün hazırlaşmağı bilmək çox çətindir. İndi satın aldıqdan sonra Amazon, Microsoft və Adobe-nin dizayn dövrlərini sındıra bilirəm Bu kitabı. Gündəlik bir yenidən nəzərdən keçirin dizayn sualı və söz verirəm ki, dizayn dövrünü sındıra bilərsiniz.

Verilənlər bazası çoxlu məlumat və əməliyyat olan çox böyük bir sistemdir. Verilənlər bazasındakı əməliyyat zamanın hər saniyəsində həyata keçirilir və verilənlər bazası üçün çox vacibdir. Əməliyyatı icra edərkən hər hansı bir uğursuzluq və ya qəza olarsa, heç bir məlumatın itirilməməsi gözlənilir. Əməliyyat dəyişikliklərini əvvəlcədən edilmiş məqama qaytarmaq lazımdır. Arıza və ya qəza növünə görə məlumatları bərpa etmək üçün müxtəlif üsullar var.

Artıq gördüyümüz kimi, hər bir əməliyyatda ACID xassəsi var. Əməliyyatın pozulması və ya sistemin çökməsi halında, ACID xüsusiyyətini qorumalıdır. ACID-i saxlaya bilməmək verilənlər bazası sisteminin uğursuzluğudur. Yəni sistemdəki hər hansı bir əməliyyat uğursuzluq mərhələsində buraxıla bilməz. Ya tamamilə tamamlanmalı və ya əvvəlki ardıcıl vəziyyətə qaytarılmalıdır.

Tutaq ki, Tələbə verilənlər bazasında bir tələbənin 3 fənn üzrə qiymətlərini daxil etmək və sonra cəmi hesablamaq üçün bir əməliyyat olub. Tutaq ki, 3-cü işarəni cədvələ daxil etdikdə əməliyyat uğursuz oldu. Bu əməliyyat bu mərhələdə buraxıla bilməz, çünki tələbənin artıq daxil olan iki fəndən qiymətləri var. Sistem bərpa edildikdə və cəmi hesablandıqda, iki mövzu işarəsi əsasında hesablanır, bu düzgün deyil. Bu vəziyyətdə, 3-cü işarəni daxil etmək və cəmi hesablamaq və ya artıq daxil olan işarələri çıxarmaq üçün əməliyyat tamamilə başa çatdırılmalıdır. Əməliyyatı tamamilə tamamlamaq və ya əməliyyatı tamamilə geri qaytarmaq verilənlər bazasını uyğun vəziyyətə gətirir və məlumatlar səhv hesablanmaya səbəb olmayacaqdır.

Yuxarıdakı nümunədən belə nəticə çıxarmaq olar

  • Bütün həyata keçirilmiş əməliyyatın vəziyyətləri təsdiqlənməlidir. Bunu bilmək lazımdır, çünki natamam bir əməliyyat varsa.
  • Hər hansı bir tamamlanmamış əməliyyat ya tamamlanmalı, ya da əməliyyatdan əvvəl DBMS-in uyğun vəziyyətinə qaytarılmalıdır.
  • Əməliyyatın ACID mülkiyyəti də uğursuzluq halında qarşılanmalıdır.

Verilənlər bazasını iki üsulla bərpa edə bilərik:

  •  Giriş əsaslı bərpa
  • Kölgə Çağırışı

Giriş əsaslı bərpa

Bu metodda hər bir əməliyyatın qeydləri sabit bir yaddaşda saxlanılır, belə ki, hər hansı bir uğursuzluq halında, verilənlər bazasını bərpa etmək üçün oradan bərpa edilə bilər. Lakin qeydlərin saxlanması verilənlər bazasında həqiqi əməliyyatı tətbiq etməzdən əvvəl edilməlidir.

Bu vəziyyətdə olan hər jurnalda hansı əməliyyatın həyata keçirildiyi, hansı dəyərlərin hansı dəyərə dəyişdirildiyi və əməliyyatın vəziyyəti kimi məlumatlar olacaqdır. Bütün bu jurnal məlumatları icra qaydasında saxlanacaqdır.

Bir tələbənin ünvanını dəyişdirmək üçün bir əməliyyat olduğunu düşünək. Bu əməliyyat üçün hansı qeydlərin yazıldığını görək.

  • Əməliyyat başladılan andan 'start' log yazır.

       

  • Əməliyyat 'Troya' dan 'Fraser Town' ünvanını dəyişdirdikdə, dosyaya başqa bir qeyd yazılır.

   

  • Əməliyyat başa çatdıqda, əməliyyatın bitdiyini göstərmək üçün başqa bir jurnal yazır.

  

Bu günlük sənədlərinin yaradılması və verilənlər bazasının yenilənməsinin iki üsulu var

Təxirə salınmış verilənlər bazası modifikasiyası

Bu metodda əməliyyat üçün bütün qeydlər yaradılır və əvvəlcə sabit saxlama sistemində saxlanılır. Saxlandıqdan sonra verilənlər bazası dəyişikliklərlə yenilənir. Yuxarıdakı nümunədə, hər üç qeyd qeydləri yaradıldıqdan və bəzi saxlama sistemində saxlanıldıqdan sonra verilənlər bazası bu addımlarla yenilənəcəkdir. Bu o deməkdir ki, jurnal əvvəlcə sabit yaddaşda yaradılır və saxlanılır; sonra həqiqi DB dəyişiklikləri qeydləri yoxlayaraq həyata keçirilir.

Məsələn, X və Y dəyərlərini oxuyacaq və dəyərlərini aşağıdakı kimi yeniləyəcək T1 əməliyyatımız olduğunu düşünək.

Əvvəlcə X və Y dəyərlərinin 25 və 30 olmasına icazə verin. Sonra təxirə salınmış verilənlər bazası modifikasiyası bütün addımları əvvəlcə günlük sənədinə daxil edəcəkdir. WRITE (X) giriş sənədinə daxil olan kimi verilənlər bazasını yeniləməyəcəkdir. T1 üçün bütün qeydlər günlük sənədinə güncəllənənə qədər gözləyəcəkdir. Tamamlandıqdan sonra günlük sənədini oxuyacaq və verilənlər bazasını yeniləyəcək. T1 üçün qeyd faylı yuxarıdakı kimi görünəcəkdir.

Hər hansı bir qəza varsa, bu qeydlər yoxlanılaraq məlumatlar bərpa olunur. Hər ikisi də varsa əməliyyat üçün o zaman əməliyyat yenidən həyata keçirilməlidir. Ancaq qəza, qeyd sənədlərini yeniləyərkən baş verə bilər və ya verilənlər bazasını yeniləyərkən ola bilər.

Tutaq ki, yuxarıdakı T1-ə əlavə olaraq Z üçün dəyərləri yeniləyən başqa bir T2 əməliyyatımız var. O zaman əməliyyatlar və jurnal sənədləri aşağıdakı kimi olacaq:

Yəni aydındır ki, nə vaxt çatdı, T1 DB-yə, T1 DB-yə yeniləndikdə günlük sənədində əldə edilir. Tutaq ki, jurnalları qeyd edərkən sistem sıradan çıxdı. 2. addımda uğursuz olarsa, , sonra T2-i təkrarlamağa ehtiyac yoxdur. Bunun səbəbi, log dosyasının T3 üçün öhdəliyini yeniləməməsidir. Girişdən sonra uğursuz olarsa , sonra T1 yenidən icra edilməlidir. Bundan sonra uğursuz olarsa sonra T30 və T20 yenidən icra edilməlidir.

Dərhal verilənlər bazasında dəyişiklik

Hər bir qeyd qeydini yaratdıqdan sonra verilənlər bazası hər bir günlük giriş mərhələsi üçün dərhal dəyişdirilir və ya əməliyyat məsələləri başlamazdan əvvəl DB yenilənə bilər. Yuxarıda göstərilən nümunədə verilənlər bazası giriş girişinin hər addımında dəyişdirilir, yəni; ilk log girişindən sonra əməliyyat, qeydləri gətirmək üçün verilənlər bazasına vuracaq, sonra ikinci jurnal daxil ediləcək, sonra adres yenilənəcək, sonra üçüncü jurnal, sonra verilənlər bazası dəyişiklikləri ediləcək.

Burada verilənlər bazası yaranan kimi verilənlər bazası yeniləndiyindən, DB bərpa edilərkən iki əməliyyat - geri qaytar və təkrar edilməlidir. Geri qaytarma əməliyyatı, uğursuzluq zamanı edilməyən bütün əməliyyatlar üçün həyata keçirilməlidir. Bütün icazəsiz əməliyyatlar geri qaytarılmalıdır. yəni; bir günlük faylı varsa , amma yox onda bu cür əməliyyatlar geri qaytarılmalı və ya geri alınmalıdır. Bütün bərpa edilmiş əməliyyatlar bərpa zamanı yenidən edilməlidir. Yəni bu əməliyyatlar artıq uğursuzluq zamanı icra edilir və dəyəri DB-də saxlanılmalıdır. Günlük faylı varsa və sonra bu cür əməliyyatlar yenidən həyata keçirilməlidir. Bir neçə dəfə yerinə yetirmə və yenidən başladınsa, sistemdə geri alma və təkrar etmənin təsiri eyni olmalıdır. Yalnız bir dəfə icra edildiyi kimi eyni nəticə ilə nəticələnməlidir. Bunun səbəbi, qeydlərə əsaslanaraq əməliyyatlar geri alınacaq və ya yenidən ediləcəkdir. Lakin əvvəlcə geri əməliyyatları aparılır, sonra da təkrarlanır.

Yuxarıdakı X, Y və Z nümunələrini nəzərdən keçirin. Tutaq ki, əməliyyat girişdən sonra uğursuz oldu , sonra T1 geri qaytarılmalıdır - geri qaytar (T30). yəni; Y-dən 20-a və X-dən 1-ə geri qayıtmalıdır. Tutaq ki, əməliyyat qısa müddətdə uğursuz oldu icra olunur. Sonra T1 yenidən edilməlidir, çünki log həm başlanğıc, həm də giriş girişlərinə malikdir. Buradan X = 30 və Y = 25. Yenidən icra edərkən X = 1-in köhnə dəyərini nəzərə almamalıdır. X və Y-nin köhnə dəyərləri həmişə 1 və 125, yeni dəyərlər isə həmişə 30 və 125 olmalıdır, əgər əməliyyat icra olunduqdan sonra uğursuz olarsa , sonra T25 əvvəl Z = 30 dəyərinə qaytarılmalı və T125 yenidən icra edilməlidir; X və Y, sırasıyla 20 və 2 olaraq yeni dəyərlərə sahib olmalıdır.

Crack Sistemi Dizayn Müsahibələri
Translate »