Bildiri Özeti: Efsaneler

Feb 16 2023
H. Garcia-Molina ve K.
Unsplash'ta Nathan Riley'nin fotoğrafı

H. Garcia-Molina ve K. Salem. 1987. Efsaneler . 1987 ACM SIGMOD uluslararası veri yönetimi konferansı (SIGMOD '87) Bildiri Kitabında. Association for Computing Machinery, New York, NY, ABD, 249–259.

Anahtar Kelimeler: Uzun Süren Süreçler, Sagalar, İşlemler, Tazminat, Hata Azaltma, Hata Toleransı, Hata Şeffaflığı

Sagalar hakkındaki orijinal makale 35 yıl önce yazılmış olsa da, sorun bugün hala geçerliliğini koruyor. Bu gönderi, birden çok veritabanı işlemini kapsayan uzun süredir devam eden süreçler olan Sagas kavramının kökenlerini araştırıyor.

giriiş

Hector Garcia -Molina ve Kenneth Salem gazetelerinde Sagas , "uzun vadeli" operasyonları uygulamak için destan kavramını tanıtıyor.

Molina ve Salem, tek bir adımdan oluşan süreçleri “kısa süreli” veya “kısa ömürlü” süreçler olarak ve birden çok adımdan oluşan süreçleri “uzun süren” veya “uzun ömürlü” olarak adlandırır. Bu nedenle, kısa çalışma veya uzun çalışma, fiziksel zamanla ilgili bir ifade değil, her adımın bir saat tik tak olduğu mantıksal zamanla ilgili bir ifadedir (Şekil 1).

Şekil 1 Kısa ve Uzun Süreli

Sorun

Dağıtılmış işlemler veya kilitleri uzun süre tutma fikrini büyük ölçüde reddeden bir ekosistemde, uzun süren herhangi bir süreç, uzun süredir devam eden, dağıtılmış bir işlemle basitçe eşleştirilemez. Bunun yerine, kısa süreli, dağıtılmamış işlemlerden uzun süreli işlemler oluşturmak için farklı bir mekanizmaya ihtiyacımız var.

Makale, bir P sürecini, her adımın bir veritabanı işlemi olduğu a, b, vb. adımlardan oluşan bir dizi olarak tanımlar. Daha tanıdık terimler kullanmak için, bir işlemi bir işlev olarak ve adım dizisini veritabanına yapılan API çağrıları dizisi olarak düşünebilirsiniz.

a, b, vb. adımların sırasına iz olarak atıfta bulunuruz:

trace(P) = a • b • …

Başka bir deyişle: İki işlemden oluşan bir işlem, bir işlem değildir!

Şekil 2. İki işlemin sıralı bileşimi, kendi başına bir işlem değildir.

Önemsiz bir şekilde, bir süreç tek bir işlemden oluşuyorsa, süreç bir işlemin atomiklik garantilerini sergiler (Şekil 3).

Şekil 3. Bir P süreci, bir a adımından oluşur

Bununla birlikte, bir işlem birden çok işlemden oluşuyorsa, işlem bir işlemin atomiklik garantilerini göstermez: İşlem kısmen yürütülebilir (Şekil 4).

Şekil 4. Bir P süreci, a ve b olmak üzere iki adımdan oluşur

Bununla birlikte, diğer işlemlerin aksine, bir sürecin işlemleri ilişkilidir ve bir birim olarak yürütülmelidir, bir işlemin herhangi bir kısmi yürütmesi istenmez.

Makale, bir seyahatin potansiyel olarak farklı havayollarında birden fazla uçuştan oluştuğu bir seyahat rezervasyonu uygulamasını tartışmaktadır. Burada, bir gezi rezervasyonu, yolculuk ayağı başına bir tane olmak üzere birden fazla işlemi içerir. Seyahat edenler olarak, tüm işlemlerin bir birim olarak yürütülmesini istiyoruz: Tüm uçuşları rezerve etmek ya da hiç uçuş yapmamak istiyoruz, bazı uçuşlar için rezervasyon yapmak kabul edilemez.

Çözüm

Makale, uzun süren süreçleri uygulamaya yönelik bir protokol olan Sagas'ı tanıtmaktadır. Saga protokolü, bir işlemin atomik olmasını, yani bir işlemin gözlemlenebilir şekilde tamamen veya hiç yürütülmemesine eşdeğer olmasını sağlar.

Şekil 5. Geriye ve İleriye Doğru Kurtarma

Kısmi yürütmeyi azaltmak için, bir işlem ileri veya geri kurtarmayı uygulayabilir [2]:

İleri Kurtarma

İleri hata kurtarma, sistemi ara durumdan nihai duruma eşdeğer bir duruma (işlemi ileriye taşıma) geçiren hata azaltma stratejilerini ifade eder.

Geriye Dönük Kurtarma

Geriye doğru hata kurtarma, sistemi ara durumdan başlangıç ​​durumuna eşdeğer bir duruma (işlemi geriye doğru hareket ettirerek) geçiren hata azaltma stratejilerini ifade eder.

Geriye Dönük Tazminat ve Tazminat

Geriye doğru kurtarmayı etkinleştirmek için her işlem, her adım için bir telafi adımı kaydetmelidir (Şekil 6).

Şekil 6. İşlemler ve Tazminatlar

Telafi adımı - anlamsal bir bakış açısıyla - adımı geri alır, ancak veritabanını adım başladığında var olan duruma döndürmesi gerekmez. Tazminat, dünyayı, işlemin başlamasından önceki duruma kabul edilebilir bir yaklaşım olan bir duruma geri getirecektir.

Örneğin, seyahat rezervasyonu uygulamasına geri dönersek, bir yolculuk iki uçuştan oluşuyorsa ve ilk uçuşun rezervasyonu başarılı ancak ikinci uçuşun rezervasyonu başarısız olduysa, destanın veri tabanını duruma göre kabul edilebilir bir yaklaşıma döndürmek için ilk rezervasyonu iptal etmesi gerekir. gezi rezervasyonu başlamadan önce vardı.

Uygulamak

Bu nedenle, başarısızlık olmadığında, bir P işlemi istenen izi üretir.

trace(P) = s₁ • s₂ • … sₙ • ✔️

trace(P) = s₁ • s₂ • … sᵢ • × • cᵢ … • c₂ • c₁ • ✔️

Bir arıza bir Saga'yı kesintiye uğrattığında, bir Saga mevcut durumunu kurtarabilmeli ve ileri veya geri kurtarma gerçekleştirebilmelidir. Bu nedenle, bir Saga, bir Saga'nın başlangıcını, bir Saga'nın bitişini ve kontrol noktalarını ve tazminatları kaydedebilmelidir.

Veritabanına sahipseniz, her adımda işlemsel olarak kontrol noktalarını ve tazminatları kaydedebilirsiniz. Her adımda kontrol noktalarını ve tazminatları işlemsel olarak kaydedemiyorsanız, kontrol noktaları telafilerini güvenilir bir şekilde kaydetmek için bir mekanizma geliştirmeniz gerekir.

Tartışma

Makale 35 yılı aşkın bir süre önce yazılmış olmasına rağmen, sorun ve önerilen çözüm olarak Sagalar bugün hala geçerlidir. Ancak dikkatler, veritabanı işlemleri oluşturmaktan hizmet çağrıları oluşturmaya kaydı.

Hizmetlerin işlemsel özellikler göstermediğini unutmayın: Hizmetler, bir hizmet çağrısından sonra atomik olmayabilir ve hizmet çökerse, hizmetin etkili olup olmadığını bilemezsiniz.

Bu nedenle, bir hizmeti çalıştırmadan önce bir telafi eylemi kaydetmeli ve hizmet devreye girsin ya da girmesin, tazminat mantığını doğru olacak şekilde tasarlamalısınız.

Çözüm

Makalenin yayınlanmasından bu yana teori ve pratikteki önemli ilerlemelere rağmen sagalar geçerliliğini koruyor. İşlemler veya hizmetler arasında dağıtılmış bir ortamda atomikliği uygulamaya yönelik bir protokol olarak bir Saga'nın temel konsepti, makalede açıklanan teknikler bugün yaygın olarak kullanılmaya devam ediyor.

Referanslar