Seri hale getirilebilirlik - Serializability - Wikipedia

İçinde eşzamanlılık kontrolü nın-nin veritabanları,[1][2] hareket işleme (işlem yönetimi) ve çeşitli işlemsel uygulamalar (ör. işlem belleği[3] ve yazılım işlem belleği ), hem merkezi hem de dağıtılmış bir işlem program dır-dir serileştirilebilir sonucu (örneğin, ortaya çıkan veri tabanı durumu) seri olarak gerçekleştirilen işlemlerinin sonucuna eşitse, yani zaman içinde çakışmadan. İşlemler normalde eşzamanlı olarak yürütülür (üst üste gelirler), çünkü bu en verimli yoldur. Serileştirilebilirlik, eşzamanlı işlemlerin yürütülmesi için ana doğruluk kriteridir[kaynak belirtilmeli ]. En yüksek seviye olarak kabul edilir izolasyon arasında işlemler ve önemli bir rol oynar eşzamanlılık kontrolü. Bu nedenle, tüm genel amaçlı veritabanı sistemlerinde desteklenir. Güçlü sıkı iki fazlı kilitleme (SS2PL), 1970'lerin ilk günlerinden beri veritabanı sistemlerinin çoğunda (çeşitli varyantlarda) kullanılan popüler bir serileştirilebilirlik mekanizmasıdır.

Serileştirilebilirlik teorisi serileştirilebilirlik ve teknikleri hakkında mantık yürütmek ve analiz etmek için resmi bir çerçeve sağlar. Olmasına rağmen matematiksel doğası gereği, temelleri gayri resmi olarak (matematik notasyonu olmadan) aşağıda tanıtılmıştır.

Doğruluk

Seri hale getirilebilirlik

Seri hale getirilebilirlik veri öğesindeki verileri tutarlı bir durumda tutmak için kullanılır. Serileştirilebilirlik, bir işlemin özelliğidir program (Tarih). İle ilgilidir izolasyon bir mülkiyet veritabanı işlemi.

Seri hale getirilebilirlik bir çizelgenin eşdeğeri (sonuçta, veritabanı durumunda, veri değerlerinde) bir seri program (yani, zaman içinde hiçbir işlem çakışmadan sıralı) aynı işlemlerle. Eşzamanlı işlemlerin çizelgesinin doğruluğu için ana kriterdir ve bu nedenle tüm genel amaçlı veritabanı sistemlerinde desteklenir.[kaynak belirtilmeli ]
Serileştirilebilirliğin ardındaki mantık takip ediliyor:
Her işlem kendi başına doğruysa, yani belirli bütünlük koşullarını karşılıyorsa, herhangi birini içeren bir program seri Bu işlemlerin yürütülmesi doğrudur (işlemleri hala koşullarını karşılar): "Seri", işlemlerin zaman içinde çakışmadığı ve birbiriyle çakışamayacağı anlamına gelir, yani tamamlandı izolasyon birbirlerinin arasında var. İşlemlerin herhangi bir sırası, aralarında herhangi bir bağımlılık olmadığı varsayılırsa, yasaldır (aşağıdaki yoruma bakın). Sonuç olarak, bu işlemlerin herhangi bir seri yürütülmesine eşdeğer (sonucu olarak) herhangi bir yürütmeyi (seri olması gerekmez) içeren bir çizelge doğrudur.

Serileştirilemeyen çizelgeler muhtemelen hatalı sonuçlar üretebilir. Para ile borç ve alacak hesaplarını içeren işlemlerle iyi bilinen örnekler: İlgili programlar serileştirilemezse, toplam para miktarı korunamayabilir. Para kaybolabilir ya da hiçbir yerden üretilemez. Bu ve muhtemelen ihtiyaç duyulan diğer ihlallerin değişmez koruma, veri tabanında kalıcı hale gelmeden önce bir işlemin yazılması ve başka bir işlem tarafından yazılanın "üzerine basılması" ve silinmesinden kaynaklanır. Serileştirilebilirlik korunursa gerçekleşmez.

