4.1 Konsistensi babagan Brewera

Kanggo miwiti, Eric Brewer dudu, lan ora nate ngaku dadi ahli database. Dheweke kalebu komunitas sistem sing disebarake, lan dhiskusi sing misuwur, ing ngendi "teorema" CAP muncul, diwenehake ing konferensi "Prinsip Komputasi Distribusi". (Miturut cara iki, sepuluh taun sabanjure, ing 2010, dheweke maneh menehi pidato sing diundang ing konferensi sing padha, lan ing pirembagan iki, dheweke menehi, utamane, sawetara conto sistem sing disebarake, pangembangan sing njupuk " theorem" saka CAP.) Ing wilayah iki nduweni interpretasi dhewe saka istilah sing digunakake ing lapangan database.

Utamane, istilah "konsistensi langsung" tegese sawise pangguna nampa kabar saka sistem babagan sukses ngrampungake sawetara operasi nganyari data, asil operasi iki langsung katon kanggo kabeh pengamat.

Konsistensi pungkasan tegese yen ora ana operasi nganyari data anyar sing mlebu ing sistem sajrone wektu sing cukup suwe, mula bisa diarepake yen asil kabeh operasi nganyari data sadurunge bakal nyebar menyang kabeh simpul sistem, lan kabeh data replika konsisten (ketoke, iki kudu dimangerteni minangka "kabeh replika bakal duwe negara sing padha".

Kanthi rasa konsistensi iki, "teorema" Brewer bisa dianggep cukup dingerteni lan jelas: ing sistem sing disebarake kanthi data sing dienggo bareng, mung rong sifat konsistensi, kasedhiyan, lan toleransi partisi jaringan sing bisa dipastikan bebarengan. Ing babagan iki, Brewer malah mbedakake set properti ACID karo set properti BASE sing diusulake (Sejatine Kasedhiya, Soft-state, Konsistensi Akhire - kasedhiya ing umume kasus; kahanan ora stabil; konsistensi pungkasan). Nanging oposisi iki, miturut pendapatku, ora adil, amarga ing kasus sing sepisanan kita ngomong babagan karakteristik logis transaksi, lan ing kaloro - babagan sifat fisik sistem sing disebarake.

4.2 Bukti "teorema"

Akeh sing percaya yen "teorema" Brewer wis dibuktekake kanthi resmi. Pancen, makalah dening Seth Gilbert lan Nancy Lynch ngenalake sawetara (meh) definisi formal ing konteks "teorema" pancen dadi teorema lan dibuktekake. Nanging, ayo ndeleng kepiye telung sifat sistem sing disebarake, sing miturut "teorema" Brewer, mung rong properti sing bisa didhukung bebarengan.

Konsistensi diarani atom, utawa konsistensi linearizable (atom, utawa konsistensi linearizable), yaiku properti saka sistem, kabeh obyek data individu sing atom (linearizable). Ing siji, obyek atom minangka obyek karo sawetara operasi, kayata telpon operasi lan panrimo saka data respon kedaden kaya enggal, i.e. obyek ora nampa telpon saka operasi sabanjuré nganti operasi sadurungé rampung rampung. Urutan operasi sing ditampa kudu kaya ngono yen operasi jinis maca teka sawise sawetara operasi nulis jinis wis dileksanakake, banjur operasi maca kudu ngasilake nilai sing ditulis dening iki utawa sawetara operasi nulis mengko.

Sistem sing disebarake tansah kasedhiya yen saben panjalukan sing ditampa dening node sing ora gagal kudu dijawab. Ketahanan sistem kanggo partisi jaringan dimodelake minangka pengawetan kelangsungan sistem yen ilang pesen sing dikirim saka siji simpul menyang liyane.

Adhedhasar definisi kasebut, Hilbert lan Lynch ngrumusake teorema ing ngisor iki (ora ana jam ing model jaringan asinkron, lan simpul kudu nggawe keputusan mung adhedhasar pesen sing ditampa lan petungan lokal):

Ing model jaringan asynchronous, ora bisa ngleksanakake obyek data diwaca / nulis sing njamin kasedhiyan lan sifat konsistensi atom kanggo kabeh eksekusi bener (kalebu sing ilang pesen).

Teorema iki bener-bener cukup formal dibuktekake kanthi cara "kanthi kontradiksi". Artikel kasebut terus nyimpulake yen:

Ing model jaringan asynchronous, ora bisa ngleksanakake obyek data diwaca / nulis sing njamin sifat aksesibilitas kanggo kabeh eksekusi sing bener lan konsistensi atom kanggo eksekusi sing bener sing pesen ora ilang.

Kajaba iku, bebener teorema utama mbuktekaken kanggo model jaringan sebagean sinkron, kang saben simpul wis jam, wektu ditampilake kang mundhak ing tingkat sing padha, nanging ora diselarasake, i.e. bisa nuduhake kaping beda ing wayahe nyata padha. Dituduhake yen ing kasus iki ora ana akibat sing padha, lan mulane, kanggo jaringan sing sebagian sinkron ana kemungkinan luwih akeh kanggo ngatur sistem sing disebar kanthi sifat "apik".

Ya, ing pangertèn (ora mesthi padha karo Brewer dimaksudaké) Gilbert lan Lynch bisa dianggep wis mbuktekaken sing iku mokal kanggo bebarengan njamin sipat konsistensi atom, kasedhiyan, lan toleransi pemisahan saka jaringan ing sistem siji mbagekke. Nanging apa hubungane karo transaksi database umume lan transaksi ACID khususe?

4.3 Transaksi ACID

Mangkene apa sing ditulis Julian Browne babagan iki ing cathetan babagan diskusi "teorema" CAP:

Ing bukti kasebut, Hilbert lan Lynch nggunakake istilah atomicity tinimbang konsistensi, sing luwih penting saka sudut pandang teknis amarga, kanthi tegas, konsistensi ing pangertèn ACID nuduhake sifat becik saka transaksi basis data lan tegese ora ana data sing bakal ditindakake. dadi terus-terusan yen nglanggar sawetara watesan sing wis ditemtokake. Nanging yen kita nganggep manawa watesan sistem sing wis ditetepake yaiku larangan saka sawetara nilai sing beda-beda kanggo unsur data sing padha, mula, miturut pendapatku, cacat iki ing abstraksi konsistensi bisa dianggep. ora pati penting (kajaba iku, yen Brewer nggunakake istilah atomicity, banjur téorema AAP bakal katon, jeneng sing bakal arang banget trep kanggo ngucapake).

Iki ditulis ora banget serius, nanging jujur. Lan, nyatane, syarat konsistensi atom ora kudu dicampur karo syarat konsistensi transaksional ing arti ACID. Watesan integritas database logis, yen sampeyan pengin, syarat bisnis. Padha teka saka logika domain aplikasi. Syarat konsistensi atom beda banget. Iki minangka syarat implementasine sing kalebu ing kategori tradisional sing diarani ing industri basis data minangka konsistensi fisik (contone, nalika nindakake operasi pangowahan indeks, kabeh blok wit B+ sing cocog kudu ngemot nilai sing sah lan disambungake karo referensi sing sah. ).

Lan iki minangka wakil komunitas database Daniel Abadi lan Alexander Thomson nulis kanthi serius ing cathetan:

... syarat kasedhiyan sistem transaksi sing bisa diukur dadi tambah kritis, lan iki biasane ditemokake liwat replikasi lan pangalihan otomatis panjalukan yen ana kegagalan salah sawijining kelenjar. Mula, pangembang aplikasi ngarepake manawa jaminan konsistensi sistem ACID (asline kalebu dhukungan lokal kanggo invarian sing ditemtokake pangguna) bakal ditambah kanggo njamin konsistensi sing kuat (yen kabeh replika data sing padha ing wektu tartamtu bakal dadi salinan sing padha, yaiku ing konsistensi kasus iki diwenehake ing pangertèn saka CAP / PACELC.

Ing tembung liyane, Brewer konsistensi wis boten apa karo konsistensi ing pangertèn saka ACID, nanging ing sistem fokus ing nyedhiyani kasedhiyan dhuwur liwat replikasi data sing seng di pengeni kanggo njaga konsistensi tiron kuwat. Iki dudu properti ACID, nanging fitur teknis (fisik) saka DBMS paralel massive sing nggampangake pangembangan aplikasi.

Miturut Michael Stonebreaker, kunci kanggo mbangun DBMS modern sing berkualitas tinggi yaiku pilihan kompromi teknis sing tepat. Nalika milih solusi teknik tartamtu, akeh faktor sing kudu digatekake - syarat pangguna sing bakal teka, kemungkinan macem-macem kahanan gagal, lan liya-liyane, lan ora dipandu kanthi dogmatis karo pedoman teori umum (kalebu "teorema" CAP).

Stonebreaker pracaya sing ing dunyo sistem database podo transaksional, nilar konsistensi Brewer kanggo ndhukung kasedhiyan dhuwur lan toleransi pemisahan jaringan punika trade-off miskin amarga (a) konsistensi tiron fitur banget migunani saka sistem; (b) transaksional massively podo DBMS ora perlu kluster karo nomer akeh banget kelenjar, supaya jaringan pamisah kahanan ora kamungkinan; (c) sistem bisa gampang dadi ora kasedhiya, ora amarga saka pemisahan jaringan, nanging, contone, amarga saka ngarsane kesalahan piranti lunak ajeg.

Mangkono, aktivitas dhuwur saka wakil saka kamp NoSQL (maca NoACID), sing asring ngrujuk menyang "teorema" Brewer, ora disambungake karo impossibility teori mbangun DBMS transactional massively podo sing ndhukung transaksi ACID, nanging karo kasunyatan sing sistem simplified. sing ora ndhukung mung transaksi ACID, nanging uga konsistensi tiron, digawe luwih gampang lan luwih cepet. Amarga organisasi sing prasaja, bisa ngolah data kanthi cepet, lan kanggo sawetara aplikasi, iki luwih penting tinimbang kabeh kenyamanan sing ana ing teknologi database.

Ayo ndeleng kepiye komunitas database nanggapi tantangan iki.