Bir uygulama tarafından bazı işlemler arasında herhangi bir özel sipariş istenirse, bu, temeldeki serileştirilebilirlik mekanizmalarından bağımsız olarak uygulanır. Bu mekanizmalar tipik olarak herhangi bir özel düzene kayıtsızdır ve bazı öngörülemez kısmi sipariş bu, genellikle bu işlemlerin birden çok seri siparişiyle uyumludur. Bu kısmi sipariş, birçok faktöre bağlı olan eşzamanlı işlemlerin veri erişim işlemlerinin zamanlama emirlerinden kaynaklanır.

Bir veritabanı işleminin temel bir özelliği, atomiklik bu da demek oluyor ki taahhütleryani, tüm işlemlerinin sonuçları veri tabanında yürürlüğe girer veya iptal (geri alındı), tüm işlemlerinin sonuçlarının veritabanı üzerinde herhangi bir etkisi yoktur (bir işlemin "tümü veya hiçbiri" semantiği). Tüm gerçek sistemlerde işlemler birçok nedenle iptal edilebilir ve serileştirilebilirlik tek başına doğruluk için yeterli değildir. Programların ayrıca kurtarılabilirlik (iptalden) özelliği. Kurtarılabilirlik taahhüt edilen işlemlerin durdurulan işlemlerle yazılan verileri okumadığı anlamına gelir (bunların sonuçları, sonuçta ortaya çıkan veritabanı durumlarında mevcut değildir). Serileştirilebilirlik şu anda birçok uygulamada daha iyi performans için kasıtlı olarak tehlikeye atılırken (yalnızca uygulamanın doğruluğunun zarar görmediği durumlarda), kurtarılabilirlikten ödün vermek, veri tabanının bütünlüğünü ve veri tabanı dışındaki işlem sonuçlarının bütünlüğünü hızla ihlal edecektir. Kurtarılabilirlik özelliğine sahip bir program (a kurtarılabilir Çizelge) kendi kendine iptallerden "kurtarır", yani iptaller, taahhüt edilen işlemlerin bütünlüğüne ve sonuçta ortaya çıkan veritabanına zarar vermez. Bu, kurtarılabilirlik olmadan yanlıştır; olası bütünlük ihlallerinin (sonuç olarak yanlış veritabanı verileri), veritabanında özel, tipik olarak manuel, düzeltici eylemler gerektirdiği durumlarda.

Geri kazanılabilirliği genel biçiminde uygulamak, basamaklı iptaller: Bir işlemin iptal edilmesi, ikinci bir işlemi ve ardından üçüncü bir işlemi iptal etme ihtiyacına neden olabilir. Bu, halihazırda kısmen yürütülen işlemlerin israfına ve ayrıca performans cezasına neden olabilir. Basamaklı iptallerden kaçınmak (ACA veya Cascadelessness), bu tür olayları tam olarak önleyen özel bir kurtarılabilirlik durumudur. Genellikle pratikte özel bir ACA durumu kullanılır: Sıkılık. Sıkılık, hatalardan verimli veritabanı kurtarmaya olanak tanır.

Unutmayın ki kurtarılabilirlik veritabanı hatası oluşmasa ve veritabanı olmasa bile özellik gereklidir kurtarma başarısızlıktan gereklidir. Bunun yerine, veri tabanı arızası ve başarısızlıktan kurtarmayla ilgisi olmayan iptalleri otomatik olarak doğru bir şekilde işlemesi gerekir.

Rahatlatıcı serileştirilebilirlik

Pek çok uygulamada, finansmanın aksine, mutlak doğruluk gerekli değildir. Örneğin, spesifikasyona göre bir ürün listesi alınırken, çoğu durumda verileri kısa bir süre önce güncellenen bir ürünün, spesifikasyona uysa bile listede görünmemesi çok önemli değildir. Kısa bir süre sonra tekrar denendiğinde, genellikle böyle bir listede görünecektir. Ticari veritabanları, bir dizi ürünle eşzamanlılık kontrolü sağlar. izolasyon seviyeleri bunlar aslında daha yüksek performans elde etmek için (kontrollü) serileştirilebilirlik ihlalleri. Daha yüksek performans, daha iyi işlem yürütme oranı ve daha kısa ortalama işlem yanıt süresi (işlem süresi) anlamına gelir. Anlık görüntü izolasyonu tam serileştirilebilirliğin birçok özelliğine sahip, ancak yine de bazılarının yetersiz olduğu ve pek çok durumda uygun olmayan popüler, yaygın olarak kullanılan verimli bir rahat serileştirilebilirlik yöntemine bir örnektir.

Günümüzde başka bir yaygın neden dağıtılmış serileştirilebilirlik gevşeme (aşağıya bakınız) şunların gereğidir kullanılabilirlik nın-nin internet ürünler ve Hizmetler. Bu gereksinim genellikle büyük ölçekli verilerle yanıtlanır çoğaltma. Aynı veritabanı nesnesine ait replikaların güncellemelerini senkronize etmek için basit çözüm, tüm bu güncellemeleri tek bir atomik dağıtılmış işlem. Ancak, birçok kopyada böyle bir işlem çok büyüktür ve birkaç kopyadan bilgisayarlar ve ağlar bazılarının muhtemelen kullanılamayacağı. Bu nedenle, böyle bir işlemin iptalle bitmesi ve amacını kaçırması muhtemeldir.[4]Sonuç olarak, İyimser çoğaltma (Tembel çoğaltma) sıklıkla kullanılır (örneğin, birçok ürün ve hizmette Google, Amazon, Yahoo ve benzeri), serileştirilebilirlik gevşetilir ve nihai tutarlılık. Yine bu durumda gevşeme sadece bu teknikten zarar görmesi beklenmeyen uygulamalar için yapılır.

Tarafından tanımlanan çizelge sınıfları rahat serileştirilebilirlik özellikler ya serileştirilebilirlik sınıfını içerir ya da onunla karşılaştırılamaz.

Serileştirilebilirliği görüntüleyin ve çakış

Serileştirilebilirliği zorlayan mekanizmalar, gerçek zaman veya işlemler yüksek oranlarda çalışırken neredeyse gerçek zamanlı olarak. Bu gereksinimin karşılanması için, özel serileştirilebilirlik durumları, etkin bir şekilde uygulanabilecek serileştirilebilirlik için yeterli koşullar kullanılır.

İki ana serileştirilebilirlik türü vardır: görünüm serileştirilebilirliği, ve çakışma serileştirilebilirliği. Görünüm serileştirilebilirliği, yukarıda verilen genel serileştirilebilirlik tanımıyla eşleşir. Çatışma-serileştirilebilirlik geniş ve özel bir durumdur, yani çakışma-serileştirilebilir herhangi bir program da görüntülenebilir-serileştirilebilir, ancak bunun tam tersi olmayabilir. Görünüme göre serileştirilebilir zamanlamaların önemli bir bölümünü belirlemek ve kapsamak daha kolay olduğundan, çakışma-serileştirilebilirlik yaygın olarak kullanılmaktadır. Bir zamanlamanın görünüm serileştirilebilirliğini belirlemek, NP tamamlandı problem (yalnızca hesaplanması zor, aşırı zaman alan bilinen çözümlere sahip bir problem sınıfı).

Görünüm serileştirilebilirliği Bir çizelge, aynı işlemlere sahip bir seri çizelgeye (örtüşen işlem yok) eşdeğerliği ile tanımlanır, öyle ki iki çizelgedeki ilgili işlemler aynı veri değerlerini okuyup yazacak (aynı veri değerlerini "görüntüle").
Çakışma-serileştirilebilirlik aynı işlemlere sahip bir seri programa (çakışan işlem yok) eşdeğerliği ile tanımlanır, öyle ki her iki çizelge aynı kronolojik olarak sıralı çakışan işlem çiftlerine sahiptir (ilgili çakışan işlemlerin aynı öncelik ilişkileri).

Veriler üzerine işlemler okumak veya yazmak (bir yazma: ya eklemek veya değiştirmek veya sil). İki işlem çelişkili farklı işlemlere sahiplerse, aynı datum (veri öğesi) üzerinde ve en az biri yazmak. Bu tür çelişkili işlemlerin her birinin bir çakışma türü: ya bir okuma yazmaveya yaz okuveya a yaz-yaz fikir ayrılığı. Çiftteki ikinci işlemin işleminin çatışmada ilk işlemin işlemiyle. Çakışan işlemlerin daha genel bir tanımı (her biri birkaç "basit" okuma / yazma işleminden oluşabilen karmaşık işlemler için de), bunların değişmez (sıralarını değiştirmek, birleşik sonuçları da değiştirir). Bu tür işlemlerin her birinin, bir değişme kontrolü için bir işlem olarak kabul edilmesi için (uygun sistem desteği kullanılarak) atomik olması gerekir. Örneğin, okuma-okuma işlemleri değişkendir (okuma-yazma ve diğer olasılıkların aksine) ve bu nedenle okuma-okuma bir çelişki oluşturmaz. Daha karmaşık başka bir örnek: işlemler artış ve azalma bir sayaç ikisi de yazmak işlemler (her ikisi de sayacı değiştirir), ancak değişmeli olduklarından (bu nedenle artırma-azaltma bir çakışma değildir; örneğin, eski sürümde zaten desteklendiği için çakışan (yazma-yazma çakışması türü) olarak kabul edilmeleri gerekmez IBM'in IMS "hızlı yolu" ). Aynı işlemlerden oluşan farklı çizelgeler, farklı işlemlerin işlemleri arasındaki siparişleri değiştirerek birinden diğerine dönüştürülebildiğinden, bir seri çizelgeye eşdeğerliği kontrol ederken, çakışan (değişmeyen) işlem çiftlerinde yalnızca öncelik (zaman sırası) önemlidir. farklı işlemlerin serpiştirilmesi) ve değişmeli işlemlerin sıralarının değiştirilmesi (çakışmayan) genel bir işlem sırası sonucunu değiştirmediğinden, yani bir program sonucunu (sonuç, çakışmayan işlemler arasında sıra değişikliği yoluyla korunur, ancak tipik olarak çakışan işlemler sırayı değiştirir). Bu, bir programın, çakışan işlemlerin sıralarını değiştirmeden herhangi bir seri programa dönüştürülebilmesi (ancak her işlemin içindeki işlem sırasını korurken çakışmayan siparişlerin değiştirilebilmesi) anlamına gelir, bu durumda her iki çizelgenin sonucu da aynıdır ve çizelge tanım gereği çakışma serileştirilebilir.

Çatışmalar, işlemlerin ve gecikmelerin (gerçekleşmemiş çakışmaların) engellenmesinin veya serileştirilebilirlik ihlalinin önlenmesi nedeniyle işlemlerin iptal edilmesinin nedenidir. Her iki olasılık da performansı düşürür. Bu nedenle, çatışmaların sayısını, örneğin, değişme (mümkün olduğunda) yoluyla azaltmak, performansı artırmanın bir yoludur.

Bir işlem, çakışan bir işlemi yayınlayabilir / talep edebilir ve çatışmada başka bir işlemle çakışan işlemi geciktiğinde ve yürütülmediğinde (örneğin, bir kilit ). Sadece yürütüldü (Gerçekleşmiş) çelişen işlemler ile ilgilidir çakışma serileştirilebilirliği (daha fazlasını aşağıda görebilirsiniz).

Çakışma serileştirilebilirliği zorunlu kılma

Çakışma serileştirilebilirliği test ediliyor

Çakışma serileştirilebilirliği ile program uyumu, öncelik grafiği (serileştirilebilirlik grafiği, serileştirme grafiği, çakışma grafiği) programın taahhüt edilen işlemleri için. O Yönlendirilmiş grafik işlemlerde çakışan işlemlerin önceliği ile yansıtıldığı şekilde, çizelgedeki işlemlerin önceliğini temsil eder.

İçinde öncelik grafiği işlemler düğümlerdir ve öncelik ilişkileri yönlendirilmiş kenarlardır. İkinci işlem ise, birinci işlemden ikinci işleme bir avantaj vardır. çatışmada ilkiyle (yukarıdaki Çakışma serileştirilebilirliğine bakın) ve çakışma Gerçekleşmiş (yani, talep edilen çakışan işlem gerçekten yürütülürse: çoğu durumda, bir işlem tarafından istenen / yayınlanan bir çakışan işlem geciktirilir ve hatta hiçbir zaman, tipik olarak bir kilit işlemin nesnesinde, başka bir işlemde tutulurken veya bir işlemin geçici özel çalışma alanına yazılırken ve gerçekleştirildiğinde, taahhüt üzerine veritabanının kendisine kopyalanırken; Veritabanının kendisi üzerinde talep edilen / yayınlanan bir çakışan işlem yürütülmediği sürece, çakışma gerçekleşmemiş; gerçekleşmemiş çatışmalar, öncelik grafiğinde bir kenar ile temsil edilmez).
Yorum Yap: Sadece birçok ders kitabında taahhüt edilen işlemler öncelik grafiğine dahil edilir. Burada tüm işlemler daha sonraki tartışmalarda kolaylık sağlamak için dahil edilmiştir.

Aşağıdaki gözlem bir çakışma serileştirilebilirliğinin temel karakterizasyonu:

Bir program çakışma serileştirilebilir ancak ve ancak öncelik grafiği taahhüt edilen işlemler (sadece ne zaman kararlı işlemler dikkate alınır) döngüsel olmayan. Bu, yalnızca (genel) öncelik grafiğinde, ancak ve ancak çakışma serileştirilebilirliği ihlal edilirse, taahhüt edilen işlemlerden oluşan bir döngü oluşturulduğu anlamına gelir.

Gerçekleştirilen işlem döngüleri, bir işlemin iptal edilmesiyle önlenebilir. kararsız Tüm işlemlerin öncelik grafiğindeki her döngüde (ne taahhüt edilmiş ne de durdurulmuş) işlem, aksi takdirde bir taahhütlü işlemler döngüsüne dönüşebilir (ve taahhüt edilmiş bir işlem iptal edilemez). Döngü başına iptal edilen bir işlem, döngüyü kırmak ve ortadan kaldırmak için hem gerekli hem de sayı olarak yeterlidir (daha fazla iptal mümkündür ve bazı mekanizmalar altında gerçekleşebilir, ancak serileştirilebilirlik için gereksizdir). Döngü oluşturma olasılığı tipik olarak düşüktür, ancak yine de böyle bir durum, doğruluk söz konusu olduğundan, tipik olarak önemli miktarda ek yük ile dikkatli bir şekilde ele alınır. Serileştirilebilirlik ihlali önleme nedeniyle iptal edilen işlemler yeniden başlatıldı ve hemen tekrar idam edildi.

Serileştirilebilirliği zorlayan mekanizmalar tipik olarak bir veri yapısı olarak bir öncelik grafiği tutmaz, bunun yerine döngüleri örtük olarak önler veya bozar (örneğin aşağıdaki SS2PL).

Ortak mekanizma - SS2PL

Güçlü sıkı iki fazlı kilitleme (SS2PL), hem çakışma serileştirilebilirliği hem de çakışma serileştirilebilirliğini güçlendirmek için 1970'lerin ilk günlerinden beri veritabanı sistemlerinde kullanılan ortak bir mekanizmadır (SS2PL adındaki "SS" daha yenidir) katılık (hatadan etkin veritabanı kurtarmaya olanak tanıyan özel bir kurtarılabilirlik durumu) bir çizelgenin. Bu mekanizma altında, her veri, erişmeden önce bir işlem tarafından kilitlenir (herhangi bir okuma veya yazma işleminde): öğe, bir işlemle işaretlenir ve bir kilit gerçekleştirilmekte olan işleme bağlı olarak belirli bir türden (ve belirli işlem uygulamasına; farklı kilit türlerine sahip çeşitli modeller mevcuttur; bazı modellerde kilitler, işlemin süresi boyunca tür değiştirebilir). Sonuç olarak, tipik olarak bir çakışma durumunda başka bir işlemin erişimi engellenebilir (kilit, çakışmanın gerçekleşmesini geciktirir veya tamamen engeller ve çakışan işlemi engelleyerek öncelik grafiğine yansır), kilit türüne ve diğer işlemin erişim işlemi türü. Bir SS2PL mekanizmasının kullanılması, bir işlem adına verilerdeki tüm kilitlerin yalnızca işlem sona erdikten (tamamlandıktan veya durdurulduktan) sonra serbest bırakılması anlamına gelir.

SS2PL, sonuçta ortaya çıkan zamanlama özelliğinin adıdır ve aynı zamanda titizlik. SS2PL özel bir durumdur (uygun altküme ) nın-nin İki fazlı kilitleme (2PL)

İşlemler arasında karşılıklı engelleme, kilitlenme, bu işlemlerin yürütülmesinin durduğu ve tamamlanamadığı durumlarda. Bu nedenle, bu işlemlerin yürütülmesini tamamlamak ve ilgili bilgi işlem kaynaklarını serbest bırakmak için kilitlenmelerin çözülmesi gerekir. Bir kilitlenme, öncelik grafiğindeki olası bir döngünün, çatışmalar gerçekleştiğinde engelleme olmadan meydana gelen bir yansımasıdır. Bir kilitlenme, böyle bir potansiyel döngü ile ilgili bir işlemin iptal edilmesi ve döngünün kırılmasıyla çözülür. Genellikle bir bekleme grafiği (kilitlerin gerçekleşmesini engelleyen bir çatışma grafiği; somutlaştırılmamış çatışmaların grafiği olarak da tanımlanabilir; gerçekleşmeyen çatışmalar öncelik grafiğine yansıtılmaz ve serileştirilebilirliği etkilemez), hangi işlemin "beklemede" olduğunu gösterir "diğer işlemlerin veya işlemlerin bir veya daha fazla kilidinin serbest bırakılması ve bu grafikteki bir döngü bir kilitlenme anlamına gelir. Döngü başına bir işlemin iptal edilmesi, döngüyü kırmak için yeterlidir. Kilitlenme çözümü nedeniyle iptal edilen işlemler yeniden başlatıldı ve hemen tekrar idam edildi.

Diğer uygulama teknikleri

Bilinen diğer mekanizmalar şunları içerir:

Yukarıdaki (çakışan) serileştirilebilirlik teknikleri, genel biçimlerinde kurtarılabilirlik sağlamaz. Kurtarılabilirlik eklemek için özel geliştirmeler gereklidir.

İyimser ve kötümser teknikler

Eşzamanlılık kontrol teknikleri üç ana türdendir:

  1. Kötümser: Kötümser eşzamanlılık kontrolünde, bir işlem, çakışmalar durumunda diğer işlemlerin veri erişim işlemlerini bloke eder ve çakışmalar gerçekleşmemiş engelleme kaldırılana kadar. Bu, serileştirilebilirliği (ve pratikte kurtarılabilirliği de) ihlal edebilecek işlemlerin meydana gelmemesini sağlamak için yapılır.
  2. İyimser: İçinde İyimser eşzamanlılık kontrolü, diğer işlemlerin veri erişim işlemleri çatışmalarda engellenmez ve çatışmalar anında Gerçekleşmiş. İşlem ulaştığında hazır devlet, yani onun koşma durum tamamlandığında, işlemin işlemlerinin olası serileştirilebilirlik (ve pratikte kurtarılabilirlik) ihlali (diğer çalışan işlemlere göre) kontrol edilir: ihlal meydana gelirse, işlem genellikle iptal edildi (bazen iptal bir diğeri serileştirilebilirlik ihlalini ele almak için işlem tercih edilir). Aksi takdirde, kararlı.
  3. Yarı iyimser: Belirli durumlarda engellemeyi diğer durumlarda engellememeyle karıştıran ve hem somutlaşmış hem de gerçekleşmemiş çatışmaları kullanan mekanizmalar

Teknik türleri arasındaki temel farklar, onların ürettiği çatışma türleridir. Kötümser bir yöntem, çatışma durumunda bir işlem işlemini bloke eder ve gerçekleşmemiş bir çatışma üretirken, iyimser bir yöntem engellemez ve somut bir çatışmaya neden olmaz. Yarı iyimser bir yöntem, her iki çatışma türünü de üretir. Her iki çatışma türü de, çatışma türünden bağımsız olarak işlem işlemlerinin başlatıldığı kronolojik sıralar tarafından üretilir. Bir taahhütlü işlemler döngüsü (gerçekleşen çatışmalarla) öncelik grafiği (çakışma grafiği) bir serileştirilebilirlik ihlalini temsil eder ve serileştirilebilirliği korumak için bundan kaçınılmalıdır. Bir (gerçekleşmemiş) çatışmalar döngüsü bekleme grafiği döngünün kırılmasıyla çözülmesi gereken bir kilitlenme durumunu temsil eder. Her iki döngü türü de çatışmalardan kaynaklanır ve çözülmelidir. Herhangi bir teknik türü altında, hem somutlaşmış hem de gerçekleşmemiş çatışmalar için benzer ek yüklerle çatışmalar tespit edilmeli ve dikkate alınmalıdır (tipik olarak kilitler için bloke ederken veya bloke etmeyip gerçekleşmiş çatışmalar için çatışmayı kaydederken kilitleme gibi mekanizmalar kullanılarak). Bir engelleme yönteminde, tipik olarak bir bağlam değiştirme (ek) oluşan ek yük ile çatışma halinde ortaya çıkar. Aksi takdirde, engellenen işlemlerin ilgili bilgi işlem kaynakları atıl kalır, kullanılmaz ve bu daha kötü bir alternatif olabilir. Çatışmalar sık ​​görülmediğinde, iyimser yöntemlerin genellikle bir avantajı vardır. Farklı işlem yükleriyle (işlem türlerinin karışımları), bir teknik türü (yani iyimser veya karamsar) diğerinden daha iyi performans sağlayabilir.

Program sınıfları olmadığı sürece doğası gereği engelleme (yani, veri erişim işlemlerini engellemeden uygulanamazlar; ör. yukarıdaki 2PL, SS2PL ve SCO; bkz. tablo), iyimser teknikler (ör. Seri hale getirilebilirlik, Kurtarılabilirlik) kullanılarak da uygulanabilir.

Serileştirilebilir çok sürümlü eşzamanlılık kontrolü

Ayrıca bakınız Multiversion eşzamanlılık kontrolü (kısmi teminat) ve Serileştirilebilir Anlık Görüntü İzolasyonu içinde Anlık görüntü izolasyonu

Çok sürümlü eşzamanlılık kontrolü (MVCC), günümüzde, nesne her yazıldığında bir veritabanı nesnesinin yeni bir sürümünü oluşturarak ve zamanlama yöntemine bağlı olarak, işlemlerin birkaç son ilgili sürümünün (her nesnenin) okunmasına izin vererek eşzamanlılığı ve performansı artırmanın yaygın bir yoludur. MVCC, yukarıda listelenen tüm serileştirilebilirlik teknikleriyle birleştirilebilir (orijinal olarak MVCC tabanlı olan SerializableSI hariç). Çoğu genel amaçlı DBMS ürününde kullanılır.

MVCC, günümüzde özellikle rahat serileştirilebilirlik (yukarıya bakın) yöntem Anlık görüntü izolasyonu (SI), bilinen serileştirilebilirlik mekanizmalarının çoğundan daha iyi performans sağlar (belirli durumlarda olası serileştirilebilirlik ihlali pahasına). Seri hale getirilebilir SI SI'nın serileştirilebilir hale getirilmesi için verimli bir geliştirmesi olan, verimli bir serileştirilebilir çözüm sağlaması amaçlanmıştır. Seri hale getirilebilir SI analiz edildi[5][6] genel bir MVCC teorisi aracılığıyla

Dağıtılmış serileştirilebilirlik

Genel Bakış

Dağıtılmış serileştirilebilirlik bir işlem zamanlamasının serileştirilebilirliğidir dağıtımlı sistem (ör. a dağıtılmış veritabanı sistemi). Böyle bir sistem şu özelliklere sahiptir: dağıtılmış işlemler (olarak da adlandırılır küresel işlemler), yani bilgisayar süreçlerini kapsayan işlemler (genel anlamda, bilgi işlem ortamına bağlı olarak bir süreç soyutlaması; ör. işletim sistemi 's Konu ) ve muhtemelen ağ düğümleri. Dağıtılmış bir işlem birkaç işlemden birden fazlasını içerir yerel alt işlemler her birinin yukarıda açıklanan durumlara sahip olduğu veritabanı işlemi. Yerel bir alt işlem, tek bir işlemi veya tipik olarak birlikte başarısız olan daha fazla işlemi içerir (örneğin, tek bir işlemde işlemci çekirdeği ). Dağıtılmış işlemler, bir atomik taahhüt yerel alt işlemleri arasında taahhüt etme veya iptal etme konusunda fikir birliğine varma protokolü. Bu tür protokoller, birlikte başarısız olan süreçler arasında basit (tek aşamalı) bir el sıkışmadan daha karmaşık protokollere kadar değişebilir. iki aşamalı tamamlama, daha karmaşık hata durumlarını (örneğin, süreç, düğüm, iletişim vb. başarısızlık) ele almak için. Dağıtılmış serileştirilebilirlik, dağıtılmış eşzamanlılık denetimi doğruluk için. Çoğalmasıyla birlikte İnternet, Bulut bilişim, ızgara hesaplama ve küçük, taşınabilir, güçlü bilgi işlem cihazları (ör. akıllı telefonlar,) Dağıtık uygulamalarda ve arasında doğruluğu sağlamak için etkili dağıtılmış serileştirilebilirlik tekniklerine olan ihtiyaç artmış gibi görünüyor.

Dağıtık serileştirilebilirlik, bilinen merkezi tekniklerin dağıtılmış sürümlerinin uygulanmasıyla elde edilir.[1][2] Tipik olarak, tüm bu tür dağıtılmış sürümler, yerel olarak değil, farklı süreçlerde ve uzaktan oluşturulan çakışma bilgilerinin (gerçekleştirilmiş veya gerçekleştirilmemiş çatışmalar veya eşdeğer olarak işlem önceliği veya engelleme bilgileri; çakışma serileştirilebilirliği genellikle kullanılır) kullanılmasını gerektirir. yerler. Bu nedenle, bilgi dağıtımına ihtiyaç vardır (örneğin, öncelik ilişkileri, kilit bilgileri, zaman damgaları veya biletler). Dağıtılmış sistem nispeten küçük ölçekli olduğunda ve sistemdeki mesaj gecikmeleri küçük olduğunda, merkezi eşzamanlılık kontrol yöntemleri değiştirilmeden kullanılabilirken, sistemdeki belirli işlemler veya düğümler ilgili algoritmaları yönetir. Ancak, büyük ölçekli bir sistemde (ör. Kafes ve bulut), bu tür bilgilerin dağıtımı nedeniyle, esas olarak bilgisayar ve iletişim nedeniyle yöntemlerin dağıtılmış sürümleri (merkezi olanlara karşı) kullanıldığında bile, tipik olarak önemli bir performans cezası oluşur. gecikme. Ayrıca, bu tür bilgiler dağıtıldığında, ilgili teknikler tipik olarak iyi ölçeklenmez. Ölçeklenebilirlik problemleriyle ilgili iyi bilinen bir örnek, dağıtılmış kilit yöneticisi, kilitleme tekniklerini uygulamak için dağıtılmış sistem boyunca kilit (gerçekleşmemiş çakışma) bilgilerini dağıtır.

Ayrıca bakınız

Notlar

  1. ^ a b Philip A. Bernstein Vassos Hadzilacos, Nathan Goodman (1987): Veritabanı Sistemlerinde Eşzamanlılık Kontrolü ve Kurtarma (ücretsiz PDF indirme), Addison Wesley Publishing Company, ISBN  0-201-10715-5
  2. ^ a b Gerhard Weikum Gottfried Vossen (2001): İşlem Bilgi Sistemleri, Elsevier, ISBN  1-55860-508-8
  3. ^ Maurice Herlihy ve J. Eliot B. Moss. İşlem belleği: kilitsiz veri yapıları için mimari destek. Bilgisayar mimarisi üzerine 20. yıllık uluslararası sempozyum bildirileri (ISCA '93). Cilt 21, Sayı 2, Mayıs 1993.
  4. ^ Gray, J.; Helland, P .; O’Neil, P.; Shasha, D. (1996). Çoğaltmanın tehlikeleri ve bir çözüm (PDF). 1996 Tutanakları ACM SIGMOD Uluslararası Veri Yönetimi Konferansı. sayfa 173–182. doi:10.1145/233269.233330.[kalıcı ölü bağlantı ]
  5. ^ a b c Michael J. Cahill, Uwe Röhm, Alan D. Fekete (2008): "Anlık görüntü veritabanları için serileştirilebilir izolasyon", 2008 ACM SIGMOD Uluslararası Veri Yönetimi Konferansı Bildirileri, pp. 729-738, Vancouver, Kanada, Haziran 2008, ISBN  978-1-60558-102-6 (SIGMOD 2008 en iyi makale ödülü)
  6. ^ Alan Fekete (2009), "Anlık Görüntü İzolasyonu ve Seri Hale Getirilebilir Yürütme", Sunum, Sayfa 4, 2009, Sydney Üniversitesi (Avustralya). Alındı ​​16 Eylül 2009

Referanslar